快速结论:使用 LiteLLM 的 aiohttp_openai provider 发起非流式 chat completion 时,上游返回的 `service_tier` 会被丢弃,导致 ModelResponse 上读不到该字段;优先排查是否走了 aiohttp_openai 转换路径而非标准 OpenAI 路径。
适用环境:LiteLLM 仓库(main 分支提交 e979bd0ecf、v1.101.x 可复现);provider 为 aiohttp_openai;上游为 OpenAI 或 OpenAI 兼容后端;Python 环境具体版本 Issue 未说明。
最快修复方案:升级到包含 PR #47263 修复的 LiteLLM 版本,该修复将 `service_tier` 转发到 ModelResponse,并附带了回归测试。
注意事项:Issue 正文提到同一映射还会丢弃 `usage`,但该问题由 #33967 单独跟踪,本次修复不覆盖它;升级前请确认所用版本已包含 #47263。
问题场景
用户通过 LiteLLM 的 `aiohttp_openai` provider 调用 chat completion(非流式),上游 OpenAI 或 OpenAI 兼容后端在响应 JSON 中返回了 `service_tier`(例如 `flex`)。问题出现在 `litellm/llms/aiohttp_openai/chat/transformation.py` 的 `AiohttpOpenAIChatConfig.transform_response`,它只映射了 id、choices、created、model、object 和 system_fingerprint,因此下游读取已服务层级的组件(例如 `litellm/proxy/spend_tracking/savings.py` 中的代理开销/节省统计)拿不到该字段。
报错原文
[Bug]: aiohttp_openai drops `service_tier` from chat completion responses
原因分析
最可能的原因是 aiohttp_openai 的非流式响应转换函数采用白名单式字段映射,未将上游 JSON 中的 `service_tier` 写入 ModelResponse。标准 OpenAI 路径会保留该字段,流式路径也已把实际服务的层级写到 chunk 上,只有这条非流式 aiohttp 路径丢失。复现脚本中,`getattr(out, “service_tier”, None)` 输出 `None`,而 `ModelResponse.model_validate(payload).service_tier` 输出 `”flex”`。
环境排查
- 确认 LiteLLM 版本:main 提交 e979bd0ecf 与 v1.101.x 均可复现,需确认所用版本是否已包含 PR #47263。
- 确认调用走的是 aiohttp_openai provider,而不是标准 OpenAI provider。
- 确认调用为非流式;流式路径不在本 Issue 范围内。
- 确认上游响应中确实带有 `service_tier` 字段。
- Python、CUDA、PyTorch、显卡等版本 Issue 未提供,无需针对本问题排查。
解决步骤
- 先按 Issue 中的复现脚本验证当前版本是否存在该丢弃行为(可优先尝试)。
- 升级 LiteLLM 到包含 PR #47263 的版本;评论已确认该 PR 合并。
- 升级后重新运行复现逻辑,检查 aiohttp_openai 路径返回的 ModelResponse 是否带有 `service_tier`。
- 如果仍读到 `None`,确认实际使用的 provider 与代码路径,排除走了其他转换实现。
验证方法
执行复现脚本时,aiohttp_openai 路径的 `getattr(out, “service_tier”, None)` 应与标准路径一致返回 `”flex”`,而不再是 `None`;依赖已服务层级的下游统计(如代理开销/节省跟踪)应能读到对应层级。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: /v1/images/edits with no `image` part returns 500 with a raw Python TypeError instead of 400](https://www.chat-gpts.plus/wp-content/uploads/2026/10/42185-37908672-768x403.jpg)

