Создание собственных настраиваемых плагинов
Важно!
Некоторые сведения относятся к предварительно выпущенному продукту, который может быть существенно изменен перед выпуском. Корпорация Майкрософт не дает никаких гарантий, явных или подразумеваемых, относительно предоставленных здесь сведений.
Совет
Если вам нужна помощь с плагинами сторонних производителей, обратитесь к их документации и технической поддержке.
Создание новых плагинов
В зависимости от того, как администраторы настраивают Security Copilot, вы можете создать новые подключаемые модули, выполнив следующие действия.
Создайте подключаемый модуль из списка поддерживаемых подключаемых модулей.
Создайте файл манифеста подключаемого модуля YAML или JSON, в котором описаны метаданные о подключаемом модуле и его вызове.
Опубликуйте манифест подключаемого модуля в Security Copilot.
Требования к плагину
Для каждого подключаемого модуля Security 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 и Security Copilot
Подключаемые модули OpenAI, созданные в соответствии с документацией по ChatGPT Plugin, обычно используют формат манифеста, отличный от формата манифеста Security Copilot. Security Copilot поддерживает оба формата.
Манифест подключаемого модуля OpenAI при отправке преобразуется в манифест Security 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. | Да |
Руководство по разработке плагина
Существует много рекомендаций по разработке подключаемых модулей. В этом документе описаны некоторые рекомендации и рекомендации по написанию подключаемых модулей для Security Copilot.
Примечание.
"Столкновение навыков" возникает, когда Security Copilot не различает два разных навыка.
Вместо нескольких навыков, которые возвращают один и тот же тип ответа, но отличаются только в зависимости от входных данных; определите навыки, которые принимают несколько входных данных, а затем внутренне выясните, как получить данные.
- Например, наличие одного навыка
GetDevices
, который принимает идентификатор устройства, идентификатор пользователя или имя пользователя вместо отдельныхGetDeviceById
,GetDeviceByUserId
иGetDeviceByUserName
- Например, наличие одного навыка
Security Copilot поддерживает
Description
иDescriptionForModel
поля.Description
используется в пользовательском интерфейсе (и для выбора навыка, еслиDescriptionForModel
не задан) иDescriptionForModel
используется только для выбора навыка.- Например, предположим, что у нас есть навык GetSslCertsByHostname с описанием "Возвращает сертификаты SSL, связанные с именем узла". Подробное descriptionForModel может быть: "Извлекает сертификаты SSL (также известные как TLS-сертификаты) для имени узла ИЛИ доменного имени DNS. Возвращает список SSL-сертификатов, а также сведения о сертификате, такие как издатель, тема, серийный номер, sha1 и даты".
Описания навыков должны быть подробными и содержать фразы для тех, кто достаточно хорошо осведомлен, но может не быть экспертом в вашей проблемной области. Он должен описывать не только то, что делает навык, но и то, почему кто-то хотел бы использовать его.
- Например, хорошее описание: "Возвращает сведения о репутации для IP-адреса. Позволяет пользователям определять, является ли IP-адрес рискованным".