OPENAI 调用中代币定价的计算

问题描述 投票:0回答:1

我正在尝试对调用 OPENAI 时使用的代币进行定价。我有一个纯文本的 txt 文件,已上传到 Qdrant。当我问以下问题时:

迈克尔乔丹是谁?

并使用

get_openai_callback
函数来跟踪代币数量和操作价格,输出中的信息关键之一对我来说没有意义。

Tokens Used: 85
    Prompt Tokens: 68
    Completion Tokens: 17
Successful Requests: 1
Total Cost (USD): $0.00013600000000000003

为什么提示令牌值与输入值不同?输入文本中的token数量(也就是我理解的Prompt Token)为:

query = 'Who is Michael Jordan'

encoding = tiktoken.encoding_for_model('gpt-3.5-turbo-instruct')
print(f"Tokens: {len(encoding.encode(query))}")

4

,但响应中的输出类似于 68。我认为提示令牌是添加到问题令牌的基本令牌(txt 文件)的总和,但数学不适合。

txt文件中的token数量:17

Arquivo txt:“迈克尔·杰弗里·乔丹是一位美国商人和前篮球运动员,担任得分后卫”

查询+file_token:21(4+17)

有人可以帮我理解定价计算吗?

我尝试搜索OPENAI自己的文档、github和其他论坛,但我认为查找信息并不容易,也不认为它是向公众开放的。我想了解我是否遗漏了某些内容,或者它是否是用户无权访问的计算。

python token openai-api langchain qdrant
1个回答
0
投票

提示令牌包括您的问题和提供的任何上下文,以及 API 添加的其他系统消息和格式。同时在响应中生成完成令牌。

在你的例子中:

可视化查询:迈克尔·乔丹是谁? (4 个代币) 文件中的文本:迈克尔·杰弗里·乔丹 (Michael Jeffrey Jordan) 是一位美国商人和前篮球运动员,担任得分后卫(17 个代币) 预计:4+17=21 4+17=21 个代币。

但是,您会看到 68 个提示令牌,因为 API 添加了角色、指令和其他元数据的令牌。要了解确切的令牌计数,您可以记录完整的请求负载或使用 OpenAI 的令牌计数工具。 这个额外的上下文解释了为什么提示令牌计数高于预期。

© www.soinside.com 2019 - 2024. All rights reserved.