프로그래밍 방식 평가기
Flask에 의존하지 않는 Potato의 평가기 라이브러리로 에이전트 궤적과 텍스트 출력을 자동으로 채점합니다. 결정론적 궤적 일치, 도구 사용 정확성, 참조 없는 LLM-as-judge, 휴리스틱(정확 일치, 편집 거리, JSON, 임베딩)을 제공합니다.
Potato에는 에이전트 궤적과 텍스트 출력을 자동으로 채점하는, 의존성이 가벼운 평가기 라이브러리가 들어 있습니다. 사람 주석을 보완하는 결정론적 검사와 LLM-as-judge 검사입니다. 같은 평가기가 실험, 자동화 엔진, CI 플러그인 안에서 실행되며 단독으로도 동작합니다.
모든 평가기는 하나의 정규화된 결과, 즉 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 평가 — 평가기 점수로 빌드 통과 여부를 결정
- 궤적 평가 — 사람이 담당하는 대응 기능