Programmatische Evaluatoren
Bewerten Sie Agenten-Trajektorien und Textausgaben automatisch mit der Flask-freien Evaluator-Bibliothek von Potato — deterministischer Trajektorienabgleich, Tool-Use-Korrektheit, referenzfreier LLM-as-Judge und Heuristiken (Exact Match, Editierdistanz, JSON, Embeddings).
Potato liefert eine abhängigkeitsarme Evaluator-Bibliothek mit, die Agenten-Trajektorien und Textausgaben automatisch bewertet: die deterministischen und LLM-as-Judge-Prüfungen, die die menschliche Annotation ergänzen. Dieselben Evaluatoren laufen in Experimenten, in der Automatisierungs-Engine und im CI-Plugin, und sie funktionieren auch eigenständig.
Jeder Evaluator gibt ein normiertes Ergebnis zurück — einen score (konventionsgemäß 0.0–1.0, höher ist besser), einen value, einen comment und metadata —, sodass deterministische, heuristische und LLM-Judge-Evaluatoren austauschbar sind. Trajektorien können als Nachrichtenlisten im OpenAI-Stil, als Potatos kanonische conversation-Turns oder als CanonicalTrace übergeben werden; die Normalisierung erfolgt automatisch.
Trajektorienabgleich (deterministisch)
Vergleicht die Tool-Aufruf-Sequenz eines Agenten mit einer Referenz.
from potato.evaluators import TrajectoryMatchEvaluator
ev = TrajectoryMatchEvaluator(
mode="unordered", # strict | unordered | subset | superset
tool_args_match_mode="subset", # exact | ignore | subset | superset
tool_args_match_overrides={"search": "ignore"},
)
result = ev.evaluate(outputs=agent_trace, reference_outputs=gold_trace)mode | Besteht, wenn… |
|---|---|
strict | identische Tool-Aufrufe in gleicher Reihenfolge |
unordered | dieselbe Multimenge von Tool-Aufrufen, beliebige Reihenfolge |
subset | der Agent nur Tools aufgerufen hat, die in der Referenz vorkommen |
superset | der Agent mindestens die Referenz-Tools aufgerufen hat (zusätzliche erlaubt) |
Der Argumentvergleich ist unabhängig konfigurierbar (exact / ignore / subset / superset), mit Überschreibungen pro Tool.
Tool-Use-Korrektheit
from potato.evaluators import ToolUseEvaluator, ToolCallAccuracyEvaluator
# Did the agent call a specific tool (optionally with expected args)?
ToolUseEvaluator(expected_tool="submit", expected_args={"id": 1}).evaluate(outputs=trace)
# What fraction of reference tool calls did the agent reproduce? (partial credit)
ToolCallAccuracyEvaluator(args_match_mode="exact").evaluate(outputs=trace, reference_outputs=gold)LLM-as-Judge (referenzfrei)
Bewertet die Qualität einer Trajektorie ohne Gold-Referenz, da es viele gültige Agentenpfade gibt. Nutzt dieselbe ai_support-Endpunkt-Konfiguration wie der Rest von Potato (OpenAI, Anthropic, Ollama, vLLM, …).
from potato.evaluators import LLMTrajectoryJudge
judge = LLMTrajectoryJudge(config=task_config, continuous=True) # 0.0–1.0 score
result = judge.evaluate(outputs=agent_trace, inputs=task_prompt)Heuristische / Code-Evaluatoren
ExactMatch, Contains, RegexMatch, EditDistance, JSONValid, JSONSchemaMatch und EmbeddingDistance (verzögerter ML-Import oder eine injizierte Embedding-Funktion). Der Import der Bibliothek zieht den ML-Stack nie mit.
Graph-Trajektorien-Bewertung (LangGraph)
Für die Bewertung von LangGraph-Knoten und -Übergängen nutzt Potato das MIT-lizenzierte Paket agentevals über einen verzögert ladenden Adapter — installieren Sie es nur, wenn Sie es brauchen.
Evaluatoren deklarativ konfigurieren
Ein Register bildet Namen auf Evaluatoren ab, sodass sie in YAML konfiguriert werden können (genutzt vom Experiment-Runner und der Automatisierungs-Engine):
from potato.evaluators import build_evaluator, list_evaluators
ev = build_evaluator("trajectory_match", {"mode": "unordered"})
result = ev.evaluate(outputs=trace, reference_outputs=gold)Verwandte Themen
- Vollständige Referenz auf Read the Docs — jeder Evaluator und jede Option, versionsgenau
- Datensätze & Experimente — Evaluatoren über einen Datensatz laufen lassen und Punktzahlen über die Zeit verfolgen
- CI-Bewertung — den Build an Evaluator-Punktzahlen knüpfen
- Trajektorienbewertung — das menschliche Gegenstück