Streaming /v1/messages with OpenAI models silently drops all success callbacks (cost tracking lost) — 1.83.14

当 LiteLLM Proxy 通过 Responses‑API bridge 将 Anthropic 格式的 /v1/messages 请求路由到 OpenAI 模型时(版本 1.83.14),成功回调(cost tracking / spend logs / custom loggers)会被静

快速结论:当 LiteLLM Proxy 通过 Responses‑API bridge 将 Anthropic 格式的 /v1/messages 请求路由到 OpenAI 模型时(版本 1.83.14),成功回调(cost tracking / spend logs / custom loggers)会被静默丢弃。优先将 LiteLLM 升级到 v1.90.0 或更高版本。

适用环境:LiteLLM Proxy 1.83.14,使用 Anthropic 兼容的 /v1/messages 端点且 custom_llm_provider="openai" 的场景。

最快修复方案:将 LiteLLM 升级到 v1.90.0 或更高版本(修复提交 cfcdf87)。

注意事项:该问题在 stream 场景下无客户端可见症状,但会导致成本记录完全丢失(Issue 报道在生产中 5 天内丢失约 6 万条记录)。升级后如仍有缺失记录,请重新打开 Issue 并提供测试版本。

问题场景

用户通过 LiteLLM Proxy 的 /v1/messages 端点(Anthropic 兼容格式)请求 OpenAI 模型(如 GPT‑4),LiteLLM 内部通过 Responses‑API bridge 转发。在流式(streaming)请求中,客户端正常收到完整的 SSE 流,但所有成功回调(cost tracking、spend logs、custom loggers)均未触发,导致成本数据静默丢失。非流式请求中虽然触发成功回调,但会因类型验证错误产生重复错误日志。

报错原文

Streaming /v1/messages with OpenAI models silently drops all success callbacks (cost tracking lost) — 1.83.14

Exception: [Non-Blocking] LiteLLM.Success_Call Error: 1 validation error for AnthropicResponse
pydantic_core._pydantic_core.ValidationError: 1 validation error for AnthropicResponse
- input_type=ResponseCompletedEvent  (streaming, callbacks lost)
- input_type=ResponsesAPIResponse     (non-streaming, callbacks survive via duplicate event)

原因分析

根因在于 Responses‑API bridge 的 logging 对象中 call_type 被设置为 "anthropic_messages",但实际传入成功处理程序的结果对象是 Responses‑API 类型(如 ResponseCompletedEventResponsesAPIResponse),而非 AntropicResponse。成功处理程序根据 call_type 调用 AnthropicResponse.model_validate(result),导致 pydantic ValidationError。该异常在回调循环之前被重新抛出,对于 streaming(仅一次 fire‑and‑forget 成功事件),整个成功回调流程被终止,成本记录完全丢失。

环境排查

  • 确认 LiteLLM Proxy 版本是否为 1.83.14 或更早(修复在 v1.90.0+)
  • 检查是否使用 Anthropic 格式的 /v1/messages 端点且 custom_llm_provider="openai"(启用 Responses‑API bridge)
  • 查看 Proxy 日志中是否存在 ValidationError for AnthropicResponse 及相关堆栈

解决步骤

  1. 将 LiteLLM Proxy 升级到 v1.90.0 或更高版本(修复提交 cfcdf87,该版本修正了 _handle_anthropic_messages_response_logging 方法,将 Responses‑API 事件转换为 ModelResponse 后再执行日志,避免类型验证失败)。
  2. 重启 Proxy 服务使新版本生效。
  3. 如果仍无法记录成本,请检查自定义日志中间件是否有额外的过滤条件。

验证方法

使用一个 streaming 的 /v1/messages 请求(路由到 OpenAI 模型),确认 Proxy 日志中:

  • 不再出现 ValidationError for AnthropicResponse 错误;
  • 成功回调(如 spend logs、cost tracking)正常触发,并包含正确的 response_costcall_type = "anthropic_messages"

参考来源

BerriAI/litellm #34953

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 15627

发表回复

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