CPN 한국어 자습서 · 러닝패스 2 / 4 — Building with the Claude API
프롬프트 평가 · 실습
Exercise on prompt evals
모델 grader에 "좋은 해법이 어떤 모습인지"를 알려 주어 채점을 개선하는 실습입니다. 단 두 단계 — 데이터셋에 solution_criteria 키를 더하고, 그 기준을 grade_by_model 프롬프트에 <criteria> 태그로 끼워 넣습니다.
Stephen Grider · Anthropic 기술 스태프
프롬프트 평가 워크플로를 개선하는 실습을 해 봅시다. 과제는 이렇습니다 — 모델 grader에 좋은 해법이 실제로 어떤 모습인지에 대한 맥락을 더 줘서 채점을 개선하는 것입니다. 처음엔 어려워 보일 수 있지만, 두 단계면 됩니다.
1단계, 데이터셋을 생성하는 프롬프트로 돌아가, 각 test case에 solution_criteria(해법 기준)를 포함해 달라고 요청하세요. 그러면 test case마다 "좋은 해법이라면 이런 특징·저런 특징을 갖춰야 한다"는 기준 키가 생깁니다.
2단계, 그 기준을 grade_by_model 프롬프트에 끼워 넣습니다. 평가할 해법을 넣던 자리 바로 뒤에, 새로 생성된 solution_criteria를 추가하면 됩니다. 그게 모델 grader에게 "좋은 해법"의 그림을 더 분명히 주는 전부입니다. 잠시 멈추고 직접 해 보세요. 아니면 바로 풀이로 가겠습니다.
풀이는 두 단계입니다. 먼저 노트북의 generate_dataset 함수에서 큰 프롬프트를 찾아, 각 test case를 요청할 때 task·format에 더해 solution_criteria도 달라고 합니다. 이 키가 무엇인지 모델이 알도록 "해법 평가를 위한 핵심 기준"이라는 설명 문자열을 넣습니다. 셀을 다시 실행하고 데이터셋을 재생성하면, dataset.json에 format과 함께 solution_criteria가 채워집니다 — 좋은 해법의 모습에 대한 안내가 들어가죠.
2단계, grade_by_model 함수의 프롬프트를 찾습니다. 이미 원래 task와 생성된 output을 넣고 있는데, 그 바로 뒤에 "이 기준으로 해법을 평가하라"는 안내를 더하고, 태그를 씁니다 — 태그를 쓰는 이유는 곧 프롬프트 엔지니어링에서 다룹니다. 그 안에 test case의 solution_criteria를 끼워 넣습니다. 우리 test case가 바로 이 객체들이고, 각 딕셔너리에 solution_criteria 키가 있으니, 그 문장을 여기에 넣는 거죠.
이제 셀을 실행하고 파이프라인을 다시 돌립니다. 업데이트된 점수가 나오고, 결과를 출력해 보면 — 이 경우 점수는 9였고, 모델 grader의 reasoning이 전보다 더 충실해졌습니다. 채점에 기준을 함께 넣었기 때문입니다.
이 실습에서 할 일What you'll do
약 4분모델 grader에 "좋은 해법"의 맥락을 더해 채점을 개선
1단계 — 데이터셋 프롬프트에 solution_criteria 키 추가
2단계 — 그 기준을 grade_by_model 프롬프트에 삽입
기준은 <criteria> XML 태그로 감싼다 (다음 섹션 복선)
결과 — 점수와 reasoning이 더 충실해진다
채점기에 좋은 기준을 주는 게 평가 품질을 좌우
지금 모델 grader는 출력의 품질을 스스로 짐작해 채점합니다. 여기에 "좋은 해법의 기준"을 함께 주면 더 일관되고 충실하게 채점할 수 있습니다. 단 두 단계입니다.
solution_criteria 키를 더한다.grade_by_model 프롬프트에 끼워 넣는다.앞 레슨들에서 만든 평가 노트북을 엽니다. 프롬프트 두 곳만 고치면 됩니다.
generate_dataset의 큰 프롬프트에서, 각 test case에 solution_criteria를 요청하도록 한 줄 추가.grade_by_model의 프롬프트에서, 생성된 해법 다음에 그 solution_criteria를 끼워 넣기.데이터셋을 재생성하고 파이프라인을 다시 돌려, reasoning이 더 충실해지는지 확인하세요.
generate_dataset의 큰 프롬프트에서, 각 객체에 task·format과 함께 solution_criteria도 요청합니다.
# generate_dataset 프롬프트 — 각 test case에 solution_criteria 추가 요청 ```json [ { "task": "Description of task", "format": "json | python | regex", "solution_criteria": "Key criteria for evaluating the solution" } ] ``` # → 각 test case가 "좋은 해법의 기준"을 함께 담게 됨
데이터셋을 재생성하면 각 test case가 좋은 해법의 기준을 함께 담습니다. 손으로 고치는 대신 프롬프트를 고쳐, 나중에 큰 데이터셋도 같은 방식으로 만들 수 있습니다.
이제 grade_by_model 프롬프트에서, 평가할 해법 다음에 그 기준을 <criteria> 태그로 감싸 끼워 넣습니다.
def grade_by_model(test_case, output): prompt = f""" ... (역할 · 과제 · 생성된 해법) ... Generated solution: {output} Here is some criteria you should use to evaluate the solution: <criteria> {test_case["solution_criteria"]} </criteria> ... (JSON으로 strengths · weaknesses · reasoning · score 요청) ... """
<criteria> 같은 XML 태그의 효과는 다음 섹션(프롬프트 엔지니어링)에서 다룹니다.Q1이 실습에서 모델 채점을 개선한 방법은?
기준을 주면 모델이 더 일관되게, 더 충실한 근거로 채점합니다.
Q2solution_criteria는 어디서 처음 만들어지나요?
generate_dataset 프롬프트에 solution_criteria 키를 요청하면, 각 test case에 함께 생성됩니다.
Q3기준을 <criteria> 태그로 감싼 이유에 가까운 것은?
XML 태그로 영역을 구분하면 모델이 각 부분을 더 잘 이해합니다 — 프롬프트 엔지니어링 섹션의 주제입니다.
채점까지 갖춘 평가 파이프라인을 손에 익혔습니다. 다음은 이 섹션을 마무리하는 퀴즈입니다. → 프롬프트 평가 퀴즈
전 코스는 계속 무료입니다. 등록하면 이 코스의 남은 76개 레슨을 끝까지 읽을 수 있습니다.
이미 등록하셨다면 그때 쓰신 이메일을 넣어 주세요.