需解析API响应中usage字段获取Token明细:非流式响应直接读取顶层usage;流式响应须捕获末尾data块中的累计usage;注意OpenAI兼容接口的字段路径差异,并通过本地tokenizer校验数值准确性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜
如果您调用DeepSeek API进行对话请求,但未在响应中提取每次交互的Token消耗明细,则可能是由于未正确解析返回体中的usage字段。以下是获取Token详单的具体操作步骤:
一、确认API响应中包含usage字段
DeepSeek API在成功返回对话结果时,会在JSON响应体顶层结构中嵌入usage对象,该对象记录本次请求实际使用的prompt_tokens、completion_tokens和total_tokens。只有启用流式响应(stream=false)的同步调用才会完整返回该字段;流式响应需自行累计各chunk中的delta usage。
1、检查HTTP响应状态码是否为200,确保请求成功执行。
2、解析响应体为JSON对象,定位到顶层键名为usage的对象节点。
3、验证usage对象内是否同时存在prompt_tokens、completion_tokens和total_tokens三个整型字段。
二、解析非流式响应中的usage字段
对于stream=false的标准POST请求,usage字段直接位于响应根对象中,可一次性读取全部Token计数。该方式适用于调试与单次请求分析,数据准确且无需累加。
1、使用JSON解析库(如Python的json.loads)将响应文本转为字典或对象。
2、访问response[“usage”][“prompt_tokens”]获取输入提示词Token数。
3、访问response[“usage”][“completion_tokens”]获取模型生成内容Token数。
4、访问response[“usage”][“total_tokens”]获取二者之和,用于交叉校验。
三、聚合流式响应(stream=true)中的usage数据
当启用流式传输时,每个data:前缀的事件行仅携带增量内容,usage字段仅出现在最后一个data:块中,且为累计值。必须等待流结束并捕获末尾的usage字段,不可对中间chunk做usage提取。
1、逐行读取响应流,过滤以data:开头的行,跳过event:、id:、retry:等控制行。
2、对每一行执行strip()和去除data:前缀操作,再进行JSON解析。