エージェント構成

他のエージェントをツールとして使用するマルチエージェントシステムの構築。

このチュートリアルでは、複数のエージェントを構成して強力なシステムを構築する方法を探索します。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を通じてリンクされて親に返される
  • イベントストリームはトレーサビリティのために親子関係を維持

主な利点

  • 関心の分離:各エージェントは単一のドメインに集中
  • 独立したプランナー:専門エージェントは独自のコンテキストで動作
  • トレーサビリティ:完全なランツリーがデバッグとオブザーバビリティを可能に
  • 再利用性:専門エージェントは複数のコーディネーターで使用可能

次のステップ

  • ランツリーがイベントをどのようにリンクするか探索する
  • ポリシーでネストされたランを管理する方法を学ぶ