如何在流式模式下获取OpenAI ChatCompletion API调用的Token使用量?
流式调用OpenAI API时获取Token使用量的方法
当开启stream=True时,OpenAI的API分块响应里确实不会包含usage字段——因为token统计需要在整个对话生成完成后才能计算。你可以通过以下两种方式获取:
本地估算(实时、近似值)
使用OpenAI官方提供的tiktoken库手动计算token数:- 安装库:
pip install tiktoken - 参考代码示例:
import tiktoken import openai # 匹配目标模型的编码规则 encoding = tiktoken.encoding_for_model("gpt-3.5-turbo") # 计算prompt的token数量 prompt_content = "你的提问内容" prompt_tokens = len(encoding.encode(prompt_content)) # 流式响应时累加返回内容的token数 completion_tokens = 0 for chunk in openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt_content}], stream=True ): if 'content' in chunk['choices'][0]['delta']: content = chunk['choices'][0]['delta']['content'] completion_tokens += len(encoding.encode(content)) # 计算总token消耗 total_tokens = prompt_tokens + completion_tokens
注意:这种方式是近似值,和官方API统计的token数可能存在微小差异。
- 安装库:
官方平台用量面板(精准、批量统计)
登录OpenAI平台后,在用量面板中按时间范围、模型类型筛选,查看对应时段的token消耗数据。这种方式能得到精准的官方统计值,但无法实时关联单条流式调用。
内容的提问来源于stack exchange,提问作者user2501096
相关产品推荐
相关产品推荐

