OpenAI Assistants API: 每次我在线程中添加新消息时,是否会将整个线程和所有过去的消息发送到API?

在使用Chat Completions API时,我了解到如果想要Chat Completions API能够包含聊天历史记录,在提问新问题时,需要包含用户的问题和OpenAI API的回答(包括系统消息)。

使用Assistants API时,您不需要这样做,它会记住聊天历史记录。

我的问题是,在使用Assistants API的情况下,代币消耗情况如何?过去的所有消息都会计入代币消耗吗?


回答:

如果您长时间使用同一个线程,Assistants API的代币消耗可能会非常高,因为线程会存储消息历史记录,并且每次您使用现有线程提问新问题时,都会将整个线程发送到API。

一段时间后,即使您提问的消息很短,向Assistants API提问的单条消息的成本也可能很高。请查看过去的讨论

/ … /

消息包含大约1000个代币,通过https://platform.openai.com/tokenizer检查

/ … /

这段代码完成大约需要250,000个代币。图片显示了今天三个请求的代币使用情况。

Screenshot

开发者没有理解的是,您最近的消息可能包含1,000个代币,但您还需要记住,过去由您提问或助手回答的数百条消息也被发送到了Assistants API。

然而,每个线程有100,000条消息的限制。正如官方OpenAI文档中所述:

您的用户或应用程序创建的消息内容会作为消息对象添加到线程中。消息可以包含文本和文件。每个线程的限制为100,000条消息,我们会智能地截断任何不适合模型上下文窗口的内容。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注