我已在我的数据上设置Azure OpenAI,使用您自己的数据与Azure OpenAI模型聊天。我的目标是减少每个请求中的令牌使用量。
但是,我注意到额外的
prompt_token
使用,即使我在没有任何提示的情况下发送用户内容也是如此。例如,如果我只发送文本hello there
,则总共会产生 2628 个令牌,而实际上应该只有 24 个。如果在没有任何提示的情况下提供较长的文本(7 个单词),则总共会产生大约3.4k 代币。
示例:
[{'role': 'system', 'content': ''}, {'role': 'user', 'content': 'hello there'}]
total_tokens: {'completion_tokens': 24, 'prompt_tokens': 2604, 'total_tokens': 2628}
----------------------------------------------------
[{'role': 'system', 'content': ''},
{'role': 'user', 'content': 'I worked overtime what should I do?'}]
total_tokens: {'completion_tokens': 52, 'prompt_tokens': 3334, 'total_tokens': 3386}
如您所见,在总代币下,我看到
prompt_token
使用量接近 3.5k。
由于我没有提供任何提示或系统消息,prompt_token
的用法从何而来?将 Azure OpenAI 模型与您自己的数据结合使用的全部目的不就是减少令牌使用吗?对于每个请求,额外的 3.5k 令牌非常昂贵。它会影响我的账单吗?prompt_token
在哪里会被视为输入令牌的一部分?
Input (Per 1,000 tokens)
是$0.0025
,比我对4,000 tokens
的理解,成本应该是$0.01
。
当他们“使用你的数据”时,就会发生一些神奇的事情;它本质上是检索增强生成(RAG)。基本上,除了提示文本之外,还有几个步骤。
他们解释得相当好在这里:
总共对模型进行了两次调用:
用于处理意图:意图提示的令牌估计包括用户问题、对话历史记录以及发送到模型以进行意图生成的指令。
用于生成响应:生成提示的令牌估计包括用户问题、对话历史记录、检索到的文档块列表、角色信息以及发送给其进行生成的指令。