第 3 回: エージェントの連携 (Coordinating Agents)
Griptape Nodes シリーズの第 3 回チュートリアルへようこそ! このガイドでは、ワークフロー内で複数のエージェントを連携させ、順次タスク(物語を多言語に翻訳し、それを要約するタスク)を実行させる方法を学びます。
今回学習する内容
このチュートリアルでは、以下の内容を学びます:
- 順次作業するエージェント間の翻訳ワークフローを観察し、再現する
- 「テキストのマージ(MergeTexts)」を使用して出力を取得し、新しいプロンプトへ加工する方法の理解
- ワークフローの実行順序を制御する「実行チェーン (exec chain)」の概念の習得
- テンプレートワークフローを拡張し、要約タスクを追加する手順
このレッスンを終えると、エージェント同士が互いの成果物を受け渡し、各専門タスク間でシームレスに情報をリレーするワークフローの構築方法を理解できます。この基礎は、各段階で異なる種類のインテリジェンスを必要とする多段階プロセスを処理可能な、高度な AI システムを構築するための土台となります。
まずは、これらの原則を実証するシンプルな翻訳ワークフローを確認してみましょう。
ランディングページへの移動
このチュートリアルを開始するには、左上の Griptape Nodes ロゴがあるナビゲーションバーからランディングページに戻ります。ページ上部にある "coordinating_agents" というサンプルワークフローを見つけて開きます。
テンプレートワークフローの構造を確認する
テンプレートが読み込まれると、以下のコンポーネントで構成されたワークフローが表示されます:
- Agent ノード (spanish_story): スペイン語で 4 行の物語を生成します。
- MergeTexts ノード: スペイン語の物語と「Rewrite this in English(これを英語に書き直してください)」という指示を結合します。
- 2 つ目の Agent ノード (to_english): 結合されたプロンプトを受け取り、英語に翻訳します。
- DisplayText ノード: 最終的な英語の翻訳結果を表示します。
このワークフローは、複数のエージェントがそれぞれ独自の「役割(ジョブ)」を果たしながら連携できることを示しています。
一方のエージェントの出力を MergeTexts ノードを介して他方のエージェントに接続することで、次のエージェントの動作を指示する新しいプロンプトを作り出すことができます。
ここでの MergeTexts ノードの使い方
MergeTexts ノードが行うことは、入力された複数のテキストを「マージ文字列(区切り文字)」を挟んで結合することだけです。デフォルトのマージ文字列は改行 2 つ(\n\n)です。この例では、MergeTexts ノードの input_1 に「Rewrite this in English:」と直接入力し、input_2 に spanish_story ノードの出力を接続しています。実行すると、MergeTexts ノードは以下のようなテキストを出力します:
Rewrite this in English:
Bajo la luna, el río cantó,
Un secreto antiguo en su agua dejó.
La niña lo escuchó y empezó a soñar,
Que el mundo era suyo, listo para amar.
他のノードの処理結果から新しいプロンプトを動的に組み立てるこの手法により、最初のエージェントがスペイン語でストーリーを書き、2 番目のエージェントがそれを英語に翻訳するという、洗練されたマルチエージェントワークフローを構築できることがわかります。最終的な出力は、生成された独自のスペイン語の物語の英訳となります。
出力の変動について
実行ごとに生成されるストーリーの内容が変わるのが通常です。心配いりません。エージェントとの対話は、人間との会話に似ています。同じ質問を何度も投げかけても、毎回わずかに異なる答えが返ってくるのが自然です。
並列ワークフローの構築練習
以下のような構成を目指して作成してみましょう:
ノードの作成と接続の練習として、既存のフローのすぐ下にほぼ同じフローをもう 1 つ作成してみます。ワークフローに以下を追加してください:
- Agent ノード 2 つ(agents > Agent)
- LLM(ChatGPT や Claude など)と対話するエージェントノードです。
- MergeTexts ノード 1 つ(text > MergeTexts)
- 複数のテキストを受け取り、結合して出力するノードです。
- DisplayText ノード 1 つ(text > DisplayInput)
- 結果のテキストを見やすく表示するためのノードです。
最初のエージェントの設定
選択した言語でコンテンツを生成するように最初のエージェントを設定します:
- 1 つ目の Agent ノードで、プロンプトに
Write me a four line story in [お好みの言語](例: 日本語、フランス語、中国語など)と入力します。 - このエージェントが、後で翻訳対象となる最初の物語を生成します。
MergeTexts ノードへの接続
次に、翻訳用プロンプトを準備します:
- MergeTexts ノードの input_1 フィールドに直接
Rewrite this in Englishと入力します。 - 1 つ目の Agent の出力を MergeTexts ノードの input_2 に接続します。
2 つ目のエージェントの設定
翻訳担当のエージェントを設定します:
MergeTexts ノードの出力を、2 つ目の Agent ノードの prompt に接続します。これにより、このエージェントは元の物語と、それを翻訳せよという指示の両方を同時に受け取ります。
結果の表示
最終的な翻訳結果を確認します:
- 2 つ目の Agent の出力を DisplayText ノードに接続します。
- ワークフローを実行します。
- 実行が完了すると、このノードに翻訳された英語のテキストが表示されます:
実行順序の理解(実行チェーン / Exec Chain)
Griptape Nodes における重要な概念の 1 つが実行チェーン (exec chain) です。ワークフローが複雑になるにつれて、ノードの実行順序を制御することが重要になります。
- ノード上にある半円形のコネクター「exec in」と「exec out」ピンに注目してください。
- これらはノードが実行される順序を定義します。
- 複雑なワークフローでは、実行させたい順序に従ってこれらの exec ポートを接続します。
- これにより、複雑なデータフローが存在する場合でも、ノードが意図した順序で確実に実行されます。
自動依存関係解決と実行チェーン
Griptape Nodes は、データの依存関係を解析してノードの実行順序を自動的に決定します。
しかし、実行シーケンスをより精密に制御したい場合は、exec chain 機能を使用できます。自動的な依存関係検出が意図した動作と一致しない可能性がある場合に、明示的に順序を定義できます。
実行チェーンはいつでも自由に使用できますが、誤った順序を強制してしまうリスクを除けば、ペナルティやコストはありません。大半の単純なフローでは、接続しなくても問題なく動作します。
ワークフローの拡張: 複数の物語の要約
ワークフローを拡張して、両方の物語を要約できるようにしてみましょう:
- 両方の英訳結果を結合する新しい MergeTexts ノードを追加します。
- この MergeTexts ノードの input_1 に
Summarize both these storiesと入力します。 - 両方の翻訳ノードの output を、この MergeTexts ノードの input_1 と input_2(または追加ポート)に接続します。
- この MergeTexts ノードの input_1 に
- 新しい Agent ノードをもう 1 つ追加します。
- MergeTexts の output を新しいエージェントの prompt に接続します。
- エージェントの output を新しい DisplayText ノードに接続します。
- (任意)この要約ステップが最後に実行されるように exec chain を接続します(すべてのノードを希望の実行順序で一筆書きのように接続することも可能です)。
完成したワークフローの実行
拡張したワークフローを実行し、全体の処理プロセスを観察します:
- 最初のエージェントたちがそれぞれ異なる言語で物語を生成します。
- MergeTexts ノードが、それらを翻訳するためのプロンプトを組み立てます。
- 2 番目のエージェントたちがそれぞれの物語を英語に翻訳します。
- 要約エージェントが両方の英訳を統合し、要約を生成します。
- 表示ノードがすべての結果を提示します。
結果の確認ポイント
画像と全く同じ文章が出力される必要はありません。ここで注目すべきは、文章の細部ではなく、エージェント同士が情報をリレーして統合する「構造(フロー)」です。
まとめ
このチュートリアルでは、以下の内容を学びました:
- ワークフロー内でエージェント同士がデータを受け渡し、翻訳などのタスクを連携して実行する方法
- 「MergeTexts」を使用して出力を取得し、次のエージェントのための新しいプロンプトへ加工する手法
- ワークフローの実行順序を明示的に制御する「実行チェーン (exec chain)」の概念
- テンプレートワークフローを拡張して、統合要約タスクを追加する手順
次のステップ
次のレッスン 第 4 回: プロンプトの比較 では、エージェント間で作業を順次バケツリレーしながら、高度なプロンプトテクニックを探求します!