![]()
![]()
![]()
2026 年 3 月 5 日,Ollama 正式發(fā)布了v0.17.6版本。這是一次極具實用價值的改進版本,在保持系統(tǒng)穩(wěn)定的基礎上,重點修復了多個長期存在的細節(jié)性問題,包括GLM-OCR 的 Prompt 渲染錯誤、Qwen 3.5 工具調用與解析邏輯, 并帶來了對模型渲染、工具鏈、配置兼容性等方面的進一步完善。
本篇文章將全面解析 v0.17.6 的變更列表、核心代碼結構調整、測試覆蓋改進及潛在影響,幫助開發(fā)者清晰理解此次升級的深度與意義。
一、版本概覽
發(fā)布日期:2026 年 3 月 5 日
版本號:v0.17.6
更新重點:
1. 修復
GLM-OCR模型因 prompt 渲染錯誤導致無法工作的問題2. 修復
Qwen 3.5模型工具調用的解析與渲染問題3. 優(yōu)化模型配置文件命名兼容,例如
Ollama (local)自動遷移為Ollama4. 移除舊版本
imagegenLLM 模型與peak memoryAPI 字段5. 引入全新的 Qwen3.5 渲染及解析模塊,全面支持
thinking模式
此次更新共包含12 次提交、修改51 個文件,由 7 名開發(fā)人員完成。從 diff 記錄看,涉及到新增代碼超過 3900 行,同時刪除舊邏輯 4010 行,可見是一次覆蓋范圍較大的“重構 + 修復”整合版本。
二、總體改動組成 1. API 層變化:移除PeakMemory字段
api/types.go文件中刪除了Metrics結構體中的PeakMemory相關字段與輸出邏輯。
其原始功能用于在模型推理時統(tǒng)計峰值內存占用,但由于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"`
}同時刪除了相關的格式化函數(shù)formatPeakMemory、控制臺輸出內容,更新后的日志輸出更加簡潔,避免“空指標”誤導用戶。
這也意味著未來 Ollama 將更聚焦性能時間維度指標,而非硬件狀態(tài)統(tǒng)計。
2. 命令行層更新:移除imagegen運行參數(shù)
cmd/cmd.go文件中刪除了--imagegen標志相關邏輯,不再通過 CLI 參數(shù)控制圖像生成模型使用內部 Runner。
這體現(xiàn)了 v0.17.6 開始逐步統(tǒng)一模型調用接口,將生成型與多模態(tài)模型整合至統(tǒng)一 runner 體系中,從設計上簡化用戶調用路徑。
3. 配置遷移優(yōu)化:Ollama (local) → Ollama
在配置管理模塊cmd/config/opencode.go中新增了名稱遷移邏輯,解決了配置兼容問題。
許多開發(fā)者此前使用本地 provider 時,其配置如下:
{
"provider":{
"ollama":{
"name":"Ollama (local)",
"npm":"@ai-sdk/openai-compatible",
"options":{"baseURL":"http://localhost:11434/v1"}
}
}
}新版本中,當檢測到Ollama (local)名稱時會自動遷移為Ollama,保證現(xiàn)有配置無需手動修改即可被識別。
同時,新單元測試驗證邏輯如下:
? 自動遷移本地 provider 名稱。
? 保留自定義 provider 名稱(即不會覆蓋非默認配置)。
? 刪除模型時保留非 Ollama 模型的子項。
這確保了升級后配置文件兼容性 100%,不會破壞舊有項目結構。
三、模型解析層全面升級:Qwen 3.5 Parser
v0.17.6 最為關鍵的更新在于模型解析器部分。
新增文件model/parsers/qwen35.go(238 行新增)正式引入了Qwen3.5 專屬解析器 Qwen35Parser,取代原有的通用Qwen3Parser。
(1) 核心特性
? 完整支持
thinking推理標簽...? 增強對分塊流式輸出的識別能力(跨 token stream 漸進渲染)
? 可區(qū)分思考內容(thinking content)與輸出內容(response content)
? 在思考區(qū)間不解析
,避免錯把 reasoning 內部結構誤識別為工具調用
新增狀態(tài):
const (
qwen35ParserStateCollectingThinking
qwen35ParserStateThinkingDoneEatingWhitespace
qwen35ParserStateCollectingContent
)解析邏輯以有限狀態(tài)機(FSM)形式實現(xiàn)。當遇到
起始標簽進入思考模式,遇到切換到內容模式。
與此同時,對流式數(shù)據的分段處理更加精準,支持不完整的關閉標簽(如+nk>分兩次到達),確保輸出不會斷裂。
(3) 異常情況處理
? 若
未關閉,自動將后續(xù)內容視為思考過程輸出;? 若 Assistant 消息為續(xù)寫(帶 prefill),默認跳過起始思考階段;
? 處理
嵌套、空格、換行符自動剔除,輸出純凈的 reasoning 文本。
測試文件新增382 行,覆蓋以下場景:
? 工具調用 XML 格式識別;
? 含顯式
標簽的 reasoning 內容提取;? Assistant 預填充(prefill)場景;
? 思考階段中誤判工具調用;
?
標簽被分片情況;? 未閉合標簽情況下的安全輸出。
這些測試使 Qwen 3.5 解析流程從多線程推理到斷流恢復都具備強魯棒性。
四、模型渲染層優(yōu)化:全面更新 Qwen3.5 與 GLM-OCR Renderer
渲染器層:model/renderers/目錄新增了兩大核心組件:
1.Qwen35Renderer
文件model/renderers/qwen35.go,新增 389 行。
該渲染器對應 Qwen3.5 模型 prompt 生成邏輯,旨在讓模型完全遵循 XML 函數(shù)調用格式與
思考框架。
功能亮點:
? 支持
指令區(qū)塊嵌入,格式嚴格遵循模型需求;? 自動拼接系統(tǒng)提示與函數(shù)聲明;
? 支持生成
塊,帶與;? 邏輯層支持多工具順序調用,多次
塊組裝;? 思考與輸出完美分離,緊密銜接模型訓練格式。
其他改進:<|im_start|>assistant
I need to fetch the data first.
Here is my analysis.
42<|im_end|>
? 支持
useImgTags圖片標記嵌入([img-0], [img-1]),兼容多模態(tài);? 提供
emitEmptyThinkOnNoThink參數(shù),用于未啟用思考模式時補充空模塊;? 對工具多次調用場景支持批量寫入;
? 對
assistant prefill保留最后階段輸出,不關閉<|im_start|>塊。
測試文件model/renderers/qwen35_test.go共新增 389 行,涵蓋:
? 多輪對話、函數(shù)調用遞歸;
? Back-to-back 工具響應;
? 思考與工具交錯場景;
? Assistant 預填充完整性校驗。
該模塊的引入使得 Ollama 在多模型推理框架下更貼合阿里 Qwen3.5 推理接口的真實結構。
2.GLM-OCR Renderer 大幅修復
文件model/renderers/glmocr.go修改 99 行。
這次修復針對核心問題:GLM-OCR 模型無法正確渲染帶圖像的 prompt。
更新要點:
? 新增
GlmOcrRenderer結構體屬性useImgTags;? 引入內部函數(shù)
renderContent(),根據配置動態(tài)選擇是否添加[img-x]標記;? 改善 ImageOffset(圖片計數(shù)偏移)管理;
? 用戶消息按
[img-0][img-1]順序標識多圖輸入;? 流程中修正原先
message.Content與圖片塊拼接順序。
舊版輸出(無法識別圖片位):
<|user|>請識別圖片內容。新版輸出(帶多圖標記):
<|user|>
[img-0][img-1]請識別圖片內容。同時新增glmocr_test.go文件(99 行),驗證包括以下 5 種情況:
1. 單張圖片;
2. 多張圖片;
3. 多輪對話圖像偏移;
4. 默認模式不添加圖像標簽;
5. 無圖像場景內容保持一致。
這意味著以后 GLM-OCR 模型將可以在多圖輸入下穩(wěn)定進行 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渲染器開啟全局圖片標簽選項。
這使兩個模型在渲染階段均獲得一致的上下文構造與多模態(tài)支持。
五、服務器邏輯補充更新
在server.go中,刪除了CompletionResponse返回體的PeakMemory字段,使 API 輸出與 Metrics 同步調整。
這確保了傳輸數(shù)據更輕量化、字段結構一致。
六、測試體系增強
此次更新新增測試覆蓋超過 1000 行,主要針對以下方向:
?配置遷移測試
確保舊配置自動升級為標準名稱;?GLM-OCR 多圖輸入測試
確認每張圖片得到正確索引;?Qwen3.5 渲染與解析系統(tǒng)測試
模擬思考場景、函數(shù)嵌套、流式數(shù)據拼接;?工具調用與 reasoning 多階段測試
驗證多工具連續(xù)調用的 XML 結構合法性;?Streaming 行為測試
分塊輸入下保持狀態(tài)一致性。
針對復雜推理模型,如 Qwen3.5 這種包含
和
的混合流式結構,此輪測試確保無論在并發(fā)推理還是斷流恢復場景下都不丟失內容。
七、移除舊模型與無效依賴
本次更新清理了歷史遺留的imagegen LLM模型,以及云模型拉取過程中的存根要求,進一步簡化了部署過程。Revert提交中體現(xiàn)了多次回滾與重放操作,表明研發(fā)團隊對云端模型加載機制進行深度優(yōu)化與驗證。
八、總結與展望
Ollama v0.17.6 是一次結構性的重要版本更新。它沒有去追求新增功能,而是聚焦于底層穩(wěn)定性、模型兼容與推理一致性的打磨,體現(xiàn)出平臺從實驗型向工業(yè)化過渡的信號。
核心收益總結:
1.GLM-OCR修復后,OCR 模型可穩(wěn)定處理多圖輸入。
2.Qwen3.5渲染與解析系統(tǒng)配套上線,支持完整
思考標簽鏈路。3.配置文件自動遷移,升級成本為零。
4.API 數(shù)據結構簡化,輸出更清晰、兼容性更高。
5.測試覆蓋度大幅提升,確保行為穩(wěn)定與準確。
通過對 v0.17.6 的更新,可以預見 Ollama 在未來版本中將繼續(xù)強化多模態(tài)與 reasoning 模式集成,為 LLM 本地部署與企業(yè)多模型協(xié)作提供更堅實的基礎。
結語
代碼地址:github.com/ollama/ollama
Ollama v0.17.6 雖非大版本跳躍,但卻在細節(jié)上體現(xiàn)了極高的工程重視度。
從配置遷移到渲染邏輯,再到工具調用與流式解析,幾乎每個子模塊都在朝著更統(tǒng)一、更可靠、更智能的方向演進。
我們相信人工智能為普通人提供了一種“增強工具”,并致力于分享全方位的AI知識。在這里,您可以找到最新的AI科普文章、工具評測、提升效率的秘籍以及行業(yè)洞察。 歡迎關注“福大大架構師每日一題”,發(fā)消息可獲得面試資料,讓AI助力您的未來發(fā)展。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.