E· Universitetagenter-verktyg· ca 60 min· volatil — kontrolleras ofta· verifierad 2026-09-20
Agenter — planera, agera, observera
Kunna bygga en enkel agentloop, begränsa den med budget och stoppvillkor, och logga varje steg.
Förkunskaper
- ERAG — retrieval-augmented generationunderlättar
- EVerktygsanvändning (tool use)krävs
Intuition
En agent är en språkmodell i en loop: den får ett mål, väljer ett verktyg, ser resultatet, väljer nästa — tills den anser sig klar. Skillnaden mot ett enkelt verktygsanrop är att modellen bestämmer hur många steg och vilka.
Det som gör agenter användbara är också det som gör dem farliga: de kan gå i cirklar, bränna budget, eller göra något oåterkalleligt. Därför är loopen aldrig bara while True:
- Budget: max steg (t.ex. 10), max tokens, max sekunder.
- Stoppvillkor: modellen signalerar «klar» eller budgeten tar slut → returnera bästa hittills med markering «ofullständigt».
- Skyddsräcken: verktyg med sidoeffekter kräver bekräftelse; upprepade identiska anrop bryts.
- Logg: varje steg (tanke, anrop, resultat, kostnad) sparas. Utan logg kan ingen felsöka eller lita på resultatet.
Kod
import time, json
def agent(mal, llm, verktyg, max_steg=10, max_sek=60):
msgs = [{"role": "system", "content": "Lös uppgiften med verktygen. När du är klar: svara med FINAL: <svar>."},
{"role": "user", "content": mal}]
logg, t0, senaste = [], time.time(), None
for steg in range(max_steg):
if time.time() - t0 > max_sek:
return {"status": "timeout", "svar": None, "logg": logg}
ut = llm(msgs, tools=verktyg.spec())
if ut.text and ut.text.startswith("FINAL:"):
return {"status": "klar", "svar": ut.text[6:].strip(), "logg": logg}
for call in ut.tool_calls:
nyckel = (call.name, call.arguments)
if nyckel == senaste:
res = {"error": "samma anrop som förra steget — ändra strategi"}
else:
res = verktyg.kor(call)
senaste = nyckel
logg.append({"steg": steg, "verktyg": call.name, "args": call.arguments, "resultat": str(res)[:300]})
msgs += [ut.as_message(), {"role": "tool", "tool_call_id": call.id, "content": json.dumps(res)}]
return {"status": "budget_slut", "svar": None, "logg": logg}
Mönstret kallas ofta ReAct (reason + act). Utvärdera agenter på uppgiftsnivå (löste den målet?) och på kostnad per lyckad uppgift.
Behärskning innebär
- Bygger en agentloop (planera → agera → observera) med stoppvillkor
- Sätter budget för steg, tokens och tid
- Loggar varje steg så att en körning kan granskas
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — ReAct: Synergizing Reasoning and Acting in Language Models — arXiv (öppen åtkomst; licens per artikel)
- Anthropic — Building effective agents — fri läsning
Leder till
- EArbetsminne: kontext, sammanfattning, fönster
- EBudget, stoppvillkor och kostnadskontroll
- EReAct-loopen: tänk, agera, observera
- FAI-säkerhet och red teaming
- FAgentarkitekturer
- FAgentsäkerhet: behörigheter, sandlåda, bekräftelse
- FEpisodiskt minne för agenter
- FObservability för agenter
- GMultimodala agenter och datorstyrning