코드 평가기 정의하기

코드 평가기 정의하기 (UI)

LangSmith UI의 코드 평가기를 사용하면 인터페이스에서 직접 Python 또는 TypeScript 코드로 커스텀 평가 로직을 작성할 수 있어요. 모델을 사용해 출력을 평가하는 LLM-as-a-judge 평가기와 달리, 코드 평가기는 여러분이 정의하는 결정적(deterministic) 로직을 사용합니다.

출처: 문서

참고: LangSmith UI에 나타나는 코드 평가기를 프로그래매틱하게 만들려면 SDK로 평가기 관리를 참고하세요. evaluate()에 전달하는 코드 평가기 함수를 정의하려면 코드 평가기 정의 방법 (SDK)을 참고하세요. 데이터셋 예제에 저장된 assertions에 대해 출력을 평가하려면 Assertions 사용을 참고하세요.

본문

1단계. 평가기 만들기

  1. LangSmith UI의 다음 페이지 중 하나에서 평가기를 만듭니다:
    • Playground 또는 데이터셋에서: + Evaluator 버튼을 선택합니다.
    • Add rules를 선택해 규칙을 구성하고 Apply evaluator를 선택합니다.
  2. 평가기가 측정하는 것을 설명하는 명확한 이름을 지정합니다 (예: "Exact Match").
  3. 평가기 유형 옵션에서 Create code evaluator를 선택합니다.

2단계. 평가기 코드 작성

참고: 커스텀 코드 평가기 제한 사항.

허용 라이브러리: 모든 표준 라이브러리 함수와 다음 공개 패키지를 임포트할 수 있습니다:

numpy (v2.2.2): "numpy"
pandas (v1.5.2): "pandas"
jsonschema (v4.21.1): "jsonschema"
scipy (v1.14.1): "scipy"
sklearn (v1.26.4): "scikit-learn"

네트워크 접근: 커스텀 코드 평가기에서 인터넷에 접근할 수 없습니다.

Add Custom Code Evaluator 페이지에서 Python 또는 TypeScript로 평가 로직을 정의합니다.

평가기 함수는 perform_eval로 이름을 지정해야 하며:

  1. runexample 매개변수를 받습니다.
  2. run['inputs'], run['outputs'], example['outputs']를 통해 데이터에 접근합니다.
  3. 각 키가 메트릭 이름이고 각 값이 해당 메트릭의 점수인 딕셔너리를 반환합니다. 각 키는 반환하려는 피드백 조각을 나타냅니다. 예를 들어 {"correctness": 1, "silliness": 0}은 런에 대해 두 개의 피드백 조각을 만듭니다.

함수 시그니처

def perform_eval(run, example):
    # Access the data
    inputs = run['inputs']
    outputs = run['outputs']
    reference_outputs = example['outputs']  # Optional: reference/expected outputs

    # Your evaluation logic here
    score = ...

    # Return a dict with your metric name
    return {"metric_name": score}

예시: 정확 일치(Exact match) 평가기

def perform_eval(run, example):
    """Check if the answer exactly matches the expected answer."""
    actual = run['outputs']['answer']
    expected = example['outputs']['answer']

    is_correct = actual == expected
    return {"exact_match": is_correct}

예시: 입력 기반 평가기

def perform_eval(run, example):
    """Check if the input text contains toxic language."""
    text = run['inputs'].get('text', '').lower()
    toxic_words = ["idiot", "stupid", "hate", "awful"]

    is_toxic = any(word in text for word in toxic_words)
    return {"is_toxic": is_toxic}

3단계. 테스트 및 저장

  1. 예제 데이터에서 평가기를 테스트해 기대대로 작동하는지 확인합니다.
  2. Save를 클릭해 평가기를 사용 가능하게 만듭니다.

코드 평가기 사용

만든 후에는 다음에서 코드 평가기를 사용할 수 있습니다:

관련 문서

더 알아보기