Delegation#

エージェントは、ツールを直接呼び出す代わりに、またはそれとともに、要求の一部を別のエージェントに引き渡すことができます。 Managing agents を行うときに、delegates に他のエージェントの名前をリストします。

SELECT aidb.create_agent(
    name         => sql_specialist,
    instructions => You answer questions about the orders and customers tables precisely.,
    model        => my_gpt,
    tools        => ARRAY[run_sql_query]
);

SELECT aidb.create_agent(
    name         => help_desk,
    instructions => You help users with general questions, delegating data questions to the SQL specialist.,
    model        => my_gpt,
    delegates    => ARRAY[sql_specialist]
);

SELECT * FROM aidb.agent_converse(help_desk, How many orders came in last week?);

モデルにデリゲートを提示する#

構成された各デリゲートは、デリゲートエージェントにちなんで名前付けられた通常のファンクション呼び出しツールになり、2つの引数、prompt 必須-ハンドオフの要求とconversation_id オプショナル-以下の デリゲートの会話を継続する を参照してください。デリゲート自分自身のinstructions はそのツールの説明になるため、委任モデルはそれらを「このデリゲートの目的」と見なします。委任されることが予想される場合は、その2つの目的を念頭に置いてエージェントの指示を作成します。

デリゲート名はエージェント自分自身のtools のいずれかと衝突してはならず、 tools と同様に、create_agent /update_agent 時間に現在登録されているエージェントであることが検証されます。

デリゲートの会話を継続する#

デリゲートを呼び出すと、answer およびconversation_id を含むオブジェクトが返されます。モデルは、そのconversation_id を同じまたは将来のagent_converse 実行での後のデリゲート呼び出しに戻して、毎回新しく開始するのではなく、独自の以前の履歴でその特定のデリゲートの会話を続行できます。それを省略すると一般的な場合、呼び出しのたびにデリゲートとの新しい会話が開始されます。

ハンドオフを介した動作の伝播#

  • 読み取り専用モードが伝播します。 委任の実行が 読み取り専用モード の場合、デリゲート自分のサブ呼び出しも強制読み取り専用です。読み取り専用エージェントは委任を使用して、別のエージェントをライトスルーに到達することはできません。読み取り専用のデリゲート呼び出しは常にconversation_id: null を返し、続行できません。

  • デバッグモードが伝播します。 トップレベル呼び出しがdebug => true を渡した場合、デリゲート自分のアクションはNOTICE メッセージとしても出力されます。

  • ロールは伝播しません。 デリゲートは、委任エージェントのロールではなく、 独自の 構成済みrole または現在のユーザーがない場合は実行されます。

  • 予算は伝播しません。 各デリゲート呼び出しは、独自の構成から独自の新しいトークン/反復バジェットとタイムアウトを取得します。親の予算は、デリゲートができる量を制限しません。

委任の深さ#

委任チェーンは、10レベルの深さ(各エージェントが次のエージェントに委任するエージェントのチェーン)で制限されます。これは、主にPostgresのスタック深さチェックがバックエンドを中止するまで再帰するのではなく、サイクル—1つのエージェントが自分自身に委任する、または2つのエージェントが前後に委任する—でフェイルファストするために存在します。制限に到達すると、タスクがエラーですぐに停止します。通常のツールの障害が発生する場合とは異なり、再試行されません。