Självstudie: Skapa och hantera krokar i portalen

I den här självstudien skapar du två styrningskrokar med hjälp av portalen: en stoppkrok som framtvingar dataformatering (markdown-tabeller med fetstil) och en PostToolUse-krok som blockerar farliga gränssnittskommandon. Du konfigurerar krokar på både agentnivå (gäller för alla trådar och underagenter) och subagentnivån (gäller för en specifik underagent).

Uppskattad tid: 10 minuter

I den här tutorialen lär du dig följande:

  • Skapa en stoppkrok som validerar svarsformatering
  • Skapa en PostToolUse-krok som blockerar farliga gränssnittskommandon
  • Lägga till krokar i en specifik underagent
  • Hantera aktiveringen av kopplingar i enskilda trådar

Förutsättningar

  • En Azure SRE-agent i körningstillstånd
  • Medverkarroll eller högre på SRE-agentresursen

Tips/Råd

Hooks som du skapade tidigare via REST API-självstudien visas automatiskt i portalens användargränssnitt. Du kan hantera dem visuellt utan att konfigurera om något.

Förstå var krokar finns i portalen

Krokar fungerar på två nivåer. Att förstå den här skillnaden är ett viktigt arkitekturkoncept.

Nivå Plats i portalen Scope Använd när
Agentnivå Builder>Krokar Gäller för hela agenten, alla trådar och alla underagenter Du vill ha agentomfattande principer som "granska varje verktygsanrop" eller "blockera farliga kommandon överallt"
Subagentnivå Underagent builder> välj underagent >Hantera krokar Gäller endast när den specifika subagenten körs Du vill ha krokar skräddarsydda för en underagent, till exempel "verifiera den här subagentens utdataformat"

Tips/Råd

Båda nivåerna kan samexistera. Om en krok på agentnivå och en krok på subagentnivå båda matchar samma händelse, körs båda. Krokar på agentnivå körs först och sedan krokar på subagentnivå.

Skapa agentnivåkrokar

Krokar på agentnivå gäller för hela agenten, inklusive varje tråd och varje underagent. De har aktiveringslägen som styr när de är aktiva.

Öppna sidan Hooks

Följ de här stegen för att gå till sidan Krokar.

  1. Gå till sre.azure.com och välj din agent.
  2. Expandera Builder i sidopanelen.
  3. Välj Krokar.

Du ser rubriken Hooks med en beskrivning, knappen Skapa krok och ett tomt datarutnät (eller en lista över befintliga krokar).

Skapa en stoppkrok

En Stoppkrok utlöses när agenten är på väg att returnera ett slutligt svar. Använd den för att verifiera svarskvaliteten och framtvinga formateringsregler.

  1. Välj Skapa hook.

  2. Fyll i formulärfälten:

    Fält Värde
    Namn require-table-format
    Händelsetyp Stopp
    Aktivering läge Alltid
    Beskrivning Säkerställer att svar presenterar strukturerade data som markdown-tabeller med fetstilade rubriker
  3. Under Hook Definition ska du hålla Hook-typen inställd på Prompt.

  4. Behåll modellen inställd på Reasoning Fast (standard).

  5. I promptredigeraren anger du följande text:

    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. Lämna Timeout (sek) i 30, felläge vid Allow, och Max avslag3.

  7. Välj Spara.

Dialogrutan avslutas med ett meddelande om att det har lyckats. Kroken visas i datarutnätet med händelsetypen Stoppa och Aktivering alltid.

Tips/Råd

Platshållaren $ARGUMENTS matar in krokkontexten (inklusive agentens slutliga svar) i prompten. LLM utvärderar om svaret uppfyller dina kriterier och returnerar {"ok": true} för att godkänna eller {"ok": false, "reason": "..."} avvisa. Efter tre avslag (standardvärdet) stoppas agenten.

Testa stoppkroken

Följ de här stegen för att kontrollera att Stoppkroken fungerar korrekt.

  1. I sidofältet väljer du Chatt.
  2. Skriv Jämför för- och nackdelarna med Python jämfört med Go för att skapa mikrotjänster och välj Skicka.
  3. Titta på agentens svar:
    • Agenten svarar inledningsvis med en jämförelse av oformaterad text.
    • Stoppkroken utvärderar och avvisar svaret eftersom data inte finns i en tabell.
    • Agenten formaterar om sitt svar som en markdown-tabell med fetstilade rubriker.

Det slutliga svaret visar jämförelsen som en formaterad tabell som liknar följande exempel:

Språk Fördelar Nackdelar
Python Snabb utveckling, omfattande ekosystem Långsammare körning, GIL-begränsningar
Gå! Snabb kompilering, inbyggd samtidighet Mindre ekosystem, utförlig felhantering

Skapa en PostToolUse-krok

En PostToolUse-hook utlöses efter att ett verktyg har slutfört sin körning. Använd den för att granska verktygsanvändning, blockera farliga kommandon eller lägga till extra kontext.

  1. Gå tillbaka till Builder>Hooks.

  2. Välj Skapa hook.

  3. Fyll i formuläret:

    Fält Värde
    Namn block-dangerous-commands
    Händelsetyp Användning av postverktyg
    Aktivering läge Alltid
    Beskrivning Blockerar rm -rf, sudo och chmod 777 i gränssnittskommandon
    Typ av krok Kommando
    Verktygsmatchning Bash\|ExecuteShellCommand
  4. Välj Python som skriptspråk.

  5. I skriptredigeraren anger du följande skript:

    #!/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. Ange Felläge till Blockera (om skriptet kraschar blockeras verktygsresultatet).

  7. Välj Spara.

