로드 중

코드 기반 채점은 모델의 출력이 올바른 형식을 따르고 유효한 구문을 가지고 있는지 확인하여 프롬프트 평가에 추가적인 검증 계층을 더합니다. 이는 모델에게 코드, 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

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

결과 해석하기

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

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