快速结论:这个问题出现在非英语会话(例如波兰语)启用 Context Compaction 后,压缩摘要被写成英文,导致模型在压缩后改用英文回复。优先排查的是 Context Compaction Prompt(或 CONTEXT_COMPACTION_PROMPT_TEMPLATE)是否缺少语言约束,同时确认压缩后是否仍保留了近期原文消息。
适用环境:Open WebUI v0.12.4;Docker 安装;Ubuntu 26.04;Context Compaction 已启用;使用默认 Context Compaction Prompt;Context Compaction Model 为 DeepSeek V4.1 Flash 1017。Issue 中未提供 Python、CUDA、PyTorch、显卡与 Ollama 版本信息。
最快修复方案:暂无确认的一步修复方案。Issue 讨论中提出并已提交 PR 的改法是:在默认压缩提示词中加入 “Write the summary in the chat’s primary language; default to English if multilingual.”;在维护者合并前,可直接在 Admin Settings > Interface 中设置自定义 Context Compaction Prompt,加入 “Write the summary in the language the user writes in.”。维护者实测认为该默认英文提示词不一定会导致回复语言切换,因此该方案属于可优先尝试。
注意事项:维护者跑了 5 个模型 × 5 次,包括 DeepSeek V4.1 Flash 1017,几乎每次摘要都是波兰语,且压缩后回复均为波兰语(即使摘要为英文的两次也是如此),因此无法复现报告中的语言切换。默认压缩会原样保留最近约 40% 的消息,模型通常仍能看到用户的原始语言消息;若你仍切换到英文,需要 chat export(含摘要与之后的英文回复)、chat model、compaction model 和 system prompt 才能定位。自定义提示词可能影响摘要内容,建议保留默认要求再追加语言行。
问题场景
在 Open WebUI 中开启 Context Compaction(Admin Settings > Interface),并以非英语(波兰语)持续对话时,自动压缩(包括几轮消息之后以及 tool-call 循环内)会生成压缩摘要。若摘要被写成英文并替换掉原始 user/assistant 消息,模型后续上下文中英文占主导,可能继续用英文回答,即使用户仍在用波兰语提问。
报错原文
issue: context compaction summary is written in English for non-English chats, so the model switches to English after compaction
原因分析
可能原因:backend/open_webui/utils/context_compaction.py 中的 DEFAULT_CONTEXT_COMPACTION_PROMPT 是英文撰写,且没有规定摘要的输出语言,压缩模型因此默认用英文生成摘要。由于摘要会替换原始用户/助手消息,模型看到的上下文以英文为主,从而倾向继续用英文回复。报告者指出,标题生成提示词已有 “Write the title in the chat’s primary language; default to English if multilingual.” 这类语言约束,而压缩提示词没有对应约束。
但维护者复测未复现该切换:25 次运行中摘要几乎都是波兰语,且全部回复为波兰语;压缩默认保留最近 40% 消息,模型仍能看到用户真实原文。因此“摘要英文导致回复英文”的因果链在当前版本中未得到确认,只可视为对特定模型/配置的可能原因。
环境排查
- 确认 Open WebUI 版本(Issue 为 v0.12.4)及是否运行在 Docker / Ubuntu 26.04。
- 确认 Admin Settings > Interface 中 Context Compaction 是否启用、阈值设置,以及是否使用默认 Context Compaction Prompt。
- 确认 Context Compaction Model(Issue 中为 DeepSeek V4.1 Flash 1017),并对比更换其他模型后是否仍出现语言切换。
- 确认是否配置了自定义 Context Compaction Prompt 或
CONTEXT_COMPACTION_PROMPT_TEMPLATE环境变量。 - 确认对话是否使用 system prompt,以及是否有工具调用(tool call)使 token 快速累积触发压缩。
- Issue 未涉及 Python、CUDA、PyTorch、显卡版本,无需按这些项排查。
解决步骤
- 先在非英语会话中复现:保持默认压缩提示词,把阈值调低以便快速触发压缩,连续几轮用波兰语对话,观察摘要语言与压缩后回复语言。
- 若摘要确为英文,进入 Admin Settings > Interface,将 Context Compaction Prompt 改为自定义内容:复制默认提示词,在 Instructions 部分追加一行,例如
Write the summary in the language the user writes in.(或采用 Issue 中建议的Write the summary in the chat's primary language; default to English if multilingual.)。也可通过CONTEXT_COMPACTION_PROMPT_TEMPLATE环境变量设置。 - 可额外要求摘要把用户所用语言记录为用户偏好,使模型在后续回复中延续该语言。
- 保存后重新开始一轮非英语对话,再次触发压缩并继续提问,检查摘要与回复语言。
- 若自定义提示词后仍会切换英文,准备 chat export(包含摘要内容和其后的英文回复)、chat model、compaction model 与所用 system prompt,回到原 Issue 重新开启讨论。注意:Issue 中该 workaround 标注为 “TODO: confirm after testing”,属于未完全验证的尝试性方案。
验证方法
触发一次压缩后,查看聊天中显示的摘要是否为对话主语言(如波兰语);随后用同一语言继续发送消息,确认助手回复仍使用该语言。维护者的对照结果显示,即使摘要为英文,默认配置下回复也可能保持原语言,因此判断是否解决应以“压缩后回复语言”为准,而非仅看摘要语言;若摘要语言与回复语言不一致,需结合 chat export 进一步分析。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