Båda krokarna visas nu i hooks-datarutnätet .

Anmärkning

Fältet Verktygsmatchning använder regex. Bash|ExecuteShellCommand matchar verktyg med namnen exakt "Bash" eller "ExecuteShellCommand" (mönstret är ankrat som ^(Bash|ExecuteShellCommand)$). Använd * för att matcha alla verktyg.

Testa PostToolUse-kroken

Följ dessa steg för att kontrollera att PostToolUse-kroken fungerar korrekt.

  1. I sidofältet väljer du Chatt.
  2. Be agenten att köra ett säkert kommando: "Kör echo hello". Kroken tillåter det här kommandot.
  3. Be agenten att köra ett farligt kommando: "Kör rm -rf /tmp/test". Kroken blockerar det här kommandot.

Kommandot för säker körning utförs normalt. Det farliga kommandot blockeras och agenten får ett meddelande som förklarar varför.

Redigera och ta bort "hooks" på agentnivå

Du kan ändra eller ta bort befintliga krokar från hooks-datarutnätet.

  • Redigera: Välj redigeringsikonen på en krokrad i datarutnätet, ändra fälten och välj Spara.
  • Ta bort: Markera kryssrutan bredvid de krokar som du vill ta bort, välj Ta bort i verktygsfältet och bekräfta.

Datarutnätet återspeglar omedelbart dina ändringar.

Skapa krokar på subagentnivå

Du konfigurerar hookar på subagentnivå direkt i en underagents definition. De gäller endast när den specifika subagenten körs, inte för huvudagenten eller andra underagenter.

Öppna underagentens krokpanel

Följ de här stegen för att komma åt hookkonfigurationen för en specifik underagent.

  1. I sidofältet expanderar du Builder och väljer Subagent builder.
  2. Välj en befintlig underagent för att redigera den eller välj Skapa för att starta en ny.
  3. Rulla ned i formuläret för underagenten till avsnittet Hooks.
  4. Välj Hantera kopplingar.

En sidopanel öppnas med avsnitten Stopp och Efter verktygsanvändning. Om inga krokar har konfigurerats visas tomma tillstånd med vägledningstext.

Lägg till en hook till en underagent

Följande steg lägger till en Stoppkrok som säkerställer att den här underagenten alltid svarar med ett sammanfattningsavsnitt.

  1. I panelen Hantera krokar väljer du Lägg till krok längst ned på panelen.

  2. Fyll i krokformuläret i dialogrutan:

    Fält Värde
    Händelsetyp Stopp
    Typ av krok Omedelbar
    Uppmaning 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."}
    Tidsgräns (sek) 30
    Felläge Tillåt
    Maximalt antal avslag 3
  3. Välj Spara på kroken.

  4. Välj Skapa (eller Spara) på underagenten för att spara den fullständiga konfigurationen.

Kroken visas i panelen Hantera krokar under avsnittet Stoppa . Underagentformuläret visar Hantera krokar (1) på knappen.

Tips/Råd

Om du vill testa en hook på subagentnivå går du till Subagent builder, väljer testlekplatsvyn , väljer din underagent i listrutan och skriver en fråga. Hook-funktionen körs bara när den här specifika underagenten anropas.

Hantera krokar per tråd

Krokar på agentnivå med Always-aktivering är aktiva i varje konversation som standard. Du måste aktivera krokar manuellt med aktivering på begäran per tråd.

Växla funktioner i en konversation

Följ dessa steg för att aktivera eller inaktivera krokar i en specifik tråd.

  1. Öppna en chatttråd .
  2. Välj +-knappen i chattsidfoten.
  3. Välj Hantera hooks.
  4. Växla krokar på eller av för den aktuella tråden.

Du kan tillfälligt inaktivera Always Hooks. Du kan aktivera på begäran-anrop när det behövs. Du kan inte ändra nödvändiga systemhakar.

Hookändringarna träder i kraft omedelbart i den aktuella tråden.

Felsökning

I följande tabell visas vanliga problem och lösningar när du skapar och hanterar krokar i portalen.

Problem Lösning
Hooks-sidan visas inte i sidopanelen Sidan Krokar visas under Builder. Kontrollera att agenten är i körningstillstånd . Kontakta supporten om alternativet fortfarande inte visas.
Hookens namn krävs Ange ett namn med bara bokstäver, siffror, bindestreck och understreck.
"Namnet får endast innehålla bokstäver, siffror, bindestreck och understreck" Ta bort specialtecken från kroknamnet.
Hook-namn kan inte börja med system__ Prefixet system__ är reserverat för systemkrokar. Välj ett annat namn.
Verktygsmatchare krävs för PostToolUse-hooks PostToolUse-hooks behöver en regex-sökare. Använd * för att matcha alla verktyg.
Kroken avfyras inte Kontrollera aktiveringsläget för agentnivå-krokar. Krokar på begäran måste aktiveras per tråd. För kopplingar på subagentnivå, säkerställ att underagenten anropas.
Stop hook godkänner allt Se till att prompten returnerar {"ok": false, "reason": "..."} vid avvisning. Ett avvisande utan ett reason behandlas som godkännande.
Skriptfel som blockerar åtgärder Ange Felläge till Tillåt för graciös nedbrytning under utveckling. Växla till Block i produktion.

Nästa steg