Skip to content

プログラマティック評価器

Potato の Flask 非依存の評価器ライブラリで、エージェントのトラジェクトリとテキスト出力を自動的に採点します。決定的なトラジェクトリ照合、ツール使用の正しさ、参照不要の LLM-as-judge、ヒューリスティック(完全一致、編集距離、JSON、埋め込み)を備えています。

Potato には、エージェントのトラジェクトリとテキスト出力を自動的に採点する、依存関係の軽い評価器ライブラリが同梱されています。 人間のアノテーションを補完する、決定的なチェックと LLM-as-judge のチェックです。同じ評価器が実験、自動化エンジン、CI プラグインの中で動作し、スタンドアロンでも使えます。

すべての評価器は正規化された1つの結果を返します。score(慣例として 0.0–1.0、高いほど良い)、valuecommentmetadata です。そのため、決定的評価器、ヒューリスティック評価器、LLM ジャッジ評価器は相互に交換可能です。トラジェクトリは OpenAI スタイルのメッセージ・リスト、Potato の正準的な conversation ターン、または CanonicalTrace として渡せます。正規化は自動です。

トラジェクトリ照合(決定的)

エージェントのツール呼び出し列を参照と比較します。

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)
mode合格の条件
strictツール呼び出しが同一で、順序も同じ
unorderedツール呼び出しの多重集合が同じで、順序は任意
subsetエージェントが参照に現れるツールだけを呼んだ
supersetエージェントが少なくとも参照のツールを呼んだ(余分は許容)

引数の比較は独立に設定でき(exact / ignore / subset / superset)、ツールごとの上書きも可能です。

ツール使用の正しさ

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(参照不要)

正解の参照なしでトラジェクトリの品質を採点します。妥当なエージェントの経路は多数存在するためです。Potato の他の部分と同じ ai_support エンドポイント設定(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)

ヒューリスティック / コード評価器

ExactMatchContainsRegexMatchEditDistanceJSONValidJSONSchemaMatchEmbeddingDistance(ML の遅延インポート、または注入された埋め込み関数)。ライブラリをインポートしても ML スタックが読み込まれることはありません。

グラフ・トラジェクトリ評価(LangGraph)

LangGraph のノード/遷移の評価には、Potato は MIT ライセンスの agentevals パッケージを遅延アダプター経由で再利用します。必要な場合にのみインストールしてください。

評価器を宣言的に設定する

レジストリが名前と評価器を対応付けるため、YAML で設定できます(実験ランナーと自動化エンジンが使用します)。

python
from potato.evaluators import build_evaluator, list_evaluators
 
ev = build_evaluator("trajectory_match", {"mode": "unordered"})
result = ev.evaluate(outputs=trace, reference_outputs=gold)

関連項目