Zelfstudie: Hooks maken en beheren in de portal

In deze zelfstudie maakt u twee governance-hooks met behulp van de portal: een stophook die gegevensopmaak afdwingt (markdown-tabellen met vetgedrukte headers) en een PostToolUse-hook die gevaarlijke shell-opdrachten blokkeert. U configureert hooks op zowel het agentniveau (geldt voor alle threads en subagents) als het subagentniveau (van toepassing op één specifieke subagent).

Geschatte tijd: 10 minuten

In deze handleiding leer je hoe je:

  • Een stophook maken waarmee de antwoordopmaak wordt gevalideerd
  • Een PostToolUse-hook maken die gevaarlijke shell-opdrachten blokkeert
  • Hooks toevoegen aan een specifieke subagent
  • Beheer de activering van hooks in afzonderlijke threads

Vereiste voorwaarden

  • Een Azure SRE-agent met de status Actief
  • Rol van inzender of hoger voor de SRE-agentresource

Aanbeveling

Hooks die u eerder hebt gemaakt via de REST API-zelfstudie , worden automatisch weergegeven in de gebruikersinterface van de portal. U kunt ze visueel beheren zonder iets opnieuw te configureren.

Begrijpen waar hooks zich in het portaal bevinden

Haakjes werken op twee niveaus. Het begrijpen van dit onderscheid is een belangrijk architectuurconcept.

Niveau Locatie in portal Scope Gebruik wanneer
Agentniveau Builder>Hooks Van toepassing op de hele agent, alle threads en alle subagents U wilt beleid voor de hele agent, zoals 'elke aanroep van elk hulpprogramma controleren' of 'overal gevaarlijke opdrachten blokkeren'
Subagentniveau Opbouwfunctie voor subagenten> subagent selecteren >Hooks beheren Is alleen van toepassing wanneer die specifieke subagent wordt uitgevoerd U wilt hooks die zijn afgestemd op één subagent, zoals 'valideer de uitvoerindeling van dit subagent'

Aanbeveling

Beide niveaus kunnen naast elkaar bestaan. Als een haak op agentniveau en een haak op subagentniveau beide overeenkomen met dezelfde gebeurtenis, worden beide uitgevoerd. Hooks op agentniveau worden eerst gedraaid, vervolgens hooks op subagentniveau.

Hooks op agentniveau maken

Haken op agentniveau zijn van toepassing op de hele agent, inclusief elke thread en elke subagent. Ze hebben activeringsmodi die bepalen wanneer ze actief zijn.

De pagina Hooks openen

Volg deze stappen om naar de pagina Hooks te navigeren.

  1. Ga naar sre.azure.com en selecteer uw agent.
  2. Vouw Builder in de zijbalk uit.
  3. Selecteer Hooks.

U ziet de kop Hooks met een beschrijving, een knop Haak maken en een leeg gegevensraster (of een lijst met bestaande haken).

Een stophaak maken

Een stophaak wordt geactiveerd wanneer de agent een definitief antwoord gaat retourneren. Hiermee kunt u de antwoordkwaliteit valideren en opmaakregels afdwingen.

  1. Selecteer Haak maken.

  2. Vul de formuliervelden in:

    Veld Waarde
    Naam require-table-format
    Gebeurtenistype: Stop
    Activeringsmodus Altijd
    Beschrijving Zorgt ervoor dat antwoorden gestructureerde gegevens presenteren als Markdown-tabellen met vetgedrukte kopteksten
  3. Houd onder Hook Definition het type Hook ingesteld op Prompt.

  4. Houd Model ingesteld op Reasoning Fast (standaardinstelling).

  5. Voer in de prompteditor de volgende tekst in:

    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. Time-out (sec) verlaten bij 30, failmodus op Allowen maximum afwijzingen op 3.

  7. Selecteer Opslaan.

Het dialoogvenster wordt gesloten met een melding dat het is gelukt. De hook wordt weergegeven in het gegevensraster met gebeurtenistype Stoppen en Activering altijd.

Aanbeveling

