OpenAI Assistants API: 为什么我问助手一个问题会消耗这么多代币?

我有一个NodeJS程序,它连接到OpenAI的助手API来创建消息。我按照OpenAI的文档创建了以下步骤:

  1. 我创建了一个助手(gpt-4-1106-preview)和一个线程,我通过这个线程与助手互动。
  2. 向线程中添加一条消息。该消息包含大约1000个代币,通过https://platform.openai.com/tokenizer检查
    openai.beta.threads.messages.create(threadId, {        role: "user",        content: createMessage(),    });
  1. 运行助手
    await openai.beta.threads.runs.create(threadId, {        assistant_id: assistantId,        instructions:             "请称呼用户为Mahesh。用户是管理员。",    });
  1. 检查状态。我每5秒运行一次,直到状态变为“已完成”
    await openai.beta.threads.runs.retrieve(threadId, runId);
  1. 获取助手的最后一个响应
   const messages = await openai.beta.threads.messages.list(threadId, {      limit: 1,   });

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

enter image description here


回答:

运行助手成本高昂的原因可能有很多。

你使用的是哪个OpenAI模型?

如果你查看官方OpenAI文档,你会发现他们使用的是gpt-4-1106-preview模型。他们指出:

我们建议使用OpenAI的最新模型与助手API一起使用,以获得最佳效果和与工具的最大兼容性。

但旧模型可能已经足够好。这取决于你的助手的用途。仅仅通过更换模型,你就可以降低运行助手的成本。当然,如果你发现助手的性能显著下降,那么你需要使用最新的模型。请看下表,了解模型选择的差异有多大:

模型 输入 输出
gpt-4-1106-preview $0.01 / 1K代币 $0.03 / 1K代币
gpt-3.5-turbo-1106 $0.001 / 1K代币 $0.002 / 1K代币

你使用同一个线程有多久了?

正如官方OpenAI文档中所述:

助手可以访问持久线程。线程通过存储消息历史并在对话过长时截断它来简化AI应用程序的开发。你创建一个线程后,只需在用户回复时向其追加消息即可。

/ … /

线程和消息代表助手与用户之间的对话会话。你可以在线程中存储的 messages 数量没有限制。一旦消息的大小超过模型的上下文窗口大小,线程将尝试包含尽可能多的适合上下文窗口的消息,并丢弃最旧的消息。

线程在存储消息历史!gpt-4-1106-preview的上下文窗口为128,000个代币。因此,如果你使用同一个线程与助手聊天足够长的时间,你将填满线程直到你选择的模型的上下文窗口。

如果你选择gpt-4-1106-preview,这意味着在使用同一个线程与助手聊天一段时间后,你问助手的一个问题意味着你使用了128,000个代币。你最近的问题可能包含1,000个代币,但你还需要记住,过去由你提问或助手回答的数百条消息也被发送到了助手API。

在你的情况下,你今天使用了760,564个上下文代币。你可能已经使用同一个线程相当长的时间了。

你多久检查一次运行状态?

你说你每5秒检查一次运行状态,看它是否已变为completed。尝试增加这个时间,比如10秒,以减少API调用。你为每次API调用付费。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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