カスタム エージェントにツールを追加する

Note

本記事では 、標準ハーネスで駆動されるエージェントやエージェントフローで使用される機能について説明します。

ツールはエージェントが外部システムとやり取りするための構成要素です。 ツールはエージェントの行動範囲を拡張し、エージェントはユーザーの要求や自律的なトリガーに応じて様々なアクションを実行できます。 各ツールは、エージェントが実行できる特定の機能を表します。 例えば、エージェントに以下のようなタスクを実行するツールを装備させることができます:

  • Office 365 Outlookコネクターを使ってメールを送信します
  • 現在の気象条件と予報を確認する
  • Dataverse からのデータの読み取りと書き込み
  • Teams へのメッセージの読み取りと投稿

エージェントにツールを追加する仕組み

カスタム エージェントの機能を拡張するには、1 つ以上の ツールを追加します。 エージェントは、 生成オーケストレーションを使用して、ツールを使用してユーザーに自動的に応答できます。 また、 トピック内のツールを明示的に呼び出すこともできます。

生成 オーケストレーション (デフォルトでアクティブ)を使用することで、エージェントは自動的に最適なツールやトピックを選択し、知識を横断してユーザーに応答できます。 このオーケストレーション モードでは、より動的でインテリジェントな会話エクスペリエンスが作成されます。

クラシック モード (生成オーケストレーションがオフ) では、エージェントはトピックのみを使用してユーザーに応答できます。 ただし、トピック内からツールを明示的に呼び出すエージェントを設計することはできます。

エージェントにツールを追加するには、以下の仕組みを利用できます:

  • コネクター:Power Platformコネクターを使って独自のAPIやサービスに接続し、データを取り込んだり操作を行ったりします。
    • 事前構築されたコネクタ: Microsoft と Microsoft 以外の両方のサービスから何千という一般的な API への、事前設定された接続の中から選択できます。
    • カスタムコネクター:Power Platformコネクターを使ってカスタムツールオプションを有効にするカスタムサービスやシステムへの接続を定義します。 エージェントがコネクタを使用するには、組織に対する表示と共有権限が必要です。
  • エージェント フロー: 実行する 1 つ以上のアクションを含むエージェント フローを定義します。
  • プロンプト: 提供されたナレッジを参照し、データを分析するためのコードを生成できる、シングル ターンのモデルベースのプロンプト。
  • REST API: REST API への接続を定義し、ツールとして追加する 1 つ以上の API エンドポイントとメソッドを選択します。
  • モデル コンテキスト プロトコル: MCP サーバーに接続して、ツールとリソースにアクセスします。
  • コンピューター操作: エージェントは、Web サイトやデスクトップ アプリ、ボタンの選択、メニューの選択、画面上のフィールドへのテキスト入力など、グラフィカル ユーザー インターフェイスを備えた任意のシステムと対話できます。

また、以下の仕組みを使って エージェントにツールのような 挙動を加えることができます:

  • Azure Bot Serviceスキル:Azure Bot Serviceを通じて提供される関連ツールのセットのコンテナ。
  • クライアントツール:イベント活動をクライアントに送信し、クライアントがアクションを実行して応答を返すようにします。

Note

標準ハーネスで動くエージェントのスキルは、コーディングエージェントで使われるスキルとは異なります。 コーディングエージェントスキルは、GitHub Copilot harnessで動くエージェントにのみ追加できます。

エージェント レベルで新しいツールを作成して追加する

