학습할 내용
- 에이전트를 턴과 도구 Call로 이루어진 대화로 트레이스합니다.
- 각 run을 LLM 평가자로 평가합니다.
- 두 에이전트 버전을 나란히 비교합니다.
- 멀티턴 대화에서 턴을 평가합니다.
- 단일 점수를 스코어카드로 확장합니다.
이 튜토리얼에서는 에이전트가 Claude Sonnet에서 실행되고 평가자는 Claude Opus에서 실행됩니다. 평가 대상 모델보다 더 강력한 다른 모델로 평가하는 것은 좋은 평가 방법입니다.
사전 요구 사항
- W&B 계정
- Python 3.10 이상
- 필수 패키지:
pip install weave anthropic ANTHROPIC_API_KEY환경 변수로 설정한 Anthropic API 키
에이전트 구축 및 트레이싱
lookup_order와 issue_refund라는 두 도구를 사용해 30일 이내의 환불만 허용하는 정책에 따라 환불 요청을 검토하고 응답합니다. 도구 정의, 모델 루프, 메시지 변환을 포함한 전체 에이전트는 함께 제공되는 노트북에 있습니다. 이 섹션에서는 Weave 관련 부분에 중점을 둡니다.
먼저 W&B 팀과 프로젝트를 사용하여 Weave를 초기화합니다. [YOUR-TEAM] 및 [YOUR-PROJECT]를 자신의 값으로 바꾸세요:
implicitly_patch_integrations)를 켜 두면 대화가 두 번 트레이스됩니다. 한 번은 Conversation span으로, 또 한 번은 트레이스된 Op로 기록됩니다.
weave.conversation을 사용해 에이전트를 트레이스합니다. 대화는 여러 턴으로 구성되며, 각 턴에는 모델 Call과 모든 도구 Call이 포함됩니다:
convo_id및new_id(): UUID와 같이 각 대화를 위한 고유 ID입니다.user_message: 해당 턴에 대한 사용자 입력입니다.anthropic_client: 초기화된 Anthropic 클라이언트입니다.response_tool_calls및run_tool(): 모델이 요청한 도구 Call과 이를 실행하는 함수입니다.run_agent_turn(): 전체 에이전트 루프입니다. 최종 응답과 평가자가 읽을 수 있도록 트래젝터리(턴, 도구 Call, 결과)를 일반 텍스트로 기록한 내용을 반환합니다.judge_task_completion(): 다음 섹션에서 도입하는 LLM 평가자입니다.
LLM 평가자로 에이전트 점수 매기기
transcript(run_agent_turn이 반환하는 일반 텍스트 트래젝터리)를 작업의 success_criteria에 따라 평가하고 {"passed", "reason"} 딕셔너리를 반환하는 LLM 평가자입니다:
EvaluationLogger로 기록합니다. 트레이스된 대화가 평가 행에 연결되도록 log_prediction(...) 내에서 에이전트를 실행하세요:
passed 열과 함께 각 작업이 나열됩니다. Evaluation 탭의 View spans 버튼을 클릭하면 이 평가에 연결된 트레이스 span이 표시된 Agents 페이지가 열립니다.
평가 구성 및 비교
model 레이블로 다시 실행하세요:
여러 턴으로 이루어진 대화 점수 매기기
이 방식은 고정된 이력을 기준으로 다음 턴을 평가하는 실용적인 오프라인 방법입니다. 에이전트가 전체 Session을 주도하는 멀티턴 작업 전체를 엔드 투 엔드로 측정하려면 프로덕션 환경에서 실시간 A/B 테스트가 필요하며, 이는 이 튜토리얼의 범위를 벗어납니다.
Scorer 확장
- 기능적: 도구 호출의 정확성, 지침 준수, 도구 오류로부터의 복구
- 비기능적: 안전성 및 거부 동작, 지연 시간, 비용, 환각에 따른 도구 사용
pred.log_score(...) 호출로 추가하세요. Weave에서 제공하는 사전 구축된 Scorer 및 클래스 기반 Scorer를 비롯한 Scorer 유형과 자체 Scorer 작성 방법은 점수화 개요를 참조하세요.
다음 단계
- 함께 제공되는 노트북에서 이 튜토리얼의 전체 실행 가능 버전을 실행하세요.
- 별도 서비스에서 실행되거나 자체 OTel 계측을 사용하는 에이전트를 포함해, 에이전트 트레이스를 평가 결과에 연결하는 다른 방법은 에이전트 트레이스를 평가에 연결에서 알아보세요.