Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você criará dois ganchos de governança usando o portal: um gancho Stop que impõe a formatação dos dados (tabelas markdown com cabeçalhos em negrito) e um gancho PostToolUse que bloqueia os comandos perigosos do shell. Você configura ganchos no nível do agente (aplica-se a todos os threads e subagentes) e ao nível do subagente (aplica-se a um subagente específico).
Tempo estimado: 10 minutos
Neste tutorial, você aprenderá como:
- Criar um gancho de parada que valide a formatação de resposta
- Criar um gancho PostToolUse que bloqueia comandos de shell perigosos
- Adicionar ganchos a um subagente específico
- Gerenciar a ativação do gancho em threads individuais
Pré-requisitos
- Um agente SRE do Azure em estado de execução
- FunçãoColaborador ou superior no recurso do Agente SRE
Dica
Os ganchos criados anteriormente por meio do tutorial da API REST aparecem automaticamente na interface do usuário do portal. Você pode gerenciá-los visualmente sem reconfigurar nada.
Entender onde os ganchos estão no portal
Os ganchos operam em dois níveis. Entender essa distinção é um conceito de arquitetura fundamental.
| Nível | Localização no portal | Scope | Usar quando |
|---|---|---|---|
| Nível do agente | Construtor>Ganchos | Aplica-se a todo o agente, a todos os threads e a todos os subagentes | Você deseja políticas abrangendo todo o agente, como "auditar todas as chamadas de ferramentas" ou "bloquear comandos perigosos em todos os contextos" |
| Nível de subagente | Construtor de subagentes> selecionar subagente >Gerenciar Ganchos | Aplica-se somente quando esse subagente específico é executado | Você deseja ganchos personalizados para um subagente, como "validar o formato de saída desse subagente" |
Dica
Ambos os níveis podem coexistir. Se um gancho no nível do agente e um gancho de nível de subagente corresponderem ao mesmo evento, ambos são executados. Primeiro, executam-se os ganchos no nível do agente e, em seguida, os ganchos no nível do subagente.
Criar ganchos no nível do agente
Os ganchos no nível do agente se aplicam ao agente inteiro, incluindo cada thread e cada subagente. Eles têm modos de ativação que controlam quando estão ativos.
Abrir a página de Hooks
Siga estas etapas para navegar até a página Hooks.
- Vá para sre.azure.com e selecione seu agente.
- Na barra lateral, expanda o Construtor.
- Selecione Hooks.
Você verá o título ganchos com uma descrição, um botão Criar gancho e uma grade de dados vazia (ou uma lista de ganchos existentes).
Criar um gancho de parada
Um gancho de parada é acionado quando o agente está prestes a retornar uma resposta final. Use-a para validar a qualidade da resposta e impor regras de formatação.
Selecione Criar gancho.
Preencha os campos de formulário:
Campo Valor Nome require-table-formatTipo de evento Parar Modo de ativação Sempre Descrição Garante que as respostas apresentem dados estruturados como tabelas de markdown com cabeçalhos em negrito Em Definição de Gancho, mantenha o tipo de gancho definido como Prompt.
Mantenha o modelo definido como Raciocínio Rápido (padrão).
No editor do Prompt , insira 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 o tempo limite (s) em
30, o modo de falha emAllow, e as rejeições máximas em3.Clique em Salvar.
A caixa de diálogo é encerrada com uma notificação de êxito. O gancho aparece na grade de dados com o tipo de evento Stop e Ativação Always.
Dica
O espaço reservado $ARGUMENTS injeta o contexto do gancho (incluindo a resposta final do agente) no prompt. O LLM avalia se a resposta atende aos 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.
Testar o gancho de parada
Siga estas etapas para verificar se o gancho de parada funciona corretamente.
- Na barra lateral, selecione Chat.
- Digite Comparar os prós e contras do Python vs Go para criar microsserviços e selecione Enviar.
- Assista à resposta do agente:
- O agente responde inicialmente com uma comparação de texto sem formatação.
- O gancho de parada avalia e rejeita a resposta porque os dados não estão em uma tabela.
- O agente reformata sua resposta como uma tabela de markdown com cabeçalhos em negrito .
A resposta final apresenta a comparação como uma tabela formatada semelhante ao seguinte exemplo:
| Language | Prós | Contras |
|---|---|---|
| Python | Desenvolvimento rápido, ecossistema avançado | Execução mais lenta, limitações do GIL |
| Go | Compilação rápida, simultaneidade interna | Ecossistema menor, tratamento detalhado de erro |
Criar um "hook" para PostToolUse
Um gancho PostToolUse é acionado após a ferramenta concluir a execução. Use-o para auditar o uso da ferramenta, bloquear comandos perigosos ou adicionar contexto extra.
Volte para Builder>Hooks.
Selecione Criar gancho.
Preencha o formulário:
Campo Valor Nome block-dangerous-commandsTipo de evento Uso da Ferramenta de Postagem Modo de ativação Sempre Descrição Impede o uso de rm -rf, sudo e chmod 777 em comandos de shell Tipo de gancho Command Correlacionador de ferramentas Bash\|ExecuteShellCommandSelecione Python como a linguagem de script.
No editor de Script , insira 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 como Bloquear (se o script falhar, o resultado da ferramenta será bloqueado).
Clique em Salvar.
Os dois ganchos agora aparecem na grade de dados Hooks.
Observação
O campo matcher de ferramenta usa regex.
Bash|ExecuteShellCommand corresponde às ferramentas nomeadas exatamente como "Bash" ou "ExecuteShellCommand" (o padrão é ancorado como ^(Bash|ExecuteShellCommand)$). Use * para combinar todas as ferramentas.
Testar o gancho do PostToolUse
Siga estas etapas para verificar se o gancho postToolUse funciona corretamente.
- Na barra lateral, selecione Chat.
- Peça ao agente para executar um comando seguro: "Executar echo hello". O gancho permite esse comando.
- Peça ao agente para executar um comando perigoso: "Executar rm -rf /tmp/test". O gancho bloqueia esse comando.
O comando seguro é executado normalmente. O comando perigoso é bloqueado e o agente recebe uma mensagem explicando o porquê.
Editar e excluir ganchos no nível de agente
Você pode modificar ou remover os ganchos existentes da grade de dados Ganchos.
- Editar: selecione o ícone de edição em qualquer linha de gancho na grade de dados, modifique os campos e selecione Salvar.
- Excluir: marque a caixa de seleção ao lado dos ganchos que você deseja remover, selecione Excluir na barra de ferramentas e confirme.
A grade de dados reflete imediatamente suas alterações.
Criar ganchos de nível de subagente
Você configura ganchos no nível de subagente diretamente na definição de um subagente. Eles se aplicam somente quando um subagente específico é executado, mas não ao agente principal nem a outros subagentes.
Abrir o painel de ganchos de subagente
Siga estas etapas para acessar a configuração do gancho para um subagente específico.
- Na barra lateral, expanda o Construtor e selecione o Construtor de Subagentes.
- Selecione um subagente existente para editá-lo ou selecione Criar para iniciar um novo.
- No formulário do subagente, role para baixo até a seção Hooks.
- Selecione Gerenciar Ganchos.
Um painel lateral é aberto com as seções Parar e Uso Posterior da Ferramenta. Se nenhum gancho estiver configurado, você verá estados vazios com texto de orientação.
Adicionar um gancho a um subagente
As etapas a seguir adicionam um gancho de interrupção que garante que esse subagente sempre responda com uma seção de resumo.
No painel Gerenciar Ganchos , selecione Adicionar gancho na parte inferior do painel.
Na caixa de diálogo, preencha o formulário do gancho:
Campo Valor Tipo de evento Parar Tipo de gancho Rápido Rápido 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 limite (s) 30 Modo de falha Permitir Rejeições máximas 3 Selecione Salvar no gancho.
Selecione Criar (ou Salvar) no subagente para salvar a configuração completa.
O gancho é exibido no painel Gerenciar Ganchos na seção Parar . O formulário subagente mostra Gerenciar Ganchos (1) no botão.
Dica
Para testar um gancho no nível do subagente, acesse o Construtor de subagentes, selecione o modo de exibição Playground de teste, escolha o subagente no menu suspenso e digite uma pergunta. O gancho só é executado quando esse subagente específico é invocado.
Gerenciar os ganchos por thread
Os ganchos no nível de agente com ativação Sempre estão ativos em todas as conversas por padrão. Você deve ativar manualmente os ganchos com a ativação Sob Demanda por segmento.
Alternar os ganchos em uma conversa
Siga estas etapas para ativar ou desativar ganchos em um thread específico.
- Abra um thread de Chat .
- Selecione o + botão no rodapé do chat.
- Selecione Gerenciar Ganchos.
- Ative ou desative os ganchos para o thread atual.
Você pode desativar temporariamente os ganchos Always . Você pode ativar os ganchos Sob Demanda quando necessário. Você não pode alternar as configurações dos ganchos de sistema necessários.
As alterações de gancho entrarão em vigor imediatamente no thread atual.
Solução de problemas
A tabela a seguir lista problemas e soluções comuns ao criar e gerenciar ganchos no portal.
| Problema | Solução |
|---|---|
| Página de Hooks não visível na barra lateral | A página Hooks aparece sob Construtor. Verifique se o agente está em estado de execução . Se a opção ainda não aparecer, entre em contato com o suporte. |
| O nome do gancho é necessário | Insira um nome usando apenas letras, números, hifens e sublinhados. |
| "O nome deve conter apenas letras, números, hifens e sublinhados" | Remova caracteres especiais do nome do hook. |
| "O nome do gancho não pode começar com system__" | O prefixo system__ é reservado para os ganchos do sistema. Escolha outro nome. |
| "O correlacionador de ferramentas é necessário para os ganchos do tipo PostToolUse. | Os ganchos PostToolUse precisam de um correlacionador regex. Use * para combinar todas as ferramentas. |
| O gancho não é acionado | Para ganchos no nível do agente, verifique o modo de ativação. Os ganchos On Demand devem ser ativados por thread. Para ganchos ao nível do subagente, verifique se o subagente está sendo invocado. |
| O gancho Stop aprova tudo | Certifique-se de que o prompt retorna {"ok": false, "reason": "..."} ao rejeitar. Uma rejeição sem um reason é tratada como aprovação. |
| Erros de script bloqueando ações | Defina o modo de falha para permitir degradação normal durante o desenvolvimento. Alterne para Block na produção. |