次の方法で共有


子エージェントを追加する

子エージェントとは、メイン エージェントのコンテキスト内に存在する軽量エージェントです。 子エージェントを使用すると、ツール、手順、ナレッジを論理的にグループ化し、より大きなエージェント内の明確に定義されたサブエージェントに整理できます。 1 つの意図に応答したり、1 つのタスクを完了したりする単一のユース ケースに最適です。 この記事では、子エージェントの作成と管理方法について説明します。

子エージェントを作成する

  1. メイン エージェントのエージェント ページに移動し、エージェントの追加を選択します。

  2. 新しい子エージェントを選択します。

  3. 新しい子エージェントの固有の名前を入力します。

  4. エージェントを使用するタイミングを決定します。 既定では、エージェントは説明に基づいてユーザーまたはトリガーに応答します。

    • 既定の動作 (エージェントが選択 - 説明に基づく) を使用する場合は、エージェントの目的を簡潔に記述します。
    • それ以外の場合は、使用されるタイミング の一覧を展開し、目的の動作を選択します。 サポートされている動作の詳細については、エージェントの使用タイミングの判断を参照してください。
  5. エージェントが呼び出された際に従うべき明確な指示を入力します。 手順でツール、変数、または Power Fx 数式を参照するには、スラッシュ () を入力し、表示されるメニューから目的のオプションを選択します。

    重要

    サブエージェントの指示で既存のツールを参照する際は、ツールをメインエージェントが直接アクセスさせるべきか、それともサブエージェントの指示内で明示的に呼び出された場合にのみアクセスできるかを判断してください。 ツールの使用を明示的な命令参照に限定することで、類似のツールやエージェントが存在する場合のオーケストレーターの混乱を防ぐことができます。 たとえば、「残高を確認する」エージェントと類似する「残高を取得する」ツールがある場合、重複を避けるためにツールがエージェントからのみ呼び出されるように制限してください。 ツールを別のエージェントから参照する場合にのみ使用できるようにするには、ツールの詳細ページの [追加の詳細] セクションで、このツールプロパティを使用するタイミングをエージェントが動的に決定できるようにするをオフにします。

  6. オプションとして、この子エージェントだけが使える知識やツールを追加することもできます。

    • [ ナレッジ ] セクションで、[ 追加 ] を選択し、メイン エージェントに ナレッジを追加 する場合と同じ方法で続行します。
    • [ ツール ] セクションで、[ 追加] を選択し、メイン エージェントに ツールを追加 する場合と同じ方法で続行します。
  7. このエージェントをアクティブにしない場合は、[ 有効] をオフにします。 後で 子エージェントをアクティブにすることができます 。

  8. 保存を選びます。

入力と出力を管理する

既定では、子エージェントは親エージェントから呼び出された際に、親エージェントから自然言語タスクを受け取り、それを実行します。 タスクを完了すると、実行中に起こったことの自然言語要約を返します。 場合によっては、エージェントに対してより明示的な入力値と出力値を指定する可能性があります。

入力と入力収集の設定

  1. 親代理人の 「エージェント」 ページから、子代理人を選択します。

  2. 入力セクションまでスクロールしてください。

  3. 入力を追加するには、入力の追加を選択します。 表示名と説明を定義します。これによりエージェントは入力の目的を理解し、このエージェントを呼び出す際に関連性のある値を入力できるようになります。

  4. データ型 を選択します。

  5. オプションでこの入力を必須にするを選択すると、エージェントを呼び出す前に値の入力が必須となります。

  6. 保存を選びます。

高度な入力構成

「詳細」を選択してセクションを展開し、入力用の他の設定を確認できます。

