快速结论:当你在 Open WebUI 中通过 Google 的 OpenAI 兼容端点(https://generativelanguage.googleapis.com/v1beta/openai)接入 Gemini 模型,并开启原生函数调用(native function calling)时,模型一旦决定调用工具,助手消息就变为空、日志无任何输出。优先确认你用的是否是 Google 的“伪 OpenAI 兼容”端点,并检查是否为该兼容性缺陷。
适用环境:Open WebUI 版本 dev(Git Clone 安装);操作系统 all;使用 Google OpenAI 兼容端点 base URL https://generativelanguage.googleapis.com/v1beta/openai + Gemini API Key;模型如 models/gemini-3.6-flash;function_calling 保持默认 native;启用了内置工具与 memory。Issue 未提供 Python、CUDA、PyTorch、显卡、Ollama 版本信息。
最快修复方案:暂无确认的一步修复方案。该 Issue 最终以“won’t fix / duplicate”关闭,理由是 Google 的 OpenAI 端点并不真正兼容 OpenAI Completions schema。可优先尝试的方式是:按 Issue 评论区提供的函数(Google 与 OpenAI 语法互转)在 Settings | Functions 中配置,把 function calling 设为 Native,并用该函数派生模型来使用。
注意事项:官方明确表示不会修复,因为该行为违反 OpenAI Completions schema。这不是 Open WebUI 单方面能修的问题。在未使用转换函数前,工具调用可能被静默丢弃、thought_signature 丢失,导致空回答;且由于 memory 工具默认开启,用户可能在无提示情况下频繁遇到空回复。评论区提供的 Gemma4NativeTools.py 属于社区方案,未被官方验证,需自担风险。
问题场景
用户在 Open WebUI 中新增一个 OpenAI 连接,base URL 填 https://generativelanguage.googleapis.com/v1beta/openai,配合 Gemini API Key;启用如 models/gemini-3.6-flash 的模型;在该模型能力中开启 builtin tools 和 memory,function_calling 保持默认的 native。在新对话中发送“Oi”并重复几次,当模型自行决定调用工具(例如内置 memory 的 list_memories)时触发问题。表现为助手消息内容为空,存储在 content ''、output: [],而 provider 报告已消耗 output tokens,说明模型确实产生了内容但未到达 UI。日志在任何级别都没有记录。
报错原文
Tool calls silently dropped and thought_signature lost with Google's OpenAI-compatible endpoint
HTTP 400 INVALID_ARGUMENT - Function call is missing a thought_signature in
functionCall parts. This is required for tools to work correctly. Additional
data, function call `default_api:list_memories`, position 2.
原因分析
根据 Issue 分析,存在两个相互独立、且有先后依赖关系的原因:
- 工具调用在运行前就被丢弃。流式累积循环读取
delta_tool_call.get('index'),且所有处理逻辑都包在if tool_call_index is not None:里,没有 else 分支。Google 会把每个工具调用完整放在一个 chunk 里发送并省略index,而 OpenAI 流式规范始终包含index,因此该调用在无任何痕迹的情况下被丢弃。 - Gemini 3 的
thought_signature没有被回传。它随工具调用出现在extra_content中,必须在其对应的 functionCall 上重放。但有三处在逐字段重建工具调用时丢弃了它,导致后续请求失败并返回HTTP 400 INVALID_ARGUMENT - Function call is missing a thought_signature in functionCall parts...。在这种情况下工具确实运行了、结果显示出来了,但模型始终不产出最终答案,消息仍为空。
官方在 Issue 中确认,根因是 Google 的“OpenAI 兼容”端点事实上并不兼容 OpenAI 规范,因此标记为 duplicate 并 won’t fix。
环境排查
- 确认 Open WebUI 安装方式与版本:Issue 中为 Git Clone、dev 分支。
- 确认接入方式:base URL 是否为
https://generativelanguage.googleapis.com/v1beta/openai,并使用 Gemini API Key。 - 确认模型名称,例如
models/gemini-3.6-flash。 - 确认模型的 function_calling 是否设为 native(默认值)。
- 确认是否开启了 builtin tools 与 memory(memory 默认开启,会主动调用
list_memories)。 - 确认操作系统:Issue 标注为 all。
- Issue 未提供 Python、CUDA、PyTorch、显卡、Ollama 版本,无需强行核对。
解决步骤
- 先确认问题是否由 Google OpenAI 兼容端点引起:如果你正使用该 base URL + Gemini 模型 + native function calling,且助手消息为空、日志无输出,基本可判定命中此问题。
- 查看 Issue 评论中官方说明的“Google 的 OpenAI 端点并不真正兼容 OpenAI 规范”,理解官方不会修复该兼容性问题。
- 可优先尝试社区方案:在 Settings | Functions 中粘贴评论区提供的
Gemma4NativeTools.py(Google 与 OpenAI 语法互转函数),基于该函数配置一个模型,并将其高级参数中 function calling 设为 Native。 - 如果你只是需要避免空回答,可以关闭 memory 工具或避免使用会触发工具调用的对话轮次,以减少命中该缺陷的概率。
- 若需要官方层面的改进(例如至少记录缺少 tool_call_index 的工具调用、或直接向用户报错而非空回答),可参考 Issue 中用户建议,等待或参与 docs 更新。
验证方法
在新对话中发送会触发工具调用的消息(例如“Oi”并重复多次,或直接触发 list_memories)。若助手能返回最终自然语言回答、且消息 content 非空、日志中有正常的工具调用记录,则说明已绕开该问题。若仍出现 content '' 且 output: [],说明仍命中原始缺陷或所用函数未生效。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


