Skip to content

프로그래밍 방식 평가기

Flask에 의존하지 않는 Potato의 평가기 라이브러리로 에이전트 궤적과 텍스트 출력을 자동으로 채점합니다. 결정론적 궤적 일치, 도구 사용 정확성, 참조 없는 LLM-as-judge, 휴리스틱(정확 일치, 편집 거리, JSON, 임베딩)을 제공합니다.

Potato에는 에이전트 궤적과 텍스트 출력을 자동으로 채점하는, 의존성이 가벼운 평가기 라이브러리가 들어 있습니다. 사람 주석을 보완하는 결정론적 검사와 LLM-as-judge 검사입니다. 같은 평가기가 실험, 자동화 엔진, CI 플러그인 안에서 실행되며 단독으로도 동작합니다.

모든 평가기는 하나의 정규화된 결과, 즉 score(관례상 0.0–1.0, 높을수록 좋음), value, comment, metadata를 반환합니다. 그래서 결정론적 평가기와 휴리스틱 평가기, 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)

휴리스틱·코드 평가기

ExactMatch, Contains, RegexMatch, EditDistance, JSONValid, JSONSchemaMatch, 그리고 EmbeddingDistance(지연 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)

관련 항목