在使用消息补全API时,我了解到在发送需要包含历史记录的新消息时,需要包含来自用户和助手的消息轨迹(包括系统消息)。
使用线程,您不需要这样做,它会记住您发送的消息。我的问题是,在这种情况下代币消费会怎样?之前的所有消息都会包含在输入令牌的计算中吗?
如果您长时间使用同一个线程,助手 API 中的令牌消耗可能会非常非常高,因为该线程正在存储消息历史记录,并且每次您使用现有线程提出新问题时都会将整个线程传递给 API .
一段时间后,即使消息很短,您向 Assistants API 询问的一条消息也可能会花费大量成本。查看过去的讨论:
/.../
该消息包含大约 1000 个令牌,通过检查 https://platform.openai.com/tokenizer
/.../
此代码大约需要 250,000 个代币才能完成。图片显示 今天三个请求的令牌使用情况。
开发人员不明白的是,您最近的消息可能包含 1,000 个令牌,但您还需要记住,您过去询问或助手回复的数百条消息也被发送到助手API。
但是,每个线程的消息数限制为 100,000 条。正如官方OpenAI文档中所述:
您的用户或应用程序创建的消息的内容是 作为消息对象添加到线程中。消息可以包含两种文本 和文件。每个线程的消息数限制为 100,000 条,我们 巧妙地截断任何不适合模型的上下文 上下文窗口。