Ollama: think=False is coerced to None (falls back to self.thinking) in chat/stream_chat/achat/astream_chat

该报错发生在 LlamaIndex 的 Ollama 集成中,当调用 `chat`/`stream_chat`/`achat`/`astream_chat` 方法并传入 `think=False` 时,该参数被内部逻辑错误地忽略,导致仍然返回思考模型的推理 token。优先排查并修复 `llama-

快速结论:该报错发生在 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` 参数值。

解决步骤

  1. 可优先尝试:在创建 `Ollama` 实例时设置 `thinking=False`(构造函数级),例如 `Ollama(model=”gemma4:12b”, thinking=False)`。该方法因 `None or False` 结果为 `False`,能正确传递参数。
  2. 若需调用级控制,检查本地安装的 `base.py` 文件,将四处方法中的逻辑改为:
    think = kwargs.pop("think", None)
    think = self.thinking if think is None else think
  3. 关注合并 PR #22468 的版本发布,该 PR 已修复此逻辑并增加回归测试,版本号拟升至 0.10.2。

验证方法

修改后用相同 prompt 和 JSON schema 请求,检查 Ollama 日志中请求体是否包含 `”think”: false`,以及响应中的 `eval_count` 是否显著下降(按 Issue 实测结果约从 600 降至 100)。

参考来源

run-llama/llama_index #22970

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22099

发表回复

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