Tutorial: Criar e gerir ganchos no portal

Neste tutorial, crias dois hooks de governação usando o portal: um hook Stop que impõe a formatação dos dados (tabelas markdown com cabeçalhos a negrito) e um hook PostToolUse que bloqueia comandos de shell perigosos. Configuras ganchos tanto ao nível do agente (aplica-se a todos os threads e subagentes) como ao nível do subagente (aplica-se a um subagente específico).

Tempo estimado: 10 minutos

Neste tutorial, aprenderás como:

  • Crie um gancho Stop que valide a formatação das respostas
  • Crie um gancho PostToolUse que bloqueie comandos perigosos de shell
  • Adicionar ganchos a um subagente específico
  • Gerir a ativação de ganchos em threads individuais

Pré-requisitos

  • Um agente SRE do Azure no estado Em execução
  • Função de contribuidor ou superior no recurso SRE Agent

Sugestão

Os ganchos que criaste anteriormente através do tutorial da API REST aparecem automaticamente na interface do portal. Consegues geri-los visualmente sem reconfigurar nada.

Compreenda onde os ganchos se encontram no portal

Os ganchos funcionam em dois níveis. Compreender esta distinção é um conceito arquitetónico fundamental.

Nível Localização no portal Scope Utilizar quando
Nível de agente Construtor>Hooks Aplica-se a todo o agente, a todos os threads e a todos os subagentes Queres políticas a nível de agente como "auditar todas as chamadas de ferramenta" ou "bloquear comandos perigosos em todo o lado"
Nível de subagente Construtor de subagente> selecionar subagente >Gerir Hooks Aplica-se apenas quando esse subagente específico está a correr Queres ganchos adaptados a um subagente, como "validar o formato de saída deste subagente"

Sugestão

Ambos os níveis podem coexistir. Se um gancho ao nível de agente e um gancho a nível de subagente corresponderem ao mesmo evento, ambos executam. Os ganchos ao nível do agente começam primeiro, depois os ganchos ao nível do subagente.

Criar ganchos ao nível do agente

Ganchos a nível de agente aplicam-se a todo o agente, incluindo todas as threads e subagentes. Têm modos de ativação que controlam quando entram em funcionamento.

Abrir a página de Hooks

Siga estes passos para navegar até à página Hooks.

  1. Vai a sre.azure.com e escolhe o teu agente.
  2. Na barra lateral, expande Builder.
  3. Selecione ganchos.

Vês o título Hooks com uma descrição, um botão Criar ganchos e uma grelha de dados vazia (ou uma lista de ganchos existentes).

Crie um gancho de paragem

Um gancho de paragem dispara quando o agente está prestes a dar uma resposta final. Use-o para validar a qualidade da resposta e impor regras de formatação.

  1. Selecionar Criar gancho.

  2. Preencha os campos do formulário:

    Campo Valor
    Nome require-table-format
    Tipo de evento Parar
    Modo de ativação Sempre
    Descrição Assegura que as respostas apresentam dados estruturados como tabelas de marcação com cabeçalhos a negrito
  3. Na definição de Hook, mantenha o tipo de Hook definido para Prompt.

  4. Mantém o modelo definido para Raciocínio Rápido (por defeito).

  5. No editor de Prompts , introduza o seguinte texto:

    Check the agent response below.
    
    $ARGUMENTS
    
    Does the response present any structured data (lists of items, comparisons, metrics) as a markdown table with **bold** column headers?
    If no structured data is present, approve.
    If structured data IS present as a table with bold headers: {"ok": true}
    If structured data is present but NOT formatted as a table: {"ok": false, "reason": "Reformat the structured data as a markdown table with **bold** column headers."}
    
  6. Deixe Tempo Limite (sec) em 30, Modo de reprovação em Allow, e rejeições máximas em 3.

  7. Selecione Guardar.

O diálogo termina com uma notificação de sucesso. O gancho aparece na grelha de dados com Tipo de Evento Stop e Ativação: Sempre.

Sugestão

