首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ollama v0.17.4发布:Qwen 3.5与LFM 2全新登场,稳定工具调用索引机制全面升级!一文读懂最新改动与技术细节

ollama v0.17.4发布:Qwen 3.5与LFM 2全新登场,稳定工具调用索引机制全面升级!一文读懂最新改动与技术细节

作者头像
福大大架构师每日一题
发布2026-03-04 19:53:17
发布2026-03-04 19:53:17
670
举报
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2026年2月28日,Ollama正式发布了版本 v0.17.4。这一版本不仅带来了两款全新的模型系列——Qwen 3.5LFM 2,同时在底层解析器上进行了大幅度优化,尤其是在 工具调用索引(Tool Call Indexing) 方面实现了重要的机制升级,使并行工具调用更加稳定、更加可追踪。本次更新还明确指出,对使用 v0.17.1 的用户,此版本不会自动更新,必须重新下载才能获得最新版本的 Ollama。


一、版本概览与关键更新

1. 新模型发布简介

在 v0.17.4 中,Ollama官方引入了两个重量级的模型家族:

  • Qwen 3.5: 这一新系列是开源的多模态模型家族,具备出色的实用性与性能表现。它延续了 Qwen 系列的强项,在文本、视觉等不同模态任务中都有极高的表现力,兼具开放性与高效性。
  • LFM 2: LFM2 是一类混合型模型家族,专为设备端部署(on-device deployment)设计。其重点成员 LFM2-24B-A2B 拥有高达 240亿 参数的规模,在保证模型推理效率的前提下,将架构进行有效扩展,从而实现更高的本地计算性能。

这标志着 Ollama 在本地模型与云端模型之间的融合迈出了关键一步——不仅支持更大的参数规模,同时为多模态与本地推理场景提供了优化支持。


2. 并行工具调用索引机制升级(Tool Call Indexing)

v0.17.4 的核心更新之一是:

“Tool call indices will now be included in parallel tool calls”

这意味着在进行多工具调用的场景中,每一次工具调用(Tool Call)都会带有独立且稳定的索引(Index)值。这一机制的引入,保证了多线程或流式调用环境下,调用顺序能够明确追踪,不会出现索引错乱的情况。对于需要依赖多工具协同的模型(例如 Qwen3、GLM4.6、GLM4.7 等),该功能的提升显著增强了解析的稳定性与保证测试的一致性。


二、具体改动详解:解析器(model/parsers)层面的优化

本次更新涉及多个解析器文件的同步调整,包括 glm46.go、glm47.go、qwen3.go、qwen3coder.go 等。这些文件的改动主要集中在为每个工具调用分配唯一索引值的机制上,确保每次解析过程中的调用可追踪。


(一)GLM系列解析器变更
文件:model/parsers/glm46.go

新增了:

代码语言:javascript
复制
callIndex int

并在各类函数中加入了对该索引的初始化与自增逻辑:

• 在 Init() 方法中:

代码语言:javascript
复制
p.callIndex = 0

• 在 Add() 方法中:

代码语言:javascript
复制
toolCall.Function.Index = p.callIndex
p.callIndex++

通过这两个步骤,每次工具调用都会自动分配一个序号,确保调用顺序的精确管理。在进行多步思考(thinking)及多轮工具调用时,索引能够按照调用顺序依次增加,从而让后续的日志调试与数据追踪更清晰。


文件:model/parsers/glm47.go

GLM4.7 的解析器新增了类似改动,确保 callIndex 的初始化与递增。在对应的测试文件 glm47_test.go 中,也加入了多个验证函数来确保索引机制的正确性:

例如:

  • • 测试方法 TestGLM47ParserToolCallIndexing
  • • 测试方法 TestGLM47ParserToolCallIndexResetOnInit
  • • 测试方法 TestGLM47ParserToolCallIndexingStreaming

这些测试都覆盖了以下关键场景:

  1. 1. 多个连续 Tool Call 的索引是否正确递增;
  2. 2. 流式分块输入(Streaming)下索引是否保持稳定;
  3. 3. 重新初始化(Init)后索引是否重置为 0。

整体测试逻辑验证了各个 Tool Call 对应 Index 值从 0 开始递增的稳定行为。


(二)Qwen系列解析器全面完善索引机制
文件:model/parsers/qwen3.go

这一部分是本次更新的重点区段之一。该文件新增字段:

代码语言:javascript
复制
callIndex int

并在初始化函数中加上:

代码语言:javascript
复制
p.callIndex = 0

同时在工具调用解析函数中:

代码语言:javascript
复制
toolCall.Function.Index = p.callIndex
p.callIndex++

该逻辑确保了 Qwen3 系列(包括 Qwen3 与 Qwen3.5)在执行工具调用时,每个工具实例都有明确的顺序编号。无论是在一次性完整输出还是流式分块输出(streaming)中,索引均能正确维护。

对应的测试文件 qwen3_test.go 中新增了多个用例:

  • TestQwen3ParserToolCallIndexing
  • TestQwen3ParserToolCallIndexingStreaming
  • TestQwen3ParserToolCallIndexResetOnInit

每个测试都验证了索引的正确性。示例:

代码语言:javascript
复制
want := []api.ToolCall{
  {Function: api.ToolCallFunction{Name: "first", Arguments: args(`{"a":"1"}`), Index: 0}},
  {Function: api.ToolCallFunction{Name: "second", Arguments: args(`{"b":"2"}`), Index: 1}},
  {Function: api.ToolCallFunction{Name: "third", Arguments: args(`{"c":"3"}`), Index: 2}},
}

