プログラマティック評価器
Potato の Flask 非依存の評価器ライブラリで、エージェントのトラジェクトリとテキスト出力を自動的に採点します。決定的なトラジェクトリ照合、ツール使用の正しさ、参照不要の LLM-as-judge、ヒューリスティック(完全一致、編集距離、JSON、埋め込み)を備えています。
Potato には、エージェントのトラジェクトリとテキスト出力を自動的に採点する、依存関係の軽い評価器ライブラリが同梱されています。 人間のアノテーションを補完する、決定的なチェックと LLM-as-judge のチェックです。同じ評価器が実験、自動化エンジン、CI プラグインの中で動作し、スタンドアロンでも使えます。
すべての評価器は正規化された1つの結果を返します。score(慣例として 0.0–1.0、高いほど良い)、value、comment、metadata です。そのため、決定的評価器、ヒューリスティック評価器、LLM ジャッジ評価器は相互に交換可能です。トラジェクトリは OpenAI スタイルのメッセージ・リスト、Potato の正準的な conversation ターン、または CanonicalTrace として渡せます。正規化は自動です。
トラジェクトリ照合(決定的)
エージェントのツール呼び出し列を参照と比較します。
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 | 合格の条件 |
|---|---|
strict | ツール呼び出しが同一で、順序も同じ |
unordered | ツール呼び出しの多重集合が同じで、順序は任意 |
subset | エージェントが参照に現れるツールだけを呼んだ |
superset | エージェントが少なくとも参照のツールを呼んだ(余分は許容) |
引数の比較は独立に設定でき(exact / ignore / subset / superset)、ツールごとの上書きも可能です。
ツール使用の正しさ
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(参照不要)
正解の参照なしでトラジェクトリの品質を採点します。妥当なエージェントの経路は多数存在するためです。Potato の他の部分と同じ ai_support エンドポイント設定(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)ヒューリスティック / コード評価器
ExactMatch、Contains、RegexMatch、EditDistance、JSONValid、JSONSchemaMatch、EmbeddingDistance(ML の遅延インポート、または注入された埋め込み関数)。ライブラリをインポートしても ML スタックが読み込まれることはありません。
グラフ・トラジェクトリ評価(LangGraph)
LangGraph のノード/遷移の評価には、Potato は MIT ライセンスの agentevals パッケージを遅延アダプター経由で再利用します。必要な場合にのみインストールしてください。
評価器を宣言的に設定する
レジストリが名前と評価器を対応付けるため、YAML で設定できます(実験ランナーと自動化エンジンが使用します)。
from potato.evaluators import build_evaluator, list_evaluators
ev = build_evaluator("trajectory_match", {"mode": "unordered"})
result = ev.evaluate(outputs=trace, reference_outputs=gold)関連項目
- Read the Docs の完全なリファレンス — すべての評価器とオプション、バージョン対応版
- データセットと実験 — データセットに対して評価器を実行し、スコアを継続的に追跡する
- CI 評価 — 評価器のスコアでビルドをゲートする
- トラジェクトリ評価 — 人間による対応物