ホームへ戻る

GitHub Repo

Ollamaコミュニティでツール結果の取り違えが報告、並列呼び出しで回答の順序が変わる可能性

OllamaのOpenAI互換エンドポイントについて、メッセージの位置に基づいてツール結果が対応付けられ、正しい呼び出しIDがあってもデータの入れ替わりを防げない可能性が報告された。コミュニティから2件の修正案が提出されたが、まだマージされていない。並列ツール呼び出しを使うエージェントでは、結果の対応付けを検証する必要がある。

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

Ollamaコミュニティでは10月2日、ツール呼び出しの正確性に関する問題が報告された。テスト対象の/v1/chat/completions経路では、2件のツール結果メッセージの順序を入れ替えると、それぞれに正しいtool_call_idが保持されていても、モデルが結果を別の呼び出しに対応付けることがあるという。最小再現コードが用意されており、10月2日と3日に2件の修正案が提出された。問題報告

報告者は、東京とトロントの気温を問い合わせる例を示した。2つの呼び出しはそれぞれ5度と22度を取得し、元の呼び出し順で結果を返すと回答は正しかったが、結果メッセージの順番だけを逆にすると、東京が22度、トロントが5度という回答になった。Ollama 0.35.1とgpt-oss:20bを使い、温度を0、シードを固定して行ったテストでは、通常の順序と入れ替えた順序をそれぞれ3回実行し、後者では3回とも同じ取り違えが発生した。これは報告者によるテスト結果であり、すべてのモデルやデプロイ環境に影響するとまでは言えない。再現の詳細

技術的な焦点は、メッセージの変換とプロンプトのレンダリングにある。報告によると、テスト対象の経路では結果の識別子を入れ替えても、レンダリングされたプロンプトはバイト単位で同一だった。このことは、その段階までに呼び出しの識別情報が保持されていないという見方を裏付けている。10月3日の修正案は、OpenAI形式のメッセージを変換する前に、tool_call_idに基づいて連続する結果グループ全体を並べ替えること、さらに配列形式のテキストコンテンツも処理し、変換時に識別子が失われないようにすることを提案している。確認時点では、修正案はオープンのままで、まだマージされていない。修正案

エージェント開発への影響として、ツールの完了時間によって入力の意味が変わる可能性がある。Ollamaの公式ドキュメントには並列ツール呼び出しの手順が記載されており、互換エンドポイントもツール機能をサポートしている。アプリケーションが完了順に結果を集める場合、応答の速い問い合わせが先に並ぶことがある。今回の報告から推測すると、この種のフローでは、有効なデータが誤った対象に適用されても、形式上は正しい回答が出力される可能性がある。ツール呼び出しのドキュメント、互換エンドポイントのドキュメント

エンジニアリングチームは、同じバッチ内の結果の順序を入れ替える回帰テストを追加し、回答が変わらないことを確認できる。修正が検証されるまでは、暫定策としてクライアント側で結果を元の呼び出し順に並べる方法もある。今後は、上流でのマージとリリースバージョンに加え、識別子の欠落や重複、結果グループが不完全な場合の扱いを追跡し、修正が実際のエージェントのメッセージフローをカバーしているか確認する必要がある。

出典

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