Claude Architect · leksjon

Definere en agent

name, description, system_prompt og allowed_tools.

Leksjon 2 av 413 trinn

Definere en agent er en gratis leksjon i Claude Architect på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Claude Architect, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Claude Architect inneholder totalt 4 leksjoner.

Hva en agentdefinisjon er

En agent i Claude Agent SDK er ikke magi. Det er en liten, eksplisitt konfigurasjon som forteller modellen hvem den er, og hva den har lov til å gjøre.

En AgentDefinition har fire kjernefelt:

  • name – en kort identifikator som brukes til å rute arbeid til denne agenten
  • description – hva denne agenten brukes til (slik avgjør en koordinator om arbeid skal delegeres til den)
  • system_prompt – varige instruksjoner som former atferden
  • allowed_tools – det nøyaktige settet med verktøy denne agenten kan kalle

Får du disse fire riktig, oppfører agenten seg forutsigbart. Får du dem feil, får du feilruting, ukontrollert utvidelse av ansvarsområdet og upålitelig valg av verktøy.

Definisjonens oppbygning

Her er det minimale skjelettet for en agentdefinisjon. Legg merke til at hvert felt har betydning: Ingenting her er pynt.

Listen over allowed_tools følger prinsippet om minste privilegium – gi bare tilgang til verktøyene rollen faktisk trenger.

agent = AgentDefinition(
    name="refund_specialist",
    description=(
        "Handles customer refund requests after identity "
        "verification. Use for billing disputes and order "
        "cancellations."
    ),
    system_prompt=(
        "You are a careful refund specialist. Always verify "
        "the customer's identity before processing anything."
    ),
    allowed_tools=["get_customer", "lookup_order", "process_refund"],
)

name – rutingsnøkkelen

name er en stabil identifikator. I et system med flere agenter og hub-og-eiker ruter koordinatoren arbeid til subagenter, og navnet brukes til å adressere en bestemt agent.

Hold navnene korte, med små bokstaver og basert på rollen: research_agent, code_reviewer, refund_specialist.

Men husk et viktig eksamensfaktum: navn er IKKE den primære mekanismen for valg. Når modellen avgjør om den skal bruke et verktøy eller en agent, støtter den seg på beskrivelsen, ikke navnet. Et tydelig navn hjelper derfor mennesker, men det er beskrivelsen som står for den faktiske rutingen.

description – slik delegering skjer

description er feltet en koordinator leser for å avgjøre når arbeid skal overleveres til denne agenten. Det er det viktigste enkeltfeltet for korrekt ruting.

En god beskrivelse angir:

  • Formål – hva agenten gjør
  • Grenser for bruksområde – når den skal brukes, og når den IKKE skal brukes

Vage eller overlappende beskrivelser på tvers av agenter fører til feilruting: Koordinatoren velger feil spesialist. Gjør beskrivelsen av hver agent særpreget, slik at det ikke er tvil om hvem som har ansvar for hvilken oppgave.

research_agent = AgentDefinition(
    name="research_agent",
    description=(
        "Searches the web and summarizes findings WITH citations "
        "for open-ended factual questions. Do NOT use for code "
        "changes or refunds."
    ),
    system_prompt="You are a meticulous research assistant...",
    allowed_tools=["WebSearch", "WebFetch"],
)

system_prompt – varig atferd

system_prompt angir agentens vedvarende identitet og regler. Den gjelder gjennom hver omgang i den agentiske løkken, så legg de stabile atferdsgarantiene dine her.

Skriv eksplisitte kriterier, ikke vage oppfordringer. Sammenlign:

  • Vagt: "Vær forsiktig med refusjoner."
  • Eksplisitt: "Kall aldri process_refund før get_customer har returnert en bekreftet kunde-ID."

Eksplisitte instruksjoner gir gjennomgående bedre resultater enn vage formuleringer. Modellen kan handle ut fra en konkret regel, men den kan ikke pålitelig handle ut fra «vær mer forsiktig».

system_prompt = (
    "You are a refund specialist.\n"
    "- Always call get_customer FIRST and confirm a verified ID.\n"
    "- Only refund the exact order the customer names.\n"
    "- If multiple customers match, ask for more identifiers; "
    "never guess."
)

Instruksjoner er probabilistiske

Her er et subtilt, men eksamenskritisk poeng. system_prompt veileder atferden – men veiledning er omtrent 90 % pålitelig, ikke 100 %.

Hvis en regel har økonomiske, juridiske eller sikkerhetsmessige konsekvenser, må du IKKE stole på instruksjonen alene. Håndhev den deterministisk med en hook.

  • Instruksjon: "Ikke refunder mer enn 500 dollar" – fungerer det meste av tiden (~90 %).
  • Hook: en PostToolUse- eller utgående-anrop-hook som blokkerer enhver refusjon over 500 dollar – fungerer 100 % av tiden.

Derfor: Legg atferd i system_prompt, men legg harde garantier i hooks. Å definere en agent godt innebærer å vite hvilke regler som hører hjemme hvor.

allowed_tools – minste privilegium

Feltet allowed_tools avgrenser nøyaktig hvilke verktøy agenten har tilgang til. Dette er den primære sikkerhetsgrensen din: En agent kan ganske enkelt ikke kalle et verktøy som ikke står på listen.

