[求教] OpenAI API 方式,每次 create()一个会话,聊天过程中 gpt 是如何保存上下文的?有没有专门的文档介绍?

178 天前
 adobas007
OpenAI API 方式,每次 create()一个会话,聊天过程中 gpt 是如何保存上下文的?有没有专门的文档介绍?
645 次点击
所在节点    OpenAI
11 条回复
Akitora
178 天前
自己把每一段对话拼起来请求发回去,抓包网页版 GPT 可以看到怎么拼的
vacuitym
178 天前
楼主想问的应该是 assitants api 的吧,我只看到了 thread 会自动获取上下文
cheng6563
178 天前
每次你发送消息,实际上是把整段聊天记录发给 GPT 模型,然后模型生成下一次回复的内容
skwyl
178 天前
保存是你本地保存,并且把之前的聊天记录+新的聊天记录一起提交
adobas007
178 天前
@cheng6563 这么聊下去,历史内容+新问题,token 费用不得了
hahastudio
178 天前
如果指的是 client.chat.completions.create()
那么给请求里塞多少上下文靠自己,简单的就是前几条记录
另外 request token + response token 是有上限的
adobas007
178 天前
@hahastudio 明白了,多谢
lins05
178 天前
> 这么聊下去,历史内容+新问题,token 费用不得了

@adobas007 所以 OpenAI 一般的第三方前端都支持用户自己设置只带上最近的几条消息。

chatgpt-next-web 还有一个好的设计叫 "memory prompt",它会自动调用便宜的 gpt3.5 让 gpt 把到当前为止的所有消息总结成一条,这样后续的圣诞既能节约 token 又能保存一些之前的 context


新发布的 threads api 并没有本质上的区别,只是方便了开发者不需要每次请求都把历史消息带上而已,因为 openai 在他那边会维护一个 "thread id => 该 thread 的历史消息" 的映射,但是计费还是会把这些历史对话中的 token 计算进去。
adobas007
177 天前
@lins05 在请教一下
我们是否可以自己 fake 数据 messag(system,user,assistant),内容输入 GPT ,GPT 会怎么做?
从网络结构上,有没有可能推断出 GPT 的架构( GPT 公布模型 transformer 只是一个基础原型,其整个系统架构应该远不止这些)
yinmin
177 天前
#9 可以的。自己构造几组 user,assistant 喂给 gpt 作为范例,gpt 就会参照 fake 的格式进行回复。

例如:你希望 gpt 分析文本给出里面的地址信息,可以 fake 几个 json 格式的输出范例,然后给真实数据时,gpt 也是返回 json 格式的。

又比如你的 prompt 很长消耗 token ,可以给一组同时处理多条数据的范例,然后就能一次处理多条数据了。
xabclink
177 天前
@lins05 这是最失败的设计, 聊天场景这种操作,很快下面的对话鸡同鸭讲

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

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

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

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

© 2021 V2EX