返回首頁

GitHub Repo

Ollama 社群提出串流順序修補,文字接工具呼叫可能讓 Responses 客戶端拒收

10 月 5 日的社群案例指出,Ollama 在先輸出文字、再呼叫工具時,可能重複使用輸出索引並漏送訊息完成事件。修補提案已附回歸測試,但尚未合併,也未進行實際模型推論驗證。

Mattruffoni · CC BY-SA 4.0 · Image source
zh-Hant

Ollama 的 API 相容層出現一項可能中斷本地代理流程的串流問題。10 月 5 日公開的案例回報,0.34.4 與 0.35.1 在 /v1/responses 同一輪先產生助理文字、隨後輸出函式呼叫時,事件索引與最終結果順序可能不一致,嚴格檢查協定的客戶端因此拒收。這是特定輸出組合的社群回報,尚不能推定所有工具呼叫都受影響。問題紀錄

回報將機制拆成三部分:文字訊息建立後沒有推進 output_index,接續的第一個函式呼叫便再次使用索引 0;工具呼叫送出後,完成處理又跳過先前文字訊息的結束事件;最後組裝 response.output 時,函式呼叫被排在文字之前,與串流宣告順序相反。對依索引維護狀態的消費端而言,這可能造成重複項目或最終順序不符,而非單純的畫面排序差異。事件序列與程式路徑

同日提出的修補 #18804,改為在送出函式呼叫前完成已開啟的文字訊息,記錄該訊息並推進索引。作者表示,回歸測試涵蓋文字接一個或兩個工具呼叫、純工具呼叫、索引唯一性,以及事件與最終陣列的識別碼一致性;修補前的文字接工具案例失敗,修補後 openai 套件測試通過。不過,這些結果來自提案作者的本機測試,未包含實際模型推論、完整儲存庫測試或競態測試。修補提案

Ollama 官方文件列明 Responses 端點支援串流與函式呼叫,因此這項案例對把既有代理客戶端接到本地模型的工程師具有實際參考價值:端點與參數可用,仍須驗證混合輸出的事件生命週期。官方相容性文件

依上述機制推論,整合測試應加入「先說明、再呼叫工具」情境,檢查每個輸出項目的索引、完成事件及最終順序。接下來應追蹤上游審查、實際推論重現與納入版本;截至查核時提案仍開啟,不能視為正式版本已修復。

來源

  1. Ollama issue #18762:重排工具結果造成呼叫錯配
  2. Ollama PR #18767:依呼叫 ID 配對完整工具結果群組
  3. Ollama 工具呼叫文件
  4. Ollama OpenAI 相容性文件
  5. Gemma4: JSON schema format is not enforced when think:true answers directly without reasoning
  6. server: apply structured outputs in a single pass on thinking models
  7. Structured Outputs
  8. Ollama issue #18798:Responses 串流文字與函式呼叫順序問題
  9. Ollama PR #18804:在串流工具呼叫前完成文字項目