Copilot Studio 内で新しいツールを直接作成すると、開発プロセスが効率化され、エージェントとの適切な統合が保証されます。 エージェントに追加されたツールは、エージェントの会話全体で自動オーケストレーションに使用できます。

  1. 左側のナビゲーションペインで エージェント を選択し、リストからエージェントを選択して、エージェントを開きます。

  2. エージェントの [ツール] ページに移動します。

  3. [ ツールの追加] を選択します。

  4. ツール を追加 パネルで「 新しいツール」を選択してください。

  5. 表示される一覧から、追加するツールの種類を選択します。

    • Prompt
    • エージェント フロー
    • コンピューターの使用
    • カスタム コネクタ
    • モデル コンテキスト プロトコル
    • REST API

    エージェントに追加する新しいツールの種類の選択を示すスクリーンショット

    Note

    もし組織がデータポリシーのためにツールをブロックした場合、そのツールを選択することはできません。 組織 のポリシーによってブロックされたツールについて詳しくはこちらをご覧ください。

  6. 選択したツールの種類に固有の構成手順を実行します。 たとえば、[ プロンプト] を選択した場合は、次の手順を実行する必要があります。

    • プロンプト テンプレートと手順を定義する
    • 入力パラメーターを指定します
    • ナレッジ ソースを構成する
    • 応答の形式と制約を設定する
  7. 保存または公開を選択して、新しいツールを作成します。

  8. [追加と構成] を選択します。 ツールがあなたのエージェントに追加されました。 ツールの構成ページが表示されます。 ここでツールの設定を表示したり変更したりできます。

エージェントの [ツール ] ページに新しいツールが表示されます。

組織のポリシーによってブロックされているツール

組織はガバナンスポリシーを使って、Copilot Studioで利用可能なツールやコネクタを制限できます。

データポリシーがツールをブロックすると、「 ツールを追加 」パネルでそのツールが無効化され、選択できません。 無効になっているツールの横にあるツールを追加パネル内の情報アイコンの画像アイコンを選択して、そのツールが利用できない理由を確認してください。

ツールの追加パネルでデータポリシーでブロックされているツールのスクリーンショット

このメッセージは、ツールの使用を妨げるポリシー制限を特定します。 ブロックされたツールへのアクセスが必要な場合は、管理者に連絡してください。

詳細については、 エージェントのデータ ポリシーの構成に関するページを参照してください。

ツール構成の表示と変更

ツールの設定はいつでも閲覧・編集できます。 エージェントの ツール ページにアクセスし、ツールのリストからツールを選択してください。

ツールの構成ページが開きます。 詳細は、次の 3 つのセクションに表示されます。

  • 詳細情報
  • 入力
  • Completion

エージェント ツールとして接続されている MCP サーバーの場合、構成ページは他のツールの種類とは異なります。 詳細セクションも同様ですが、入力と完了の代わりに、MCP サーバーで使用可能なツールとリソースに関する情報を含むツールとリソースのセクションがあります。 詳細については、既存の MCP サーバーのツールとリソースの表示を参照してください。

詳細情報

ツールの基本情報を設定するには 詳細 セクションを使ってください。

以下の情報を閲覧し、更新してください:

  • 名前: ツールの名前。 この名前は、エージェントのツールの一覧に表示されます。 ツールの機能を明確に示す名前を選択します。

  • 説明: ツールの説明。 生成オーケストレーションは、この説明に依存して、エージェントがツールを使用するタイミングを決定します。 ツールの動作や使用するタイミングなど、明確で具体的な説明を記述します。

  • 詳細:

    • エージェントがツール使用のタイミングを動的に決定できるようにする:このオプションを選択すると、エージェントは生成オーケストレーションを使ってツールの使用タイミングを判断できます。 このオプションを選択しない場合、エージェントはトピックから明示的に呼び出された場合にのみツールを使用します。 (既定では、このオプションは、生成オーケストレーションが有効になっている場合に選択されます)。
    • 実行する前にエンド ユーザーに質問する: エンド ユーザー チャット エクスペリエンスで、ツールを実行する前にエージェントに確認を求めます。 既定では、このオプションは [いいえ ] に設定されています。
    • 認証: ツールに対してユーザー (エンド ユーザー) の資格情報と作成者 (作成者が指定) の資格情報のどちらを使用するかを選択します。 既定では、ユーザー認証が適用されます。
    • 説明:オプションで、エージェントがツールを実行したいときにユーザーに表示するツールの説明を追加してください。 この説明では、認証を求められている内容をユーザーに知らせます。

入力

ツールの入力を表示し、設定してください。 入力欄を使用してユーザーから情報を収集し、ツールで必要な入力項目を埋めてください。 情報はテーブルとして表示され、各入力に1行ずつ表されます。

