次の方法で共有


Microsoft 365 Copilotの API プラグインの確認プロンプト

重要

API プラグインは、 宣言型エージェント内のアクションとしてのみサポートされます。 Microsoft 365 Copilotでは有効になっていません。

既定では、Microsoft 365 Copilotは、外部システムで意図しない結果を防ぐために、プラグインに送信する前に、ユーザーにデータの送信を確認するよう求めます。 ユーザーは送信するデータを確認でき、許可または拒否を選択できます。 一部の API 操作では、ユーザーには常にデータの送信を許可するオプションが与えられます。これにより、その特定の操作に対する今後の確認プロンプトが表示されなくなります。

通常、Microsoft 365 Copilotはユーザーに HTTP GET 操作の常に許可オプションを示し、POST、PATCH、PUT、DELETE のオプションは表示されません。 API プラグイン開発者は、API 内の個々の操作に対してこの動作を変更できます。 開発者は、Copilot が確認プロンプトの一部としてユーザーに表示するテキストをカスタマイズすることもできます。

プロンプト動作のオーバーライド

開発者は、Microsoft 365 Copilot API の OpenAPI ドキュメントに x-openai-isConsequential プロパティを追加することで、特定の操作の always allow オプションを表示するかどうかを制御できます。 このプロパティを true に設定すると、always allow オプションが無効になり、有効 false に設定されます。 原則として、外部システムの副作用を伴うアクションは、ユーザーが制御していることを確認し、外部システムの副作用を伴うアクションに対する意図しない結果を防ぐために、 true でマークする必要があります。

たとえば、「 POST /reminders」というリマインダーを作成する API を考えてみましょう。 これは POST 操作であるため、Microsoft 365 Copilotは、この API が使用されるたびにユーザーに確認を求め、常にこの操作を許可するオプションをユーザーに提供しません。

POST 操作の Copilot 確認ダイアログ。

always allow オプションを有効にするには、次の例に示すように、 x-openai-isConsequential プロパティセットを false に追加します。

post:
  x-openai-isConsequential: false
  summary: Create a new reminder
  description: Create a new budget with a specified name and due date
  operationId: CreateReminder
  requestBody:
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/Reminder'
    required: true

次に、既存のアラームを取得する関連 API を想像してください: GET /reminders。 GET であるため、Microsoft 365 Copilotは常に許可オプションをユーザーに表示します。

GET 操作の Copilot 確認ダイアログ。

この動作は、true に設定 x-openai-isConsequential 追加することで変更できます。

get:
  x-openai-isConsequential: true
  summary: Get existing reminders
  description: Gets a list of existing reminders
  operationId: GetReminders

確認テキストのカスタマイズ

開発者は、プラグイン マニフェストの関数の Function capabilitiesオブジェクトの Confirmation オブジェクトbody プロパティを設定することで、確認テキストを指定できます。 bodyの値は、関数の動作を示す必要があります。 このプロパティがマニフェストに存在しない場合は、代わりに Function オブジェクトdescription プロパティが使用されます。

{
  "name": "GetBudgets",
  "description": "Returns details including name and available funds of budgets, optionally filtered by budget name",
  "capabilities": {
    "confirmation": {
      "type": "AdaptiveCard",
      "title": "Search budgets",
      "body": "Do you want to allow searching for budgets?"
    }
  }
}