大模型怎么实现连续对话?记忆上下文?chatgpt的接口
我们先来看官方文档的说明: platform.openai.com/docs/guides…
Chat models take a series of messages as input, and return a model-generated message as output.
聊天模型将一系列消息作为输入,并返回模型生成的消息作为输出。
下面是一个实现连续聊天的代码示例,主要看这个 messges 数组:
1、首先需要拿到openai的key和url,
项目github地址:https://github.com/xing61/xiaoyi-robot
-
第1步:用手机号登录智增增,获取复制出key和url,地址:https://gpt.zhizengzeng.com/#/login
-
第2步:编写代码。注意配置的base_url是:
https://flag.smarttrot.com/v1
2、开始撸python代码:(其它语言类似)
# Note: you need to be using OpenAI Python v0.27.0 for the code below to work
import openai
API_SECRET_KEY = "你的智增增获取的api_key";
BASE_URL = "https://flag.smarttrot.com/v1"; #智增增的base_url
openai.api_key = API_SECRET_KEY #
openai.api_base = BASE_URL #
openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
说明:
1、role为system可以限定AI的角色,role为user是用户发送的内容,role为assistant是AI回答的内容。
2、OpenAI或者其它大语言模型本身是没有记忆的,如果你不告诉他你之前说了什么以及他之前回答了什么,那么他只会根据你最近一次发送的内容进行回答。
3、所以,要想实现“连续对话”,每次发送消息时,你需要将你之前发送的内容(user)以及大模型之前返回的内容(assistant),再结合你本次想发送的内容(user) 按 时序 组合成一个 messages[] 数组,然后再将这个数组发送给OpenAI就行了,就是这么简单。
4、有一点需要注意,这样虽然可以实现“连续对话”,但势必造成每次发送的消息内容会非常多,而OpenAI之流是按字数计费的,所以请自行权衡每次应该携带的数量。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...