既定では、各入力の入力の手法列の値はAI による動的入力に設定されています。 エージェント は、使用可能なコンテキスト (ユーザーのメッセージなど) から値を抽出しようとします。 エージェントが適切な値を見つけられなければ、ユーザーに値を尋ねる質問を生成します。 [ カスタマイズ ] を選択すると、入力の収集と入力に関するよりきめ細かなカスタマイズにアクセスできます。

  • 表示名と説明: ユーザーへの入力の表示方法。
  • 識別: テキストの文字列として、または定義済みのエンティティにマップするなど、ユーザーの応答がどのように解釈されるか。
  • 再試行ロジック: エージェントがユーザーのステートメントでエンティティを識別しない場合は、もう一度質問できます。
  • 入力の検証: エンティティ型の既定値を超えて、ユーザーの入力に対して追加の検証動作を構成します。

また、エージェントが入力を抽出するのではなく、明示的な値で入力をオーバーライドすることもできます。 オーバーライドを設定するには、 Fill using を Custom 値に設定し、値を入力するか、変数を選択するか、Power Fx 数式を使用します。 入力をオーバーライドしても、エージェントはユーザーに値を尋ねません。

Note

コネクタアクションをリフレッシュした後は、必要なコネクタ入力をすべて入力するまで出力タイプが解決されないままになることがあります。 必要な値を入力し、トピックを保存し、再度出力変数を確認します。

Completion

ツールの実行終了時に何を起こすかを選択してください。

エージェントに、ユーザーのクエリとツールの結果に基づいて、文脈に応じた応答を自動的に生成させることができます。

または、ツールが返す特定のフォーマットされた応答を作成することもできます。 変数ピッカーを使ってツールの出力変数への参照を挿入します。 Power Fx 数式を使用して応答の書式を設定することもできます。

「 実行後」では、ツールが実行後にユーザーにどのように応答すべきかを選択してください:

  • 応答しない (既定値): エージェントは、ツールの出力を応答に組み込みます。
  • 生成AIで応答を書く:AIはツールの出力を使って文脈に応じた応答を作成します。
  • 具体的な回答を送信:変数挿入を含むテンプレート化された回答を作成します。
  • 適応型カードを送る:ボタンやアクションで豊かでインタラクティブなレスポンスを作成しましょう。

エージェントや他のツールに利用可能な出力変数を設定しましょう。

ツールの選択と入力コレクション

Copilot Studio でツールを定義するときは、その目的を説明する情報も提供します。 この情報は、エージェントがツールを使うタイミングを見極めるのに役立ちます。 このツールの説明は、オーケストレーターが生成 AI を使用して、必要に応じて入力を収集するための質問を生成するのにも役立ちます。 エージェントは、質問を使用して情報を収集し、ツールを使用するために必要な入力を入力できます。 その結果、必要なすべての入力 (フロー内の入力など) を収集するために質問ノードを手動で作成する必要はありません。 エージェント オーケストレーターは、実行時に入力コレクションを自動的に処理します。

エージェントは、ツールの選択を決定するためにいくつかの要因を考慮します。

  • ツールの名前と説明
  • 現在の会話のコンテキスト
  • メッセージから派生したユーザーの意図
  • 使用可能な入力と出力
  • 会話での以前のツールの使用状況

生成モードを使用する場合、デフォルトではツールは情報をエージェントに返します。 ツールの応答を使用すると、エージェントはユーザーのクエリに対するコンテキスト応答を生成できます。 または、メッセージを生成するか、明示的なメッセージを作成して、常にすぐに応答するようにツールに指示することもできます。

Tip

ツールから生成された質問を使用する場合は、AI が会話の一部を生成したことをユーザーに通知します。

たとえば、 会話の開始 システム トピックに追加のメッセージを追加します。 このトピックにより、新しい会話が開始されたときにユーザーに表示されるメッセージが決まります。

トピック内から既存のツールを呼び出す

トピック内からツールを明示的に呼び出すことができます。 用途によっては、複数のノードを使うより広いトピックの一部としてツールを使うかもしれません。 あるいは、次の例のように、トピックに単一のアクション(ツール)ノードを追加するだけで十分かもしれません。

