templates for created models have changed since update

更新 Ollama 到 3.2 后,自定义模型的模板被替换成模型内嵌的模板。优先检查 ollama show model --modelfile 和 --template 是否不一致,并尝试在服务器环境设置 OLLAMA_GO_TEMPLATE=1 恢复 Go 模板,若无效则需更新 Modelfil

快速结论:更新 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 --modelfileollama show model --template 对比模板内容差异。

解决步骤

  1. 关闭 Ollama 服务。
  2. 在启动服务的命令行中设置环境变量 OLLAMA_GO_TEMPLATE=1,重启服务(macOS 可通过 launchctl 设置)。
  3. 验证模板是否恢复:运行 ollama show model --modelfile 比较。若仍不一致,说明环境变量方法无效。
  4. 直接修改模型的 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...>"""
  5. 使用更新后的 Modelfile 重新创建模型(ollama create)。

验证方法

执行 ollama show 模型名 --modelfileollama show 模型名 --template,确认两者输出一致符合预期。同时测试模型的对话和工具调用功能是否正常。

参考来源

ollama/ollama #17282

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 15208

发表回复

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