Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
- Vai a sre.azure.com e escolhe o teu agente.
- Na barra lateral, expande Builder.
- 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.
Selecionar Criar gancho.
Preencha os campos do formulário:
Campo Valor Nome require-table-formatTipo 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 Na definição de Hook, mantenha o tipo de Hook definido para Prompt.
Mantém o modelo definido para Raciocínio Rápido (por defeito).
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."}Deixe Tempo Limite (sec) em
30, Modo de reprovação emAllow, e rejeições máximas em3.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.
- Na barra lateral, selecione Chat.
- Tipo: Compare os prós e contras de Python vs Go para construir microserviços e selecione Enviar.
- 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.
Volta a Builder>Hooks.
Selecionar Criar gancho.
Preencha o formulário:
Campo Valor Nome block-dangerous-commandsTipo 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\|ExecuteShellCommandSelecione Python como linguagem de script.
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"}))Defina o modo de falha para Bloquear (se o script falhar, o resultado da ferramenta é bloqueado).
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.
- Na barra lateral, selecione Chat.
- Peça ao agente para correr um comando seguro: "echo hello". O gancho permite este comando.
- 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.
- Na barra lateral, expande Construtor e seleciona Construtor de Subagentes.
- Selecione um subagente existente para o editar, ou selecione Criar para iniciar um novo.
- No formulário de subagente, desça até à secção Hooks.
- 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.
No painel Gerir ganchos , selecione Adicionar gancho na parte inferior do painel.
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 Seleciona Guardar na opção.
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.
- Abre um tópico de chat .
- Selecione o + botão no rodapé do chat.
- Selecionar Gerir ganchos.
- 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. |