Skip to content

3패널 트레이스 평가 (eval_trace)

eval_trace 표시는 하나의 에이전트 트레이스를 세 개의 동기화된 패널(추론, 함수 호출, 최종 답변)로 나누어, 평가자가 에이전트가 무엇을 생각하고 무엇을 했으며 무엇을 산출했는지 한눈에 볼 수 있게 합니다. 지속적 평가를 위해 만들어졌습니다.

eval_trace 표시는 단일 에이전트 트레이스를 세 개의 동기화된 패널, 즉 추론, 함수 호출, 최종 답변으로 나눕니다. 평가자는 에이전트가 무엇을 생각하고 무엇을 했으며 무엇을 산출했는지를 나란히 볼 수 있으며, 이는 새로운 트레이스가 도착해 빠르게 판단해야 하는 지속적 평가에 적합합니다.

서로 얽힌 트레이스를 한 열에 쌓는 세로형 에이전트 트레이스 표시와 달리, eval_trace는 하나의 트레이스를 세 가지 의미적 구성 요소로 분해하므로, 스크롤하지 않고도 에이전트 동작의 구조가 보입니다.

3패널 eval_trace 표시추론, 함수 호출, 최종 답변 패널로 나뉜 에이전트 트레이스

빠른 시작

저장소 루트에서 포함된 예제를 실행하세요:

bash
python potato/flask_server.py start examples/agent-traces/continuous-eval/config.yaml -p 8000

이 예제는 떨어뜨려 놓은 트레이스 파일을 수집하기 위한 디렉터리 감시 변형(config-watch.yaml)도 함께 제공합니다.

구성

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_numberstrue추론 카드와 호출 카드에 #N 단계 번호를 표시합니다.
collapse_long_outputstruemax_output_lines보다 긴 도구 결과를 펼칠 수 있는 블록으로 접습니다.
max_output_lines20결과를 접는 줄 수 임계값.
link_stepstrue패널 간 강조: 카드를 클릭하면 다른 패널에서 연결된 카드가 강조됩니다.
compactfalse더 촘촘한 패딩과 간격.

데이터 형식

eval_trace는 에이전트 트레이스 표시와 동일한 트레이스 형식을 받아들입니다. 가장 흔한 것은 {speaker, text} 단계의 목록입니다:

json
{
  "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/observationstep_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 및 SSEtrace_ingestion: {enabled: true}는 webhook 엔드포인트를 노출하고 새 트레이스를 어노테이터에게 스트리밍합니다.
  • Langfuse 폴링trace_ingestion.sources 아래에 langfuse 소스를 추가합니다.
  • 디렉터리 감시data_directorywatch_data_directory: true를 더하면 떨어뜨려 놓은 .json.jsonl 파일을 수집합니다.

런타임에 추가된 트레이스는 즉시 어노테이터에게 할당할 수 있습니다. 이를 분류 큐와 결합하여 오류가 났거나 점수가 낮은 트레이스를 맨 앞으로 밀어내세요.

참고 사항 및 제한

  • eval_trace는 표시 전용이며, 그 자체로는 어떠한 주석도 수집하지 않습니다. 예제에서처럼 reasoning_quality, tool_use_correctness, answer_helpfulness 같은 주석 스키마와 짝지어 사용하세요.
  • eval_trace에서는 스팬 주석이 지원되지 않습니다. 트레이스 텍스트에 스팬 강조가 필요하면 에이전트 트레이스 또는 code 표시를 사용하세요.

관련 항목

구현 세부 정보는 원본 문서를 참조하세요.