Tilpass verktøyene til rollen. En refusjonsagent trenger ikke WebSearch, og en research-agent trenger ikke process_refund. Ekstra verktøy er ikke en bekvemmelighet – de utgjør en risiko og gjør valget mindre presist.

# Least privilege: each agent sees only its own tools
support_agent.allowed_tools = [
    "get_customer", "lookup_order",
    "process_refund", "escalate_to_human",
]
# NOT: every tool in the system

Hvor mange verktøy er riktig?

Flere verktøy er ikke bedre. Påliteligheten ved valg av verktøy har et optimalt nivå:

  • 4–5 verktøy per agent er optimalt.
  • 18 eller flere verktøy svekker valget merkbart – modellen ruter feil mellom for mange lignende alternativer.

Hvis agentens allowed_tools-liste begynner å bli lang, er det et tegn på et designproblem. Del arbeidet mellom fokuserte subagenter, som hver har et begrenset verktøysett og en særpreget beskrivelse. Det er det avgrensede ansvarsområdet som gjør hver agent pålitelig.

Verktøybeskrivelser styrer valget

Å definere agentens verktøy er halve jobben; å definere beskrivelsen av hvert verktøy er den andre halvdelen. Verktøybeskrivelser – ikke verktøynavn – er det modellen bruker til å avgjøre hvilket verktøy som skal kalles.

En god verktøybeskrivelse inneholder:

  • formål
  • returverdier
  • inndataformater med eksempler
  • kanttilfeller og grenser for bruksområdet

Overlappende eller tvetydige verktøybeskrivelser fører til det samme problemet med feilruting som tvetydige agentbeskrivelser, bare ett nivå lenger ned.

{
  "name": "lookup_order",
  "description": "Fetch an order by its ID. Input: order_id like 'ORD-10293'. Returns status, items, and total. Use AFTER get_customer verifies identity. Returns an empty result (not an error) if no order matches.",
  "input_schema": {
    "type": "object",
    "properties": {"order_id": {"type": "string"}},
    "required": ["order_id"]
  }
}

En koordinator trenger Task-verktøyet

Når du definerer en koordinator i et hub-og-eiker-system, delegerer den arbeid til subagenter. For at dette skal fungere, må koordinatorens allowed_tools inneholde "Task" – det er verktøyet den bruker til å starte subagenter.

Én annen kritisk opplysning: Subagenter arver IKKE koordinatorens samtalehistorikk. Hver subagent starter på nytt, så all nødvendig kontekst må sendes eksplisitt i instruksjonen til subagenten. Definisjonen styrer kapasitet; instruksjonen ved delegeringstidspunktet styrer kontekst.

coordinator = AgentDefinition(
    name="coordinator",
    description="Decomposes the request and delegates to specialists.",
    system_prompt="Break the task into subtasks. Pass ALL needed context to each subagent explicitly.",
    allowed_tools=["Task"],  # required to delegate
)

Slik settes alt sammen

En godt definert agent leses nesten som en stillingsannonse:

  • name: en stabil referanse for ruting
  • description: en presis angivelse av formål og grenser, slik at en koordinator delegerer riktig
  • system_prompt: eksplisitte, varige atferdsregler (probabilistiske – kombiner med hooks for harde garantier)
  • allowed_tools: et begrenset sett med minste privilegium, helst 4–5 verktøy, hvert med en utførlig beskrivelse

Når alle fire er tydelige og ikke overlapper, gjør agenten én jobb godt. Det er grunnlaget som all arkitektur med flere agenter bygger på.

Kjapp sjekk

En scenariobasert beslutning om å definere en agent.

Oppsummering: Definere en agent

Det viktigste å ta med seg:

  • En AgentDefinition = name, description, system_prompt, allowed_tools.
  • description (ikke name) styrer delegering og valg av verktøy/agent – hold den presis og uten overlapp.
  • system_prompt angir varig, eksplisitt atferd, men er bare ~90 % pålitelig; håndhev regler for økonomi, juss og sikkerhet med hooks (100 % deterministisk).
  • allowed_tools = minste privilegium; sikt mot 4–5 verktøy, siden 18 eller flere svekker valget. Hvert verktøy trenger en utførlig beskrivelse.
  • En koordinator må inkludere "Task" i allowed_tools, og subagenter arver INGEN historikk – send konteksten eksplisitt.

Definer smalt og tydelig, så blir hver agent du bygger forutsigbar.

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
26
Leksjoner
104

Ofte stilte spørsmål

Er leksjonen «Definere en agent» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Claude Architect, inkludert «Definere en agent», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Claude Architect inneholder totalt 4 leksjoner.

Hva lærer jeg i «Definere en agent»?

name, description, system_prompt og allowed_tools. Du øver på Claude Architect med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Claude Architect?

Ingen tidligere erfaring er nødvendig. Claude Architect på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Definere en agent»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Claude Architect-leksjonen?

Ja. Alle Claude Architect-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Byggeklosser i Agent SDK
  2. Definere en agent
  3. Task-verktøyet og allowedTools
  4. Prinsippet om minste privilegium
← Tilbake til Claude Architect