トピック内からツールを呼び出す方法:

  1. Copilot Studio で、編集するエージェントの Topics ページに移動します。

  2. 新しいトピックを作成し、例えば 「Get weather」などに名前をつけましょう。

  3. 適切なトリガー フレーズを追加します。 前の手順と同じ天気の例を続けるには、トリガー フレーズに次を含めることができます。

    • 雨が降るでしょう
    • 今日の予報
    • 天気を取得する
    • 天気はどうですか
  4. [ ノードの追加] (+) を選択し、[ ツールの追加] を選択します。

  5. 使用可能なツールからツールを選択します。 3つのタブで異なる種類の工具が示されています:

    • 基本ツール
    • Connector
    • ツール

    これで、アクション ノードがトピックに追加されました。

  6. 保存を選びます。

MCP コネクタ情報

MCPコネクタについては、MCPコネクタが提供するツールやリソースの名前や説明を確認できます。 ツールやリソースの情報は表に表示され、各ツールごとに1行ずつ表示されます。

ツールの認証に関する考慮事項

動的プロンプトやDataverse APIを呼び出す他のツールのように、正しく動作するために認証が必要なツールもあります。 適切な認証構成により、セキュリティが確保され、スムーズなユーザー エクスペリエンスが維持されます。

エージェントはユーザーコンテキスト内で実行時にツールを実行します。 認証が有効でないとツールは動かせません。 エージェントは2種類の認証方法をサポートしています:

  • エンドユーザーの認証情報:エージェントはユーザーの認証情報を使ってサービス認証を行います。 この方法により、ユーザーは表示が許可されているデータにのみアクセスできます。
  • 作成者が指定した資格情報: エージェントは、作成者の資格情報を使用してサービスに対する認証を行います。 この認証モードは、共有リソースに対して、またはユーザーが個別にアクセスする必要がない場合に使用します。

ツールをテストする

生成オーケストレーションを用いることで、オーケストレーターはユーザーのクエリに関連すると判断したツールを選択します。

または、 トピック内から既存のツールを呼び出すことができます。

エージェントでツールをオンまたはオフにする

ツール構成ページから、エージェントのツールのオンとオフを切り替えることができます。 ツールをオフにすると、エージェントはツールを使用できなくなりますが、ツールは引き続きエージェントに接続され、後でオンに戻すことができます。 エージェントにツールを追加すると、そのツールはデフォルトでオンになります。

エージェントでツールをオフにするには:

  1. エージェントに移動し、エージェントのツール ページを選択します。
  2. ツールを選択して、ツールの構成ページに移動します。
  3. 設定ページの上部で「 有効」 トグルを使ってツールをオフにします。
  4. [保存] をクリックして変更を適用します。

このツールは引き続きエージェント ツールの一覧に表示されますが、オンではなくなりました。

エージェントからツールを削除する

ツールをオフにするとツールの使用がブロックされますが、後でオンに戻す柔軟性も得られます。 さらに、エージェントからツールをより永続的に削除することもできます。 エージェントからツールを削除するには:

  1. エージェントに移動し、エージェントのツール ページを選択します。
  2. ツールの一覧でツールを見つけて、ツール名にカーソルを合わせます。 3つの点を選んでください(...)。
  3. を選択して、を削除します。 確認ウィンドウが表示されます。
  4. 削除を選択してツールを削除します。

エージェント ツールの一覧からツールが消えます。

Note

ツールは、エージェント ツール ページからのみ削除できます。 メインの Copilot Studio Tools ページからツールを削除することはできません。

エージェントにおけるツールの制限

  • 生成オーケストレーションを使うと、オーケストレーターは1エージェントあたり最大128のツールをサポートします。 最高のパフォーマンスと結果を得るために、エージェント内のツール数を25〜30に制限しましょう。
  • 子 エージェントを組み合わせたマルチエージェントオーケストレーションを使うと、各子エージェントは独自のオーケストレーションを持ち、最大128のツールセットを管理できます。