返回首頁

GitHub Repo

Ollama 社群回報工具結果錯配,平行呼叫回傳順序可能改變答案

Ollama 的 OpenAI 相容端點被回報按訊息位置配對工具結果,正確的呼叫識別碼仍可能無法防止資料對調。社群已提出兩項修補,但尚未合併,採用平行工具呼叫的代理須驗證結果配對。

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

Ollama 社群於 10 月 2 日提交一項工具呼叫正確性回報:在受測的 /v1/chat/completions 路徑中,只要交換兩筆工具結果的訊息順序,即使各自保留正確的 tool_call_id,模型仍可能把結果歸給另一個呼叫。問題已有最小重現程式,並於 10 月 2、3 日出現兩項修補提案。問題回報

回報者以東京與多倫多的氣溫查詢示範:兩個呼叫分別取得 5 度與 22 度,依原呼叫順序回傳時答案正確;僅反轉結果訊息排列,答案便變成東京 22 度、多倫多 5 度。在 Ollama 0.35.1、gpt-oss:20b、溫度設為零及固定種子的測試中,正常排列與對調排列各跑三次,後者三次都產生相同的錯配。這是回報者的測試結果,尚不能推定所有模型與部署都受影響。重現細節

技術焦點在訊息轉換與提示渲染。回報指出,受測路徑交換結果的識別碼後,渲染出的提示仍逐位元組相同;這支持呼叫身分未被保留到該階段的判斷。10 月 3 日的修補提案因此主張,在轉換 OpenAI 格式訊息之前,先依 tool_call_id 重排完整且連續的結果群組,並處理陣列形式的文字內容,避免轉換時遺失識別碼。截至查核時,提案仍開放、尚未合併。修補提案

這對代理工程的意義是,工具完成時間可能改變輸入語意。Ollama 官方文件提供平行工具呼叫流程,也列出相容端點支援工具功能;若應用依完成順序收集結果,較快的查詢就可能排到前面。依本次回報推論,這類流程可能把有效資料套到錯誤對象,卻仍輸出格式正常的答案。工具呼叫文件、相容端點文件

工程團隊可先加入交換同批結果順序的回歸測試,檢查答案是否維持一致;在修補驗證前,也可於客戶端依原呼叫順序排列結果作為暫時措施。後續應追蹤上游合併與發布版本,以及缺漏、重複識別碼或不完整結果群組的處理方式,確認修補涵蓋實際代理的訊息流程。

來源

  1. Ollama issue #18762:重排工具結果造成呼叫錯配
  2. Ollama PR #18767:依呼叫 ID 配對完整工具結果群組
  3. Ollama 工具呼叫文件
  4. Ollama OpenAI 相容性文件