Observability för agenter
Kunna logga, spåra och felsöka agentkörningar steg för steg.
Förkunskaper
Intuition
En agent som misslyckas utan spår är omöjlig att felsöka. Du ser bara «det blev fel» — inte var.
Logga per körning: ett run_id, uppgiften, modell- och promptversion, sluttillstånd, total kostnad och tid.
Logga per steg: stegnummer, modellens utdata, verktyg och argument, resultatet (trunkerat), tokens, latens, och eventuellt fel.
Det ger en trace — en tidslinje som går att läsa uppifrån och ner. Standarden för det är OpenTelemetry-spans, men en JSONL-fil per körning räcker långt och kan läsas med jq.
Kod
import json, time, uuid
from contextlib import contextmanager
class Trace:
def __init__(self, uppgift, modell, prompt_id, path="traces"):
self.run_id = uuid.uuid4().hex[:12]
self.f = open(f"{path}/{self.run_id}.jsonl", "w", encoding="utf-8")
self.t0 = time.perf_counter()
self._skriv("start", {"uppgift": uppgift, "modell": modell, "prompt_id": prompt_id})
def _skriv(self, typ, data):
self.f.write(json.dumps({"run_id": self.run_id, "typ": typ,
"t_ms": round((time.perf_counter() - self.t0) * 1000), **data},
ensure_ascii=False) + "\n")
self.f.flush()
@contextmanager
def steg(self, n, verktyg=None, args=None):
t = time.perf_counter()
post = {"steg": n, "verktyg": verktyg, "args": str(args)[:200]}
try:
yield post
post["fel"] = None
except Exception as e:
post["fel"] = f"{type(e).__name__}: {e}"[:200]
raise
finally:
post["latens_ms"] = round((time.perf_counter() - t) * 1000)
self._skriv("steg", post)
def slut(self, status, tokens):
self._skriv("slut", {"status": status, "tokens": tokens}); self.f.close()
Tre frågor spåret ska kunna besvara på tio sekunder: Vilket steg gick sönder? Vad matade vi in i det? Hur mycket kostade körningen och var gick tiden?
Integritet: logga verktygsargument och resultat trunkerade, och maskera fält som kan innehålla personuppgifter. Ett agentspår är annars en av de känsligaste loggarna i systemet.
Behärskning innebär
- Loggar varje agentsteg spårbart
- Felsöker en misslyckad körning ur spåret
- Mäter kostnad och latens per steg
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- OpenTelemetry — Traces — Apache-2.0
- Anthropic — Building effective agents — fri läsning