3패널 트레이스 평가 (eval_trace)
eval_trace 표시는 하나의 에이전트 트레이스를 세 개의 동기화된 패널(추론, 함수 호출, 최종 답변)로 나누어, 평가자가 에이전트가 무엇을 생각하고 무엇을 했으며 무엇을 산출했는지 한눈에 볼 수 있게 합니다. 지속적 평가를 위해 만들어졌습니다.
eval_trace 표시는 단일 에이전트 트레이스를 세 개의 동기화된 패널, 즉 추론, 함수 호출, 최종 답변으로 나눕니다. 평가자는 에이전트가 무엇을 생각하고 무엇을 했으며 무엇을 산출했는지를 나란히 볼 수 있으며, 이는 새로운 트레이스가 도착해 빠르게 판단해야 하는 지속적 평가에 적합합니다.
서로 얽힌 트레이스를 한 열에 쌓는 세로형 에이전트 트레이스 표시와 달리, eval_trace는 하나의 트레이스를 세 가지 의미적 구성 요소로 분해하므로, 스크롤하지 않고도 에이전트 동작의 구조가 보입니다.
추론, 함수 호출, 최종 답변 패널로 나뉜 에이전트 트레이스
빠른 시작
저장소 루트에서 포함된 예제를 실행하세요:
python potato/flask_server.py start examples/agent-traces/continuous-eval/config.yaml -p 8000이 예제는 떨어뜨려 놓은 트레이스 파일을 수집하기 위한 디렉터리 감시 변형(config-watch.yaml)도 함께 제공합니다.
구성
instance_display:
layout:
direction: vertical # task header above the (internally horizontal) panes
gap: 12px
fields:
- key: task_description
type: text
label: "Task"
- key: trace # the field holding the agent trace
type: eval_trace
label: "Agent Trace"
display_options:
pane_labels: ["Reasoning", "Function Calls", "Final Answer"]
show_step_numbers: true
collapse_long_outputs: true
max_output_lines: 12
link_steps: true옵션
| 옵션 | 기본값 | 설명 |
|---|---|---|
pane_labels | ["Reasoning", "Function Calls", "Final Answer"] | 세 패널의 헤더. |
show_step_numbers | true | 추론 카드와 호출 카드에 #N 단계 번호를 표시합니다. |
collapse_long_outputs | true | max_output_lines보다 긴 도구 결과를 펼칠 수 있는 블록으로 접습니다. |
max_output_lines | 20 | 결과를 접는 줄 수 임계값. |
link_steps | true | 패널 간 강조: 카드를 클릭하면 다른 패널에서 연결된 카드가 강조됩니다. |
compact | false | 더 촘촘한 패딩과 간격. |
데이터 형식
eval_trace는 에이전트 트레이스 표시와 동일한 트레이스 형식을 받아들입니다. 가장 흔한 것은 {speaker, text} 단계의 목록입니다:
{
"id": "eval_001",
"task_description": "Find a vegan lasagna recipe.",
"trace": [
{"speaker": "Agent (Thought)", "text": "I'll search for a highly-rated recipe."},
{"speaker": "Agent (Action)", "text": "web_search(query='vegan lasagna')"},
{"speaker": "Environment", "text": "10 results found..."},
{"speaker": "Agent (Final Answer)", "text": "Here's a great recipe: ..."}
]
}thought/action/observation 및 step_type/content 형식도 지원됩니다.
단계가 패널에 매핑되는 방식
| 단계 (유형은 speaker 또는 label에서 추론) | 패널 |
|---|---|
Thought, 추론, 계획, system | 추론 |
Action, tool, function, call | 함수 호출 (인접한 Environment/결과는 해당 호출 아래에 중첩됨) |
Final Answer, send_message, respond, finish, 또는 일치하는 것이 없으면 마지막 동작 | 최종 답변 |
명시적인 최종 답변을 지정하려면, speaker가 답변 패턴(예: "Agent (Final Answer)")과 일치하는 단계 또는 send_message(...) 동작으로 트레이스를 끝내세요.
단계 연결
단계는 논리적 주기로 그룹화됩니다. 하나의 생각과 그것이 촉발한 호출은 동일한 단계 인덱스를 공유합니다. link_steps: true이면, 임의의 카드를 클릭할 때 패널 전반에서 그 인덱스를 공유하는 모든 카드가 강조되므로, 하나의 생각을 그것이 만들어낸 동작까지 추적할 수 있습니다.
지속적 평가
트레이스가 도착하는 즉시 평가되도록 eval_trace를 Potato의 어떤 런타임 수집 전송 방식과도 짝지어 사용하세요:
- Webhook 및 SSE —
trace_ingestion: {enabled: true}는 webhook 엔드포인트를 노출하고 새 트레이스를 어노테이터에게 스트리밍합니다. - Langfuse 폴링 —
trace_ingestion.sources아래에langfuse소스를 추가합니다. - 디렉터리 감시 —
data_directory에watch_data_directory: true를 더하면 떨어뜨려 놓은.json및.jsonl파일을 수집합니다.
런타임에 추가된 트레이스는 즉시 어노테이터에게 할당할 수 있습니다. 이를 분류 큐와 결합하여 오류가 났거나 점수가 낮은 트레이스를 맨 앞으로 밀어내세요.
참고 사항 및 제한
eval_trace는 표시 전용이며, 그 자체로는 어떠한 주석도 수집하지 않습니다. 예제에서처럼reasoning_quality,tool_use_correctness,answer_helpfulness같은 주석 스키마와 짝지어 사용하세요.eval_trace에서는 스팬 주석이 지원되지 않습니다. 트레이스 텍스트에 스팬 강조가 필요하면 에이전트 트레이스 또는code표시를 사용하세요.
관련 항목
- 신호 기반 분류 큐 — 들어오는 트레이스 중 어느 것을 검토할지 우선순위를 정함
- SFT/DPO를 위한 트래젝터리 편집 — 수정 사항을 학습 데이터로 전환함
- 에이전트형 주석 — 표시 필드 구성 및 수집
구현 세부 정보는 원본 문서를 참조하세요.