大模型怎么实现连续对话?记忆上下文?chatgpt的接口

智增增api8个月前发布 zhizengzeng
518 0

我们先来看官方文档的说明: 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地址:github.com/xing61/xiaoy

  • 第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之流是按字数计费的,所以请自行权衡每次应该携带的数量。

© 版权声明

相关文章

暂无评论

暂无评论...