Compartilhar via


Componentes 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.

Este artigo fornece uma descrição geral conceptual dos componentes principais que definem a forma como os agentes de Security Copilot personalizados funcionam, ajudando-o a compreender a estrutura, o comportamento e a lógica operacional.

Agente

Um agente no Security Copilot é uma entidade computacional autónoma ou semi-autónoma que funciona para atingir um objetivo específico. É definido pela sua capacidade de perceber e reagir ao seu ambiente, tomar decisões e produzir resultados para cumprir o seu objetivo. A estrutura de um agente informa o agente sobre como alcançar o seu objetivo ao decidir que capacidades utilizar se se trata de um Modelo de Linguagem Grande (LLM), ferramentas ligadas (competências) ou ambas. As decisões do agente são orientadas pelas suas entradas e instruções, o que pode fazer com que o agente utilize a lógica predefinida ou pedir a um LLM que interprete e aja nessas instruções.

Os agentes são ativados através de um acionador, que cria uma execução de agente e executa cada passo (ou tarefa) até que seja alcançado um resultado. Ao longo da execução do agente, com base nas instruções, decide entre tirar partido de um LLM ou de uma ferramenta ligada para concluir uma tarefa.

Os agentes podem interagir com ferramentas, recursos externos para além das instruções do LLM e do agente, através de uma de duas estratégias de seleção:

  • Ferramenta estática: um conjunto fixo de recursos disponíveis para o agente chamar, conforme listado na definição do agente, para um passo individual ou toda a execução do agente. Quando definido desta forma, o LLM dentro de um agente não pode decidir chamar ferramentas fora do que está definido. Isto pode melhorar a velocidade e a relevância dos resultados da ferramenta. Um agente de informações sobre ameaças que deve invocar origens predefinidas pode ser concebido desta forma.

  • Ferramenta dinâmica: as chamadas de ferramentas são selecionadas durante a execução do agente com base no contexto, no raciocínio ou nas entradas do agente. As ferramentas disponibilizadas ao agente podem ser introduzidas no runtime. Os agentes que precisam de ser reativos às condições encontradas numa execução de agente podem ser concebidos desta forma. Por exemplo, um agente que melhora uma entidade pode ser executado de forma diferente com base no tipo de entidade fornecido como uma entrada para o agente.

Os programadores e Security Copilot utilizadores podem criar agentes através de qualquer abordagem à seleção de ferramentas com base no objetivo do agente. O objetivo também ajuda a informar se o resultado do agente serve um indivíduo, equipa ou organização. À medida que os agentes são executados com uma identidade, o âmbito do resultado e as permissões da identidade devem ser alinhados.

Quer esteja a criar um agente de triagem de alertas simples ou a orquestrar um sistema multi-agente para investigações complexas, este artigo fornece os conhecimentos fundamentais necessários para trabalhar com a arquitetura do agente Security Copilot a partir da seleção de ferramentas e do design do manifesto para acionar a configuração e governação.

Imagem dos componentes do Agente no Security Copilot

Instruções

As instruções são instruções dadas a um agente para definir os seus objetivos, informar a tomada de decisões e detalhar o resultado. Por exemplo, pode dizer a um agente de triagem para se concentrar em incidentes de alta gravidade ou orientar um agente de dados para solicitar apenas informações que sigam determinadas regras. As instruções ajudam os agentes a manterem-se precisos e consistentes.

Mal-Intencionado

Uma ferramenta (competência) são recursos acedidos fora das instruções do agente e LLM que um agente Security Copilot pode invocar para ajudar a concluir o resultado. Pense numa ferramenta como uma função numa linguagem de programação tradicional. Tem um nome, alguns argumentos e, quando invocado, executa uma tarefa bem definida e devolve um resultado.

Os utilizadores podem criar as ferramentas pretendidas que Security Copilot podem chamar para realizar tarefas especializadas ou interagir com sistemas externos.

