【ITニュース解説】Multi-Tool Execution: When One Tool Isn't Enough
2025年09月23日に「Dev.to」が公開したITニュース「Multi-Tool Execution: When One Tool Isn't Enough」について初心者にもわかりやすく解説しています。
ITニュース概要
AIが自然言語で受けた「複数のツールを組み合わせた複雑な指示」を自動で実行するシステムを開発した。これまでは単一ツールしか扱えなかったが、複数のツールを連携させる「オーケストレーター」が、「逐次」「並列」「連鎖」などの実行パターンを使い分け、複雑なタスクを効率的に処理する。
ITニュース解説
これまでのシステム開発では、ユーザーからの自然言語での指示に対し、一つの命令に一つのツールが対応する仕組みを構築していた。例えば、「今日の天気は?」と聞かれれば天気予報ツールを呼び出し、「ファイルを保存して」と頼まれればファイル保存ツールを使うといった具合である。しかし、実際にシステムを使ってみると、人々はもっと複雑な、複数の作業を組み合わせた指示を出すことが分かってきた。「デンバーの天気を調べて、その結果をファイルに保存して」とか、「バックアップフォルダを作って、そこに全てのドキュメントを移動して」といった具体的な要求は、単一のツールだけでは完結しない。これらの指示は、複数のツールが連携して初めて実現できるものであり、その連携を自動で、かつスムーズに行うシステムが求められていた。
このような背景から、単一ツールの限界を超え、複数のツールを自動で連携させて複雑なワークフローを実行する「マルチツール連携システム」の開発が進められた。この新しいシステムは、まるで複数の専門家を束ねる司令塔のように機能し、ユーザーの複雑な要求を分解し、適切なツールに適切な指示を出し、その結果を組み合わせて最終的な成果を生み出すことを目指している。
このシステムの中心となるのが、「MultiToolOrchestrator(マルチツールオーケストレーター)」と呼ばれるコンポーネントである。これは、これまでのシンプルなツール実行ロジックでは扱いきれなかった、複数のツールを協調させて動かすための専用の仕組みだ。Orchestratorは、ユーザーの複合的な指示を分析し、どのツールをどのような順番で、あるいは並行して実行すべきかを決定する。そして、単一の複雑な処理方法を持つのではなく、様々な連携パターンに特化した実行戦略を持つことで、それぞれの状況に最も適した方法でツールを動かすことができるよう設計されている。
現在、このOrchestratorには主に四つの実行パターンが実装されている。一つ目は「シーケンシャル(Sequential)」と呼ばれるパターンである。これは「これをやって、それからあれをやる」というように、各ステップが厳密な順序で実行される必要がある場合に用いられる。ただし、それぞれのステップ自体は独立しており、前のステップの結果が次のステップの直接の入力となるわけではない。例えば、「ジョンに会議のメールを送って、それから明日のカレンダーリマインダーを設定する」といった場合がこれに該当する。フォルダを作成してからその中にファイルを保存するといった、依存関係のある操作もこのパターンで確実な順序を保証する。
二つ目は「パラレル(Parallel)」パターンである。これは、複数の作業が互いに独立しており、同時に実行しても問題がない場合に利用される。複数のツールを並行して実行することで、全体としての処理時間を短縮し、効率を高めることができる。例えば、「オースティン、シカゴ、アトランタの天気を同時に確認する」といった状況で、各都市の天気予報は互いに影響しないため、同時に実行することが可能となる。
三つ目は「チェーンド(Chained)」パターンだ。このパターンは、前のツールの実行結果が次のツールの入力として直接渡され、まるで鎖のように情報が連結していく特徴を持つ。データが一つ前のステップから次のステップへと流れ、変換や処理が連続して行われるパイプラインのようなイメージである。記事の例で示されている「ニューヨークの天気を調べて、その結果をweather.txtというファイルに保存する」という指示は、まさにこのチェーンドパターンで処理される。天気予報の出力がファイル保存の入力となることで、一つのまとまった作業が完遂されるのである。
四つ目は「コンペティティブ(Competitive)」パターンである。これは、複数のツールが同じ目的を達成できる場合に、それらを同時に実行し、最も良い結果や最初に成功した結果を採用する、競争的な実行方法だ。例えば、「3つのウェブサイトでノートパソコンの価格を調べて、最も安いものを推薦する」といった場合に活用される。複数の情報源から最適な結果を選び出す際に有効なパターンである。
これらの実行パターンをどのように選択し、実行計画を立てるかという肝心な部分は、AI(大規模言語モデル、LLM)が担う。ユーザーからの自然言語での問い合わせをAIが分析し、どのようなツールを使い、どの実行パターンが最適か、各ツールのパラメータは何か、といった詳細な情報を盛り込んだJSON形式の実行計画を自動で生成するのである。この計画には、各ステップにユニークなIDが付与され、使用するツール名、そのツールに渡すパラメータ、そして依存する先行ステップのIDなどが記述される。
さらに、このシステムでは、あるステップの実行結果を次のステップのパラメータとして利用するための「変数解決」という機能が搭載されている。これは、${ステップID.結果}のような記述を用いることで実現される。例えば、前のステップで「get_weather」というIDのツールが実行され、その結果が「result」というフィールドに含まれている場合、次のステップのパラメータに${get_weather.result}と記述すると、実行時にその部分が実際の天気予報データに置き換えられる仕組みである。この機能により、ツール間のデータの受け渡しが柔軟かつ自動で行われ、より複雑なワークフローを記述することが可能となる。
具体的な例を追いかけてみよう。「ニューヨークの天気を調べて、その結果をweather.txtというファイルにあなたのドキュメントフォルダに保存して」というユーザーの指示があった場合、まずAIがこの自然言語を分析する。AIは、天気予報の取得とファイルへの書き込みという二つのアクションが必要であり、前の結果を次に渡す「チェーンド」の実行タイプが適切であると判断する。次に、AIは利用可能なツールリスト(天気予報ツールやファイル操作ツールなど)を参照し、これらの情報に基づいてJSON形式の実行計画を生成する。この計画では、最初のステップでニューヨークの緯度経度を使って天気予報を取得し(ID: step1)、二番目のステップで「documents/weather.txt」というパスに、${step1.result}で指定された天気予報の内容を書き込む(ID: step2)ように指示される。そして、step2はstep1に依存すると明記される。
この計画がOrchestratorに渡されると、まず「step1」である天気予報の取得が実行される。天気予報ツールが呼び出され、ニューヨークの緯度経度に基づいて「晴れ、22℃」といった天気情報が返される。次に、「step2」のファイル書き込みが実行されるが、この際、パラメータの${step1.result}の部分が、変数解決機能によって先ほど取得した「晴れ、22℃」という具体的な天気情報に置き換えられる。こうして、ファイル書き込みツールが「documents/weather.txt」というファイルに天気情報を保存する。全てのステップが成功すると、Orchestratorは最終的な結果をまとめ、AIがそれを解釈して、「ニューヨークの天気予報を取得し、ドキュメントフォルダのweather.txtに保存しました」といった、ユーザーにとって分かりやすい自然言語の応答を生成するのである。この一連の流れは、既存のチャットインターフェースには大きな変更を加えることなく、新しいOrchestratorを組み込むだけで実現できた。
しかし、現在のところ、このシステムにはまだいくつかの制限がある。例えば、「もし〇〇なら、これを実行する」といった条件分岐や、「〇〇が終わるまで繰り返す」といった繰り返し処理のパターンは、基本的なロジックは実装されているものの、まだ完全には機能しておらず、複雑なシナリオでのテストや調整が必要である。また、チェーンドやシーケンシャルといった主要なパターンは十分にテストされ信頼性も高いが、パラレル、コンペティティブ、条件分岐、繰り返し処理についてはまだ限定的なテストしか行われておらず、AIが計画を生成する際の指示(プロンプト)の微調整が引き続き求められている。変数解決や依存関係の処理においても、より複雑なケースで予期せぬ挙動が発生する可能性があり、その都度プロンプトの最適化が必要となる。
今後の展望としては、より高度なエラー回復戦略の実装、実行中に計画を動的に変更する機能、システム全体のパフォーマンス監視、大規模言語モデルへのプロンプトエンジニアリングのさらなる洗練、様々な外部サービスとの連携強化、リアルタイムでの応答ストリーミング、そしてエージェント自身の「記憶」や「学習」能力の付加などが挙げられている。
このマルチツール連携システムは、自然言語の指示だけで、複数の異なる機能を組み合わせて複雑なタスクを自動実行できるAIエージェントを構築するための強固な基盤を築いた。これは、人間がコンピュータに意図を伝える方法を大きく進化させ、より直感的で強力なシステムを創造する可能性を秘めている。このプロジェクトはオープンソースとして公開されており、さらなる発展のために貢献者を歓迎している。