Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
- Gå till sre.azure.com och välj din agent.
- Expandera Builder i sidopanelen.
- 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.
Välj Skapa hook.
Fyll i formulärfälten:
Fält Värde Namn require-table-formatHändelsetyp Stopp Aktivering läge Alltid Beskrivning Säkerställer att svar presenterar strukturerade data som markdown-tabeller med fetstilade rubriker Under Hook Definition ska du hålla Hook-typen inställd på Prompt.
Behåll modellen inställd på Reasoning Fast (standard).
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."}Lämna Timeout (sek) i
30, felläge vidAllow, och Max avslag på3.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.
- I sidofältet väljer du Chatt.
- 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.
- 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.
Gå tillbaka till Builder>Hooks.
Välj Skapa hook.
Fyll i formuläret:
Fält Värde Namn block-dangerous-commandsHä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\|ExecuteShellCommandVälj Python som skriptspråk.
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"}))Ange Felläge till Blockera (om skriptet kraschar blockeras verktygsresultatet).
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.
- I sidofältet väljer du Chatt.
- Be agenten att köra ett säkert kommando: "Kör echo hello". Kroken tillåter det här kommandot.
- 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.
- I sidofältet expanderar du Builder och väljer Subagent builder.
- Välj en befintlig underagent för att redigera den eller välj Skapa för att starta en ny.
- Rulla ned i formuläret för underagenten till avsnittet Hooks.
- 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.
I panelen Hantera krokar väljer du Lägg till krok längst ned på panelen.
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 Välj Spara på kroken.
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.
- Öppna en chatttråd .
- Välj +-knappen i chattsidfoten.
- Välj Hantera hooks.
- 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. |