Search

Component Evaluation - 답변에 필요한 도구를 순서대로 활용했는가? (trajectory)

Number
14

Component Evaluation - 답변에 필요한 도구를 순서대로 활용했는가? (Trajectory)

개요

이번 강의는 에이전트가 답변에 도달하는 과정에서 도구를 올바른 순서로 사용했는지를 평가하는 Trajectory Evaluation을 다룹니다.
여기서 trajectory(트라젝토리) 는 원래 궤적/경로라는 뜻으로, 에이전트가 사용자 질문 → 도구 호출 → 최종 답변에 이르는 과정을 의미합니다.
핵심은 답변 결과만 보는 것이 아니라, 답변을 만드는 과정이 의도대로 동작했는지를 확인하는 것입니다.

Trajectory Evaluation의 목적

무엇을 평가하나?

에이전트가 정해진 도구를 올바른 순서로 사용했는지
불필요한 도구를 먼저 쓰거나, 필요한 도구를 누락하지는 않았는지
예:
논문 검색 → 이메일 전송이 기대되는데
실제로는 검색 없이 바로 이메일 전송하거나
엉뚱한 도구만 실행하는 경우를 탐지

다른 평가 방식과의 차이

정확성 평가: LLM-as-a-judge 등으로 최종 답변이 맞는지 확인
도구 선택 평가: 특정 타겟 툴 하나를 썼는지 확인
Trajectory Evaluation: 도구들의 전체 시퀀스(sequence) 가 기대한 흐름과 같은지 확인

평가 방식

데이터셋 구성

평가용 데이터셋에는 보통 다음이 포함됩니다.
질문(question)
정답 답변(answer)
타겟 툴 시퀀스(target tool sequence)
기대하는 도구 호출 순서
예: web_search -> arxiv_search -> gmail_send

평가 절차

1.
래퍼(wrapper) 로 에이전트를 실행
2.
실제 발생한 도구 호출 순서를 수집
3.
이를 골든 데이터셋의 타겟 툴 시퀀스와 비교
4.
일치 여부에 따라 점수를 부여

Trajectory 평가 함수의 핵심 로직

기본 아이디어

평가는 주로 실제 도구 호출 순서(raw sequence)정답 시퀀스를 비교합니다.
단, 실제 에이전트는 retry(재시도) 때문에 같은 도구를 여러 번 호출할 수 있습니다.

중복 제거가 필요한 이유

예를 들어 에러로 인해 table_search를 여러 번 호출한 뒤 gmail_send를 했다면:
실제 시퀀스: table_search, table_search, table_search, gmail_send
기대 시퀀스: table_search, gmail_send
단순 비교하면 실패로 처리되므로, 중복 제거 후 비교합니다.

길이 비교

중복 제거 후에도 시퀀스 길이가 다르면 즉시 0점 처리합니다.
길이가 같을 때만 각 위치를 하나씩 비교합니다.

비교 방식

리스트 두 개를 동시에 순회하며 각 도구 이름이 같은지 확인합니다.
파이썬에서는 zip() 같은 방식을 활용합니다.

실습에서 관찰한 결과

첫 실행 결과

여러 번 실행했을 때 대부분은 잘 맞았지만, 일부 케이스는 실패했습니다.
실패 원인:
기대한 것은 arxiv 검색 후 이메일 전송
실제로는 중간에 web search가 끼어들어감
이 경우 답변은 맞더라도 도구 시퀀스 관점에서는 0점이 됩니다.

실패 케이스의 해석

에이전트가 최종적으로는 올바른 답변을 했더라도,
불필요한 도구를 추가로 사용하면 trajectory 평가에서는 실패로 간주될 수 있습니다.
즉, 결과의 정확성과정의 효율성/정합성은 별개입니다.

개선 방법

1. 프롬프트 수정

시스템 프롬프트에 다음과 같은 제약을 추가:
arxiv 검색과 web search를 같이 하지 말 것
특정 상황에서는 한 도구만 사용하도록 지시
수정 후에는:
불필요한 web search가 사라지고
기대한 시퀀스에 더 잘 맞게 동작

2. 비용과 시간 최적화

trajectory를 개선하면 단순히 평가 점수만 좋아지는 것이 아니라:
토큰 비용 절감
응답 시간 단축
강의에서는 예시로:
비용이 0.22 → 0.19로 감소
처리 시간도 약 10% 수준으로 줄어듦
작은 차이처럼 보여도, 대규모 누적 시 상당한 절감 효과가 있습니다.

LangGraph / LangSmith 지원 방식

지원하는 평가 유형

강의에서는 LangGraph 기반의 trajectory evaluation 지원을 소개했습니다.
대표적인 비교 방식은 4가지입니다.

1. Strict

실제 시퀀스와 기대 시퀀스가 완전히 동일해야 함
중복 제거를 하지 않는 방식에 가깝지만,
retry를 인정하지 않아서 실무에선 다소 엄격함

2. Unordered

도구를 사용하기만 하면 순서는 상관없음
실제 에이전트의 작업 흐름 평가에는 부적절할 수 있음

3. Subset

기대 도구 일부만 사용해도 통과시키는 방식
예측된 행동이 불완전해도 봐주는 셈이라,
평가 의미가 약함

4. Superset

기대 도구보다 더 많이 사용해도,
기대 도구를 포함하면 통과시키는 방식
불필요한 도구 사용을 제대로 잡아내기 어렵습니다.

실무적 주의사항

LangGraph 방식의 한계

각 콜마다 마킹(marking) 을 맞춰줘야 해서 번거롭습니다.
특히:
AI 메시지 ID
tool call ID
이 둘이 맞아야 동작하는 경우가 있어, 설정이 까다롭습니다.
강의에서는 이 때문에 에러가 자주 나서 실사용이 어렵다고 언급했습니다.

실무 권장

가능하면 LangGraph에서 제공하는 기능을 활용하되,
에러나 제약이 많다면 직접 평가 로직을 작성하는 것도 좋은 선택입니다.
팀 상황에 맞게 도입 여부를 결정하는 것이 중요합니다.

핵심 정리

Trajectory Evaluation은 에이전트가 답변까지 가는 도구 사용 경로를 평가한다.
최종 답변이 맞아도 도구 순서가 틀리면 실패할 수 있다.
중복 호출(retry) 을 고려해 중복 제거 후 시퀀스 비교가 필요하다.
평가 결과가 좋지 않다면:
프롬프트를 수정하거나
도구 사용 정책을 명확히 해서 개선할 수 있다.
이 평가는 정확성뿐 아니라 비용 절감과 시간 최적화에도 도움된다.