F· AI engineeringagenter-verktyg· ca 90 min· volatil — kontrolleras ofta· verifierad 2026-09-20
Utvärdering av agenter
Kunna bygga uppgiftsbaserade evals för agenter med succeskriterier och kostnad.
Förkunskaper
Intuition
Agenter kan inte utvärderas som chattsvar. Frågan är inte «lät svaret bra?» utan «blev uppgiften löst?».
Bygg evals med verifierbart sluttillstånd:
| Uppgift | Verifiering |
|---|---|
| «boka mötet» | finns posten i kalendern med rätt tid? |
| «fixa buggen» | går testsviten igenom? |
| «hitta priset» | matchar svaret facit? |
| «städa datafilen» | uppfyller filen schemat? |
Kör i sandlåda med ett kontrollerat starttillstånd, låt agenten arbeta, inspektera sluttillståndet med kod. Ingen domare behövs — det är binärt.
Rapportera alltid tre tal tillsammans: lösningsgrad, kostnad per lyckad uppgift, och andel avbrutna.
Kod
from dataclasses import dataclass
from typing import Callable
@dataclass
class AgentFall:
id: str
uppgift: str
starttillstand: Callable[[], object] # bygger sandlådan
verifiera: Callable[[object], bool] # inspekterar sluttillståndet
def kor_evalsvit(agent, fall: list[AgentFall], forsok: int = 3):
rader = []
for f in fall:
for k in range(forsok): # flera försök: agenter är stokastiska
varld = f.starttillstand()
res = agent.kor(f.uppgift, varld)
rader.append({"fall": f.id, "forsok": k, "lyckades": bool(f.verifiera(varld)),
"steg": res["steg"], "tokens": res["tokens"], "sek": res["sek"],
"status": res["status"]})
n = len(rader); ok = [r for r in rader if r["lyckades"]]
return {
"losningsgrad": len(ok) / n,
"pass_at_1": sum(r["lyckades"] for r in rader if r["forsok"] == 0) / len(fall),
"kostnad_per_lyckad": sum(r["tokens"] for r in rader) / max(len(ok), 1),
"medelsteg_lyckade": sum(r["steg"] for r in ok) / max(len(ok), 1),
"avbrutna": sum(r["status"] != "klar" for r in rader) / n,
}
Två fällor:
- Mäta processen. «Använde agenten rätt verktyg i rätt ordning?» låter rimligt men straffar smartare lösningar. Mät sluttillståndet.
- Ett försök per fall. Agenter är stokastiska;
pass@1ochpass@3säger olika saker och båda är relevanta.
Behärskning innebär
- Bygger uppgiftsbaserade evals med verifierbart sluttillstånd
- Mäter kostnad och steg, inte bara framgång
- Undviker att mäta processen i stället för resultatet
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — SWE-bench: Can Language Models Resolve Real-World GitHub Issues? — arXiv (öppen åtkomst; licens per artikel)
- arXiv — AgentBench: Evaluating LLMs as Agents — arXiv (öppen åtkomst; licens per artikel)