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

코드 기반 채점은 모델의 출력이 올바른 형식을 따르고 유효한 구문을 가지고 있는지 확인하여 프롬프트 평가에 추가적인 검증 계층을 더합니다. 이는 모델에게 코드, JSON 또는 정규식을 생성하도록 요청할 때 특히 유용합니다.

코드 채점 작동 방식

코드 채점기는 두 가지 주요 기준을 평가합니다:

  • 형식 준수 - 출력이 설명 없이 요청된 형식(Python, JSON 또는 regex)만 포함하고 있습니까?
  • 유효한 구문 - 출력이 실제로 성공적으로 파싱되거나 컴파일될 수 있습니까?

시스템은 각 형식 유형에 대해 별도의 검증 함수를 사용합니다. 코드가 성공적으로 파싱되면 10점의 완벽한 점수를 받습니다. 파싱이 오류와 함께 실패하면 0점을 받습니다.

검증 함수 설정하기

서로 다른 출력 유형을 검증하기 위해 세 가지 헬퍼 함수가 필요합니다:

python
def validate_json(text):
    try:
        json.loads(text.strip())
        return 10
    except json.JSONDecodeError:
        return 0

def validate_python(text):
    try:
        ast.parse(text.strip())
        return 10
    except SyntaxError:
        return 0

def validate_regex(text):
    try:
        re.compile(text.strip())
        return 10
    except re.error:
        return 0

이 함수들은 Python의 내장 파싱 기능을 사용하여 구문 유효성을 확인합니다. json.loads() 함수는 JSON을 검증하고, ast.parse()는 Python 추상 구문 트리를 생성하며, re.compile()은 정규식을 검증합니다.

테스트 케이스에 형식 정보 추가하기

테스트 데이터셋은 각 작업에 대해 예상되는 출력 형식을 지정해야 합니다. 데이터셋 생성 프롬프트를 업데이트하여 형식 필드를 포함시키세요:

json
{
    "task": "Description of task",
    "format": "python"
}

형식 필드는 해당 특정 작업에서 예상하는 출력 유형에 따라 "json", "python" 또는 "regex"를 포함해야 합니다.

프롬프트 개선하기

코드 채점기로부터 더 나은 결과를 얻으려면 프롬프트 지침을 더 구체적으로 만드세요:

* Respond only with Python, JSON, or a plain Regex
* Do not add any comments or commentary or explanation

또한 코드 블록과 중지 시퀀스가 포함된 미리 채워진 어시스턴트 메시지를 사용하여 깔끔한 출력 형식을 보장할 수 있습니다.

점수 결합하기

마지막 단계는 모델 채점기 점수와 구문 채점기 점수를 병합하는 것입니다. 간단한 접근 방식은 두 점수의 평균을 취하는 것입니다:

python
model_grade = grade_by_model(test_case, output)
model_score = model_grade["score"]
syntax_score = grade_syntax(output, test_case)

score = (model_score + syntax_score) / 2

이는 콘텐츠 품질(모델 채점기로부터)과 기술적 정확성(코드 채점기로부터) 모두에 동등한 가중치를 부여합니다. 특정 사용 사례에서 더 중요한 것에 따라 이 가중치를 조정할 수 있습니다.

결과 해석하기

평가를 실행하면 생성된 코드의 의미론적 품질과 기술적 정확성을 모두 반영하는 결합된 점수를 얻게 됩니다. 단독으로 본 점수 하나는 많은 것을 알려주지 않는다는 점을 기억하세요 - 실제 가치는 프롬프트 설계를 반복하면서 점수를 비교하는 데서 나옵니다.

이 기준 점수를 사용하여 프롬프트 개선 사항을 테스트하고 변경 사항이 실제로 더 나은, 더 신뢰할 수 있는 코드 생성으로 이어지는지 확인하세요.