De $ARGUMENTS tijdelijke aanduiding injecteert de hookcontext (inclusief het uiteindelijke antwoord van de agent) in de prompt. De LLM evalueert of het antwoord aan uw criteria voldoet en geeft {"ok": true} om goed te keuren of {"ok": false, "reason": "..."} om af te wijzen. Na drie afwijzingen (de standaardinstelling) stopt de agent.

De stophaak testen

Volg deze stappen om te controleren of de stophook correct werkt.

  1. Selecteer Chat in de zijbalk.
  2. Typ De voor- en nadelen van Python versus Go vergelijken voor het bouwen van microservices en selecteer Verzenden.
  3. Bekijk het antwoord van de agent:
    • De agent reageert in eerste instantie met een vergelijking van tekst zonder opmaak.
    • De stophook evalueert en weigert het antwoord omdat de gegevens zich niet in een tabel bevinden.
    • De agent herformatteert het antwoord als een Markdown-tabel met vetgedrukte kopteksten.

Het laatste antwoord geeft de vergelijking weer als een opgemaakte tabel die vergelijkbaar is met het volgende voorbeeld:

Taal Voordelen Nadelen
Python Snelle ontwikkeling, rijk ecosysteem Tragere uitvoering, GIL-beperkingen
Go Snelle compilatie, ingebouwde gelijktijdigheid Kleiner ecosysteem, uitvoerige foutafhandeling

Een PostToolUse-hook maken

Een PostToolUse-hook wordt geactiveerd nadat een hulpprogramma klaar is met de uitvoering. Gebruik dit om het gebruik van hulpprogramma's te controleren, gevaarlijke opdrachten te blokkeren of extra context toe te voegen.

  1. Ga terug naar Builder>Hooks.

  2. Selecteer Haak maken.

  3. Vul het formulier in:

    Veld Waarde
    Naam block-dangerous-commands
    Gebeurtenistype: Gebruik na Gereedschap
    Activeringsmodus Altijd
    Beschrijving Blokkeert rm -rf, sudo en chmod 777 in shell-opdrachten
    Haaktype Opdracht
    Toolmatcher Bash\|ExecuteShellCommand
  4. Selecteer Python als scripttaal.

  5. Voer in de scripteditor het volgende script in:

    #!/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. Stel de modus Fail in op Blokkeren (als het script vastloopt, wordt het resultaat van het hulpprogramma geblokkeerd).

  7. Selecteer Opslaan.

Beide haken verschijnen nu in het Hooks gegevensrooster.

Opmerking

Het veld Tool-matcher maakt gebruik van regex. Bash|ExecuteShellCommand komt overeen met hulpprogramma's met de naam 'Bash' of 'ExecuteShellCommand' (het patroon is verankerd als ^(Bash|ExecuteShellCommand)$). Gebruik * om alle hulpprogramma's te matchen.

De PostToolUse-hook testen

Volg deze stappen om te controleren of de PostToolUse-hook correct werkt.

  1. Selecteer Chat in de zijbalk.
  2. Vraag de agent om een veilige opdracht uit te voeren: 'Echo hello uitvoeren'. De hook staat deze opdracht toe.
  3. Vraag de agent om een gevaarlijke opdracht uit te voeren: 'Run rm -rf /tmp/test'. De hook blokkeert deze opdracht.

De veilige opdracht wordt normaal uitgevoerd. De gevaarlijke opdracht wordt geblokkeerd en de agent krijgt een bericht waarin wordt uitgelegd waarom.

Haken op agentniveau bewerken en verwijderen

U kunt bestaande haken wijzigen of verwijderen uit het gegevensraster Hooks.

  • Bewerken: Selecteer het bewerkingspictogram op een haakrij in het gegevensraster, wijzig de velden en selecteer Opslaan.
  • Verwijderen: Schakel het selectievakje in naast de haken die u wilt verwijderen, selecteer Verwijderen op de werkbalk en bevestig dit.

Het gegevensraster weerspiegelt uw wijzigingen onmiddellijk.

Hooks op subagentniveau maken

U configureert haakjes op subagentniveau rechtstreeks in de definitie van een subagent. Ze zijn alleen van toepassing wanneer die specifieke subagent actief is, niet op de hoofdagent of andere subagenten.

Het deelvenster Subagent hooks openen

