Create sus propios complementos personalizados
Importante
Parte de la información contenida en este artículo se refiere a un producto preliminar que puede sufrir modificaciones sustanciales antes de su lanzamiento comercial. Microsoft no otorga garantías, expresas o implícitas, con respecto a la información que aquí se proporciona.
Sugerencia
Si necesita ayuda con complementos que no son de Microsoft, consulte su documentación y soporte técnico.
Creación de nuevos complementos
En función de cómo configuren los administradores Copilot para seguridad, es posible que pueda crear nuevos complementos siguiendo estos pasos:
Cree un complemento a partir de la lista de complementos admitidos.
Cree un archivo de manifiesto de complemento YAML o JSON, que describe los metadatos sobre el complemento y cómo invocarlo.
Publique el manifiesto del complemento en Copilot para seguridad.
Requisitos del complemento
Cada complemento Copilot para seguridad requiere un archivo de manifiesto con formato YAML o JSON (por ejemplo: plugin.yaml
o plugin.json
) que describa los metadatos sobre el conjunto de aptitudes y cómo invocar las aptitudes.
Un manifiesto consta de dos claves de nivel superior necesarias Descriptor
y SkillGroups
, cada una con pares de subclaves o valores, y campos obligatorios y opcionales en función del formato de aptitud.
Para obtener información sobre los complementos de OpenAI, consulte Introducción.
Resumen del campo descriptor
Campo | Tipo | Descripción | Obligatorio |
---|---|---|---|
Name |
string | Nombre interno del complemento. No permite / \ ? # @ . |
Sí |
DisplayName |
string | Nombre legible del complemento. | Recomendado |
Description |
string | Descripción legible del complemento. | Sí |
DescriptionDisplay |
string | Descripción alternativa legible del complemento si no se especifica la descripción. | No |
Category |
string | Nota: Actualmente, este valor está obligado a Plugin durante el proceso de carga del complemento personalizado. |
No |
Prerequisites |
string | No | |
Icon |
string | Dirección URL usada para capturar el icono principal del conjunto de aptitudes. | Recomendado |
Resumen del campo SkillGroups
Consta de una lista de grupos de aptitudes que incluye Format
, Settings
, y Skills
.
Campo | Tipo | Descripción | Obligatorio |
---|---|---|---|
Format |
string | Vea la sección Formato para ver las opciones disponibles. | Sí |
Settings |
object | Vea sección Configuración de la estructura de objetos. | Sí, para formatos: API , DOTNET , CONTAINER |
Skills |
object | Vea la sección Aptitudes para la estructura de objetos. | Sí, para formatos: GPT , DOTNET , KQL , LogicApp |
Formato (campo SkillGroups)
Opciones para el campo Format
:
API
GPT
KQL
Configuración (campo SkillGroups)
Estructura de objeto para el campo Settings
.
Campo | Tipo | Descripción | Obligatorio |
---|---|---|---|
OpenApiSpecUrl |
string | Dirección URL de la especificación OpenAPI pública. | Sí |
EndpointUrl |
string | Dirección URL del punto de conexión público. | No |
Aptitudes (campo SkillGroups)
Estructura de objeto para el campo Skills
.
Campo | Tipo | Descripción | Obligatorio |
---|---|---|---|
Description |
string | Descripción legible para esta aptitud. | Recomendado |
DescriptionForModel |
string | Descripción detallada de la aptitud usada para la selección de aptitudes | No |
Inputs |
object | Lista de objetos Name , Description , Required , y DefaultValue (opcional) para la entrada del usuario a la aptitud. |
|
Settings |
object | Configuración personalizada basada en la aptitud Formato. |
Diferencias entre los manifiestos de OpenAI y Copilot para seguridad
Los complementos de OpenAI creados siguiendo la documentación del complemento de ChatGPT suelen usar un formato de manifiesto diferente al formato de manifiesto Copilot para seguridad. Copilot para seguridad admite ambos formatos.
El manifiesto del complemento OpenAI cuando se carga se traduce al manifiesto de Copilot para seguridad.
Nota:
Los detalles de asignación, especialmente en torno a las restricciones en las notas, pueden cambiar en el futuro. Actualmente, la plataforma solo admite complementos en las versiones 3.0 o 3.0.1 de OpenAPI.
Asignación de campos de complemento
Campo de complemento | Tipo | Campo descriptor | Obligatorio | Notas |
---|---|---|---|---|
schema_version |
string | No | Es la versión del esquema del manifiesto de OpenAI, por ejemplo "v1". Sin uso actualmente. | |
name_for_model |
string | Nombre | Sí | Restringido a una longitud de 100 caracteres. Nombre interno del conjunto de aptitudes. No permite / \ ? # . |
name_for_human |
string | DisplayName | Sí | Nombre legible del complemento. Restringido a una longitud de 40 caracteres. |
description_for_model |
string | Descripción | Sí | Restringido a una longitud de 16 000 caracteres. Descripción interna para su uso con LLM. |
description_for_human |
string | DescriptionDisplay | Sí | Descripción legible del complemento. Restringido a una longitud de 200 caracteres. |
logo_url |
string | Icono | Recomendado | Dirección URL que se usa para capturar el icono principal del complemento. |
contact_email |
string | No | Enviar un correo electrónico al contacto para el complemento. Sin uso actualmente. | |
legal_info_url |
string | No | Vínculo para obtener información del complemento. Sin uso actualmente. | |
api |
object | Vea la sección API de complementos para la estructura de objetos | Sí | |
auth |
object | Sí | authorization_type está restringido a bearer . Detalles a seguir sobre la compatibilidad con diferentes type de autenticación, como none, oauth, api_key, aad, aad_delegated. |
Complemento (campo de API)
Estructura del objeto para el campo api
Campo | Tipo | Descripción | Obligatorio |
---|---|---|---|
type |
string | El único tipo admitido actualmente es openapi . |
Sí |
url |
string | Vínculo al documento de especificación de OpenAPI de la API. | Sí |
Guía de creación de complementos
Hay muchas consideraciones relacionadas con la creación de complementos. Este documento está diseñado para capturar algunas de las directrices y procedimientos recomendados para escribir complementos para Copilot para seguridad.
Nota:
Se produce una "colisión de aptitudes" cuando Copilot para seguridad no distingue con precisión entre dos aptitudes diferentes.
En lugar de tener varias aptitudes que devuelven el mismo tipo de respuesta, pero solo difieren en función de las entradas; definir aptitudes, que toman varias entradas y, a continuación, averiguan internamente cómo obtener los datos.
- Por ejemplo, tener una única aptitud de
GetDevices
que toma el identificador de dispositivo, el identificador de usuario o el nombre de usuario en lugar deGetDeviceById
,GetDeviceByUserId
, yGetDeviceByUserName
- Por ejemplo, tener una única aptitud de
Copilot para seguridad admite
Description
yDescriptionForModel
campos.Description
se usa en la experiencia de usuario (y para la selección de aptitudes siDescriptionForModel
no se establece) yDescriptionForModel
solo se usa para la selección de aptitudes.- Por ejemplo, supongamos que tenemos una aptitud GetSslCertsByHostname, con una descripción de "Devuelve los certificados SSL asociados a un nombre de host". Una descripción detallada deForModel podría ser "Recupera certificados SSL (también conocidos como certificados TLS) para un nombre de dominio o nombre de dominio DNS. Devuelve una lista de certificados SSL junto con detalles de certificado como emisor, asunto, número de serie, sha1 y fechas".
Las descripciones de aptitudes deben ser detalladas y frases para alguien que tenga conocimientos razonables, pero que no sea un experto en el dominio del problema. Debe describir no solo lo que hace la aptitud, sino también por qué alguien desea usarla.
- Por ejemplo, una buena descripción es "Obtiene información de reputación para una dirección IP. Permite a los usuarios determinar si una dirección IP es de riesgo".