独自のカスタム プラグインを作成する
重要
この記事の一部の情報は、市販される前に大幅に変更される可能性があるプレリリース製品に関するものです。 Microsoft は、ここに記載された情報に関して、明示または黙示を問わず、いかなる保証も行いません。
ヒント
Microsoft 以外のプラグインに関するサポートが必要な場合は、そのドキュメントとテクニカル サポートを参照してください。
新しいプラグインの作成
管理者が Copilot for Security をどのように構成しているかによっては、次の手順を実行して新しいプラグインを作成できる場合があります:
サポートされているプラグインのリストからプラグインを構築します。
YAML または JSON プラグイン マニフェスト ファイルを作成します。このファイルには、プラグインに関するメタデータとその呼び出し方法が記述されています。
プラグイン マニフェストを Copilot for Security に公開します。
プラグインの要件
すべての Copilot for Security プラグインには、スキル セットに関するメタデータとスキルの呼び出し方法を記述する YAML または JSON 形式のマニフェスト ファイル (例: plugin.yaml
または plugin.json
) が必要です。
マニフェストは、2 つの必須のトップ レベル キー Descriptor
と SkillGroups
で構成され、それぞれにサブキーまたは値のペアと、スキルの形式に応じて必須/オプションのフィールドが含まれます。
OpenAI プラグインの詳細については、「作業の開始」を参照してください。
記述子フィールドの概要
フィールド | 種類 | 説明 | 必須 |
---|---|---|---|
Name |
string | プラグインの内部名。 / \ ? # @ は許可されません。 |
はい |
DisplayName |
string | 人間が判読できるプラグインの名前。 | 推奨 |
Description |
string | 人間が判読できるプラグインの説明。 | はい |
DescriptionDisplay |
string | [説明] が指定されていない場合、人が判読できるプラグインの代替説明。 | いいえ |
Category |
string | 注: 現在、この値はカスタム プラグインのアップロード プロセス中に強制的に Plugin に設定されます。 |
いいえ |
Prerequisites |
文字列 | いいえ | |
Icon |
string | スキルセットのメイン アイコンを取得するために使用される URL。 | 推奨 |
SkillGroups フィールドの概要
Format
、Settings
、Skills
を含むスキル グループのリストで構成されます。
フィールド | 種類 | 説明 | 必須 |
---|---|---|---|
Format |
string | 利用可能なオプションについては、「形式」セクションを参照してください。 | はい |
Settings |
object | オブジェクトの構造については、「設定」セクションを参照してください。 | はい。形式の場合: API 、DOTNET 、CONTAINER |
Skills |
object | オブジェクト構造については、スキル セクションを参照してください。 | はい (GPT 、DOTNET 、KQL 、LogicApp 形式の場合) |
形式 (SkillGroups フィールド)
Format
フィールドのオプション:
API
GPT
KQL
設定 (SkillGroups フィールド)
Settings
フィールドのオブジェクト構造。
フィールド | 種類 | 説明 | 必須 |
---|---|---|---|
OpenApiSpecUrl |
string | パブリック OpenAPI 仕様の URL。 | はい |
EndpointUrl |
string | パブリック エンドポイントの URL。 | いいえ |
スキル (SkillGroups フィールド)
Skills
フィールドのオブジェクト構造。
フィールド | 種類 | 説明 | 必須 |
---|---|---|---|
Description |
string | このスキルの人間が判読できる説明。 | 推奨 |
DescriptionForModel |
string | スキル選択に使用するスキルの詳細な説明 | いいえ |
Inputs |
object | スキルへのユーザー入力用の Name 、Description 、Required 、DefaultValue (オプション) オブジェクトのリスト。 |
|
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_type は bearer に制限されています。 none、oauth、api_key、aad、aad_delegated などのさまざまな認証 type のサポートの詳細については、後述します。 |
プラグイン (API フィールド)
api
フィールドのオブジェクト構造
フィールド | 種類 | 説明 | 必須 |
---|---|---|---|
type |
string | 現在サポートされている種類は openapi のみです。 |
はい |
url |
string | API の OpenAPI 仕様ドキュメントへのリンク。 | はい |
プラグインの作成に関するガイダンス
プラグインの作成には多くの考慮事項があります。 このドキュメントは、Copilot for Security のプラグインを作成するためのガイドラインとベスト プラクティスの一部を説明することを目的としています。
注:
"スキル衝突" は、Copilot for Security が 2 つの異なるスキルを正確に区別しない場合に発生します。
同じ種類の応答を返し、入力に基づいてのみ異なる複数のスキルを持つ代わりに、スキルを定義します。スキルは複数の入力を受け取り、データの取得方法を内部で判断します。
- たとえば、個別の
GetDeviceById
、GetDeviceByUserId
、GetDeviceByUserName
の代わりに、デバイス ID、ユーザー ID、またはユーザー名のいずれかを取得する単一のGetDevices
スキルを持ちます。
- たとえば、個別の
Copilot for Security は、
Description
フィールドとDescriptionForModel
フィールドをサポートします。Description
は UX (DescriptionForModel
が設定されていない場合はスキル選択にも) で使用され、DescriptionForModel
はスキル選択のみに使用されます。- たとえば、"ホスト名に関連付けられた SSL 証明書を返す" という説明を持つ GetSslCertsByHostname スキルがあるとします。 ForModel の詳細な説明は、"DNS ホスト名またはドメイン名の SSL 証明書 (TLS 証明書とも呼ばれる) を取得します。 発行者、件名、シリアル番号、sha1、日付などの証明書の詳細とともに SSL 証明書のリストを返します" となる可能性があります。
スキルの説明は、ある程度の知識はあるものの、問題領域の専門家ではない可能性がある人向けの冗長なフレーズにする必要があります。 スキルが何をするのかだけでなく、なぜそのスキルを使用したいのかについても説明する必要があります。
- たとえば、"IP アドレスの評判情報を取得します。 IP アドレスが危険かどうかをユーザーが判断できるようにします" という説明が適切です。