GitHub Repo
LangChainコミュニティが動的ツールルーティングの異常を報告、混在呼び出しでエージェントが早期終了する可能性
10月25日のLangChainコミュニティ報告によると、動的に登録したツールと直接返却するツールを同時に実行すると、エージェントが後続のモデル処理を省略する可能性がある。外部APIを必要としない比較コードが添えられているが、根本原因と正式な修正はメンテナーの確認待ちだ。

LangChainコミュニティは10月25日、create_agentが同じターンで、直接返却するツールとmiddlewareを通じて動的に登録された通常のツールを呼び出すと、両方のツールが正常に実行されても、エージェントがそのまま終了し、モデルが結果を引き続き整理しない場合があると報告した。報告者によると、この挙動はLangChain 1.4.7と指定されたmainブランチのコミットの両方で確認されており、調査にAIの支援を用いたことも明らかにしている。問題報告
公式ドキュメントでは、return_direct=Trueを設定すると、追加のモデル呼び出しを省き、ツールの出力を直接返却結果にできる。一方、同じバッチに通常のツールが含まれる場合は、すべてのツールの結果をモデルに返す必要がある。バッチ内のすべてのツールが直接返却に設定されている場合に限り、エージェントは停止する。権限、検証状態、会話の段階に応じてツールを動的に調整する機能もドキュメントでサポートされているため、これら2つの機能の相互作用はエージェントの処理フロー全体に影響する。ツールの実行と動的選択に関するドキュメント
報告に添えられた最小再現例では、既定のスクリプト応答を返すモックモデルを使い、直接回答するツールと、追加の分析が必要なクエリツールを同時に要求する。2つのツールを事前登録した場合、モデルは2回呼び出された。これに対し、実行中にmiddlewareからクエリツールを追加すると、モデルの呼び出しは1回にとどまり、分析されていないツール出力が残った。処理中に例外は発生しなかった。この比較はモデルプロバイダー、認証情報、ネットワーク推論を必要とせず、生成結果のランダム性を切り分けるのに役立つ。再現コードと出力
報告者は、直接返却かどうかの判定で静的なツール一覧しか確認していない場合、動的ツールが考慮から漏れる可能性があるとして、_make_tools_to_model_edgeに疑いを向けている。ただし、これはまだ確認されていない根本原因だ。エンジニアリングチームにとって、この事例は「ツールが正常に実行された」ことと「エージェントがタスクを完了した」ことが同じではないと示している。統合テストでは、混在呼び出しの後にモデルへ処理が戻るか、最終回答がすべての結果を扱っているかを確認する必要がある。この事例ではツールを事前登録すると期待された挙動に戻ったが、あらゆるデプロイに適用できるとは限らない。確認時点でissueはオープンのままで、関連する修正PRもなかった。今後はメンテナーによる確認、同期・非同期の回帰テスト、修正バージョンを追跡する必要がある。issueの状態