独自のカスタム プラグインを作成する

重要

この記事の一部の情報は、市販される前に大幅に変更される可能性があるプレリリース製品に関するものです。 Microsoft は、ここに記載された情報に関して、明示または黙示を問わず、いかなる保証も行いません。

ヒント

Microsoft 以外のプラグインに関するサポートが必要な場合は、そのドキュメントとテクニカル サポートを参照してください。

新しいプラグインの作成

管理者が Copilot for Security をどのように構成しているかによっては、次の手順を実行して新しいプラグインを作成できる場合があります:

  1. サポートされているプラグインのリストからプラグインを構築します。

  2. YAML または JSON プラグイン マニフェスト ファイルを作成します。このファイルには、プラグインに関するメタデータとその呼び出し方法が記述されています。

  3. プラグイン マニフェストを Copilot for Security に公開します。

プラグインの要件

すべての Copilot for Security プラグインには、スキル セットに関するメタデータとスキルの呼び出し方法を記述する YAML または JSON 形式のマニフェスト ファイル (例: plugin.yaml または plugin.json) が必要です。

マニフェストは、2 つの必須のトップ レベル キー DescriptorSkillGroups で構成され、それぞれにサブキーまたは値のペアと、スキルの形式に応じて必須/オプションのフィールドが含まれます。

OpenAI プラグインの詳細については、「作業の開始」を参照してください。

記述子フィールドの概要

フィールド 種類 説明 必須
Name string プラグインの内部名。 / \ ? # @ は許可されません。 はい
DisplayName string 人間が判読できるプラグインの名前。 推奨
Description string 人間が判読できるプラグインの説明。 はい
DescriptionDisplay string [説明] が指定されていない場合、人が判読できるプラグインの代替説明。 いいえ
Category string 注: 現在、この値はカスタム プラグインのアップロード プロセス中に強制的に Plugin に設定されます。 いいえ
Prerequisites 文字列 いいえ
Icon string スキルセットのメイン アイコンを取得するために使用される URL。 推奨

SkillGroups フィールドの概要

FormatSettingsSkills を含むスキル グループのリストで構成されます。

フィールド 種類 説明 必須
Format string 利用可能なオプションについては、「形式」セクションを参照してください。 はい
Settings object オブジェクトの構造については、「設定」セクションを参照してください。 はい。形式の場合: APIDOTNETCONTAINER
Skills object オブジェクト構造については、スキル セクションを参照してください。 はい (GPTDOTNETKQLLogicApp 形式の場合)

形式 (SkillGroups フィールド)

Format フィールドのオプション:

API
GPT
KQL

設定 (SkillGroups フィールド)

Settings フィールドのオブジェクト構造。

フィールド 種類 説明 必須
OpenApiSpecUrl string パブリック OpenAPI 仕様の URL。 はい
EndpointUrl string パブリック エンドポイントの URL。 いいえ

スキル (SkillGroups フィールド)

Skills フィールドのオブジェクト構造。

フィールド 種類 説明 必須
Description string このスキルの人間が判読できる説明。 推奨
DescriptionForModel string スキル選択に使用するスキルの詳細な説明 いいえ
Inputs object スキルへのユーザー入力用の NameDescriptionRequiredDefaultValue (オプション) オブジェクトのリスト。
Settings object スキル [形式] に基づいたカスタム設定。

OpenAI と Copilot for Security マニフェストの違い

ChatGPT プラグインのドキュメントに従って構築された OpenAI プラグインは通常、Copilot for Security のマニフェスト形式とは異なるマニフェスト形式を使用します。 Copilot for Security は両方の形式をサポートします。

OpenAI プラグイン マニフェストは、アップロードされると、Copilot for Security マニフェストに変換されます。

注:

特にメモの制限に関するマッピングの詳細は、将来変更される可能性があります。 現在、プラットフォームは OpenAPI バージョン 3.0 または 3.0.1 のプラグインのみをサポートしています。

プラグイン フィールドのマッピング

プラグイン フィールド 記述子フィールド 必須 Notes (メモ)
schema_version 文字列 いいえ これは、OpenAI マニフェスト スキーマのバージョン ('v1' など) です。 現在は使用されていません。
name_for_model string 名前 はい 長さは 100 文字に制限されています。 スキルセットの内部名。 / \ ? # は許可されません。
name_for_human string DisplayName はい 人間が判読できるプラグインの名前。 長さは 40 文字に制限されています。
description_for_model string 説明 はい 長さは 16,000 文字に制限されています。 LLM で使用するための内部説明。
description_for_human string DescriptionDisplay はい 人間が判読できるプラグインの説明。 長さは 200 文字に制限されています。
logo_url string アイコン 推奨 プラグインのメイン アイコンを取得するために使用される URL。
contact_email 文字列 いいえ プラグインのメール連絡先。 現在は使用されていません。
legal_info_url 文字列 いいえ プラグイン情報のリンク。 現在は使用されていません。
api object オブジェクト構造については、「プラグイン API」セクションを参照してください はい
auth object はい authorization_typebearer に制限されています。 none、oauth、api_key、aad、aad_delegated などのさまざまな認証 type のサポートの詳細については、後述します。

プラグイン (API フィールド)

api フィールドのオブジェクト構造

フィールド 種類 説明 必須
type string 現在サポートされている種類は openapi のみです。 はい
url string API の OpenAPI 仕様ドキュメントへのリンク。 はい

プラグインの作成に関するガイダンス

プラグインの作成には多くの考慮事項があります。 このドキュメントは、Copilot for Security のプラグインを作成するためのガイドラインとベスト プラクティスの一部を説明することを目的としています。

注:

"スキル衝突" は、Copilot for Security が 2 つの異なるスキルを正確に区別しない場合に発生します。

  • 同じ種類の応答を返し、入力に基づいてのみ異なる複数のスキルを持つ代わりに、スキルを定義します。スキルは複数の入力を受け取り、データの取得方法を内部で判断します。

    • たとえば、個別の GetDeviceByIdGetDeviceByUserIdGetDeviceByUserName の代わりに、デバイス ID、ユーザー ID、またはユーザー名のいずれかを取得する単一の GetDevices スキルを持ちます。
  • Copilot for Security は、Description フィールドと DescriptionForModel フィールドをサポートします。 Description は UX (DescriptionForModel が設定されていない場合はスキル選択にも) で使用され、DescriptionForModel はスキル選択のみに使用されます。

    • たとえば、"ホスト名に関連付けられた SSL 証明書を返す" という説明を持つ GetSslCertsByHostname スキルがあるとします。 ForModel の詳細な説明は、"DNS ホスト名またはドメイン名の SSL 証明書 (TLS 証明書とも呼ばれる) を取得します。 発行者、件名、シリアル番号、sha1、日付などの証明書の詳細とともに SSL 証明書のリストを返します" となる可能性があります。
  • スキルの説明は、ある程度の知識はあるものの、問題領域の専門家ではない可能性がある人向けの冗長なフレーズにする必要があります。 スキルが何をするのかだけでなく、なぜそのスキルを使用したいのかについても説明する必要があります。

    • たとえば、"IP アドレスの評判情報を取得します。 IP アドレスが危険かどうかをユーザーが判断できるようにします" という説明が適切です。  

関連項目