
Claude Code + Ollama /v1/messages?beta=true fails when Read tool reads PNG
快速结论:这个报错通常发生在 Claude Code 通过 Ollama 调用 /v1/messages?beta=true 端点时,当 Read 工具读取 PNG 图片并返回嵌套的 image 内容到 tool_result 结构中,Ollama 无法正确解析这些嵌套的图片内容,返回 400 错误。优先排查 Ollama 版本是否已包含对嵌套 tool_result(image) 负载的处理修复。
问题场景
用户在 VS Code 中使用 Claude Code 通过 Ollama 调用 /v1/messages?beta=true 端点。直接向该端点发送顶层图片内容请求可以正常工作,纯文本的 Read 工具调用也可以正常工作。但当 Read 工具读取 PNG 文件并返回嵌套的 image 内容到 tool_result 结构中时,请求失败,返回 API Error: 400 Input should be a valid string。
报错原文
API Error: 400 Input should be a valid string
Ollama log:
POST "/v1/messages?beta=true" 400
原因分析
最可能的原因是 Ollama 在处理 /v1/messages?beta=true 端点的请求时,对嵌套在 tool_result 内部的 image 内容的解析逻辑与顶层用户图片内容的处理方式不一致。当 Read 工具读取 PNG 并将图片内容嵌套返回时,Ollama 无法正确解析这种嵌套结构,导致验证失败并返回 400 错误。
issue #16047 已经包含了针对嵌套 tool_result(image) 负载的核心修复,但仍可能因为版本差异或具体使用场景而存在未覆盖的边界情况。
环境排查
- 确认 Ollama 版本:用户报告了
0.24.0版本存在问题,另一用户报告在0.30.10版本仍然复现 - 操作系统:Windows
- GPU:其他(非 NVIDIA/AMD 主流 GPU)
- CPU:Intel
- 确认 Claude Code 版本和 VS Code 扩展版本
- 确认使用的模型是否支持图片输入功能
解决步骤
- 开启 Ollama 调试日志:在 Windows PowerShell 中运行以下命令,查看完整的请求/响应日志,以便获取更详细的错误信息:
$env:OLLAMA_DEBUG_LOG_REQUESTS="1"
ollama serve - 确认修复是否已包含:检查当前使用的 Ollama 版本是否已包含 PR #16047 的修复。该 PR 已经合入了对嵌套
tool_result(image)负载的处理。 - 升级到最新版本:如果使用的 Ollama 版本较旧(如
0.24.0),建议升级到最新发布版本,查看问题是否得到解决。注意:0.30.10版本仍有用户报告问题,因此升级到最新版不保证完全修复。 - 提交详细日志:如果升级后仍存在问题,在 GitHub issue 中提交开启
OLLAMA_DEBUG_LOG_REQUESTS后的完整日志,包括请求体和响应体。 - 可优先尝试:作为临时替代方案,避免在 Read 工具调用中读取 PNG 文件,直接使用文本输入,或者手动将图片作为顶层请求内容发送。
验证方法
在 VS Code 中使用 Claude Code,尝试让 Read 工具读取一个 PNG 图片文件。如果不再出现 API Error: 400 Input should be a valid string 错误,且 Ollama 日志中不再返回 POST "/v1/messages?beta=true" 400,则表明问题已解决。

![[Bug]: MTP Speculative Decoding with NVFP4: Weight Shape Mismatch](https://www.chat-gpts.plus/wp-content/uploads/2026/06/35031-2c47d432-768x403.jpg)
![[Bug]: Gemma 4 (31B / 26B-A4B) generates infinite repetition loops, especially with structured output (JSON schema)](https://www.chat-gpts.plus/wp-content/uploads/2026/06/40080-e1044c70-768x403.jpg)