高度な設定には、子エージェントを呼び出す際にエージェントが入力値を埋める方法に関する以下の設定が含まれます。

  • ユーザーにプロンプトするべき:この設定がオンになっている場合、エージェントは利用可能なコンテキストから値を見つけられない場合、エンドユーザーに入力の値を明示的にプロンプトします。 これは、呼び出し側が入力を提供できなかったり、関連するコンテキストがなくても、エージェントにこの入力の値を確実に伝えたい場合に役立ちます。 この設定を有効にすると、子エージェントはユーザーに必要な情報を求めるプロンプトを生成し、これによりエージェントの応答の精度が向上します。
  • プロンプト - カスタマイズ:特定のプロンプト文言をコレクション用にカスタマイズし、より決定的な制御が可能です。
  • リプロンプト回数:提供された値が有効でない場合、エージェントがユーザーに何回リプロンプトすべきかを指定します。 これはエージェントがこの入力に対して有効な値を得られるようにするのに役立ちます。 リプロンプトは最大2つまで選択できます。
  • 再試行プロンプト - カスタマイズ:指定された条件を満たさない場合、リプロンプトの特定のプロンプト表現をカスタマイズし、より決定的な制御を可能にします。
  • 条件:提供された入力が有効とみなされる条件を指定します。
  • 条件未達成のプロンプト:指定された条件を満たさない場合、提供された値が異なる値をユーザーに求めるように、特定のプロンプトの文言をカスタマイズします。
  • エンティティが見つからない場合のアクション:エージェントが利用可能なコンテキストやプロンプトからこの入力の値を見つけられなかった場合に取るべきアクションを指定します。 エスカレーションするか、変数を特定の値に設定するか、値のままにするかを選択します。
  • エンティティが見つかりませんでしたメッセージ:この入力に対して値が見つからない場合にエージェントにエスカレーションさせる場合は、エージェントがユーザーに送るメッセージをカスタマイズしてください。

子エージェントの出力と補完動作の設定

出力の 項目では、子エージェントが終了後に親エージェントに返す出力値を設定できます。 子エージェントが終わった後の親エージェントの動作も設定できます。

子エージェントの完了後に親エージェントの動作を設定する

子エージェントが実行を終えた後の「Outputs」セクションで「After running」で親エージェントの動作を指定することができます:

  • 応答しない:デフォルトでは、子エージェントが終了した後、親エージェントはオーケストレーション計画の次のステップを進め、出力を親エージェントに返します。 また、子エージェントが終了した直後に親エージェントにメッセージを送らせ、次のオーケストレーション計画に進む前に他のオプションのいずれかを選択することもできます。
  • 生成AIで応答を書く:親エージェントは子エージェントが終えた直後に生成AI応答を含むメッセージをユーザーに送り、子エージェントの出力を応答の文脈として用います。
  • 特定の応答を送信:親エージェントは子エージェントの出力に関係なく、子エージェントが終了した直後にユーザーに特定のメッセージを送信します。 このオプションを選択すると、メッセージの内容をカスタマイズできます。
  • 適応カードを送信:親エージェントは子エージェントが処理を終えた直後にユーザーに適応カードを送ります。 このオプションを選択すると、適応型カードの内容をカスタマイズできます。

出力を構成する

  1. 子エージェントの詳細に移動します。

  2. 出力セクションまでスクロールしてください。

  3. 現在の出力リストを表示するには、出力セクション内の詳細セクションを展開します。

  4. 出力を追加するには、出力の追加を選択します。 表示名と説明を定義します。これらはエージェントが出力の目的を理解する際に役立ち、呼び出し元エージェントに値を返す際に関連性のある値で埋められるようになります。

  5. データ型 を選択します。

  6. 保存を選びます。

出力セクション内では、子エージェントが処理を完了した直後にユーザーへメッセージを送信するよう設定することも可能です。 メッセージを送信するには、実行後に選択内容を変更します。

エージェントを使用するタイミングを決定する

既定では、子エージェントは説明に基づいてユーザーのクエリに応答します。 いつ使用されますか?配下で、子エージェントを構成して他のイベントをインターセプトし、それに対応させることもできます。