流式测试确保当模型输出被分成两部分进行解析时,索引依旧能够根据调用顺序准确递增。这一机制在多工具联动场景中尤为关键,可防止工具调用输出混乱。


文件:model/parsers/qwen3coder.go

该文件的逻辑与前述相似,主要增加了:

代码语言:javascript
复制
callIndex int

并在工具调用处理逻辑中加入索引标记。其测试文件 qwen3coder_test.go 同样覆盖:

  • • 多次连续调用索引验证;
  • • 流式分块解析索引验证;
  • • 初始化重置机制的正确性。

验证工具调用序列精准有序,并能在每次新的会话初始化时将索引复位,这是保证系统精确性的又一关键点。


三、v0.17.3版本回顾:解析修复优化

在了解 v0.17.4 的新机制前,我们可以回顾一下前一版本 v0.17.3 的关键改动。

此前 Ollama 团队发布的 v0.17.3 主要修复了以下问题:

“Fixed issue where tool calls in the Qwen 3 and Qwen 3.5 model families would not be parsed correctly if emitted during thinking.”

即修复了 Qwen 3 与 Qwen 3.5 模型家族在思考阶段(thinking)中发出工具调用时的解析错误问题。这一问题曾导致模型在多模态推理过程中,无法正确提取工具指令。本次修复重点在解析器的 eat() 函数,处理 <think><tool_call> 标签交错的情况。


(一)Qwen 3解析器的修复细节

model/parsers/qwen3.go 中,新增了以下逻辑:

• 同步处理 <think><tool_call> 标签的关系,确保当工具标签出现在 thinking 关闭标记前时,能够正确切换状态;

• 通过比较索引位置 (toolOpenIdx 与 thinkingCloseIdx) 来判断哪一部分应优先解析;

• 新增重叠检测逻辑:

代码语言:javascript
复制
overlapLen := max(overlap(acc, qwen3ThinkingCloseTag), overlap(acc, qwen3ToolOpenTag))

保证流式分块中部分标签未完整出现时,能稳定等待下一个数据块,无数据丢失。

对应测试文件 qwen3_test.go 也新增测试场景:

  • • 工具调用嵌入于“思考”阶段的情况;
  • • 分块输入 <tool_call> 时的正确识别;
  • • 无思考模式时的正确响应(No Think 条件测试)。

这些测试验证该版本的解析器在复杂思考与工具调用混合输出下的稳定性。


(二)Qwen3VL解析器同步更新

对应的 model/parsers/qwen3vl.go 文件中也增加了相似的逻辑优化。通过引入 max() 检查,以判断是否存在 <think><tool_call> 标签的重叠,并完善流式缓冲区处理逻辑,防止截断丢失。

测试文件 qwen3vl_thinking_test.go 验证了:

  • • 嵌套思考与工具调用的双层场景;
  • • 正确区分嵌套与非嵌套调用;
  • • 保证测试输出中事件(event)顺序与预期一致。

四、整体影响与技术价值分析

综合 v0.17.3 与 v0.17.4 的两次更新,Ollama 在模型解析器层面的核心演进可以总结为:

  1. 1. 修复工具调用在思考阶段的误解析问题(v0.17.3);
  2. 2. 加入稳定的工具调用索引机制(v0.17.4);
  3. 3. 在 GLM、Qwen、Qwen3Coder 等多模型家族中统一索引策略
  4. 4. 增强流式分块输入支持,保证跨chunk的稳定性
  5. 5. 新增对多工具并行调用时索引一致性管理的支持

这些改进使得 Ollama 的工具调用能力更加可控与可追踪,尤其是对于多智能体协作场景(例如一个LLM控制多个API或函数的场景),索引机制能够帮助开发者明确区分每个调用的上下文与调用次序。


五、小结

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

Ollama v0.17.4 不仅是一次常规版本更新,更是一次底层数据稳定性与解析精度的全面提升。此次改动包含:

  • 新增两大模型家族(Qwen 3.5 / LFM 2)
  • 完善工具调用索引逻辑(callIndex)
  • 代码结构优化与测试覆盖率提升
  • 延续 v0.17.3 的思考与工具调用解析修复成果

对开发者而言,使用新版 Ollama 将获得更高的调用稳定性,且多工具协同场景会更加顺畅。对于模型端来说,新的索引逻辑使推理输出更具一致性与可控性。


总结一句话:

Ollama v0.17.4 是一次从“修复”到“优化”的深度进化版本,不仅让工具调用更稳定、更可追踪,还为多模态与本地部署场景开启了新的性能维度。

·


我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、版本概览与关键更新
    • 1. 新模型发布简介
    • 2. 并行工具调用索引机制升级(Tool Call Indexing)
  • 二、具体改动详解:解析器(model/parsers)层面的优化
    • (一)GLM系列解析器变更
      • 文件:model/parsers/glm46.go
      • 文件:model/parsers/glm47.go
    • (二)Qwen系列解析器全面完善索引机制
      • 文件:model/parsers/qwen3.go
      • 文件:model/parsers/qwen3coder.go
  • 三、v0.17.3版本回顾:解析修复优化
    • (一)Qwen 3解析器的修复细节
    • (二)Qwen3VL解析器同步更新
  • 四、整体影响与技术价值分析
  • 五、小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档