快速结论:该问题发生在多个并发请求通过 LiteLLM 代理进行流式输出时,CJK(中文)字符碎片会意外注入到无关的响应流或工具调用参数中。优先排查是否开启了 merge_reasoning_content_in_choices,但该标志并非根本原因,当前没有确认的修复方案。
适用环境:LiteLLM v1.93.0、v1.94.0;任何使用流式传输的模型(尤其是包含中文内容的并发请求场景);可能也与模型层合并 reasoning_content 的配置有关(但非根因)。
最快修复方案:暂无确认的一步修复方案。维护者未能复现该问题,目前唯一被报告有效的缓解措施是避免同一 LiteLLM 网关实例上的并发对话(即串行使用),但这会降低吞吐量。
注意事项:该方案为临时规避,并非根因修复;回滚到较早版本(如 v1.93.0)未经明确验证,可能引入其他问题。关闭 merge_reasoning_content_in_choices 不能解决污染,但可作为排查步骤。
问题场景
用户通过 LiteLLM 代理调用支持流式推理的模型(如 Kimi-K3),当多个客户端(如 Cursor 中的多个对话)同时向同一代理发送请求并流式读取响应时,偶尔发现响应中出现不属于当前请求的 CJK 字符(如“壁纸”“起床”“信仰”),甚至工具调用参数被篡改(如 pod 名从 litellm-pg-利用1 变为 litellm-p信仰-1),导致 shell 命令执行失败。
报错原文
[Bug]: CJK characters from concurrent requests bleed into unrelated streams (cross-request contamination in streaming)
原因分析
可能原因是 LiteLLM 网关内部流式处理路径中,多个并发请求共享的缓冲区(或字符串处理逻辑)未进行充分隔离,导致一个请求流中的 CJK 字节片段错误地拼接到了另一个请求的流式输出中。维护者在单机测试中无法复现,但用户通过直接访问模型后端(绕过网关)得到了干净的流,证明污染由网关引入。
环境排查
- 确认 LiteLLM 版本是否为 v1.93.0 或 v1.94.0
- 检查模型配置中是否启用了
merge_reasoning_content_in_choices(该标志虽非根因,但会放大污染的可观测性) - 确认是否存在多个并发流式请求同时通过同一个代理实例
- 确认污染只出现在代理路径,而非模型后端(可直接向模型端口发送测试请求验证)
解决步骤
- 临时规避:避免同一 LiteLLM 代理实例上的并发流式对话,即确保每次只处理一个流式请求,直到 LiteLLM 维护者发布修复版本。
- 排查配置影响:如果开启了
merge_reasoning_content_in_choices,可尝试通过完整/model/update将其设为false,但这不能根治污染(仅可能减少可见症状)。 - 回滚尝试(谨慎):如果场景允许,可测试回滚到 v1.93.0 或更早版本(但用户报告 v1.93.0 也存在该问题,故未必能修复)。
- 记录触发模式:持续观察污染出现时的并发请求特征(如并发数、CJK 文本长度),并在官方 Issue 中补充证据以协助维护者复现。
验证方法
在类似并发压力下,观察流式响应中是否出现预期外的 CJK 字符或工具调用参数片段消失/变形。如果串行使用后污染不再出现,则说明规避有效。直接向模型后端发请求(绕过网关)确认后端输出是干净的,以排除模型自身问题。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug]: MCP OAuth: persisted discovered issuer flips servers into issuer-anchored mode; one failed metadata fetch then breaks /authorize unti](https://www.chat-gpts.plus/wp-content/uploads/2026/07/34985-2a7e2ee7-768x403.jpg)
