Compartilhar via


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 Security Copilot e as respetivas ferramentas (competências) requerem um ficheiro de manifesto no formato YAML ou JSON (por exemplo, manifest.yaml). Este ficheiro define metadados sobre o conjunto de ferramentas (plug-in) 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 o seu próprio conjunto de pares de subchave/valor, alguns dos quais são campos obrigatórios/opcionais, consoante o formato da ferramenta.

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

AGENTE YAML

Este é um exemplo de um ficheiro 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 passos para invocar as competências subordinadas:

  • ExtractHostname: utiliza a ferramenta ExtractHostname_DCA-090925 GPT para analisar o nome do anfitrião do URL.

  • GetDnsResolutionsByIndicators: utiliza o conjunto de competências do Microsoft Threat Intelligence para obter os endereços IP associados ao nome do anfitrião. Tem de ativar o plug-in em Gerir origens Personalizadas > . Certifique-se de que RequiredSkillsets: ThreatIntelligence.DTI tem de ser adicionada sem a ferramenta que GetDnsResolutionsByIndicators não é invocada.

  • lookupIpAddressGeolocation: está na operationId especificação OpenAPI, que é referenciada no plug-in DCA_SampleAPIPlugin da API para procurar dados de geolocalização para cada endereço IP. Para referência, veja Build API sample (Exemplo de API de Criação).

Exemplos

Veja a lista completa da coleção Exemplos.

Para obter o exemplo do Agente no agente interativo, veja Agentes interativos.

Sintaxe YAML do manifesto

Seguem-se os parâmetros de manifesto do agente (campos) para as três chaves de nível superior e as respetivas subchaves:

Resumo do campo descritor

Campo Tipo Descrição Restrições Obrigatório
Name string Nome interno do conjunto de competências. Tem de ser um nome exclusivo na área de trabalho. Não permite / , \ ? # @; não pode conter espaço em branco. Sim
DisplayName string Nome legível por humanos do conjunto de competências. Não*
Description string Descrição legível por humanos do conjunto de competências. Não pode ser nulo ou estar vazio. Sim
Authorization objeto Defina os valores de autorização. Para obter mais informações, veja 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 suportados para o conjunto de competências. Para obter mais informações, veja Autenticação para obter mais detalhes. Não; Necessário para a ferramenta de API

(* implica recomendado, mas não necessário)

Resumo do campo AgentDefinitions

