Поделиться через


Создание собственных настраиваемых плагинов

Важно!

Некоторые сведения относятся к предварительно выпущенному продукту, который может быть существенно изменен перед выпуском. Корпорация Майкрософт не дает никаких гарантий, явных или подразумеваемых, относительно предоставленных здесь сведений.

Совет

Если вам нужна помощь с плагинами сторонних производителей, обратитесь к их документации и технической поддержке.

Создание новых плагинов

В зависимости от того, как ваши администраторы настраивают Copilot для безопасности, вы можете создавать новые плагины с помощью следующих действий:

  1. Создание плагина из списка поддерживаемых плагинов.

  2. Создайте файл манифеста плагина YAML или JSON, в котором описаны метаданные о плагине и его вызове.

  3. Опубликуйте манифест плагина в Copilot для безопасности.

Требования к плагину

Для каждого плагина Copilot для безопасности требуется файл манифеста в формате YAML или JSON (например: plugin.yaml или plugin.json), описывающий метаданные о наборе навыков и способах их вызова.

Манифест состоит из двух обязательных ключей верхнего уровня — Descriptor и SkillGroups, каждый из которых содержит пары вложенных ключей или значений, а также обязательные/необязательные поля в зависимости от формата навыка.

Сведения о плагинах OpenAI см. в разделе Начало работы.

Сводка по полю дескриптора

Поле Тип Описание Обязательный
Name string Внутреннее имя плагина. Не разрешает / \ ? # @. Да
DisplayName string Понятное имя плагина. Рекомендуемый
Description string Понятное описание плагина. Да
DescriptionDisplay string Альтернативное понятное описание плагина, если описание не указано. Нет
Category string Примечание. В настоящее время это значение принудительно задано Plugin во время отправки настраиваемого плагина. Нет
Prerequisites string Нет
Icon string URL-адрес, используемый для получения главного значка для Skillset. Рекомендуемый

Сводка по полю SkillGroups

Состоит из списка групп навыков, включая Format, Settings и Skills.

Поле Тип Описание Обязательный
Format string Доступные параметры см. в разделе Формат. Да
Settings объект Структуру объекта см. в разделе Параметры. Да, для форматов: API, DOTNET, CONTAINER
Skills объект См. раздел Навыки для получения сведений о структуре объекта. Да, для форматов: GPT, DOTNET, KQL, LogicApp

Формат (поле SkillGroups)

Параметры поля Format:

API
GPT
KQL

Параметры (поле SkillGroups)

Структура объекта для Settings поля.

Поле Тип Описание Обязательный
OpenApiSpecUrl string URL-адрес общедоступной спецификации OpenAPI. Да
EndpointUrl string URL-адрес общедоступной конечной точки. Нет

Навыки (поле SkillGroups)

Структура объекта для поля Skills.

Поле Тип Описание Обязательный
Description string Понятное описание этого навыка. Рекомендуемый
DescriptionForModel string Подробное описание навыка, используемого для выбора навыка Нет
Inputs объект Список объектов Name, Description, Required и DefaultValue (необязательно) для ввода пользователем навыка.
Settings объект Настраиваемые параметры, основанные на формате навыка.

Различия между манифестами OpenAI и Copilot для безопасности

Плагины OpenAI, созданные в соответствии с документацией плагина ChatGPT, обычно используют формат манифеста, отличный от формата манифеста Copilot для безопасности. Copilot для безопасности поддерживает оба формата.

Манифест плагина OpenAI при отправке преобразуется в манифест Copilot для безопасности.

Примечание.

Сведения о сопоставлении, особенно вокруг ограничений в заметках, могут измениться в будущем. В настоящее время платформа поддерживает только плагины в OpenAPI версии 3.0 или 3.0.1.

Сопоставление полей плагина

Поле плагина Тип Поле дескриптора Обязательный Заметки
schema_version string Нет Это версия схемы манифеста OpenAI, например "v1". Сейчас не используется.
name_for_model string Имя Да Ограничена длиной 100 символов. Внутреннее имя набора навыков. Не разрешает / \ ? #.
name_for_human string DisplayName Да Понятное имя плагина. Ограничение длиной в 40 символов.
description_for_model string Описание Да Ограничение по длине: 16000 символов. Внутреннее описание для использования с LLM.
description_for_human string DescriptionDisplay Да Понятное описание плагина. Ограничение длиной 200 символов.
logo_url string Значок Рекомендуемый URL-адрес, используемый для получения основного значка для плагина.
contact_email string Нет Контакт электронной почты для плагина. Сейчас не используется.
legal_info_url string Нет Ссылка для сведений о плагине. Сейчас не используется.
api объект Структуру объекта см. в разделе API плагина. Да
auth объект Да authorization_type имеет ограничение bearer. Сведения о поддержке различных аутентификаций type, таких как none, oauth, api_key, aad, aad_delegated.

Плагин (поле API)

Структура объекта для поля api

Поле Тип Описание Обязательный
type string Единственным поддерживаемым типом сейчас является openapi. Да
url string Ссылка на документ спецификации OpenAPI API. Да

Руководство по разработке плагина

Есть много рекомендаций по разработке плагинов. В этом документе собраны некоторые рекомендации и лучшие методики по написанию плагинов для Copilot для безопасности.

Примечание.

"Конфликт навыков" возникает, когда Copilot для безопасности неточно различает два разных навыка.

  • Вместо нескольких навыков, которые возвращают один и тот же тип ответа, но отличаются только в зависимости от входных данных; определите навыки, которые принимают несколько входных данных, а затем внутренне выясните, как получить данные.

    • Например, наличие одного навыка GetDevices, который принимает идентификатор устройства, идентификатор пользователя или имя пользователя вместо отдельных GetDeviceById, GetDeviceByUserId и GetDeviceByUserName
  • Copilot для безопасности поддерживает поля Description и DescriptionForModel. Description используется в пользовательском интерфейсе (и для выбора навыка, если DescriptionForModel не задан) и DescriptionForModel используется только для выбора навыка.

    • Например, предположим, что у нас есть навык GetSslCertsByHostname с описанием "Возвращает сертификаты SSL, связанные с именем узла". Подробное descriptionForModel может быть: "Извлекает сертификаты SSL (также известные как TLS-сертификаты) для имени узла ИЛИ доменного имени DNS. Возвращает список SSL-сертификатов, а также сведения о сертификате, такие как издатель, тема, серийный номер, sha1 и даты".
  • Описания навыков должны быть подробными и содержать фразы для тех, кто достаточно хорошо осведомлен, но может не быть экспертом в вашей проблемной области. Он должен описывать не только то, что делает навык, но и то, почему кто-то хотел бы использовать его.

    • Например, хорошее описание: "Возвращает сведения о репутации для IP-адреса. Позволяет пользователям определять, является ли IP-адрес рискованным".  

См. также