Crie seus próprios plug-ins personalizados
Importante
Algumas informações neste artigo estão relacionadas ao produto pré-lançado que pode ser modificado substancialmente antes de ser lançado comercialmente. A Microsoft não faz garantias, expressas ou implícitas, quanto às informações fornecidas aqui.
Dica
Se você precisar de ajuda com os plug-ins que não são da Microsoft, consulte sua documentação e suporte técnico.
Criar novos plug-ins
Dependendo de como seus administradores configuram o Copilot para Segurança, você poderá criar novos plug-ins tomando as seguintes etapas:
Crie um plug-in pela lista de plug-ins com suporte.
Crie um arquivo de manifesto de plug-in YAML ou JSON, que descreve os metadados sobre o plug-in e como invocá-lo.
Publique o manifesto do plug-in para Copilot para Segurança.
Requisitos de plug-in
Todos os plug-in do Copilot para Segurança requerem um arquivo de manifesto formatado do YAML ou JSON (por exemplo: plugin.yaml
ou plugin.json
) que descreve metadados sobre o conjunto de habilidades e como invocar as habilidades.
Um manifesto consiste de duas chaves de nível superior necessárias, Descriptor
e SkillGroups
, todas com pares de subchave ou valor e campos obrigatórios/opcionais, dependendo do formato de habilidade.
Para obter informações sobre plug-ins do OpenAI, consulte Introdução.
Resumo do campo descritor
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
Name |
string | Nome interno do Plug-in. Não permite / \ ? # @ . |
Sim |
DisplayName |
string | Nome legível por humanos do plug-in. | Recomendado |
Description |
string | Descrição legível do plug-in. | Sim |
DescriptionDisplay |
string | Descrição alternativa legível do plug-in se a Descrição não for especificada. | Não |
Category |
cadeia de caracteres | Observação: atualmente, esse valor é forçado a Plugin durante o processo de carregamento do plug-in personalizado. |
Não |
Prerequisites |
string | Não | |
Icon |
cadeia de caracteres | URL usada para buscar o ícone principal do Conjunto de Habilidades. | Recomendado |
Resumo do campo SkillGroups
Consiste em uma lista de grupos de habilidades, incluindo Format
, Settings
e Skills
.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
Format |
string | Consulte a seção Formatar para obter as opções disponíveis. | Sim |
Settings |
objeto | Consulte a seção Configurações para obter a estrutura do objeto. | Sim, para formatos: API , DOTNET , CONTAINER |
Skills |
objeto | Consulte a seção Habilidades para obter a estrutura do objeto. | Sim, para formatos: GPT , DOTNET , KQL , LogicApp |
Formato (campo SkillGroups)
Opções do campo Format
:
API
GPT
KQL
Configurações (campo SkillGroups)
Estrutura do objeto do campo Settings
.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
OpenApiSpecUrl |
string | URL para especificação pública de OpenAPI. | Sim |
EndpointUrl |
cadeia de caracteres | URL do ponto de extremidade público. | Não |
Habilidades (campo SkillGroups)
Estrutura do objeto do campo Skills
.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
Description |
string | Descrição legível para essa habilidade. | Recomendado |
DescriptionForModel |
string | Descrição detalhada da habilidade usada para seleção de habilidades | Não |
Inputs |
objeto | Lista dos objetos Name , Description , Required e DefaultValue (opcional) da entrada do usuário na habilidade. |
|
Settings |
objeto | Configurações personalizadas com base no Formato de habilidade. |
Diferenças entre os manifestos OpenAI e Copilot para Segurança
Normalmente, os plug-ins do OpenAI criados seguindo a Documentação do plug-in do ChatGPT usam um formato de manifesto diferente do formato de manifesto do Copilot para Segurança. O Copilot para Segurança dá suporte a ambos os formatos.
Quando carregado, o manifesto do plug-in do OpenAI é traduzido para o manifesto do Copilot para Segurança.
Observação
Os detalhes de mapeamento, especialmente em relação às restrições nas anotações, podem ser alterados no futuro. Atualmente, a plataforma dá suporte apenas a plug-ins nas versões 3.0 ou 3.0.1 do OpenAPI.
Mapeamento de campo de plug-in
Campo plug-in | Tipo | Campo descritor | Obrigatório | Observações |
---|---|---|---|---|
schema_version |
string | Não | É a versão do esquema de manifesto OpenAI, por exemplo, "v1". Não usado no momento. | |
name_for_model |
string | Nome | Sim | Restrito ao comprimento de 100 caracteres. Nome interno do conjunto de habilidades. Não permite / \ ? # . |
name_for_human |
string | DisplayName | Sim | Nome legível por humanos do plug-in. Restrito ao comprimento de 40 caracteres. |
description_for_model |
string | Descrição | Sim | Restrito ao comprimento de 16.000 caracteres. Descrição interna para uso com LLM. |
description_for_human |
string | DescriptionDisplay | Sim | Descrição legível do plug-in. Restrito ao comprimento de 200 caracteres. |
logo_url |
cadeia de caracteres | Ícone | Recomendado | URL usada para buscar o ícone principal do Plug-in. |
contact_email |
string | Não | Contato de email para o plug-in. Não usado no momento. | |
legal_info_url |
string | Não | Link para informações de plug-in. Não usado no momento. | |
api |
objeto | Consulte a seção API do plug-in para obter a estrutura de objetos | Sim | |
auth |
objeto | Sim | authorization_type está restrito a bearer . Detalhes a serem seguidos relativos ao suporte a diferentes autenticações type como none, oauth, api_key, aad, aad_delegated. |
Plug-in (campo de API)
Estrutura do objeto do campo api
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
type |
string | O único tipo com suporte atualmente é openapi . |
Sim |
url |
cadeia de caracteres | Link para o documento de Especificação do OpenAPI da API. | Sim |
Diretrizes de criação de plug-in
Há muitas considerações sobre a criação do plug-in. Este documento tem o objetivo de capturar algumas das diretrizes e práticas recomendadas para a criação de plug-ins para o Copilot para Segurança.
Observação
Uma "colisão de habilidades" ocorre quando Copilot para Segurança não distingue com precisão entre duas habilidades diferentes.
Em vez de ter várias habilidades que retornam o mesmo tipo de resposta, mas que diferem apenas com base nas entradas, defina as habilidades que recebem várias entradas e, em seguida, descubra internamente como obter os dados.
- Por exemplo, ter uma única habilidade
GetDevices
que usa ID do dispositivo, ID do usuário ou nome de usuário em vez de separarGetDeviceById
,GetDeviceByUserId
eGetDeviceByUserName
- Por exemplo, ter uma única habilidade
O Copilot para Segurança fornece suporte aos campos
Description
eDescriptionForModel
.Description
é usado no UX (e na seleção de habilidades, seDescriptionForModel
não for definido) eDescriptionForModel
é usado apenas na seleção de habilidades.- Por exemplo, digamos que temos uma habilidade GetSslCertsByHostname, com uma descrição de "Retorna os certificados SSL associados a um nome de host". Uma descriptionForModel detalhada poderia ser "Recupera os certificados SSL (também conhecidos como certificados TLS) para um nome de host DNS ou nome de domínio. Retorna uma lista de certificados SSL juntamente com detalhes do certificado, como emissor, assunto, número de série, sha1 e datas".
As descrições de habilidades devem ser detalhadas e redigidas para alguém com conhecimento razoável, mas que não seja um especialista no domínio do seu problema. Ele deve descrever não apenas o que a habilidade faz, mas também por que alguém gostaria de usá-la.
- Por exemplo, uma boa descrição é "Obtém informações de reputação para um endereço IP. Permite que os usuários determinem se um endereço de IP é arriscado".