[BUG]: Responses API usage shape

用户在 Docker 远程机器上运行 AnythingLLM,通过 API 端点调用时发现返回的 token 用量字段(usage)为空或不完整,影响前端展示的 token 使用统计和 TPS(每秒 token 数)测量。

[BUG]: Responses API usage shape

[BUG]: Responses API usage shape

快速结论:该报错出现在 AnythingLLM 迁移至 OpenAI Responses API 后,因字段名不一致导致 token 用量统计缺失或错误(如 TPS 测量异常)。优先排查 AnythingLLM 是否已更新至包含 output_tokens / input_tokens 映射的最新补丁版本。

问题场景

用户在 Docker 远程机器上运行 AnythingLLM,通过 API 端点调用时发现返回的 token 用量字段(usage)为空或不完整,影响前端展示的 token 使用统计和 TPS(每秒 token 数)测量。

报错原文

# 从 API 端点调用返回的 usage 字段丢失部分数据
# 迁移至 Responses API 后,字段映射变化:
# completion_tokens -> output_tokens
# prompt_tokens -> input_tokens
# 原有字段可能缺失

原因分析

这是 AnythingLLM 在迁移至 OpenAI Responses API 时(相关 PR #4403)留下的 token 追踪缺口。Responses API 的响应 schema 与旧版 Completions API 不完全兼容:completion_tokensprompt_tokens 字段在新 API 中被替换为 output_tokensinput_tokens。由于后端未及时更新映射逻辑,导致前端期待的旧字段为空,进而引发 TPS 计算错误。

环境排查

  • 确认 AnythingLLM 运行方式:Docker 远程机器
  • 确认响应 API 类型:Responses API(区别于 Completions API)
  • 确认 AnythingLLM 版本是否包含补丁 PR #4458 或 #5197(主要补丁在 #5197 的 diff 中:R471-R486

解决步骤

  1. 检查当前 AnythingLLM 版本,确保已合并 PR #4458PR #5197 的补丁代码。
  2. 可优先尝试:更新至包含 PR #5197 的最新版本,该补丁在 API 端点处理器中新增了字段映射逻辑:将 Responses API 返回的 output_tokens 映射回 completion_tokens,将 input_tokens 映射回 prompt_tokens
  3. 如果使用 Docker 镜像,拉取最新镜像并重启容器,确保代码更新生效。
  4. 重新调用 API 端点,检查响应中的 usage 字段是否包含完整的 completion_tokensprompt_tokens

验证方法

调用 API 端点(例如对话或生成请求),检查返回 JSON 中 usage 字段是否同时包含 completion_tokensprompt_tokens(以及对应的 output_tokensinput_tokens)。观察前端 token 统计和 TPS 显示是否恢复正常。

参考来源

Mintplex-Labs/anything-llm #5920

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 10666

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注