Manifesto do agente

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.

O desenvolvimento de um agente do Security Copilot e suas ferramentas (também conhecidas como habilidades) exigem um arquivo de manifesto no formato YAML ou JSON (por exemplo, manifest.yaml). Este arquivo define metadados sobre o conjunto de ferramentas (plugin) e especifica como cada ferramenta deve ser invocada.

Um manifesto de agente inclui três chaves de nível superior que são as seguintes:

Cada chave contém seu próprio conjunto de pares de subchave/valor, alguns dos quais são campos obrigatórios/opcionais, dependendo do formato da ferramenta.

Este guia de referência descreve os campos de manifesto disponíveis para a criação de agentes do Security Copilot.

YAML do agente

Este é um exemplo de um arquivo de exemplo manifest.yaml .


Descriptor:
  Name: Contoso.SecurityOperations.Samples-090925
  Description: DCA URL Geolocation Agent
  DisplayName: DCA URL Geolocation Agent

SkillGroups:
- Format: AGENT
  Skills:
  - Name: URL_Location_DCA_Agent_Entrypoint-090925
    Description: The entrypoint into the URL Location Agent
    Interfaces:
    - Agent
    Inputs:
    - Required: true
      Name: URL
      Description: A URL the agent should investigate
    Settings:
      Model: gpt-4.1
      Instructions: |
            <|im_start|>system
            You are an AI agent that helps a security analyst understand the hosting situation of a URL (the input).
            You'll do this by following a three-step process:
            1) Use ExtractHostname to find the hostname from the URL provided as input
            2) Use GetDnsResolutionsByIndicators to extract IP Addresses that the hostname has been observed resolving to. This may produce a list of IP Addresses.
            3) One-at-a time, use lookupIpAddressGeolocation to look up the geolocation of an IP address.

            Produce a simply formatted response telling the security analyst which locations that URL is being served from.  
            If you encounter an error share that.  
            Always return something the user knows that something happened.
            
            <|im_end|>
            <|im_start|>user
            {{URL}}
            <|im_end|>

    ChildSkills:
    - lookupIpAddressGeolocation
    - ExtractHostname_DCA-090925
    - GetDnsResolutionsByIndicators
- Format: GPT
  Skills:
  - Name: ExtractHostname_DCA-090925
    DisplayName: ExtractHostname_DCA-090925
    Description: ExtractHostname_DCA-090925
    Inputs:
    - Name: URL
      Description: A URL string
      Required: true
    Settings:
      ModelName: gpt-4.1
      Template: |-
        <|im_start|>system
        Return the hostname component of the URL provided as input.  For example:
        - If the input is 'https://www.mlb.com/', return 'www.mlb.com'
        - If the input is 'http://dev.mycompany.co.uk/sign-up/blah?a=12&b=12&c=32#23', return 'dev.mycompany.co.uk'
        - If the input is 'ftp:/x.espon.com', return 'x.espon.com'
        <|im_end|>
        <|im_start|>user
        {{URL}}
        <|im_end|>
- Format: KQL
  Skills:
    - Name: RecentUrlClicks_DCA-090925
      Description: Returns 10 recently clicked URLs
      Settings:
        Target: Defender
        Template: UrlClickEvents | sort by TimeGenerated desc | limit 10 | project Url

AgentDefinitions:
  - Name:  URLLocationAgent-090925
    DisplayName: URLLocationAgent
    Description: An agent to help an analyst understand URL hosting 
    Publisher: Contoso
    Product: SecurityOperations
    RequiredSkillsets:
      - Contoso.SecurityOperations.Samples-090925
      - ThreatIntelligence.DTI
      - DCA_SampleAPIPlugin
    AgentSingleInstanceConstraint: None
    Settings:
      - Name: LookbackWindowMinutes
        Label: Max Lookback Window in minutes
        Description: The maximum number of minutes to find clicked URLs
        HintText: You should probably enter 5
        SettingType: String
        Required: true
    Triggers:
      - Name: Default
        DefaultPeriodSeconds: 300
        FetchSkill: Contoso.SecurityOperations.Samples-090925.RecentUrlClicks_DCA-090925
        ProcessSkill: Contoso.SecurityOperations.Samples-090925.URL_Location_DCA_Agent_Entrypoint-090925

