用 chatgpt api 进行多轮对话,如何节约 token?

358 天前
 foveal
多轮对话的时候,聊的越多后面每次对话传的字数越多,很费 token 。
有可能每次只传 上一轮对话 id 和新对话 来节省 token 么?
https://platform.openai.com/docs/api-reference/chat/create
2508 次点击
所在节点    OpenAI
10 条回复
lzgshsj
358 天前
呃,不知从何吐槽。。。
假设真的实现可以传 id 的话,那 openai 还要从数据库里调出 id 对应的对话,然后在后端把对话加入上下文中,不还是要算进 token 吗。
目前来看,比较可行的还是用 embedding 的方式压缩提炼上下文来一定程度上保留更长对话。
iyiluo
358 天前
和大模型的推算成本有关,上下文越长,推算的成本越大,这部分成本肯定要用户来承担。
foveal
358 天前
@iyiluo 有点好奇,在网页上使用 chatgpt 也是聊天记录越长,每次对话费用越高么(很多人可能习惯一个网页 chat 里面聊很长很长)?
另外我理解推算成本大概是字数的平方? openai 为啥按照字数来收费?
gpt4 甚至输入和输出字的成本都不同,纯粹是商业定价还是有成本架构原因?
yushiro
358 天前
你觉得是架构设计的原因,OpenAI 目前的行为,看上去是用的无状态请求,服务器端处理的时候,不需要知道你是谁,只是根据你的输入进行处理,这样做的好处是省去了很多同步,并发问题。
特别是应对服务器资源自动缩放的时候,完全没影响,否则处理你请求的服务器,还需要去访问中央数据库,拿到你的信息再处理,那瓶颈就是中央数据库了
ansonsiva
358 天前
@foveal #3 网页上用 chatgpt 即使在同一页面里,聊一阵子后前面的内容他就忘记了。。。
yinmin
358 天前
@foveal 网页版与 API 是区别的。网页版有对话 ID(conversation_id)的,每次聊天是传输 conversation_id + 本次提问。
yinmin
358 天前
@foveal API 没有对话 ID(conversation_id),这个项目 https://github.com/Yidadaa/ChatGPT-Next-Web 使用了压缩以前对话内容减少 token 的技巧,你可以研究参考。
xabcstack
358 天前
@yinmin 这个压缩实际上非常不好, 信息损失严重,聊几句后面就断了
yinmin
357 天前
@xabcstack

基于目前的 API 接口,只能是:
通用聊天:如果之前的对话过多,只能保留最近的几条,前面对话要么抛弃要么压缩。
专项处理:可以将关键对话锁定,然后再采用通用聊天的算法。
xabcstack
357 天前
@yinmin 在聊天场景中,压缩信息没有实际意义, 把压缩信息传递过去, 后面的聊天很快就鸡同鸭讲了

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

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

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

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

© 2021 V2EX