欢迎光临
我们一直在努力

ollama v0.17.6 发布:重大解析修复与 Qwen3.5 完整支持,全链路优化模型渲染与工具调用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2026 年 3 月 5 日,Ollama 正式发布了 v0.17.6 版本。这是一次极具实用价值的改进版本,在保持系统稳定的基础上,重点修复了多个长期存在的细节性问题,包括 GLM-OCR 的 Prompt 渲染错误、Qwen 3.5 工具调用与解析逻辑, 并带来了对模型渲染、工具链、配置兼容性等方面的进一步完善。

本篇文章将全面解析 v0.17.6 的变更列表、核心代码结构调整、测试覆盖改进及潜在影响,帮助开发者清晰理解此次升级的深度与意义。


一、版本概览

发布日期: 2026 年 3 月 5 日
版本号: v0.17.6
更新重点:

  • 修复 GLM-OCR 模型因 prompt 渲染错误导致无法工作的问题
  • 修复 Qwen 3.5 模型工具调用的解析与渲染问题
  • 优化模型配置文件命名兼容,例如 Ollama (local) 自动迁移为 Ollama
  • 移除旧版本 imagegen LLM 模型与 peak memory API 字段
  • 引入全新的 Qwen3.5 渲染及解析模块,全面支持 thinking 模式
  • 此次更新共包含 12 次提交、修改 51 个文件,由 7 名开发人员完成。从 diff 记录看,涉及到新增代码超过 3900 行,同时删除旧逻辑 4010 行,可见是一次覆盖范围较大的“重构 + 修复”整合版本。


    二、总体改动组成

    1. API 层变化:移除 PeakMemory 字段

    api/types.go 文件中删除了 Metrics 结构体中的 PeakMemory 相关字段与输出逻辑。
    其原始功能用于在模型推理时统计峰值内存占用,但由于 mlx(Memory Layout Executor)层的 API 已移除此项指标,因此不再返回该值。

    旧结构:

    type Metrics struct {
    TotalDuration time.Duration `json:"total_duration,omitempty"`
    PeakMemory uint64 `json:"peak_memory,omitempty"`
    }

    删除后:

    type Metrics struct {
    TotalDuration time.Duration `json:"total_duration,omitempty"`
    }

    同时删除了相关的格式化函数 formatPeakMemory、控制台输出内容,更新后的日志输出更加简洁,避免“空指标”误导用户。

    这也意味着未来 Ollama 将更聚焦 性能时间维度指标,而非硬件状态统计。


    2. 命令行层更新:移除 imagegen 运行参数

    cmd/cmd.go 文件中删除了 –imagegen 标志相关逻辑,不再通过 CLI 参数控制图像生成模型使用内部 Runner。

    这体现了 v0.17.6 开始逐步统一模型调用接口,将生成型与多模态模型整合至统一 runner 体系中,从设计上简化用户调用路径。


    3. 配置迁移优化:Ollama (local) → Ollama

    在配置管理模块 cmd/config/opencode.go 中新增了名称迁移逻辑,解决了配置兼容问题。
    许多开发者此前使用本地 provider 时,其配置如下:

    {
    "provider": {
    "ollama": {
    "name": "Ollama (local)",
    "npm": "@ai-sdk/openai-compatible",
    "options": {"baseURL": "http://localhost:11434/v1"}
    }
    }
    }

    新版本中,当检测到 Ollama (local) 名称时会自动迁移为 Ollama,保证现有配置无需手动修改即可被识别。

    同时,新单元测试验证逻辑如下:

    • 自动迁移本地 provider 名称。
    • 保留自定义 provider 名称(即不会覆盖非默认配置)。
    • 删除模型时保留非 Ollama 模型的子项。

    这确保了升级后配置文件兼容性 100%,不会破坏旧有项目结构。


    三、模型解析层全面升级:Qwen 3.5 Parser

    v0.17.6 最为关键的更新在于模型解析器部分。
    新增文件 model/parsers/qwen35.go(238 行新增)正式引入了 Qwen3.5 专属解析器 Qwen35Parser,取代原有的通用 Qwen3Parser。

    (1) 核心特性
    • 完整支持 thinking 推理标签 <think> … </think>
    • 增强对分块流式输出的识别能力(跨 token stream 渐进渲染)
    • 可区分思考内容(thinking content)与输出内容(response content)
    • 在思考区间不解析 <tool_call>,避免错把 reasoning 内部结构误识别为工具调用
    (2) 状态机设计

    新增状态:

    const (
    qwen35ParserStateCollectingThinking
    qwen35ParserStateThinkingDoneEatingWhitespace
    qwen35ParserStateCollectingContent
    )

    解析逻辑以有限状态机(FSM)形式实现。当遇到 <think> 起始标签进入思考模式,遇到 </think> 切换到内容模式。
    与此同时,对流式数据的分段处理更加精准,支持不完整的关闭标签(如 </thi + nk> 分两次到达),确保输出不会断裂。

    (3) 异常情况处理
    • 若 <think> 未关闭,自动将后续内容视为思考过程输出;
    • 若 Assistant 消息为续写(带 prefill),默认跳过起始思考阶段;
    • 处理 <think> 嵌套、空格、换行符自动剔除,输出纯净的 reasoning 文本。
    (4) 测试覆盖 (model/parsers/qwen35_test.go)

    测试文件新增 382 行,覆盖以下场景:

    • 工具调用 XML 格式识别;
    • 含显式 <think> 标签的 reasoning 内容提取;
    • Assistant 预填充(prefill)场景;
    • 思考阶段中误判工具调用;
    • <think> 标签被分片情况;
    • 未闭合标签情况下的安全输出。

    这些测试使 Qwen 3.5 解析流程从多线程推理到断流恢复都具备强鲁棒性。


    四、模型渲染层优化:全面更新 Qwen3.5 与 GLM-OCR Renderer

    渲染器层:model/renderers/ 目录新增了两大核心组件:

    1. Qwen35Renderer

    文件 model/renderers/qwen35.go,新增 389 行。
    该渲染器对应 Qwen3.5 模型 prompt 生成逻辑,旨在让模型完全遵循 XML 函数调用格式与 <think> 思考框架。

    功能亮点:
    • 支持 <tools> 指令区块嵌入,格式严格遵循模型需求;
    • 自动拼接系统提示与函数声明;
    • 支持生成 <tool_call> 块,带 <function=…> 与 <parameter=…>;
    • 逻辑层支持多工具顺序调用,多次 <tool_response> 块组装;
    • 思考与输出完美分离,紧密衔接模型训练格式。
    渲染示例结构:

    <|im_start|>assistant
    <think>
    I need to fetch the data first.
    </think>
    Here is my analysis.
    <tool_call>
    <function=get_data>
    <parameter=id>
    42
    </parameter>
    </function>
    </tool_call>
    <|im_end|>

    其他改进:
    • 支持 useImgTags 图片标记嵌入([img-0], [img-1]),兼容多模态;
    • 提供 emitEmptyThinkOnNoThink 参数,用于未启用思考模式时补充空 <think> 模块;
    • 对工具多次调用场景支持批量写入;
    • 对 assistant prefill 保留最后阶段输出,不关闭 <|im_start|> 块。

    测试文件 model/renderers/qwen35_test.go 共新增 389 行,涵盖:

    • 多轮对话、函数调用递归;
    • Back-to-back 工具响应;
    • 思考与工具交错场景;
    • Assistant 预填充完整性校验。

    该模块的引入使得 Ollama 在多模型推理框架下更贴合阿里 Qwen3.5 推理接口的真实结构。


    2. GLM-OCR Renderer 大幅修复

    文件 model/renderers/glmocr.go 修改 99 行。
    这次修复针对核心问题:GLM-OCR 模型无法正确渲染带图像的 prompt。

    更新要点:
    • 新增 GlmOcrRenderer 结构体属性 useImgTags;
    • 引入内部函数 renderContent(),根据配置动态选择是否添加 [img-x] 标记;
    • 改善 ImageOffset(图片计数偏移)管理;
    • 用户消息按 [img-0][img-1] 顺序标识多图输入;
    • 流程中修正原先 message.Content 与图片块拼接顺序。
    渲染前后差异:

    旧版输出(无法识别图片位):

    <|user|>请识别图片内容。

    新版输出(带多图标记):

    <|user|>
    [img-0][img-1]请识别图片内容。

    同时新增 glmocr_test.go 文件(99 行),验证包括以下 5 种情况:

  • 单张图片;
  • 多张图片;
  • 多轮对话图像偏移;
  • 默认模式不添加图像标签;
  • 无图像场景内容保持一致。
  • 这意味着以后 GLM-OCR 模型将可以在多图输入下稳定进行 OCR 推理,输出定位将完整无误。


    3. 渲染器选择逻辑更新

    在 model/renderers/renderer.go 中更新了模型映射:

    case "qwen3.5":
    renderer := &Qwen35Renderer{isThinking: true, emitEmptyThinkOnNoThink: true, useImgTags: RenderImgTags}
    case "glm-ocr":
    return &GlmOcrRenderer{useImgTags: RenderImgTags}

    即:

    • 将原来的 Qwen3VLRenderer 替换为新的 Qwen35Renderer;
    • 为 GLM-OCR 渲染器开启全局图片标签选项。

    这使两个模型在渲染阶段均获得一致的上下文构造与多模态支持。


    五、服务器逻辑补充更新

    在 server.go 中,删除了 CompletionResponse 返回体的 PeakMemory 字段,使 API 输出与 Metrics 同步调整。
    这确保了传输数据更轻量化、字段结构一致。


    六、测试体系增强

    此次更新新增测试覆盖超过 1000 行,主要针对以下方向:

    • 配置迁移测试
      确保旧配置自动升级为标准名称;
    • GLM-OCR 多图输入测试
      确认每张图片得到正确索引;
    • Qwen3.5 渲染与解析系统测试
      模拟思考场景、函数嵌套、流式数据拼接;
    • 工具调用与 reasoning 多阶段测试
      验证多工具连续调用的 XML 结构合法性;
    • Streaming 行为测试
      分块输入下保持状态一致性。

    针对复杂推理模型,如 Qwen3.5 这种包含 <think> 和 <tool_call> 的混合流式结构,此轮测试确保无论在并发推理还是断流恢复场景下都不丢失内容。


    七、移除旧模型与无效依赖

    本次更新清理了历史遗留的 imagegen LLM 模型,以及云模型拉取过程中的存根要求,进一步简化了部署过程。
    Revert 提交中体现了多次回滚与重放操作,表明研发团队对云端模型加载机制进行深度优化与验证。


    八、总结与展望

    Ollama v0.17.6 是一次结构性的重要版本更新。它没有去追求新增功能,而是聚焦于 底层稳定性、模型兼容与推理一致性 的打磨,体现出平台从实验型向工业化过渡的信号。

    核心收益总结:
  • GLM-OCR 修复后,OCR 模型可稳定处理多图输入。
  • Qwen3.5 渲染与解析系统配套上线,支持完整 <think> 思考标签链路。
  • 配置文件自动迁移,升级成本为零。
  • API 数据结构简化,输出更清晰、兼容性更高。
  • 测试覆盖度大幅提升,确保行为稳定与准确。
  • 通过对 v0.17.6 的更新,可以预见 Ollama 在未来版本中将继续强化多模态与 reasoning 模式集成,为 LLM 本地部署与企业多模型协作提供更坚实的基础。


    结语

    代码地址:github.com/ollama/ollama

    Ollama v0.17.6 虽非大版本跳跃,但却在细节上体现了极高的工程重视度。
    从配置迁移到渲染逻辑,再到工具调用与流式解析,几乎每个子模块都在朝着更统一、更可靠、更智能的方向演进。

    赞(0)
    未经允许不得转载:171主机测评 » ollama v0.17.6 发布:重大解析修复与 Qwen3.5 完整支持,全链路优化模型渲染与工具调用
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址