Creación de 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.
En función de cómo los administradores configuren Microsoft 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 Microsoft Copilot para seguridad.
Cada complemento de Microsoft 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.
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 |
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 |
Opciones para el campo Format
:
API
GPT
KQL
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 |
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. |
Los complementos de OpenAI creados siguiendo la documentación del complemento ChatGPT suelen usar un formato de manifiesto diferente al formato de manifiesto de Microsoft Copilot para seguridad. Microsoft Copilot para seguridad admite ambos formatos.
El complemento OpenAI manifiesto cuando se carga se traduce al manifiesto de Microsoft 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.
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. |
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í |
Hay muchas consideraciones relacionadas con la creación de complementos. Este documento está pensado para capturar algunas de las directrices y procedimientos recomendados para escribir complementos para Microsoft Copilot para seguridad.
Nota
Una "colisión de habilidades" ocurre cuando Microsoft Copilot para seguridad no distingue con precisión entre dos habilidades 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
Microsoft Copilot para seguridad admite campos
Description
yDescriptionForModel
.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".