Volg deze stappen om toegang te krijgen tot de hookconfiguratie voor een specifieke subagent.

  1. Vouw Opbouwfunctie in de zijbalk uit en selecteer Subagent builder.
  2. Selecteer een bestaande subagent om deze te bewerken of selecteer Maken om een nieuwe te starten.
  3. Schuif in het subagentformulier omlaag naar de sectie Hooks .
  4. Selecteer Hooks beheren.

Er wordt een zijpaneel geopend met de secties Stop en Post Tool Use . Als er geen hooks zijn geconfigureerd, ziet u lege statussen met richtlijnentekst.

Een hook toevoegen aan een subagent

Met de volgende stappen voegt u een stophaak toe die ervoor zorgt dat deze subagent altijd reageert met een overzichtssectie.

  1. Selecteer in het deelvenster Hooks beheren de optie Haak toevoegen onderaan het deelvenster.

  2. Vul het formulier in het dialoogvenster in:

    Veld Waarde
    Gebeurtenistype: Stop
    Haaktype Snel
    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."}
    Time-out (sec) 30
    Fail-modus Toestaan
    Maximum aantal afwijzingen 3
  3. Selecteer Opslaan in de interface.

  4. Selecteer Maken (of Opslaan) in de subagent om de volledige configuratie op te slaan.

De haak wordt weergegeven in het deelvenster Hooks beheren onder de sectie Stoppen . In het subagentformulier ziet u Manage Hooks (1) op de knop.

Aanbeveling

Als u een hook op subagentniveau wilt testen, gaat u naar De opbouwfunctie voor subagenten, selecteert u de weergave Speeltuin testen, kiest u uw subagent in de vervolgkeuzelijst en typt u een vraag. De hook wordt alleen uitgevoerd wanneer deze specifieke subagent wordt aangeroepen.

Hooks per thread beheren

Hooks op agentniveau met Always-activering zijn standaard actief in elk gesprek. U moet hooks handmatig activeren met activering op aanvraag per thread.

Haken in een gesprek in-/uitschakelen

Volg deze stappen om hooks in een specifieke thread te activeren of deactiveren.

  1. Open een chat-thread .
  2. Selecteer de + knop in de chatvoettekst.
  3. Selecteer Hooks beheren.
  4. De koppelingen in- of uitschakelen voor de huidige thread.

U kunt Always Hooks tijdelijk deactiveren. U kunt On Demand hooks activeren wanneer dat nodig is. U kunt de vereiste systeemhaken niet in- of uitschakelen.

Hook-wijzigingen worden direct doorgevoerd in de huidige thread.

Troubleshooting

De volgende tabel bevat veelvoorkomende problemen en oplossingen bij het maken en beheren van hooks in de portal.

Probleem Solution
Hooks-pagina niet zichtbaar in zijbalk De pagina Hooks wordt weergegeven onder Opbouwfunctie. Controleer of uw agent de status Actief heeft. Als de optie nog steeds niet wordt weergegeven, neemt u contact op met de ondersteuning.
De naam van de hook is vereist Voer een naam in die alleen letters, cijfers, afbreekstreepjes en onderstrepingstekens gebruikt.
"Naam mag alleen letters, cijfers, afbreekstreepjes en onderstrepingstekens bevatten" Verwijder speciale tekens uit de hooknaam.
De hooknaam kan niet beginnen met system__ Het system__ voorvoegsel is gereserveerd voor systeemhook. Kies een andere naam.
"De toolmatcher is vereist voor de PostToolUse-hooks." PostToolUse hooks hebben een regex matcher nodig. Gebruik * om alle hulpprogramma's te matchen.
Hook wordt niet geactiveerd Controleer de activeringsmodus voor hooks op agentniveau. Hooks op aanvraag moeten per thread worden geactiveerd. Voor hooks op subagentniveau controleert u of de subagent wordt aangeroepen.
Stop hook keurt alles goed Zorg ervoor dat de prompt retourneert {"ok": false, "reason": "..."} bij afwijzing. Een afwijzing zonder een reason wordt beschouwd als goedkeuring.
Scriptfouten die acties blokkeren Stel de failmodus in op Toestaan voor geleidelijke degradatie tijdens ontwikkeling. Schakel over naar Block in de productieomgeving.

Volgende stap