イベント 説明
メッセージを受信した時 メッセージ アクティビティ (最も一般的な種類のアクティビティ) を受信したときに呼び出されます。 ユーザーがエージェントに何かを入力または発言したときに受信されます。 既定では、エージェントはメッセージに応答します。 エージェントの応答を特定の種類のメッセージに制限するには、[追加の詳細] の [ アクティビティの種類 ] リストを使用 します。
カスタム クライアント イベントが発生する イベント活動を受信した際に呼び出されます。 既定では、エージェントはイベントに応答します。 エージェントの応答を特定のイベントに制限するには、[追加の詳細] の [イベント名] プロパティを使用します。
活動が発生する 任意のタイプのアクティビティを受信したときに呼び出されます。 エージェントの応答を特定の種類のアクティビティに制限するには、[追加の詳細] の [ アクティビティの種類 ] リストを使用 します。
会話が変わる 会話更新アクティビティを受信した際に呼び出されます。 たとえば、Teams は、ユーザーが会話に参加すると、このタイプの活動を送信します。
呼び出されている 呼び出しの活動を受信した際に呼び出されます。 最も一般的には Teams チャネルからの受信 (ユーザーが Teams 内のメッセージや検索拡張機能とやり取りするときなど) です。
リダイレクトされる先 エージェントがトピック内部から明示的に呼び出された際に呼び出されます。
このユーザーはしばらく非アクティブです 構成された時間経過後もユーザーがメイン エージェントと対話していない場合に呼び出されます。 [その他の詳細] の [非アクティブ期間] リストから、目的の非アクティブしきい値を選択します。
計画が完了する メイン エージェントがユーザーのクエリまたは自律トリガーに対応するための計画された全ステップの実行を完了したときに呼び出されます。
AI で生成された応答が送信される時 メインエージェントが 1 つ以上のトピック、ツール、またはナレッジソースを呼び出した後、ユーザーに対して応答を生成したときに呼び出されます。 システム変数を使用して、生成された応答を確認します。 オーケストレーション応答の送信を防止する場合 (メッセージを変更し、 ノードを使用して独自のメッセージを送信する場合)、この 変数を false に設定します。

その他の詳細

[ 使用するタイミング] の選択に応じて、さらに多くのプロパティを使用できる場合があります。 以下のプロパティは常に利用可能です。

状態

エージェントの呼び出しに満たすべき条件を指定します。 たとえば、従業員が使用するチャネルがMicrosoft Teams場合にのみエージェントを呼び出す場合があります。

子エージェントのスコープをMicrosoft Teamsのチャンネルに制限する条件のスクリーンショット

より複雑な条件が必要な場合は、Power Fx の数式エディタに切り替え (ビルダーから式を選択) できます。

数式エディターへの移動オプションを表示したスクリーンショット。

重要度

単一の受信活動 (メッセージなど) に対して、複数のエージェントが反応できます。 既定では、[いつ使用しますか ? ] に選択したオプションによって、エージェントの起動順序が決まります。

子エージェントとトピックは、応答可能なトリガーまたはイベントの同じセットを共有します。 エージェントとトピックが同じイベント (ユーザーの非アクティブ状態など) に対応するように構成されている場合、優先度プロパティを使用してどちらを先に実行するかを決定するために使用します。

実行順序:

  1. 活動が発生する
  2. メッセージを受信しました。カスタム クライアント イベントが発生しました。会話が変更されました。呼び出されました。
  3. エージェントが選択する

同じ種類のイベントに基づいて複数のエージェントまたはトピックを呼び出す必要がある場合、それらは作成順 (古いものから) で呼び出されます。

Priority プロパティは明示的に設定できます。 数値が低いほど優先度が高いことを示します。

チャイルドエージェントとツールの使用

生成オーケストレーションを使用する Studio エージェント、Copilot には、使用できるツールの最大数と推奨される数に制限があります。 詳細は 「エージェントにおけるツールの制限」を参照してください。

チャイルドエージェントが呼び出されると、自身のツールや知識を使ってユーザーやイベントに応答します。 子エージェントは独自のオーケストレーションを持つため、親エージェントの制限とは別にツール数の制限があります。

別個の制限は子エージェントを使う利点の一つです。ツールや知識を論理的にグループ化し、特定のタスクに特化した小さなエージェントにまとめることができ、メインエージェントの全体的な制限に影響を与えません。 ただし、オーケストレーションの追加層による遅延というトレードオフがあります。