エージェント構成
他のエージェントをツールとして使用するマルチエージェントシステムの構築。
このチュートリアルでは、複数のエージェントを構成して強力なシステムを構築する方法を探索します。Goa-AIはエージェントアズツールをサポートしており、あるエージェントが別のエージェントをツールとして呼び出すことで、専門化と委譲が可能になります。
エージェント構成の理解
多くのシステムでは、単一の万能エージェントは理想的ではありません。代わりに、それぞれが特定のドメインに優れた専門エージェントを持つことができます:
- コーディネーターエージェント:リクエストを理解し、委譲する
- データエキスパートエージェント:データベースと分析を処理する
- 診断エージェント:システムのトラブルシューティングを行う
設計パターン
package design
import (
. "goa.design/goa-ai/dsl"
. "goa.design/goa/v3/dsl"
)
var _ = Service("assistant", func() {
// プライマリコーディネーターエージェント
Agent("coordinator", "ユーザーリクエストを調整する", func() {
// 別のエージェントをツールとして使用
UseAgent("data_expert")
UseToolset("general")
})
// 専門データエキスパートエージェント
Agent("data_expert", "データ検索と分析を専門とする", func() {
UseToolset("data_tools")
})
})
動作原理
UseAgentを宣言すると:
- ランタイムは専門エージェント用の子ランを作成
- 子ランは独自の完全なプラン/実行サイクルを持つ
- 結果は
run.Handleを通じてリンクされて親に返される - イベントストリームはトレーサビリティのために親子関係を維持
主な利点
- 関心の分離:各エージェントは単一のドメインに集中
- 独立したプランナー:専門エージェントは独自のコンテキストで動作
- トレーサビリティ:完全なランツリーがデバッグとオブザーバビリティを可能に
- 再利用性:専門エージェントは複数のコーディネーターで使用可能