Affected area
Billing / payments
Version or commit
v0.1.1
Environment
OS:MacOS
Browser:Chrome
Deployment:待补充
Model provider:支持工具调用的模型渠道
Tools:MCP 工具或模型原生工具
Reproduction steps
- 配置一个可用的 MCP 工具或启用模型原生工具,例如网页搜索。
- 选择支持工具调用的聊天模型。
- 发送一条会触发工具调用的问题。
- 观察生成过程中的 token metrics、消息底部用量展示、用量日志或账单统计。
- 对比普通无工具调用的请求和工具调用后的多轮请求用量。
Expected behavior
- 工具调用触发的多轮模型请求 token 应完整计入本轮消息 metrics。
- 流式生成过程中的 token 展示应与最终入库和账单统计一致。
- 如果一次回复包含多轮 LLM 调用,例如首次请求、工具结果回传、最终总结,input/output/cache/reasoning token 应按总量展示。
- 原生 server-side tools 如果上游返回独立工具用量,也应在统计或调试信息中有明确体现。
- 用户不应看到“最终账单统计”和“对话底部 token 展示”明显不一致的情况。
Actual behavior
当前疑似存在 token metrics 不准确的情况,尤其是工具调用场景下:
- 后端工具循环中最终
totalUsage 有累加逻辑,但流式 usage 事件是逐次上游调用直接推送。
- 前端收到
usage 事件后是覆盖当前 token 值,而不是累计。
- 因此工具调用触发多次 LLM 请求时,实时展示可能只保留最后一轮 usage,看起来像工具相关 token 没有被计入。
- 上游原生工具的
ServerSideToolUsage 已在协议层解析,但业务统计链路中没有明显用于最终 metrics 展示或账单明细。
Logs, screenshots, or request samples
建议额外补充一组包含工具调用的请求日志,重点保留:
- 模型协议
- 是否启用 MCP / 原生工具
- 工具调用次数
- 每轮上游 usage
- 最终消息 inputTokens / outputTokens / cacheReadTokens / cacheWriteTokens / reasoningTokens
- billing usage ledger 中的对应记录
注意移除 API Key、Authorization header、上游 Base URL 和用户隐私内容。
Configuration and deployment context
需要重点排查:
- 流式 usage 事件是否应该推送累计值,而不是单轮值。
- 前端收到多次 usage 事件时是否应该累计,或以后端 completed 返回为准。
- 工具循环中的多轮 GenerateOutput.Usage 是否在所有分支都被累加。
- 原生 server-side tools 的 ServerSideToolUsage 是否需要进入 metrics、账单快照或调试详情。
- 中断、失败、fallback 到非流式等场景是否会丢失部分 usage。
Pre-submit checklist
Affected area
Billing / payments
Version or commit
v0.1.1
Environment
OS:MacOS
Browser:Chrome
Deployment:待补充
Model provider:支持工具调用的模型渠道
Tools:MCP 工具或模型原生工具
Reproduction steps
Expected behavior
Actual behavior
当前疑似存在 token metrics 不准确的情况,尤其是工具调用场景下:
totalUsage有累加逻辑,但流式usage事件是逐次上游调用直接推送。usage事件后是覆盖当前 token 值,而不是累计。ServerSideToolUsage已在协议层解析,但业务统计链路中没有明显用于最终 metrics 展示或账单明细。Logs, screenshots, or request samples
建议额外补充一组包含工具调用的请求日志,重点保留:
注意移除 API Key、Authorization header、上游 Base URL 和用户隐私内容。
Configuration and deployment context
需要重点排查:
Pre-submit checklist