실험에 평가기를 자동으로 실행하기

실험에 평가기를 자동으로 실행하기

LangSmith는 SDK로 만든 실험을 평가하는 두 가지 방법을 지원해요. 첫째는 코드 안에서 평가기를 직접 지정하는 프로그래매틱 방식, 둘째는 UI에서 데이터셋에 평가기를 바인딩해서 새 실험마다 자동으로 실행되게 하는 방식이랍니다. 특히 목표 함수를 반복해서 개선할 때 표준 평가기 세트를 모든 실험에 돌리고 싶다면 두 번째 방식이 편리해요.

출처: 문서

본문

LangSmith는 SDK를 통해 만들어진 실험을 평가하는 두 가지 방법을 지원합니다:

  • 프로그래매틱 방식 — 코드에서 평가기를 지정합니다 (자세한 내용은 LLM 애플리케이션 평가 방법 참고)
  • UI에서 데이터셋에 평가기 바인딩 — 이렇게 하면 새로 만들어진 실험에, SDK로 설정한 평가기 외에도 자동으로 바인딩된 평가기가 실행됩니다. 애플리케이션(목표 함수)을 반복 개선하면서 모든 실험에 돌리고 싶은 표준 평가기 세트가 있을 때 유용합니다.

데이터셋에 평가기 구성하기

  1. LangSmith UI에서 데이터셋을 선택합니다.
  2. Evaluators 탭을 클릭합니다.
  3. + Evaluator를 클릭해 Add Evaluator 패널을 엽니다.
  4. 다음 중 하나를 선택합니다:
    • Create from scratch: 새 LLM-as-a-Judge, Code, 또는 Composite 평가기를 만들거나, From labeled data를 선택해 인간 피드백에 정렬된 LLM-as-a-judge 평가기를 만듭니다.
    • Attach an existing evaluator: 워크스페이스에 이미 있는 평가기를 선택해 재사용합니다.
    • Create from a template: 준비된 평가기 템플릿에서 시작합니다.

참고: 데이터셋에 평가기를 구성하면, 평가기 구성 이후에 만들어진 실험 런에만 영향을 미칩니다. 평가기 구성 이전에 만들어진 실험 런의 평가에는 영향을 주지 않습니다.

LLM-as-a-judge 평가기

데이터셋에 평가기를 바인딩하는 과정은 Playground에서 LLM-as-a-judge 평가기를 구성하는 과정과 매우 유사합니다. Playground에서 LLM-as-a-judge 평가기 구성 방법을 확인하세요.

커스텀 코드 평가기

데이터셋에 코드 평가기를 바인딩하는 과정은 온라인 평가에서 코드 평가기를 구성하는 과정과 매우 유사합니다. 코드 평가기 구성 방법을 확인하세요.

온라인 평가에서 코드 평가기를 구성하는 것과 데이터셋에 코드 평가기를 바인딩하는 것의 유일한 차이는, 커스텀 코드 평가기가 데이터셋의 Example의 일부인 출력을 참조할 수 있다는 점입니다.

데이터셋에 바인딩된 커스텀 코드 평가기는 두 개의 인자를 받습니다:

  • Run (reference) — 실험에서 새로 생성된 런을 나타냅니다. 예를 들어 SDK로 실험을 실행했다면, 테스트 중인 체인 또는 모델의 입력/출력을 담고 있습니다.
  • Example (reference) — 테스트 중인 체인 또는 모델이 사용하는 데이터셋의 기준(reference) 예제를 나타냅니다. Run과 Example의 inputs는 같아야 합니다. Example에 기준 outputs가 있다면, 이를 런의 출력과 비교해 점수를 매길 수 있습니다.

아래 코드는 출력이 기준 출력과 정확히 일치하는지 확인하는 간단한 평가기 함수 예시입니다.

import numpy as np

def perform_eval(run, example):
    # run is a Run object
    # example is an Example object
    output = run['outputs']['output']
    ref_output = example['outputs']['outputs']
    output_match = np.array_equal(output, ref_output)

    return { "exact_match": output_match }
function perform_eval(run, example) {
    // run is a Run object
    // example is an Example object
    const output = run.outputs.output;
    const refOutput = example.outputs.outputs;

    // Deep equality check for arrays/objects
    const outputMatch = JSON.stringify(output) === JSON.stringify(refOutput);

    return { "exact_match": outputMatch };
}

다음 단계

  • 실험 탭에서 실험 결과를 분석하세요.
  • 비교 뷰에서 실험 결과를 비교하세요.

더 알아보기