O $ARGUMENTS marcador insere o contexto do hook (incluindo a resposta final do agente) no prompt. O LLM avalia se a resposta cumpre os seus critérios e retorna {"ok": true} para aprovar ou {"ok": false, "reason": "..."} rejeitar. Após três rejeições (o padrão), o agente para.

Teste o gancho de paragem

Siga estes passos para verificar se o gancho de paragem funciona corretamente.

  1. Na barra lateral, selecione Chat.
  2. Tipo: Compare os prós e contras de Python vs Go para construir microserviços e selecione Enviar.
  3. Veja a resposta do agente:
    • O agente responde inicialmente com uma comparação em texto simples.
    • O gancho Stop avalia e rejeita a resposta porque os dados não estão numa tabela.
    • O agente reformata a sua resposta como uma tabela em markdown com cabeçalhos a negrito.

A resposta final apresenta a comparação como uma tabela formatada semelhante ao seguinte exemplo:

Language Vantagens Desvantagens
Python Desenvolvimento rápido, ecossistema rico Execução mais lenta, limitações do GIL
Go Compilação rápida, concorrência incorporada Ecossistema mais pequeno, gestão de erros prolixa

Criar um gancho PostToolUse

Um gancho PostToolUse dispara depois de uma ferramenta terminar a execução. Use-o para auditar o uso de ferramentas, bloquear comandos perigosos ou adicionar contexto extra.

  1. Volta a Builder>Hooks.

  2. Selecionar Criar gancho.

  3. Preencha o formulário:

    Campo Valor
    Nome block-dangerous-commands
    Tipo de evento Uso na Pós-Ferramenta
    Modo de ativação Sempre
    Descrição Bloqueia rm -rf, sudo e chmod 777 nos comandos shell
    Tipo de anzol Comando
    Combinador de ferramentas Bash\|ExecuteShellCommand
  4. Selecione Python como linguagem de script.

  5. No editor de scripts, introduza o seguinte script:

    #!/usr/bin/env python3
    import sys, json, re
    
    context = json.load(sys.stdin)
    command = context.get('tool_input', {}).get('command', '')
    
    dangerous = [r'\brm\s+-rf\b', r'\bsudo\b', r'\bchmod\s+777\b']
    for pattern in dangerous:
        if re.search(pattern, command):
            print(json.dumps({"decision": "block", "reason": f"Blocked: {pattern}"}))
            sys.exit(0)
    
    print(json.dumps({"decision": "allow"}))
    
  6. Defina o modo de falha para Bloquear (se o script falhar, o resultado da ferramenta é bloqueado).

  7. Selecione Guardar.

Ambos os ganchos aparecem agora na grelha de dados Hooks.

Observação

O campo Tool Matcher usa regex. Bash|ExecuteShellCommand corresponde a ferramentas chamadas exatamente "Bash" ou "ExecuteShellCommand" (o padrão é ancorado como ^(Bash|ExecuteShellCommand)$). Use * para combinar todas as ferramentas.

Teste o gancho PostToolUse

Siga estes passos para verificar se o gancho PostToolUse funciona corretamente.

  1. Na barra lateral, selecione Chat.
  2. Peça ao agente para correr um comando seguro: "echo hello". O gancho permite este comando.
  3. Pede ao agente para executar um comando perigoso: "Executar rm -rf /tmp/test". O gancho bloqueia este comando.

O comando seguro corre normalmente. O comando perigoso é bloqueado, e o agente recebe uma mensagem a explicar porquê.

Editar e eliminar ganchos ao nível do agente

Pode modificar ou remover ganchos existentes da grelha de dados do Hooks.

  • Edit: Selecione o ícone de edição em qualquer linha de gancho na grelha de dados, modifique os campos e selecione Guardar.
  • Eliminar: Selecione a caixa de seleção ao lado dos ganchos que quer remover, selecione Eliminar na barra de ferramentas e confirme.

A grelha de dados reflete imediatamente as suas alterações.

Criar ganchos ao nível do subagente

