Создание собственных настраиваемых плагинов
Важно!
Некоторые сведения относятся к предварительно выпущенному продукту, который может быть существенно изменен перед выпуском. Корпорация Майкрософт не дает никаких гарантий, явных или подразумеваемых, относительно предоставленных здесь сведений.
Совет
Если вам нужна помощь с плагинами сторонних производителей, обратитесь к их документации и технической поддержке.
Создание новых плагинов
В зависимости от того, как ваши администраторы настраивают Copilot для безопасности, вы можете создавать новые плагины с помощью следующих действий:
Создание плагина из списка поддерживаемых плагинов.
Создайте файл манифеста плагина YAML или JSON, в котором описаны метаданные о плагине и его вызове.
Опубликуйте манифест плагина в 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-адрес рискованным".