Por exemplo:

  • Responda a perguntas de resolução ou reputação sobre uma entidade que não foi vista anteriormente, como "Quem se registou" www.contoso.com?'

  • Responda a perguntas sobre quaisquer dados específicos do cliente, como "O Incidente 1234 afeta que utilizadores?".

  • Interaja com sistemas externos, como "Repor a palavra-passe da conta para "testaccount@contoso.com".

  • Obtenha conhecimentos específicos do cliente a partir de uma origem de conhecimento, como o SharePoint.

Plug-in

Uma coleção de ferramentas relacionadas que os utilizadores podem ativar no Security Copilot quando relevantes para criar novas funcionalidades de pedido, promptbook ou agente. Para os agentes, os plug-ins expandem o que um agente pode fazer ao conceder-lhe acesso a recursos fora de um agente e LLM. Um exemplo é um plug-in que utiliza uma API para ligar a um serviço externo, como a pesquisa de reputação, em que as definições de ferramentas subjacentes para o plug-in podem devolver uma classificação de reputação, software maligno relacionado, informações sobre ameaças, etc.

Formatos de ferramentas

Security Copilot plataforma suporta várias formas de criar e alojar ferramentas (competências) de acordo com várias necessidades. Pode criar agentes com qualquer uma das competências suportadas. Os formatos de ferramenta suportados são os seguintes:

Formato da Ferramenta Melhor para Caso de utilização de exemplo
API Integrar sistemas externos ou internos Automatizar reposições de palavras-passe, obter informações sobre ameaças a partir de APIs, acionar fluxos de trabalho de remediação
GPT Fornece definições para processamento de linguagem natural que não estão disponíveis nativamente em LLMs subjacentes. Definições específicas do domínio, resumir incidentes em formatos exclusivos
KQL Consultar origens de dados da Microsoft (Microsoft Defender, Microsoft Sentinel) Obter registos de início de sessão, detetar anomalias
AGENTE Orquestrar fluxos de trabalho de vários passos com modelos de linguagem grandes (LLMs) e ferramentas subordinadas Compreenda a situação de alojamento de um URL, , encadeie várias ferramentas para investigação.
MCP Integrações dinâmicas de várias ferramentas expostas por um servidor MCP; O co-piloto de segurança deteta ferramentas no runtime. Agregar informações sobre ameaças ou orquestrar a remediação em várias ferramentas através do servidor MCP.

Definição do agente

A definição do agente serve de esquema para um agente e é um componente chave do ficheiro de manifesto. É uma das chaves de nível superior no manifesto e especifica a configuração, as capacidades e o comportamento principais do agente. Especifica:

  • Detalhes descritivos/metadados (por exemplo: nome, descrição).
  • Definições de acionador que descrevem os eventos que fazem com que o agente seja executado.
  • Ferramentas ou referências de ferramentas associadas que o agente utiliza para concluir o seu trabalho.

Enquanto programador Security Copilot, as definições de agente que criar estão disponíveis para que os Analistas executem e vejam os resultados.

Instância do agente

Uma instância de agente é a versão implementada de uma definição de agente numa área de trabalho específica. Cada instância:

  • Mantém a sua própria identidade ou credenciais.
  • Armazena memórias e comentários específicos de instâncias.
  • Vários inquilinos e áreas de trabalho podem ter a sua própria instância da mesma definição de agente. As alterações de configuração ou as atualizações de memória de uma instância não afetam outras.

Manifesto

O manifesto define a definição, identidade, ferramentas e lógica operacional do agente num formato YAML ou JSON estruturado. Semelhante a um ficheiro de configuração em sistemas de software tradicionais, o manifesto especifica:

  • A finalidade e as tarefas exclusivas do agente
  • Diretrizes operacionais gerais
  • Lógica de tomada de decisão
  • As ferramentas que tem de invocar
  • Outros agentes que pode chamar durante a execução

O manifesto inclui metadados (definições e competências do agente) que o agente pode utilizar, como essas competências são agrupadas e que ações pode realizar. O ficheiro de manifesto é empacotado e implementado como parte do fluxo de trabalho do agente na plataforma Security Copilot. Os analistas do SOC interagem com o agente através desta plataforma e o agente responde a pedidos ou eventos com base na configuração do manifesto e na lógica da ferramenta.

Observação

