快速结论:该报错发生在 LlamaIndex 的 Ollama 集成中,当调用 `chat`/`stream_chat`/`achat`/`astream_chat` 方法并传入 `think=False` 时,该参数被内部逻辑错误地忽略,导致仍然返回思考模型的推理 token。优先排查并修复 `llama-index-llms-ollama/base.py` 中的参数回退逻辑。
适用环境:LlamaIndex(llama-index-llms-ollama 0.10.1),Ollama 服务,支持思考能力的模型(如 gemma4:12b)。
最快修复方案:暂无官方一键修复。已提交修复 PR(#22468),合并前可优先尝试将 `thinking=False` 设置在 `Ollama` 构造函数上,而不是在单次调用时传 `think=False`。
注意事项:构造函数方案仅验证可覆盖实例默认值;若需在调用级精确控制,仍需等待 PR 合并或自行修改源码。
问题场景
在 LlamaIndex 中使用 Ollama 集成调用支持思考能力的模型(如 Gemma 4)。用户通过 `llm.chat(messages, think=False)` 尝试在单次请求中关闭思考模式,但请求发送到 Ollama 时 `think` 参数仍为实例默认值或 `null`,模型继续输出大量推理 token,导致响应时间显著增加且可能返回无法解析的内容。
报错原文
Ollama: think=False is coerced to None (falls back to self.thinking) in chat/stream_chat/achat/astream_chat
原因分析
问题根源在 `llama-index-integrations/llms/llama-index-llms-ollama/llama_index/llms/ollama/base.py` 中四个方法均采用的参数处理逻辑:
think = kwargs.pop("think", None) or self.thinking
该表达式在 Python 中,当调用者显式传入 `think=False` 时,`False or self.thinking` 会返回 `self.thinking`,导致原本用于关闭思考的参数被静默忽略。这属于逻辑错误,而非配置或环境问题。该 Issue 已被标记为 #22467 的重复项。
环境排查
- 确认 `llama-index-llms-ollama` 是否为 0.10.1 或更早版本(该版本包含此缺陷)。
- 检查 Ollama 服务中加载的模型是否支持思考模式(本例使用 gemma4:12b)。
- 通过 Ollama 调试日志或代理确认请求体实际发送的 `think` 参数值。
解决步骤
- 可优先尝试:在创建 `Ollama` 实例时设置 `thinking=False`(构造函数级),例如 `Ollama(model=”gemma4:12b”, thinking=False)`。该方法因 `None or False` 结果为 `False`,能正确传递参数。
- 若需调用级控制,检查本地安装的 `base.py` 文件,将四处方法中的逻辑改为:
think = kwargs.pop("think", None)
think = self.thinking if think is None else think - 关注合并 PR #22468 的版本发布,该 PR 已修复此逻辑并增加回归测试,版本号拟升至 0.10.2。
验证方法
修改后用相同 prompt 和 JSON schema 请求,检查 Ollama 日志中请求体是否包含 `”think”: false`,以及响应中的 `eval_count` 是否显著下降(按 Issue 实测结果约从 600 降至 100)。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: Anthropic /v1/messages erases OpenAI Responses refusal blocks into empty content array](https://www.chat-gpts.plus/wp-content/uploads/2026/09/39721-d1e57fe2-768x403.jpg)
![[Feature]: publish a signature for the remote model cost map so installs can verify what they fetched](https://www.chat-gpts.plus/wp-content/uploads/2026/09/40051-5fdbcb08-768x403.jpg)