Configura-se ganchos ao nível do subagente diretamente na definição de um subagente. Aplicam-se apenas quando esse subagente específico está em execução, e não ao agente principal nem a outros subagentes.

Abra o painel de ações do subagente

Siga estes passos para aceder à configuração do hook para um subagente específico.

  1. Na barra lateral, expande Construtor e seleciona Construtor de Subagentes.
  2. Selecione um subagente existente para o editar, ou selecione Criar para iniciar um novo.
  3. No formulário de subagente, desça até à secção Hooks.
  4. Selecione Gerir Hooks.

Um painel lateral abre-se com as secções Stop e Utilização da Ferramenta. Se não houver ganchos configurados, vê-se estados vazios com texto de orientação.

Adicionar um gancho a um subagente

Os passos seguintes adicionam um gancho Stop que garante que este subagente responde sempre com uma secção de resumo.

  1. No painel Gerir ganchos , selecione Adicionar gancho na parte inferior do painel.

  2. No diálogo, preencha o formulário do ponto de integração.

    Campo Valor
    Tipo de evento Parar
    Tipo de anzol Prompt
    Prompt Check the response below. $ARGUMENTS Does it include a clear summary section at the end? If yes: {"ok": true} If no: {"ok": false, "reason": "Add a Summary section at the end of your response."}
    Tempo morto (segundo) 30
    Modo de falha Allow
    Máximo de rejeições 3
  3. Seleciona Guardar na opção.

  4. Selecione Criar (ou Guardar) no subagente para guardar a configuração completa.

O gancho aparece no painel Gerenciar Ganchos , na secção Parar . O formulário do subagente mostra Gerenciar Ganchos (1) no botão.

Sugestão

Para testar um gancho ao nível de subagente, vá ao construtor de subagentes, selecione a vista área de testes, escolha o seu subagente no menu suspenso e escreva uma pergunta. O gancho só funciona quando este subagente específico é invocado.

Gerir ganchos por fio

Ganchos ao nível do agente com ativação Sempre estão ativos em todas as conversas por padrão. Tens de ativar manualmente os ganchos com ativação On Demand por tópico.

Alternar pontos de ativação numa conversa

Siga estes passos para ativar ou desativar ganchos num tópico específico.

  1. Abre um tópico de chat .
  2. Selecione o + botão no rodapé do chat.
  3. Selecionar Gerir ganchos.
  4. Ativar ou desativar os hooks para o thread atual.

Podes desativar temporariamente os ganchos Always. Podes ativar ganchos On Demand quando necessário. Não podes ativar ou desativar os hooks de sistema necessários.

As alterações de hooks entram em vigor imediatamente na thread atual.

Troubleshooting

A tabela seguinte lista problemas e soluções comuns quando cria e gere ganchos no portal.

Problema Solução
Página de ganchos não visível na barra lateral A página de Hooks aparece em Builder. Verifica se o teu agente está em execução. Se a opção ainda não aparecer, contacte o suporte.
"Nome do gancho é obrigatório" Insira um nome usando apenas letras, números, hífens e sublinhados.
"O nome deve conter apenas letras, números, hífens e sublinhas" Remover caracteres especiais do nome do gancho.
O nome do gancho não pode começar por system__ O prefixo system__ é reservado para ganchos do sistema. Escolha um nome diferente.
O correspondente de ferramentas é obrigatório para os ganchos PostToolUse Os ganchos PostToolUse precisam de um comparador de regex. Use * para combinar todas as ferramentas.
O gancho não dispara Para ganchos ao nível de agente, verifique o modo de ativação. Os hooks On Demand devem ser ativados para cada thread. Para ganchos ao nível de subagente, verifique se o subagente está a ser invocado.
O gancho de parar aprova tudo Garanta que o enunciado retorna {"ok": false, "reason": "..."} no caso de rejeição. Uma rejeição sem um reason é tratada como aprovação.
Erros de script a bloquear ações Defina o modo Fail para permitir uma degradação graciosa durante o desenvolvimento. Altera para Bloco no ambiente de produção.

Próximo passo