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:

  1. Crie um plug-in pela lista de plug-ins com suporte.

  2. Crie um arquivo de manifesto de plug-in YAML ou JSON, que descreve os metadados sobre o plug-in e como invocá-lo.

  3. 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 separar GetDeviceById, GetDeviceByUserIde GetDeviceByUserName
  • O Copilot para Segurança fornece suporte aos campos Description e DescriptionForModel. Description é usado no UX (e na seleção de habilidades, se DescriptionForModel não for definido) e DescriptionForModel é 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".  

Confira também