멀티턴 온라인 평가자 설정하기
멀티턴 온라인 평가자 설정하기
멀티턴 온라인 평가자를 사용하면 인간과 에이전트 사이의 전체 대화를 평가할 수 있어요. 개별 교환만이 아니라, 스레드 내 모든 턴에 걸친 end-to-end 상호작용 품질을 측정해요.
팁: 모델·API 키·프롬프트를 구성하지 않아도 되는 LangChain 관리형 스레드 레벨 심판을 사용하려면 LangChain Tuned Evaluators를 참조하세요.
멀티턴 평가로 다음을 측정할 수 있어요:
- 의미적 의도(Semantic Intent): 사용자가 무엇을 하려 했는지.
- 의미적 결과(Semantic Outcome): 실제로 무엇이 일어났는지, 과제가 성공했는지.
- 궤적(Trajectory): 대화가 어떻게 전개되었는지, 도구 호출의 궤적을 포함.
참고: 멀티턴 온라인 평가자는 기본적으로 트레이스 보존을 연장할 수 있어요. 평가자 구성 시 옵트아웃해서 트레이스가 프로젝트의 구성된 보존 등급을 유지하도록 할 수 있어요. 다른 작업이 명시적으로 보존을 연장하거나 프로젝트가 이미 확장 보존을 사용 중이라면 트레이스는 여전히 업그레이드돼요. 단계별 옵트아웃 방법은 평가자 트레이스 보존 관리를 참조하세요. 자세한 내용은 데이터 보존 자동 업그레이드를 참조하세요.
출처: 문서
본문
작동 방식
멀티턴 온라인 평가자는 다음 평가 수명주기를 따르며:
- 트레이스 수집: 대화의 각 턴은 별도의 런으로 트레이싱되고, 공유 스레드 ID를 사용해 스레드에 연결돼요.
- 유휴 시간 감지: 스레드의 마지막 트레이스가 수집된 후, LangSmith는 구성된 유휴 시간이 경과할 때까지 기다려요. 이 유휴 기간은 대화가 완료되어 평가할 준비가 되었음을 나타내요.
- 메시지 조립: LangSmith는 스레드의 각 트레이스에서
messages를 수집해 단일 대화 기록으로 조립해요. 각 트레이스가 최신 메시지만 포함한다면 LangSmith는 턴을 넘나들며 메시지를 이어 붙여요. 각 트레이스가 전체 기록을 포함한다면 LangSmith는 그대로 사용해요. 스레드의 연속된 트레이스가 이전 기록을 재전송하는 경우가 많으므로, LangSmith는 겹치는 메시지를 중복 제거해 각 메시지가 한 번만 나타나도록 해요. 결과는 OpenAI 채팅 형식({"role": ..., "content": ...})의 단일 메시지 목록이며, 이것이 프롬프트의all_messages변수로 해석되는 값이에요. - LLM-as-a-judge 평가: 조립된 대화가 구성한 LLM-as-a-judge 프롬프트에 전달돼요. 평가자는 의미적 의도·결과·궤적 같은 기준에 따라 전체 스레드를 채점해요.
- 피드백 기록: 평가자는 구성한 피드백 키를 사용해 스레드에 연결된 피드백을 LangSmith에 기록해요.
이 수명주기는 멀티턴 평가자가 트레이스마다가 아니라 완료된 스레드마다 한 번씩 실행됨을 의미해요. 트레이스별 평가가 필요하다면 런 레벨 온라인 평가자를 사용하세요.
사전 준비 사항
- 트레이싱 프로젝트가 스레드를 사용 중이어야 해요.
- 스레드 내 각 트레이스의 최상위 입력과 출력에는 메시지 목록을 담은
messages키가 있어야 해요. LangChain, OpenAI Chat Completions, Anthropic Messages 형식의 메시지를 지원해요.- 각 트레이스의 최상위 입력과 출력이 대화의 최신 메시지만 담고 있다면, LangSmith가 턴을 넘나들며 메시지를 자동으로 스레드로 결합해요.
- 각 트레이스의 최상위 입력과 출력이 전체 대화 기록을 담고 있다면, LangSmith가 그대로 사용해요.
참고: 트레이스가 위 형식을 따르지 않으면 스레드 레벨 평가자가 동작하지 않아요. 각 트레이스의 최상위 입력과 출력에
messages목록이 포함되도록 LangSmith로의 트레이싱 방식을 업데이트해야 해요.자세한 내용은 문제 해결 섹션을 참조하세요.
구성
-
Tracing 페이지로 이동해 트레이싱 프로젝트를 선택하세요.
-
Evaluators 탭을 클릭한 다음 + Evaluator를 클릭하세요. Create from scratch 아래에서 LLM-as-a-Judge Evaluator를 선택하세요. Source에서 Threads를 선택하세요.
-
평가자 이름을 지정하세요.
-
필터 또는 샘플링 비율을 적용하세요.
평가자 비용을 통제하려면 필터나 샘플링을 사용하세요. 예를 들어 N 턴 미만의 스레드만 평가하거나 전체 스레드의 10%를 샘플링하세요.
-
유휴 시간을 구성하세요.
스레드 레벨 평가자를 처음 구성할 때 유휴 시간(스레드의 마지막 트레이스 이후 평가할 준비가 된 것으로 간주되기까지의 시간)을 정의할 수 있어요. 이 값은 앱에서 예상되는 사용자 상호작용 길이를 반영해야 해요. 유휴 시간은 기본값이 10분이며 2분 미만으로는 설정할 수 없어요.
참고: 유휴 시간은 프로젝트 레벨 설정이에요. 프로젝트의 모든 스레드 레벨 평가자와 아이템 유형이 Threads인 모든 자동화 규칙에 적용돼요.
팁: 평가자를 처음 테스트할 때는 결과를 빨리 볼 수 있도록 짧은 유휴 시간을 사용하세요(2분 최소값 적용). 검증이 끝나면 예상 사용자 상호작용 길이에 맞게 늘리세요.
-
모델을 구성하세요.
평가자에 사용할 공급자와 모델을 선택하세요. 스레드는 길어지는 경향이 있으므로 한도에 부딪히지 않도록 더 높은 컨텍스트 윈도우를 가진 모델을 사용해야 해요. 예를 들어 OpenAI의 GPT-5.4 mini나 Gemini 2.5 Flash는 둘 다 1M+ 토큰 컨텍스트 윈도우를 가지므로 좋은 선택이에요.
-
LLM-as-a-judge 프롬프트를 구성하세요.
무엇을 평가할지 정의하세요. 이 프롬프트가 스레드를 평가하는 데 사용돼요. 또한
all_messages변수를 통해 조립된 대화의 어떤 부분을 평가자에게 전달할지 구성해서 평가자가 받는 콘텐츠를 제어할 수 있어요:- 모든 메시지: 전체 대화를 OpenAI 채팅 형식(
{"role": ..., "content": ...})의 JSON 메시지 객체 목록으로 보내며, 각 메시지는 들여쓰기된 JSON으로 렌더링되고 빈 줄로 구분돼요. - 인간과 AI 쌍: 사용자와 어시스턴트 메시지만 보내며
<user>...</user>와<assistant>...</assistant>형식으로, 시스템 메시지·도구 호출·기타 역할은 제외해요. - 첫 인간과 마지막 AI: 첫 사용자 메시지와 마지막 어시스턴트 응답만 보내요.
- 모든 메시지: 전체 대화를 OpenAI 채팅 형식(
-
피드백 구성을 설정하세요.
피드백 키의 이름, 수집할 피드백 형식을 구성하고 선택적으로 피드백에 대한 추론을 활성화하세요.
⚠️ 스레드 레벨 평가자와 런 레벨 평가자에 동일한 피드백 키를 사용하는 것은 권장하지 않아요. 둘을 구분하기 어려울 수 있기 때문이에요.
-
평가자를 저장하세요.
저장 후 평가자는 Evaluators 탭에 나타나요. 저장 후 생성된 새 스레드의 유휴 시간이 경과하면 테스트할 수 있어요.
제한 사항
다음은 스레드 레벨 처리의 현재 제한 사항(변경될 수 있음)이에요. 멀티턴 온라인 평가자와 아이템 유형이 Threads인 자동화 규칙에 적용돼요. 이러한 제한에 부딪히면 문의하세요.
- 런은 1주 미만이어야 함: 스레드가 유휴 상태가 되면 최근 7일 이내의 런만 평가 대상이 돼요.
- 한 번에 최대 500개 스레드 처리: 단일 실행은 최근 활동 순으로 최대 500개의 일치하는 스레드를 처리해요.
- 워크스페이스당 최대 10개의 멀티턴 온라인 평가자
문제 해결
평가자 상태 확인
트레이싱 프로젝트 내의 Evaluators 탭으로 이동해 만든 평가자의 Logs 버튼을 클릭하면 평가자가 마지막으로 실행된 시점을 확인할 수 있어요.
평가자에게 전송된 데이터 검사
트레이싱 프로젝트 내의 Evaluators 탭으로 이동해 만든 평가자를 클릭하고 Evaluator traces 탭을 클릭하면 평가자에게 전송된 데이터를 검사할 수 있어요.
이 탭에서는 LLM-as-a-judge 평가자에 전달된 입력을 볼 수 있어요. 메시지가 올바르게 전달되지 않으면 입력에 빈 값이 보일 거예요. 메시지가 예상 형식 중 하나로 포맷되지 않았을 때 이런 일이 발생할 수 있어요.