Nos exemplos, o formato YAML é listado porque é mais claro para as pessoas lerem e podem incluir comentários, mas qualquer um dos formatos funciona igualmente bem. O formato JSON é idêntico ao formato YAML, mas utiliza a sintaxe JSON.

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).

Gatilho

Um acionador é o que inicia o fluxo de trabalho de um agente. Pode ser iniciado manualmente ou definido para ser executado com base numa agenda. Assim que o acionador for ativado, o agente segue o plano e executa as ações automaticamente.

Os agentes operam com base num plano de ação estruturado e são executados nesse plano. Por exemplo, um agente de triagem de phishing pode determinar que ferramentas ou outros agentes invocar a partir do respetivo conjunto de capacidades pré-configuradas. As ferramentas como FetchSkill e ProcessSkill definidas no acionador servem como pontos de entrada no fluxo de trabalho do agente que orienta a execução da tarefa.

No exemplo seguinte:

Triggers:
      - Name: Default
        DefaultPeriodSeconds: 300
        FetchSkill: Contoso.SecurityCopilot.Samples-090925_1b.RecentUrlClicks_DCA-090925_1b
        ProcessSkill: Contoso.SecurityCopilot.Samples-090925_1b.URL_Location_DCA_Agent_Entrypoint-090925_1b
        Settings:

1.A cada 5 minutos, o RecentUrlClicks_DCA-090925_1b é invocado para obter novos dados.

2. Em seguida, o ProcessSkill URL_Location_DCA_Agent_Entrypoint-090925_1b é invocado em cada item devolvido para agir sobre os dados.

Cada um destes ciclos é uma execução de acionador e cada chamada para ProcessSkill é uma execução de acionador. Estas invocações de competências são executadas em sessões associadas à instância e ao acionador do agente e utilizam a identidade associada do agente.

FetchSkill e ProcessSkill

FetchSkill

Quando um acionador é ativado numa execução de agente, o FetchSkill, se configurado, recolhe dados. ProcessSkill define como os agentes agem sobre esses dados durante a execução. Assim que os dados forem obtidos, o ProcessSkill assume o controlo, utilizando esses dados como entrada para realizar ações ou análises específicas. Estes dois componentes funcionam em conjunto para ativar fluxos de trabalho dinâmicos e orientados por dados. Se o valor FetchSkill estiver definido, o acionador invoca primeiro FetchSkill.

Importante

Fetch e ProcessSkills têm de ter um espaçamento entre nomes por conjunto de competências. Têm de seguir o formato Skillset name.Skill name.

No exemplo de Acionadores, é Skill nameRecentUrlClicks_DCA. É Skillset name o Descriptor.name (por exemplo, Contoso.SecurityCopilot.Samples-090925_1b). Assim, o nome de competência completamente qualificado é Contoso.SecurityCopilot.Samples-090925_1b. RecentUrlClicks_DCA.

ProcessSkill

Se for definida uma FetchSkill, para cada objeto de saída, processSkill é chamado com os valores de saída como entradas para ProcessSkill. Se uma FetchSkill não estiver definida, o ProcessSkill é invocado.

{
    [
        {
            "Incident": 1,
            "name": "Item One",
            "created_at": "2024-02-17T12:34:56Z"
        },
        {
            "Incident": 2,
            "name": "Item Two",
            "created_at": "2024-02-17T12:35:30Z"
        },
        {
            "Incident": 3,
            "name": "Item Three",
            "created_at": "2024-02-17T12:36:10Z"
        }
    ]
}

No exemplo, ProcessSkill é chamado três vezes com Incident, namee created_at como entradas.

Espaço de trabalho

Um contentor para trabalhar. Os agentes operam no contexto de uma área de trabalho. A área de trabalho fornece uma unidade de controlo para acesso, configuração, consumo e processamento de dados.

Memória

A memória permite que os agentes mantenham o contexto entre interações, permitindo respostas mais inteligentes e personalizadas. Ao armazenar informações relevantes, como ações anteriores, preferências de utilizador ou histórico de incidentes, os agentes podem fornecer continuidade e melhorar a tomada de decisões ao longo do tempo.