byteforce

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분
1

모델 grader에 "좋은 해법"의 맥락을 더해 채점을 개선

2

1단계 — 데이터셋 프롬프트에 solution_criteria 키 추가

3

2단계 — 그 기준을 grade_by_model 프롬프트에 삽입

4

기준은 <criteria> XML 태그로 감싼다 (다음 섹션 복선)

5

결과 — 점수와 reasoning이 더 충실해진다

6

채점기에 좋은 기준을 주는 게 평가 품질을 좌우

문제 — grader에 기준 주기

The exercise

지금 모델 grader는 출력의 품질을 스스로 짐작해 채점합니다. 여기에 "좋은 해법의 기준"을 함께 주면 더 일관되고 충실하게 채점할 수 있습니다. 단 두 단계입니다.

직접 해보기 풀이를 보기 전에 먼저 시도해 보세요

앞 레슨들에서 만든 평가 노트북을 엽니다. 프롬프트 두 곳만 고치면 됩니다.

  1. generate_dataset의 큰 프롬프트에서, 각 test case에 solution_criteria를 요청하도록 한 줄 추가.
  2. grade_by_model의 프롬프트에서, 생성된 해법 다음에 그 solution_criteria를 끼워 넣기.

데이터셋을 재생성하고 파이프라인을 다시 돌려, reasoning이 더 충실해지는지 확인하세요.

풀이 1 — solution_criteria 키

Add the criteria key

generate_dataset의 큰 프롬프트에서, 각 객체에 task·format과 함께 solution_criteria도 요청합니다.

generate_dataset 프롬프트 · 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가 좋은 해법의 기준을 함께 담습니다. 손으로 고치는 대신 프롬프트를 고쳐, 나중에 큰 데이터셋도 같은 방식으로 만들 수 있습니다.

풀이 2 — 기준을 grader에 삽입

Insert into the grader

이제 grade_by_model 프롬프트에서, 평가할 해법 다음에 그 기준을 <criteria> 태그로 감싸 끼워 넣습니다.

grade_by_model 프롬프트 · 삽입
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 요청) ...
"""
grade_by_model 프롬프트 · criteria 추가 전/후

결과 & 정리

Result & recap
무엇이 달라졌나
  • 파이프라인을 다시 돌리면 점수가 갱신됩니다 (예: 9점).
  • 무엇보다 모델 grader의 reasoning이 더 충실해집니다 — 채점에 기준이 함께 들어갔기 때문.
  • 채점기에 좋은 기준을 주는 것이 평가 품질을 크게 좌우합니다.
  • <criteria> 같은 XML 태그의 효과는 다음 섹션(프롬프트 엔지니어링)에서 다룹니다.

Q1이 실습에서 모델 채점을 개선한 방법은?

Q2solution_criteria는 어디서 처음 만들어지나요?

Q3기준을 <criteria> 태그로 감싼 이유에 가까운 것은?

MEMBER SESSION REQUIRED · REGISTRATION IS FREE

여기부터는 등록한 분에게 열립니다.

전 코스는 계속 무료입니다. 등록하면 이 코스의 남은 76개 레슨을 끝까지 읽을 수 있습니다.

등록하고 이어서 읽기

이미 등록하셨다면 그때 쓰신 이메일을 넣어 주세요.