Hello ,关于 ChatGPT api 调用,有个大大的疑惑,烦请大佬们解答,谢谢🙏
1 、已知 OpenAI 并没有提供会话和上下文相关的 api ,Chat 的 api 调用格式如下,只能靠传输历史对话记录作为上下文。
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?"}
]
)
2 、OpenAI 的 api 调用中,最大 tokens 有限制,比如 Chat 的模型是 4096tokens (包含请求和响应)。
问题来了: 1 、 如果历史对话记录已经很多条了,远远超过 4096tokens ,那么这个上下文该如何实现呢? 2 、 如果不保存上下文的话,那么这个 Chat 似乎又失去了意义。
1
metalvest 2023-04-08 14:41:44 +08:00 via Android 2
用 langchain 保存在 Redis 里,用 refine 类型递归查找
参考官方文档里的助理用例 |
2
swulling 2023-04-08 14:48:58 +08:00 1
会话压缩,让 GPT 帮你总结下之前对话的摘要,扔到 system 中。
|
3
amon OP |
4
metalvest 2023-04-08 18:29:20 +08:00 via Android 3
|
5
metalvest 2023-04-08 18:32:56 +08:00 via Android 2
|
6
zmxnv123 2023-04-08 18:44:33 +08:00 via iPhone 1
https://www.v2ex.com/t/930154 最近看的一篇帖子,不管这个楼主说的对不对,我觉得都能引发一些思考。
|
7
hahastudio 2023-04-08 19:02:04 +08:00 1
简单点就用 tiktoken 去算 token 数,或者用一个设置去设置历史消息的上限。我自己用的话,对话一般也就 6 条以内算是相关性强的
|
9
yinmin 2023-04-10 09:29:28 +08:00 via iPhone
推荐一个项目: https://github.com/Yidadaa/ChatGPT-Next-Web
这个项目比较好的处理了你的问题。你用 chrome 开发者工具跟踪 ajax ,多次对话之后,能看到总结压缩之前的对话内容 |