ホームへ戻る

GitHub Repo

LangChainコミュニティ、ChatOllamaがツール名を渡し損ねると報告——並列呼び出しの結果で出所情報が失われる可能性

10月6日のコミュニティによる再現報告では、ChatOllamaがツール結果を送信する際、Ollamaが使用するツール名フィールドを欠落させる可能性がある。報告にはリクエストのインターセプトとプロンプトレンダリングの比較が添えられているが、メンテナーによる確認やマージ済みの修正はない。

Dirck van Baburen · Public domain · Image source
zh-Hant

LangChainコミュニティは10月6日、langchain-ollamaのChatOllamaがツール結果を中継する際、値は保持してもツールの識別情報を失う可能性があると報告した。報告環境にはlangchain-ollama 1.1.0、Ollama Python SDK 0.6.3、Ollama 0.35.1が含まれる。報告者によると、これによりGemma 4のプロンプトレンダリングで出所がunknownと表示される。公開された報告

再現コードでは、模擬HTTPトランスポートでリクエストをインターセプトし、温度と湿度に関する2つのツール呼び出しを作成したうえで、名前と呼び出しIDを含む結果を渡している。インターセプトされたツールメッセージには、ロールと内容だけが残っていた。報告者の分析では、変換レイヤーが依存する識別子フィールドはSDKのメッセージ構造に保持されず、SDKがサポートするtool_nameも設定されていなかった。さらに、名前を補うと出所情報が復元されることを示すレンダリング比較も添えられている。これは報告されたケースにおけるシリアライズの不整合を示すもので、実際のエージェントが誤答する割合を定量化するものではない。再現と分析

2つのインターフェース間の意味上の違いが鍵となる。LangChainのドキュメントでは、ToolMessage.tool_call_idは呼び出しと応答を関連付けるためのもので、特に並列ツール呼び出しで有用と説明されている。一方、Ollamaの公式例では、結果を返す際にtool_nameを明示的に設定しており、単発、並列、複数ターンのエージェントフローのいずれでも同様だ。ここから導かれる実務上の推論は、フレームワーク内部で正しく対応付けられていても、プロバイダー向けの形式に変換した後、モデルが同じ情報を受け取れることを確認する必要があるということだ。LangChainのメッセージ定義、Ollamaのツール呼び出しドキュメント

ローカルエージェントでは、複数のツールが短い数値や似た文言を返す場合、出所情報の欠落によってモデルの判断が曖昧になる可能性がある。開発者は実際に送信されるリクエストを確認し、複数ツールを使うケースで結果の帰属を検証するとよい。報告者は、メッセージ名からフィールドを設定し、名前がない場合は識別子を使って以前の呼び出しを参照する方法を提案している。確認時点で、このIssueはオープンのままで、修正へのリンクもない。今後はメンテナーによる確認、回帰テスト、バージョンリリースを注視する必要がある。この事例を、すべてのモデルが影響を受ける証拠とみなすことはできない。Issueの状態

出典

  1. ChatOllama sends tool results without tool_name — Issue #41085
  2. Tool calling
  3. ToolMessage — LangChain Reference