번역 자료 / / 2025. 5. 23. 08:04

[langgraph] Evals

[langgraph] Evals

원문 출처: https://langchain-ai.github.io/langgraph/agents/evals/

에이전트의 성능을 평가하려면 LangSmith 평가 기능을 사용할 수 있습니다. 에이전트의 결과(최종 출력 또는 실행 경로 등)를 판단하는 평가자(evaluator) 함수를 먼저 정의해야 합니다. 평가 방식에 따라 참조 출력(reference output)이 필요할 수도, 필요하지 않을 수도 있습니다.

def evaluator(*, outputs: dict, reference_outputs: dict):
    # 에이전트 출력과 참조 출력을 비교
    output_messages = outputs["messages"]
    reference_messages = reference["messages"]
    score = compare_messages(output_messages, reference_messages)
    return {"key": "evaluator_score", "score": score}

시작하려면 AgentEvals 패키지의 사전 구축된 평가자를 사용할 수 있습니다.

pip install -U agentevals

평가자 생성하기(Create evaluator)

에이전트의 성능을 평가하는 일반적인 방법은, 에이전트가 도구를 호출한 순서(trajectory, 실행 경로)를 참조 경로와 비교하는 것입니다.

import json
from agentevals.trajectory.match import create_trajectory_match_evaluator

outputs = [
    {
        "role": "assistant",
        "tool_calls": [
            {
                "function": {
                    "name": "get_weather",
                    "arguments": json.dumps({"city": "san francisco"}),
                }
            },
            {
                "function": {
                    "name": "get_directions",
                    "arguments": json.dumps({"destination": "presidio"}),
                }
            }
        ],
    }
]
reference_outputs = [
    {
        "role": "assistant",
        "tool_calls": [
            {
                "function": {
                    "name": "get_weather",
                    "arguments": json.dumps({"city": "san francisco"}),
                }
            },
        ],
    }
]

# 평가자 생성
# trajectory_match_mode: superset, strict, unordered, subset 등 선택 가능
# superset은 출력 경로가 참조 경로의 상위 집합이면 유효로 간주

evaluator = create_trajectory_match_evaluator(
    trajectory_match_mode="superset",  # (1)!
)

# 평가 실행
result = evaluator(
    outputs=outputs, reference_outputs=reference_outputs
)
  1. 경로 비교 방식을 지정합니다. superset은 출력 경로가 참조 경로의 상위 집합이면 유효로 간주합니다. 그 외 strict, unordered, subset 등 옵션이 있습니다.

자세한 커스터마이징 방법은 trajectory match evaluator 문서를 참고하세요.

LLM-as-a-judge

LLM을 활용해 경로를 평가하는 LLM-as-a-judge 평가자도 사용할 수 있습니다. 이 방식은 LLM이 경로를 비교해 점수를 산출합니다.

import json
from agentevals.trajectory.llm import (
    create_trajectory_llm_as_judge,
    TRAJECTORY_ACCURACY_PROMPT_WITH_REFERENCE
)

evaluator = create_trajectory_llm_as_judge(
    prompt=TRAJECTORY_ACCURACY_PROMPT_WITH_REFERENCE,
    model="openai:o3-mini"
)

평가자 실행하기(Run evaluator)

평가자를 실행하려면 먼저 LangSmith 데이터셋을 생성해야 합니다. 사전 구축된 AgentEvals 평가자를 사용하려면 다음과 같은 스키마의 데이터셋이 필요합니다:

  • input: {"messages": [...]} 에이전트에 입력할 메시지
  • output: {"messages": [...]} 에이전트 출력에서 기대하는 메시지 히스토리(trajectory 평가의 경우 assistant 메시지만 포함 가능)

API Reference: create_react_agent

from langsmith import Client
from langgraph.prebuilt import create_react_agent
from agentevals.trajectory.match import create_trajectory_match_evaluator

client = Client()
agent = create_react_agent(...)
evaluator = create_trajectory_match_evaluator(...)

experiment_results = client.evaluate(
    lambda inputs: agent.invoke(inputs),
    # 데이터셋 이름으로 교체
    data="<Name of your dataset>",
    evaluators=[evaluator]
)

자세한 내용은 LangGraph 공식 Evals 문서를 참고하세요.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유