Skip to content

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.

python
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)
modeBesteht, wenn…
strictidentische Tool-Aufrufe in gleicher Reihenfolge
unordereddieselbe Multimenge von Tool-Aufrufen, beliebige Reihenfolge
subsetder Agent nur Tools aufgerufen hat, die in der Referenz vorkommen
supersetder 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

python
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, …).

python
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):

python
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