Campo Tipo Descrição Restrições Obrigatório
Name string Nome utilizado para instalar o agente; Não é possível conter espaço em branco, ponto final (.) e não pode ser nulo ou estar vazio. Sim
DisplayName string Nome amigável do utilizador para apresentação da IU. Sim
Description string Resumo legível por humanos da finalidade e funcionalidade do agente. Sim
Publisher string Nome do editor do agente. Sim
Product string Produto de origem associado ao agente. Utilizado para filtrar ao enumerar definições de agente. Sim
RequiredSkillsets string Conjuntos de competências necessários para o agente funcionar. Sim
AgentSingleInstanceConstraint string Define onde o agente pode ser implementado. Pode ser definido como None, Workspaceou Tenant.
- None: sem restrições.
- Workspace: uma instância por área de trabalho.
- Tenant: uma instância por inquilino.
Não
Settings objeto Aplicado apenas à invocação FetchSkill. Não
Triggers objeto Define como e quando o agente é acionado. É necessário, pelo menos, um acionador.
  • Name: um nome descritivo para o acionador.
  • DefaultPeriodSeconds: o intervalo em segundos para a execução agendada. Os acionadores não impedem execuções simultâneas. Para desativar a execução agendada, defina este valor como 0.
  • FetchSkill: se estiver definido, o acionador invoca primeiro esta competência (ferramenta). O acionador espera uma matriz de objetos. Para cada objeto, chama a utilização ProcessSkill dos valores do objeto como entradas para .ProcessSkill Um padrão comum seria ter uma ListAlerts FetchSkill e um InvestigateAlertAgent ProcessSkill. Para obter mais informações sobre o Acionador, veja Componentes do agente.
  • Name: não é possível conter o espaço em branco Sim; Name e ProcessSkill.
    PromptSkill objeto Ativar a interatividade ou a experiência de chat com o agente. Sim; Aplicável apenas a 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 formatos: GPT, , API, KQLAGENT
    Settings objeto Consulte a seção Configurações para obter a estrutura do objeto. Sim; para formatos: API, , GPT, KQLAGENT

    Formato (campo SkillGroups)

    Opções do campo Format:

    API
    GPT
    AGENT
    KQL
    LogicApp

    Habilidades (campo SkillGroups)

    Estrutura do objeto para Skills o campo:

    Campo Tipo Descrição Restrições Obrigatório
    Name string Nome interno desta ferramenta (competência) Não é possível conter espaço em branco e ponto final(.) Sim
    DisplayName string Nome legível por humanos para esta ferramenta. Recomendado
    Description string Descrição legível por humanos para esta ferramenta Não pode ser nulo ou estar vazio. Recomendado
    Inputs objeto Lista de objetos Nome, Descrição e Obrigatórios ou opcionais para a entrada do utilizador 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 de que o agente depende ou invoca durante a execução. As ferramentas executam tarefas específicas e são chamadas pelo agente para cumprir os seus objetivos. Permite o encadeamento ou composição de múltiplas ferramentas para criar um comportamento de agente mais complexo. Não; No entanto, aplicável e necessário apenas para FORMAT: AGENT competências.
    Interfaces objeto Definido como ao InteractiveAgent criar um agente interativo. Sim
    SuggestedPrompts objeto
  • Prompt: pedido real para apresentar ao utilizador (se pedido inicial) ou utilizar como modelo para gerar pedidos sugeridos.
  • Title: título da linha de comandos.
  • Personas: o tipo de persona a que um pedido está alinhado.
  • IsStarterAgent: defina como verdadeiro para pedido inicial.
    Recomendação: defina para o máximo de duas frases para Starter e pedidos sugeridos.
  • Sim; Aplicável apenas a agentes interativos. Title e Personas (necessário apenas para pedidos de arranque).

    Configurações (campo SkillGroups)

    A estrutura do objeto para o Settings campo é a seguinte para os Formatos suportados. Para obter exemplos de competências (ferramentas), veja Tool samples (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 final público. Não; Especifique apenas se não quiser utilizar o servidor de API listado na especificação OpenAPI.
    EndpointUrlSettingName string Definição personalizável para pedir o URL para o ponto final público durante a configuração do plug-in. Não; Especifique apenas se pretender que o ponto final da API seja configurável.
    EnableSkillContextApi bool Defina esta opção apenas 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. Tem de ser gpt-4.1 Sim
    Template string Modelo de prompt GPT. Suporta até 80 000 carateres Sim

    AGENTE

    Nome da configuração Tipo Descrição Restrições Obrigatório
    Instructions string Orientação ou orientações claras que definem o comportamento e a missão do agente. A documentação de orientação é utilizada para orientar as respostas do agente e garantir que está alinhada com o caso de utilização 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 plataforma onde a ferramenta é executada. Veja Definições específicas do destino. 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úblico para transferir o modelo de pedido de KQL (até 80 000 carateres). Sim. Especifique ou TemplatUrlTemplate , mas não ambos.
    PackageUrl string URL público para o arquivo zip com o modelo de prompt do KQL. Nota: especificado ao nível do SkillGroup. Sim se Template ou TemplateUrl não forem especificados.
    TemplateFile string Caminho relativo para o modelo de pedido de aviso KQL (até 80 000 carateres) no PackageUrl ficheiro zip. Sim, se PackageUrl for especificado.

    LogicApp

    Nome da configuração Tipo Descrição Obrigatório
    SubscriptionId string ID da subscrição do Microsoft Azure do Logic Apps. A subscrição tem de estar no mesmo inquilino que o inquilino Security Copilot utilizador. Sim
    ResourceGroup string O Microsoft Azure grupo de recursos da Aplicação Lógica onde o recurso é criado. Sim
    WorkflowName string Nome do recurso da Aplicação Lógica. Sim
    TriggerName string Nome do acionador criado no Logic Apps. Sim

    Configurações específicas do destino

    • Microsoft Defender

      Sem definições adicionais.

    • Microsoft Sentinel

      Estas definições são válidas para a ferramenta KQL onde o Destino é 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

      Estas definições são válidas para a ferramenta KQL em que Target é Kusto.

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

    Autenticação

    Security Copilot suporta vários esquemas para ferramentas de autenticação. Veja Tipos de autenticação. Para obter exemplos sobre os diferentes tipos de autenticação, veja Plug-in da API.

    Esquema Descrição Suporte do Manifesto copilot Suporte openAI +
    None Sem autenticação Sim Sim
    Basic Autenticação básica Sim Não
    ApiKey Autenticação baseada em ApiKey. O ApiKey é transmitido num parâmetro de cabeçalho ou consulta personalizado. Sim Sim*
    ServiceHttp Autenticação com base no token fornecido. Sim Sim
    OAuthAuthorizationCodeFlow O OAuth 2.0 Authorization Code Flow é um método de autenticação mais seguro e complexo utilizado para conceder acesso a aplicações de terceiros sem partilhar credenciais de utilizador. Sim Sim
    OAuthClientCredentialsFlow Semelhante à Autenticação Básica, mas utilizada para comunicação servidor a servidor ou ao aceder a dados públicos que não requerem permissões específicas do utilizador. Sim Não
    OAuthPasswordGrantFlow Uma forma legada de trocar as credenciais de um utilizador por um token de acesso com o tipo de concessão de palavra-passe OAuth 2.0. Já não é recomendado. Sim Não
    AAD Microsoft Entra acesso apenas à Aplicação. Sim Sim*
    AADDelegated Acesso apenas a Utilizador + Microsoft Entra Aplicação. Sim Sim*
    • +Este campo é utilizado para indicar os dois tipos diferentes de carregamento suportados no Security Copilot.

    • * Estes representam métodos de autenticação que se estendem para além do que foi inicialmente suportado pela OpenAI.

    Tipos de autenticação

    A tabela mostra as definições suportadas 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 âmbitos Microsoft Entra a pedir.
    Basic ou OAuthPasswordGrantFlow Username O nome de utilizador a utilizar para autenticação básica.
    Password A palavra-passe a utilizar para autenticação básica.
    ApiKey Key O nome do parâmetro de cabeçalho/consulta. O valor predefinido é Autorização, mas pode ser um valor personalizado. Por exemplo, X-ApiKey.
    AuthScheme O nome do esquema de autenticação foi anexado ao Valor quando utilizado num cabeçalho. As opções aceitáveis são uma cadeia vazia, Portador ou Básico.
    Location A localização da chave de API, Cabeçalho ou QueryParams. A predefinição é Cabeçalho.
    Value A chave/token a utilizar.
    ServiceHttp AccessToken A chave/token a utilizar. O Portador AuthScheme está pré-anexado ao token no Cabeçalho do pedido de autorização.
    OAuthAuthorizationCodeFlowou ou OAuthClientCredentialsFlowOAuthPasswordGrantFlow TokenEndpoint O ponto final a partir do que pedir o token.
    Scopes Uma lista opcional separada por vírgulas de âmbitos a pedir.
    ClientId O ID de cliente a utilizar ao pedir o token. Opcional para OAuthPasswordGrantFlow.
    ClientSecret O segredo do cliente a utilizar ao pedir o token. Opcional para OAuthPasswordGrantFlow.
    AuthorizationContentType O tipo de conteúdo utilizado ao enviar o pedido de token. O valor predefinido é application/x-www-form-urlencoded.
    OAuthAuthorizationCodeFlow AuthorizationEndpoint O ponto final para pedir o código de autorização.