快速结论:更新 Ollama 到 3.2 后,自定义模型的模板被替换成模型内嵌的模板。优先检查 ollama show model --modelfile 和 --template 是否不一致,并尝试在服务器环境设置 OLLAMA_GO_TEMPLATE=1 恢复 Go 模板,若无效则需更新 Modelfile 模板以兼容工具调用。
适用环境:Ollama 3.2(macOS,Apple GPU/CPU)。
最快修复方案:暂无确认的一步修复方案。已验证的解决方法是修改 Modelfile,加入完整的工具调用(tool round trip)支持模板(见解决步骤)。
注意事项:仅设置 OLLAMA_GO_TEMPLATE=1 可能仍无法恢复模板(Issue 用户测试无效),最终模板必须包含 {{ if .Tools }}{{ .Tools }}{{ end }} 且完整格式才能生效。
问题场景
用户将 Ollama 更新到 v3.2 后,通过 ollama show model --modelfile 看到的模板与 ollama show model --template 输出不一致。自定义的旧模板被改变,可能是模型内置的默认模板。此问题影响所有新创建及已有模型。
报错原文
templates for created models have changed since update
原因分析
Ollama 从 v0.30.0 开始默认优先使用模型文件内部嵌入的模板(而非用户在 Modelfile 中定义的 Go 模板)。更新到 v3.2 后,此行为固定生效,导致自定义模板被覆盖。即使设置了 OLLAMA_GO_TEMPLATE=1 试图回退,可能因为新版本逻辑变更而无效。
环境排查
- 确认 Ollama 版本是否为 v3.2(或更高)。
- 检查
OLLAMA_GO_TEMPLATE环境变量是否已在 Ollama 服务进程环境中正确设置并重启服务。 - 使用
ollama show model --modelfile和ollama show model --template对比模板内容差异。
解决步骤
- 关闭 Ollama 服务。
- 在启动服务的命令行中设置环境变量
OLLAMA_GO_TEMPLATE=1,重启服务(macOS 可通过 launchctl 设置)。 - 验证模板是否恢复:运行
ollama show model --modelfile比较。若仍不一致,说明环境变量方法无效。 - 直接修改模型的 Modelfile,添加完整的工具调用支持模板。示例(替换为您的自定义部分):
FROM file.gguf TEMPLATE """{{ if .Tools }}{{ .Tools }}{{ end }}{{ range .Messages }}{{ if eq .Role "tool" }}tool_response{{ end }}{{ if .ToolCalls }}{{ range .ToolCalls }}{{ .Function.Name }}{{ end }}{{ end }}{{ end }} <...insert custom template here...>""" - 使用更新后的 Modelfile 重新创建模型(
ollama create)。
验证方法
执行 ollama show 模型名 --modelfile 与 ollama show 模型名 --template,确认两者输出一致符合预期。同时测试模型的对话和工具调用功能是否正常。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


