赞
踩
之前写过一篇文章,初步实现调用chatgpt的api实现与机器人的对话,但是并没有提及多轮对话如何实现。在这篇文章中,我将介绍如何利用openai的api实现聊天机器人的多轮对话。
第一步:官网申请api,可参考我之前的博文:
用chatgpt的api实现你的简易个人聊天机器人demo_聊天机器人api_qq_38100666的博客-CSDN博客
第二步:编写程序
设置代理和api
- import openai
- import os
- os.environ["http_proxy"] = "http://127.0.0.1:47890"
- os.environ["https_proxy"] = "http://127.0.0.1:47890"
-
- openai.api_key="your api_key"
定义一个函数进行对话:
- def chat(m):
- history = m
- while True:
- messages = history[-10:]
- message = input("")
- if message.lower() == "stop":
- break
- messages.append({"role":"user","content": message})
- history.append({"role":"user","content": message})
- response=openai.ChatCompletion.create(
- model="gpt-3.5-turbo",
- messages=messages
- )
- reply = response["choices"][0]["message"]["content"]
- print(reply)
- history.append({"role":"assistant", "content": reply})
- return
定义一个变量history存放历史记录,这是实现多轮对话的关键
history = m
每次对话取前10条历史记录:
messages = history[-10:]
对于openai api的参数的解释:
model:所采用的模型
messages:
role:对话中的角色,包括'user', 'assistant', 'system',‘user’代表终端用户,‘assistant’代表模型扮演的角色。
content:对话的内容。
每轮对话中,首先将历史对话记录与当前用户输入内容合并,通过api输入给模型:
- messages = history[-10:]
- message = input("")
- messages.append({"role":"user","content": message})
- response=openai.ChatCompletion.create(
- model="gpt-3.5-turbo",
- messages=messages
- )
得到模型反馈后,输出当前反馈,并将当前会话加入到历史记录中:
- reply = response["choices"][0]["message"]["content"]
- print(reply)
- history.append({"role":"user","content": message})
- history.append({"role":"assistant", "content": reply})
如果用户输入‘stop’,则停止对话
- if message.lower() == "stop":
- break
主函数:
- if __name__ == "__main__":
- messages = []
- print("I am ready to be your friendly chatbot" + "\n" + "You can now type your messages.")
- chat(messages)
- print("finished!")
第三步:进行对话,查看效果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。