可实现多轮对话 使用chatgpt的api实现个人聊天机器人demo

之前写过一篇文章,初步实现调用的api实现与机器人的对话,但是并没有提及多轮对话如何实现 。在这篇文章中,我将介绍如何利用的api实现聊天机器人的多轮对话 。
第一步:官网申请api,可参考我之前的博文:
用的api实现你的简易个人聊天机器人demo_聊天机器人的博客-CSDN博客
第二步:编写程序
设置代理和api
import openaiimport osos.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 = mwhile True:messages = history[-10:]message = input("")if message.lower() == "stop":breakmessages.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
定义一个变量存放历史记录,这是实现多轮对话的关键

可实现多轮对话  使用chatgpt的api实现个人聊天机器人demo

文章插图
history = m
每次对话取前10条历史记录:
messages = history[-10:]
对于 api的参数的解释:
model:所采用的模型

role:对话中的角色,包括'user', '', '',‘user’代表终端用户,‘’代表模型扮演的角色 。
:对话的内容 。
每轮对话中,首先将历史对话记录与当前用户输入内容合并,通过api输入给模型:
可实现多轮对话  使用chatgpt的api实现个人聊天机器人demo

文章插图
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!")
【可实现多轮对话使用chatgpt的api实现个人聊天机器人demo】第三步:进行对话,查看效果