O agente segue um processo de três etapas para invocar as habilidades filhas:

  • ExtractHostname: usa a ferramenta ExtractHostname_DCA-090925 GPT para analisar o nome do host da URL.

  • GetDnsResolutionsByIndicators: usa o conjunto de habilidades de inteligência contra ameaças da Microsoft para recuperar os endereços IP associados ao nome do host. Você deve habilitar o plug-in em Gerenciar fontes > personalizadas. Certifique-se de que RequiredSkillsets: ThreatIntelligence.DTI isso deve ser adicionado sem o qual GetDnsResolutionsByIndicators a ferramenta não é invocada.

  • lookupIpAddressGeolocation: está na operationId especificação OpenAPI, que é referenciada no plug-in DCA_SampleAPIPlugin da API para pesquisar dados de geolocalização para cada endereço IP. Para referência, consulte Exemplo de API de compilação.

Exemplos

Veja a lista completa da coleção de amostras.

Para obter o exemplo de Agente no agente interativo, consulte Agentes interativos.

Sintaxe YAML de manifesto

A seguir estão os parâmetros de manifesto do agente (campos) para as três chaves de nível superior e suas subchaves:

Resumo do campo descritor

Campo Tipo Descrição Restrições Obrigatório
Name string Nome interno do conjunto de habilidades. Deve ter um nome exclusivo no workspace. Não permite / , \ ? # @; não pode conter espaços em branco. Sim
DisplayName string Nome legível do conjunto de habilidades. Não*
Description string Descrição legível do conjunto de habilidades. Não pode ser nulo ou vazio. Sim
Authorization objeto Defina os valores de autorização. Para obter mais informações, consulte Autenticação para obter mais detalhes. Não; Necessário para a ferramenta de API e SupportedAuthTypes não igual a None.
SupportedAuthTypes array Lista de tipos de autenticação com suporte para o conjunto de habilidades. Para obter mais informações, consulte Autenticação para obter mais detalhes. Não; Necessário para a ferramenta de API

(* implica recomendado, mas não obrigatório)

Resumo do campo AgentDefinitions

