Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Sign in

프롬프트 평가 워크플로우를 구축할 때, 채점자(grader)는 출력 품질에 대한 객관적인 신호를 제공합니다. 채점자는 모델 출력을 받아 측정 가능한 형태의 피드백을 반환합니다 - 일반적으로 1-10 사이의 숫자로, 10은 높은 품질을, 1은 낮은 품질을 나타냅니다.

채점자의 유형

모델 출력을 채점하는 데는 세 가지 주요 접근 방식이 있습니다:

  • 코드 채점자(Code graders) - 커스텀 로직을 사용하여 프로그래밍 방식으로 출력을 평가합니다
  • 모델 채점자(Model graders) - 다른 AI 모델을 사용하여 품질을 평가합니다
  • 인간 채점자(Human graders) - 사람이 직접 출력을 검토하고 점수를 매기도록 합니다

코드 채점자

코드 채점자를 사용하면 생각할 수 있는 모든 프로그래밍 방식의 검사를 구현할 수 있습니다. 일반적인 사용 사례는 다음과 같습니다:

  • 출력 길이 확인
  • 출력에 특정 단어가 포함되어 있는지/포함되어 있지 않은지 확인
  • JSON, Python 또는 정규식(regex)에 대한 구문 검증
  • 가독성 점수

유일한 요구 사항은 코드가 실행될 때 측정 가능한 신호를 반환해야 한다는 것입니다.

모델 채점자

모델 채점자는 원본 출력을 평가하기 위해 추가적인 API 요청을 수행합니다. 이 접근 방식은 다음을 평가하는 데 있어 엄청난 유연성을 제공합니다:

  • 응답 품질
  • 지시 사항 준수 품질
  • 완전성
  • 유용성
  • 안전성

인간 채점자

인간 채점자는 가장 큰 유연성을 제공하지만 시간이 많이 소요되고 지루합니다. 다음을 평가하는 데 유용합니다:

  • 전반적인 응답 품질
  • 포괄성
  • 깊이
  • 간결성
  • 관련성

평가 기준 정의하기

채점자를 구현하기 전에 명확한 평가 기준이 필요합니다. 코드 생성 프롬프트의 경우 다음에 초점을 맞출 수 있습니다:

  • 형식(Format) - 설명 없이 Python, JSON 또는 Regex만 반환해야 합니다
  • 유효한 구문(Valid Syntax) - 생성된 코드는 유효한 구문을 가져야 합니다
  • 작업 준수(Task Following) - 응답은 정확한 코드로 사용자의 작업을 직접적으로 해결해야 합니다

처음 두 가지 기준은 코드 채점자와 잘 맞으며, 작업 준수는 유연성 때문에 모델 채점자에 더 적합합니다.

모델 채점자 구현하기

모델 채점자 함수를 구축하는 방법은 다음과 같습니다:

python
def grade_by_model(test_case, output):
    # 평가 프롬프트 생성
    eval_prompt = """
    You are an expert code reviewer. Evaluate this AI-generated solution.
    
    Task: {task}
    Solution: {solution}
    
    Provide your evaluation as a structured JSON object with:
    - "strengths": An array of 1-3 key strengths
    - "weaknesses": An array of 1-3 key areas for improvement  
    - "reasoning": A concise explanation of your assessment
    - "score": A number between 1-10
    """
    
    messages = []
    add_user_message(messages, eval_prompt)
    add_assistant_message(messages, "```json")

    eval_text = chat(messages, stop_sequences=["```"])
    return json.loads(eval_text)

핵심은 점수와 함께 강점, 약점, 그리고 근거(reasoning)를 요청하는 것입니다. 이러한 맥락이 없으면 모델은 6점 정도의 중간 점수로 기본값을 설정하는 경향이 있습니다. ## 채점자 통합하기 모델 채점자를 사용하도록 테스트 케이스 함수를 업데이트하세요: ``` def run_test_case(test_case): output = run_prompt(test_case) # Get model evaluation model_grade = grade_by_model(test_case, output) score = model_grade["score"] reasoning = model_grade["reasoning"] return \{ "output": output, "test_case": test_case, "score": score, "reasoning": reasoning \} ``` `` ## 평균 점수 계산하기 전체 성능 지표를 얻으려면 모든 테스트 케이스에 대한 평균 점수를 계산하세요: ``` from statistics import mean def run_eval(dataset): results = [] for test_case in dataset: result = run_test_case(test_case) results.append(result) average_score = mean([result["score"] for result in results]) print(f"Average score: \{average_score\}") return results ``` ` 이를 통해 시간에 따른 프롬프트 성능을 추적할 수 있는 구체적이고 객관적인 지표를 얻을 수 있습니다. 모델 채점자는 다소 일관성이 없을 수 있지만, 프롬프트를 체계적으로 측정하고 개선하기 위한 출발점을 제공합니다. ` ``