AI한테 시험 문제를 내게 했다. 0번 틀렸는데 시험지로 못 쓴다

John Green·2일 전

AI 검증

목록 보기
9/11

1편에서 시험지 29문제를 만들며 내가 다섯 번 틀렸다는 이야기를 썼다. 정답지에서 세 번, 채점기에서 두 번. 그 뒤로 계속 궁금했다. 출제를 AI한테 시키면 몇 번 틀릴까.

세보았다.

실험 — 출제자 AI에게 50문제를 주문했다

하멜의 검증 교과서(Your AI Product Needs Evals)에는 시험 문제를 늘리는 방법이 나온다. 기능을 시나리오로 쪼갠 다음, 입력 문장은 AI로 대량 생성하라는 것. 8편의 채점관 실험에 이어 이 조각도 실증해보기로 했다.

출제자 AI(Sonnet 5)에게 세 가지를 줬다.

  • 상품 목록 50개 — 시험의 대조 자료
  • 함정 유형 목록 — 규격 미지정, 단위 없음, 비슷한 상품 혼동, 말 바꾸기
  • 문제마다 정답지를 함께 쓸 것. "자료만으로 답이 정해지는 문제인지" 표시(7편의 꼬리표)까지

한 번에 5문제씩 열 번을 시켜 50문제를 받았다.

검수는 세 겹으로 했다.

1겹  코드 검사    없는 품목코드를 썼나, 꼬리표가 정답과 모순되나
2겹  AI 검수관    문제마다 "이 정답이 자료 기준으로 옳은가"
3겹  사람(나)     50문제 전수 재검토

3겹을 넣은 데는 사연이 있다. 처음 설계에는 2겹까지만 있었는데, 돌리고 나서야 알아차렸다 — 출제도 Sonnet, 검수도 Sonnet이었다. 8편에 "자기 답안은 채점시키지 마라"라고 써놓고 같은 실수를 한 것이다. 그래서 50문제를 전부 직접 다시 봤다.

결과 — 0번 틀렸다

구조 실수 (없는 품목코드, 꼬리표 모순)     0건
정답지 실수 (검수 세 겹 전부)             0건

사람 출제자인 나는 29문제에서 정답지를 세 번 틀렸다. AI 출제자는 50문제에서 한 번도 안 틀렸다. 규격이 명시된 주문은 코드와 수량이 전부 정확했고, 특정할 수 없는 문제는 정확히 「확인 필요」에 후보를 붙여 넘겼고, 꼬리표 50개가 전부 정답 내용과 일치했다.

문제의 질도 나쁘지 않았다. 예를 들어 이 문제 —

사장님 우체국박스 3박스만 보내주세요~ 사이즈는 저번이랑 똑같이 해주심 돼요!

"저번이랑 똑같이"라는 가짜 힌트까지 심어놨다. 과거 이력 자료가 없으니 자료만으로는 특정할 수 없고, 정답은 「확인 필요」에 우체국박스 후보 세 개. 정확하다. 내 원본 시험지의 함정("저번에 시킨 그거")을, 시키지도 않았는데 스스로 재발명한 것이다.

여기까지만 보면 결론은 "출제도 AI한테 맡기자"다.

반전 — 그런데 이 50문제로는 시험을 못 본다

50문제에 틀린 곳은 없다. 대신 나란히 놓고 보면 다른 게 보인다.

첫째, 구성이 그대로 복사됐다. 출제를 시킬 때 나는 "5문제마다 정상 1개, 비주문 1개, 변경취소 1개, 함정 2개를 섞어라"라고 지시했다. 열 번을 시켰으니 지시대로면 정상 10, 비주문 10, 변경취소 10, 함정 20이 된다. 받아 보니 정확히 그 숫자였다. 함정 20개도 규격 미지정 10개, 말 바꾸기 10개로 반듯하게 갈라져 있었다. 사람이 만들었다면 하다가 "이런 것도 넣어야 하지 않나" 하며 삐져나간 문제가 생겼을 텐데, 그런 문제가 하나도 없다.

둘째, 재료가 반복된다. 확정 정답에 나온 상품을 세보니 택배박스 A형 300 하나가 12번 등장한다. 상품 50개를 줬는데 마음에 드는 몇 개만 돌려쓴 것이다.

셋째, 안 시킨 유형은 끝까지 안 나온다. 내 원본 시험지 29문제에는 극단 축약("250 5"), 오타 범벅("택베박스"), 학습이 쌓인 뒤의 문제, 맞춤제작 문의가 있었다. 이번 50문제에는 이 유형이 하나도 없다. 이유는 단순하다. 내가 프롬프트에 안 적었기 때문이다.

세 가지를 합치면 이렇게 된다. AI 출제자는 틀리지 않는다. 대신 시킨 것만 낸다.

거꾸로 사람인 나를 보자. 나는 시험지를 만들며 다섯 번 틀렸다. 하지만 그 과정은 함정을 발명하는 과정이기도 했다. 투명테이프를 일부러 두 종류 넣어봤고, "250 5" 같은 문장을 지어봤고, 학습된 뒤에 생길 사고를 상상해봤다. 만들다 틀린 다섯 번은 그 발명을 하는 동안 낸 수업료였던 셈이다.

그래서 출제는 이렇게 나눈다

7편에서 "사고 목록이 문제 수를 정한다"고 썼다. 이번 실험이 그 말의 뒷면을 보여줬다.

사고 유형을 발명하는 일    사람 몫.  도메인을 겪어야 나온다
유형별로 문제를 찍는 일    AI 몫.   사람보다 정확하고 지치지 않는다

29문제를 혼자 만들 때는 이 둘이 한 덩어리였다. 갈라놓고 보니 시험지 만들기의 병목은 문제 수가 아니라 사고 목록의 길이다. 유형 하나를 새로 발견하면, 그 유형의 문제 열 개는 AI가 5분 만에 찍어준다.

정직한 단서

  • 상품 목록 50개가 깔끔해서 0실수였을 수 있다. 실전의 지저분한 자료(같은 상품이 이름만 다르게 세 번 등록돼 있는)에서도 그럴지는 아직 모른다
  • "시킨 것만 낸다"는 프롬프트에 유형을 더 적어주면 어느 정도 풀릴 것이다. 다만 그 "더 적어줄 유형"을 아는 것이 결국 사람 몫이라는 점은 그대로다

정리

  1. 문제 양산은 AI에게 맡겨라. 정답지까지 시켜도 사람보다 정확했다
  2. 단, 검수는 출제자와 다른 모델이나 사람이 한다. 출제자와 검수자가 같으면 검수가 아니다
  3. 함정 유형의 발명은 여전히 사람 몫이다. 시험지를 만들다 겪는 실수가 바로 그 발명 과정이다

덧. 출제 스크립트(gen_cases.py)도 저장소에 올려뒀다 → github.com/ramses203/llm-test-harness

덧2. 새 실험이 끝날 때마다 메일로도 보냅니다 → AI 검증 노트

profile
AI 결과를 믿어도 되는지 확인하는 방법을 씁니다

0개의 댓글