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

之前写过一篇文章,初步实现调用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!")

第三步:进行对话,查看效果

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值