Campo Tipo Descrição Restrições Obrigatório
Name string Nome usado para instalar o agente; Não pode conter espaços em branco, ponto (.) e não pode ser nulo ou vazio. Sim
DisplayName string Nome amigável para exibição na interface do usuário. Sim
Description string Resumo legível da finalidade e da funcionalidade do agente. Sim
Publisher string Nome do editor do agente. Sim
Product string Produto de origem associado ao agente. Usado para filtragem ao enumerar definições de agente. Sim
RequiredSkillsets string Conjuntos de habilidades necessários para o funcionamento do agente. Sim
AgentSingleInstanceConstraint string Define onde o agente pode ser implantado. Pode ser definido como None, Workspace, ou Tenant.
- None: Sem restrição.
- Workspace: uma instância por workspace.
- Tenant: uma instância por locatário.
Não
Settings objeto Aplicado somente à invocação FetchSkill. Não
Triggers objeto Define como e quando o agente é disparado. Pelo menos um gatilho é necessário.
  • Name: um nome descritivo para o gatilho.
  • DefaultPeriodSeconds: o intervalo em segundos para a execução agendada. Os gatilhos não impedem execuções simultâneas. Para desabilitar a execução agendada, defina esse valor como 0.
  • FetchSkill: se definido, o gatilho primeiro invoca essa habilidade (ferramenta). O gatilho espera uma matriz de objetos. Para cada objeto, ele chama o ProcessSkill usando os valores do objeto como entradas para o ProcessSkill. Um padrão comum seria ter um ListAlerts FetchSkill e um InvestigateAlertAgent ProcessSkill. Para obter mais informações sobre o Trigger, consulte Componentes do agente.
  • Name: Não pode conter espaços em branco Sim; Name e ProcessSkill.
    PromptSkill objeto Habilite a interatividade ou a experiência de chat com o agente. Sim; Aplicável apenas para agentes interativos.

    Resumo do campo SkillGroups

    Consiste em uma lista de grupos de habilidades, incluindo Format, Settings e Skills.

    Campo Tipo Descrição Restrições Obrigatório
    Format string Consulte a seção Formatar para obter as opções disponíveis. Sim
    Skills objeto Consulte a seção Habilidades para obter a estrutura do objeto. Sim; para os formatos: GPT, API, KQL, AGENT
    Settings objeto Consulte a seção Configurações para obter a estrutura do objeto. Sim; para os formatos: API, GPT, KQL, AGENT

    Formato (campo SkillGroups)

    Opções do campo Format:

    API
    GPT
    AGENT
    KQL
    LogicApp

    Habilidades (campo SkillGroups)

    Estrutura de objeto para Skills o campo:

    Campo Tipo Descrição Restrições Obrigatório
    Name string Nome interno desta ferramenta (habilidade) Não pode conter espaço em branco e ponto(.) Sim
    DisplayName string Nome legível para esta ferramenta. Recomendado
    Description string Descrição legível para esta ferramenta Não pode ser nulo ou vazio. Recomendado
    Inputs objeto Lista de Nome, Descrição e Objetos Obrigatórios ou opcionais para entrada do usuário na ferramenta. Não
    Settings objeto Configurações personalizadas com base no Formato de habilidade. Sim
    ChildSkills matriz de cadeia de caracteres Uma lista de nomes de ferramentas dos quais o agente depende ou invoca durante a execução. As ferramentas executam tarefas específicas e são chamadas pelo agente para cumprir seus objetivos. Habilita o encadeamento ou a composição de várias ferramentas para criar um comportamento de agente mais complexo. Não; No entanto, aplicável e necessário apenas para FORMAT: AGENT habilidade.
    Interfaces objeto Defina como InteractiveAgent ao criar um agente interativo. Sim
    SuggestedPrompts objeto
  • Prompt: Prompt real a ser exibido ao usuário (se for o prompt inicial) ou use como um modelo para gerar prompts sugeridos.
  • Title: título do prompt.
  • Personas: o tipo de persona ao qual um prompt está alinhado.
  • IsStarterAgent: defina como true para o prompt de início.
    Recomendação: defina como no máximo duas frases para solicitações iniciais e sugeridas.
  • Sim; Aplicável apenas para agentes interativos. Title e Personas (necessário somente para prompts iniciais).

    Configurações (campo SkillGroups)

    A estrutura do objeto para o Settings campo é a seguinte para os formatos suportados. Para obter exemplos de habilidades (ferramentas), consulte Exemplos de ferramentas.

    API

    Nome da configuração Tipo Descrição Restrições Obrigatório
    OpenApiSpecUrl string URL para a especificação pública de OpenAPI. Sim
    EndpointUrl string URL para o ponto de extremidade público. Não; Especifique somente se você não quiser usar o servidor de API listado na especificação OpenAPI.
    EndpointUrlSettingName string Configuração personalizável para solicitar URL para ponto de extremidade público durante a configuração do plug-in. Não; Especifique somente se quiser que o ponto de extremidade da API seja configurável.
    EnableSkillContextApi bool Defina isso somente se as ferramentas de API precisarem de acesso à API SkillContext. Não

    GPT

    Nome da configuração Tipo Descrição Restrições Obrigatório
    ModelName string Seleciona qual modelo GPT usar. Deve ser gpt-4.1 Sim
    Template string Modelo de prompt GPT. Suporta até 80.000 caracteres Sim

    AGENTE

    Nome da configuração Tipo Descrição Restrições Obrigatório
    Instructions string Orientação ou instruções claras que definem o comportamento e a missão do agente. As diretrizes são usadas para orientar as respostas do agente e garantir que elas se alinhem com o caso de uso pretendido. Normalmente escrito em linguagem natural e inclui formatação como markdown ou comentários. Sim

    KQL

    Nome da configuração Tipo Descrição Restrições Obrigatório
    Target string Selecione o sistema ou a plataforma em que a ferramenta é executada. Consulte Configurações específicas do Target. Sim
    Template string Modelo de prompt do KQL. Dá suporte a até 80.000 caracteres. Sim, se TemplateUrl não for especificado.
    TemplateUrl string URL pública para baixar o modelo de prompt KQL (até 80.000 caracteres). Sim. Especifique um ou TemplatUrlTemplate mas não ambos.
    PackageUrl string URL público para o arquivo zip com o modelo de prompt do KQL. Observação: Especificado no nível do SkillGroup. Sim, se Template especificado ou TemplateUrl não.
    TemplateFile string Caminho relativo para o modelo de prompt KQL (até 80.000 caracteres) no PackageUrl arquivo zip. Sim, se PackageUrl for especificado.

    LogicApp

    Nome da configuração Tipo Descrição Obrigatório
    SubscriptionId string ID da assinatura do Microsoft Azure dos Aplicativos Lógicos. A assinatura deve estar no mesmo locatário que o locatário do usuário do Security Copilot. Sim
    ResourceGroup string Grupo de recursos do Microsoft Azure do Aplicativo Lógico em que o recurso é criado. Sim
    WorkflowName string Nome do recurso de Aplicativo Lógico. Sim
    TriggerName string Nome do gatilho criado nos Aplicativos Lógicos. Sim

    Configurações específicas do destino

    • Microsoft Defender

      Nenhuma configuração adicional.

    • Microsoft Sentinel

      Essas configurações são válidas para a ferramenta KQL, cujo destino é o Microsoft Sentinel.

    Settings:
      Target: Sentinel
      # The ID of the AAD Organization that the Sentinel workspace is in.
      TenantId: '{{TenantId}}'
      # The id of the Azure Subscription that the Sentinel workspace is in.
      SubscriptionId: '{{SubscriptionId}}'
      # The name of the Resource Group that the Sentinel workspace is in.
      ResourceGroupName: '{{ResourceGroupName}}'
      # The name of the Sentinel workspace.
      WorkspaceName: '{{WorkspaceName}}'
    
    • Kusto

      Essas configurações são válidas para a ferramenta KQL em que o Destino é Kusto.

    Settings:
      # The Kusto cluster URL. 
      Cluster: 
      # The Kusto database name.
      Database: 
    

    Autenticação

    O Security Copilot dá suporte a vários esquemas para autenticar ferramentas. Consulte Tipos de autenticação. Para obter exemplos sobre os diferentes tipos de autenticação, consulte Plug-in de API.

    Esquema Descrição Suporte ao manifesto do Copilot Suporte ao OpenAI +
    None Sem autenticação Sim Sim
    Basic Autenticação básica Sim Não
    ApiKey autenticação baseada em ApiKey. ApiKey é passado em um cabeçalho personalizado ou parâmetro de consulta. Sim Sim*
    ServiceHttp Autenticação com base no token fornecido. Sim Sim
    OAuthAuthorizationCodeFlow O fluxo de código de autorização OAuth 2.0 é um método de autenticação mais seguro e complexo usado para conceder acesso a aplicativos de terceiros sem compartilhar credenciais de usuário. Sim Sim
    OAuthClientCredentialsFlow Semelhante à Autenticação Básica, mas usada para comunicação de servidor para servidor ou ao acessar dados públicos que não exigem permissões específicas do usuário. Sim Não
    OAuthPasswordGrantFlow Uma maneira herdada de trocar as credenciais de um usuário por um token de acesso usando o tipo de concessão de senha OAuth 2.0. Não é mais recomendado. Sim Não
    AAD Acesso apenas ao aplicativo Microsoft Entra. Sim Sim*
    AADDelegated Usuário + Acesso apenas ao aplicativo do Microsoft Entra. Sim Sim*
    • +Esse campo é usado para indicar os dois tipos diferentes de upload com suporte no Security Copilot.

    • * Eles representam métodos de autenticação que vão além do que era inicialmente suportado pelo OpenAI.

    Tipos de autenticação

    A tabela mostra as configurações com suporte para cada tipo de autenticação.

    Tipo de autenticação Configuração Descrição
    AAD ou AADDelegated EntraScopes Uma lista separada por vírgulas de escopos do Microsoft Entra a serem solicitados.
    Basic ou OAuthPasswordGrantFlow Username O nome de usuário a ser usado para autenticação básica.
    Password A senha a ser usada para autenticação básica.
    ApiKey Key O nome do parâmetro de cabeçalho/consulta. O valor padrão é Autorização, mas pode ser um valor personalizado. Por exemplo, X-ApiKey.
    AuthScheme O nome do esquema de autenticação anexado ao Valor quando usado em um cabeçalho. As opções aceitáveis são uma cadeia de caracteres vazia, Portador ou Básico.
    Location O local da chave de API, Header ou QueryParams. O padrão é Cabeçalho.
    Value A chave/token a ser usado.
    ServiceHttp AccessToken A chave/token a ser usado. O AuthScheme de Portador é anexado ao token no cabeçalho da solicitação de autorização.
    OAuthAuthorizationCodeFlow ou OAuthClientCredentialsFlow ou OAuthPasswordGrantFlow TokenEndpoint O ponto de extremidade do qual solicitar o token.
    Scopes Uma lista opcional separada por vírgula de escopos a serem solicitados.
    ClientId A ID do cliente a ser usada ao solicitar o token. Opcional para OAuthPasswordGrantFlow.
    ClientSecret O segredo do cliente a ser usado ao solicitar o token. Opcional para OAuthPasswordGrantFlow.
    AuthorizationContentType O tipo de conteúdo usado ao enviar a solicitação de token. O valor padrão é application/x-www-form-urlencoded.
    OAuthAuthorizationCodeFlow AuthorizationEndpoint O ponto de extremidade do qual solicitar o código de autorização.