chatgpt 怎么进行连续对话

2023-02-11 23:29:00 +08:00
 NorthSea

最近搞了个 chatgpt 的在线网站,写出来可以对话,但是不知道怎么进行连续对话,不知道怎么记住会话状态,求大佬给个解决方案

4447 次点击
所在节点    程序员
7 条回复
qinrui
2023-02-11 23:52:15 +08:00
HankAviator
2023-02-12 01:04:03 +08:00
花钱也可以
ansonsiva
2023-02-12 01:10:45 +08:00
没办法,现在的 api 是 3.0 版本的,没法连续对话,除非你把前一个对话放在后一个对话里一起提问
官方网页上的 chatgpt 是 3.5 版本的,没开放 api
sneezry
2023-02-12 01:38:45 +08:00
发起提问的时候配置 stop 参数,比如 stop: [' Human:', ' AI:'],然后问题带上之前的提问和 AI 给出的回答。比如你如果想实现下面的对话:

你:你更喜欢猫还是狗?
AI:猫。
你:为什么?
AI:因为猫更能治愈我的心灵。

那么你在发送第二个问题的时候要发送“为什么? Human:你更喜欢猫还是狗? AI:猫。”。注意 Human 和 AI 前有空格。

OpenAI 有一个最大 token 限制,你的提问内容不能超过 4096 个 token ,所以历史记录的长度也有限制,不能无限制往上加。
ersic
2023-02-12 12:57:13 +08:00
把所有对话内容都传过去
LaurelHarmon
2023-02-12 17:26:55 +08:00
之前网页版会返回文本内容加 utterance id ,新请求带上 last utterance id 就行
alsorunning
2023-02-19 00:55:29 +08:00
大家知道 openai 的模型输出是有字数限制的,不能超过 4000 个 token 。这 4000 token 是包含 prompt 的内容加 completion 的总和。

比方说,在 playground 中的 chat 示例,就是给定下面的文字当作 prompt:

```
The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human:
```

如果要实现对话的效果,就是让 ai 模型来续写这段文字。一旦 ai 写到 Human 这个关键字,就停下来等用户输入。这样塑造用户在与 ai 对话的错觉。

这么做的话一旦超过 4000 token ,就必须舍弃之前的内容。一般可以保留 prompt ,从最早的 completion 开始舍弃。这样的策略对于简短的问答 session 是可行的。不过,对于很长的对话却有问题。

比方说我做一个虚拟老婆,初始的人物设定放在 prompt 里没问题,不过更多人物设定是在对话中产生的,这些设定会随着内容增加。我又不希望这个模型在聊两天后把之前的设定忘了,这时候就有问题了。

我能想到的点子是:把每次 completion 的结果都当成 fine tuning ,一旦一个 session 超过 4000 token 后,就切换到 fine tuning 后的模型。

不知有没有做过这方面功能的前辈。望指点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/915266

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX