Claude Architect · Lektion

Task-værktøjet og allowedTools

Opret underagenter, og tildel Task-funktionen

Lektion 3 af 413 trin

Task-værktøjet og allowedTools er en gratis Claude Architect-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Claude Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Claude Architect-kurset indeholder 4 lektioner i alt.

Hvorfor underagenter findes

En enkelt agent, der gør alt, har for meget at holde styr på: historik, ufærdige delopgaver og omfattende output fra værktøjer konkurrerer alle om opmærksomheden. Underagenter lader en koordinator opdele en stor opgave i fokuserede dele og give hver del til en ny arbejder.

Agent SDK stiller dette til rådighed gennem én funktion: værktøjet Task. Når en koordinator kalder Task, starter SDK'et en underagent med sin egen rene kontekst til at håndtere én delegeret arbejdsenhed og returnerer derefter resultatet til koordinatoren.

Dette er grundlaget for mønsteret med flere agenter og hub-og-ege: én koordinator i hubben og mange specialiserede underagenter på egerne.

Koordinatorens opgave

I et hub-og-ege-system udfører koordinatoren aldrig selv det detaljerede arbejde. Den har fem ansvarsområder:

  • Opdel forespørgslen i uafhængige opgaver
  • Deleger hver opgave til en underagent via Task
  • Saml de returnerede resultater
  • Route opfølgende arbejde ud fra det, der kom tilbage
  • Håndtér fejl, herunder delvise resultater

For overhovedet at kunne delegere skal koordinatoren have tilladelse til at bruge værktøjet Task. Hvis Task mangler i dens allowedTools, kan den ikke oprette noget og vil forsøge at gøre alt alene.

Tildeling af Task-funktionen

Funktioner tildeles eksplicit. Koordinatorens liste over allowedTools (eller allowed_tools) skal indeholde "Task", for at delegering kan fungere. Det er en bevidst, kontrollerbar tildeling, ikke en automatisk standardindstilling.

Bemærk, at koordinatoren her kun får det, den har brug for til at koordinere: Task til at oprette arbejdere og Read til at undersøge input. Den får ikke Bash eller Write, fordi den ikke skal røre systemet direkte.

from claude_agent_sdk import ClaudeAgentOptions

coordinator = ClaudeAgentOptions(
    system_prompt="You are a coordinator. Decompose the"
                  " request and delegate each part via Task.",
    # Task = permission to spawn subagents
    allowed_tools=["Task", "Read"],
)

Definition af en underagent

Hver underagent beskrives af en AgentDefinition med fire dele:

  • name — en kort identifikator, som koordinatoren delegerer til
  • description — hvornår denne agent skal bruges (sådan vælger koordinatoren den)
  • system_prompt — rollen og instruktionerne
  • allowed_tools — de værktøjer, denne arbejder må bruge

description er vigtigst: ligesom værktøjsbeskrivelser er den det primære signal ved udvælgelsen. En vag beskrivelse får koordinatoren til at delegere til den forkerte arbejder.

researcher = {
    "name": "researcher",
    "description": "Searches the web and summarizes"
                   " findings for a single topic. Use for"
                   " any open-ended fact-finding task.",
    "system_prompt": "You research ONE topic and return"
                     " a cited summary.",
    "allowed_tools": ["WebSearch", "Read"],
}

Mindste privilegium pr. underagent

Hver underagents allowed_tools bør følge princippet om mindste privilegium: giv kun de værktøjer, rollen faktisk har brug for, og begræns dem til den rolle.

En arbejder, der laver research, får WebSearch og Read — aldrig Bash eller process_refund. En arbejder, der skriver filer, får Write og Edit. Smalle værktøjssæt forbedrer også pålideligheden af udvælgelsen: 4-5 værktøjer pr. agent er optimalt, mens 18 eller flere værktøjer gør det mindre pålideligt, om agenten vælger det rigtige.

Vigtigt: De fleste underagenter bør ikke selv få Task. Delegeringsmyndigheden hører til i hubben; hvis den gives bredt ud, opstår der ukontrolleret oprettelse af nye agenter.

Reglen om kontekstisolering

Dette er den mest afprøvede kendsgerning om underagenter: underagenter arver IKKE koordinatorens samtalehistorik.

Hver underagent starter med en ren kontekst. Den ser kun det, du skriver i dens prompt. Denne isolation er en fordel — den forhindrer, at én oppustet historik forurener alle arbejdere — men det betyder, at koordinatoren har ansvaret for, at al den kontekst, underagenten har brug for, sendes eksplicit i dens opgaveprompt.

Hvis en underagent har brug for en filsti, et kunde-id, en deadline eller tidligere resultater, skal koordinatoren inkludere dem i den delegerede instruktion. Det er den klassiske fejl at antage, at underagenten allerede ved det.

Videregiv kontekst eksplicit

Da intet arves, skal du skrive opgaveprompter, der kan stå alene. Saml alle de oplysninger, arbejderen har brug for, i den promptstreng, koordinatoren sender.

Sammenlign en dårlig delegering ("undersøg emnet") med en god, der angiver emnet, omfanget, det krævede outputformat og begrænsningerne. Underagenten har ingen anden kilde til sandheden.

# Coordinator builds a SELF-CONTAINED task prompt
task_prompt = (
    "Research: 'EU AI Act enforcement timeline'.\n"
    "Scope: official sources published after 2024-01.\n"
    "Return: 3 bullet findings, each with a source URL"
    " and publication date.\n"
    "Do NOT cover non-EU regulation."
)
# This whole string is the subagent's ONLY context.

Parallel delegering

Når koordinatoren udsender flere Task-kald i ét svar, kører underagenterne parallelt. Sådan spreder et researchsystem sig over flere emner på én gang i stedet for at undersøge dem ét efter ét.

Brug parallelle Tasks, når underopgaverne er uafhængige — for eksempel research af tre separate emner eller gennemgang af tre filer uden indbyrdes sammenhæng. Hvis opgave B har brug for outputtet fra opgave A, kan de ikke køres parallelt; koordinatoren skal vente på A og derefter delegere B i en senere tur.

# Three independent topics -> three Task calls in ONE
# response -> they execute concurrently.
topics = ["data residency", "audit rights", "breach SLA"]
# The model emits three tool_use blocks for Task,
# each with its own self-contained prompt, in a
# single assistant turn. The SDK runs them in parallel
# and returns all three results together.

Sammenlægning og håndtering af delvise resultater

Når parallelle arbejdere vender tilbage, sammenlægger koordinatoren resultaterne. Virkelige systemer skal kunne tåle, at én arbejder fejler, uden at hele jobbet afbrydes.

Hvis to af tre researchere lykkes, mens én rammes af en adgangsfejl, bør koordinatoren beholde de to gode resultater, markere manglen og rapportere delvise resultater — ikke kassere hele kørslen. Skeln mellem en reel adgangsfejl (som måske kan forsøges igen) og et gyldigt tomt resultat (ingen match fundet). Håndter midlertidige fejl inde i underagenten, og eskalér kun dem, der ikke kan genoprettes, mens de delvise resultater føres videre.

Det er begge dele dårlige mønstre: at fjerne en fejlet arbejder uden at sige noget eller at afbryde alt på grund af én fejl.

Stop løkken korrekt

Delegering foregår inde i den agentiske løkke. Koordinatoren sender en forespørgsel, undersøger stop_reason, kører eventuelle Task-værktøjskald, føjer deres resultater til beskedhistorikken og gentager, indtil stop_reason er end_turn.

Du afslutter på baggrund af stopårsagen, aldrig ved at lede i modellens tekst efter ord som 'færdig' eller 'afsluttet'. Beslutninger om, hvilken underagent der skal oprettes som den næste, er modelstyrede. En grænse for antal iterationer er et sikkerhedsnet mod ukontrolleret oprettelse af agenter — ikke den primære måde at stoppe på.

while True:
    resp = client.messages.create(**req)
    if resp.stop_reason == "tool_use":
        results = run_tools(resp)   # may include Task
        req["messages"] += [assistant(resp), user(results)]
        continue
    if resp.stop_reason == "end_turn":
        break   # terminate on stop_reason, not on text

Sæt det hele sammen

En korrekt opsætning med flere agenter har en genkendelig struktur:

  • Koordinatorens allowed_tools indeholder "Task" (samt minimale værktøjer til inspektion).
  • Hver underagent har en præcis description, en fokuseret system_prompt og et allowed_tools med mindste privilegium på cirka 4-5 værktøjer.
  • Hver delegeret prompt kan stå alene, fordi ingen historik arves.
  • Uafhængige opgaver sendes ud som parallelle Task-kald; afhængige opgaver sættes i rækkefølge.
  • Koordinatoren sammenlægger resultater, tåler delvise fejl og stopper på end_turn.

Få tildelingen af Task og reglen om eksplicit kontekst på plads, så falder resten af orkestreringen på plads.

agents = {"researcher": researcher, "writer": writer}
coordinator = ClaudeAgentOptions(
    system_prompt="Decompose, delegate via Task, aggregate.",
    allowed_tools=["Task", "Read"],   # hub holds Task
    agents=agents,                    # spokes, least privilege
)

Hurtigt tjek

En researchkoordinator delegerer tre uafhængige emner til tre underagenter med én gruppe parallelle Task-kald. En underagent returnerer et resumé, der udelader en oplysning, som koordinatoren tidligere nævnte i sin egen samtale. Hvad er den mest sandsynlige arkitektoniske årsag?

Opsummering

Vigtige pointer til eksamen:

  • Værktøjet Task opretter underagenter; koordinatorens allowed_tools skal indeholde "Task", for at den kan delegere.
  • Arkitekturen er en hub og eger: koordinatoren opdeler, delegerer, sammenlægger, videresender og håndterer fejl.
  • Underagenter arver ingen samtalehistorik — send al nødvendig kontekst eksplicit i hver opgaveprompt.
  • En AgentDefinition = name, description, system_prompt, allowed_tools; description styrer udvælgelsen.
  • Anvend mindste privilegium pr. underagent; sigt efter cirka 4-5 værktøjer, og behold Task i hubben.
  • Flere Task-kald i ét svar kører parallelt; sæt dem kun i rækkefølge, når de er afhængige.
  • Tål delvise resultater; stop på end_turn, aldrig ved at fortolke tekst, og brug kun en grænse for iterationer som sikkerhedsnet.
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
26
Lektioner
104

Ofte stillede spørgsmål

Er lektionen “Task-værktøjet og allowedTools” gratis?

Ja — alle 3 lektioner i læringssporet Claude Architect, inklusive “Task-værktøjet og allowedTools”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Claude Architect-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Task-værktøjet og allowedTools”?

Opret underagenter, og tildel Task-funktionen Du øver dig i Claude Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Claude Architect?

Der kræves ingen tidligere erfaring. Claude Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Task-værktøjet og allowedTools”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Claude Architect-lektion?

Ja. Alle Claude Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Byggeklodser i Agent SDK
  2. Definér en agent
  3. Task-værktøjet og allowedTools
  4. Princippet om mindst mulige privilegier
← Tilbage til Claude Architect