지금까지 주문 읽기 AI한테 시험 내는 이야기를 썼다.
읽은 분들 중에 이런 생각이 들었을 것이다. "제 건 주문이 아니라 회의록 요약인데요." "저는 메일 분류를 시키는데요."
좋은 소식 — 시험지는 훔쳐가라고 만드는 것이다. 바꿀 건 두 가지뿐이다. 대조할 데이터(내 경우 상품 목록)와 최악의 사고(내 경우 엉뚱한 물건이 실려 나가는 것). 순서대로 가자.
시험 문제를 만들기 전에, 이것부터 쓴다.
이 AI가 틀렸을 때 벌어지는 일 중, 되돌릴 수 없는 것은 무엇인가.
내 주문 프로그램에선 "엉뚱한 물건이 트럭에 실리는 것"이었다. 당신 것에서는 뭔가. 몇 가지 예를 들면 —
메일 자동 회신 AI 잘못된 답이 고객에게 발송됨. 발송은 취소가 안 된다
회의록 요약 AI 결정 안 된 걸 "결정됨"으로 적음. 그대로 공유되면 일이 진행된다
조사·리서치 AI 지어낸 수치가 보고서에 들어감. 보고서는 위로 올라간다
데이터 정리 AI 원본을 덮어씀. 백업 없으면 끝
공통점이 보일 것이다. "나갔다 / 지워졌다 / 윗선에 올라갔다"는 못 되돌린다. 이게 당신의 트럭이다.
최악을 적었으면 등급은 자동으로 나온다. 기준은 하나 — 되돌릴 수 있는가.
치명 되돌릴 수 없다 발송됨, 삭제됨, 보고됨, 결제됨
위험 애매한 걸 확정했다 이번엔 맞았어도 다음엔 치명
누락 놓쳤다 사람이 발견할 수 있다
무해 "확인해 주세요" 남발 느려질 뿐이다
이 표에서 당신이 정할 건 첫 줄뿐이다. 나머지 세 줄은 어느 프로젝트든 같다.
그리고 원칙도 그대로 가져가면 된다. 틀린 확정이, 확정 못 한 것보다 나쁘다.
시험 문제는 정상 케이스가 아니라 함정에서 나온다. 함정의 종류는 네 가지고, 어느 도메인에나 있다.
헷갈리는 쌍 — 내 경우엔 투명테이프 48mm와 60mm였다. 회의록이면 "홍길동 대리와 홍길동 과장", 메일이면 "회신과 전달". 당신 데이터에서 비슷해서 헷갈리는 쌍을 찾아 일부러 둘 다 넣어라.
그럴듯한 비대상 — "택배박스 250 규격이 어떻게 되나요?"는 상품명이 있지만 주문이 아니다. 회의록이면 "그건 다음에 정하시죠"(결정 아님), 메일이면 광고 메일(회신 대상 아님). AI가 잡아야 할 것과 생김새만 같은 것을 넣어라.
말 바꾸기 — "5박스 주세요, 아 아니다 3박스로". 회의록이면 "A로 갑시다 → 아니 그래도 B가 낫겠다". 앞부분만 읽으면 틀리는 문제다.
배운 다음의 사고 — 학습·기억 기능이 있다면 반드시. 학습된 값을 새 정보가 이겨야 하는 상황("테이프 60"), 학습이 있어도 판단을 바꾸면 안 되는 상황(질문은 질문).
몇 개나 만드냐면, 기준은 개수가 아니라 1단계에서 적은 사고 목록이다. 사고 유형 하나마다 그 사고를 일으켜볼 문제를 최소 하나씩 만든다. 내 목록으로 예를 들면 이렇다.
문의를 주문으로 오인해 안 시킨 물건이 나감 → "택배박스 250 규격이 어떻게 되나요?"
취소·변경을 새 주문으로 오인해 두 번 나감 → "5박스 주문했는데 3박스만 보내주세요"
단위를 오해해 수량이 50배로 나감 → "250 5"
사고 목록이 다섯 줄이면 문제도 최소 다섯 개다. 나는 사고마다 변형을 더 넣다 보니 29개가 됐지만, 시작은 10개면 충분하다.
잘 되는 경우(정상 케이스)는 마지막에 몇 개만 넣는다. AI는 쉬운 문제를 거의 안 틀려서, 정상 문제는 늘려봤자 잡아내는 게 없다. 시험의 목적은 잘하나 보기가 아니라 어디서 사고 나나 찾기다.
문제마다 기대하는 답을 적는다. 여기서 이 시리즈 1편의 교훈이 온다.
당신의 정답지가 틀릴 것이다. 나는 정답지에서 세 번, 채점기에서 두 번 틀렸다.
그래서 규칙 세 개만 지켜라.
세 번째 규칙을 예로 들면 — "테이프 60 2박스"는 목록에 60mm가 있으니 답이 정해지는 문제다. 이런 문제에서 AI가 다른 답을 내면 AI가 틀린 것이니 정답지를 안 고친다. "투명테이프 2박스"는 폭이 없어서 답이 안 정해지는 문제다. 이런 문제의 정답은 처음부터 "확인 필요"여야 하고, 내가 다른 걸 적어놨다면 정답지 쪽이 틀린 것이다.
이 방식은 1편에 댓글을 준 독자 한 분이 알려줬다. 표시를 붙이려면 문제마다 자료를 열어봐야 하니, 정답지 실수를 출제 단계에서 미리 잡는 효과가 덤으로 따라온다.
채점은 등급으로 센다. 그리고 AI 답안 원본은 파일로 저장해라. 채점 기준은 계속 바뀌는데, 원본이 있으면 AI를 다시 부르지 않고 재채점할 수 있다.
다 통과했으면 마지막으로 세 줄 장부를 쓴다. 시험이 보증하는 것과 못 하는 것을 스스로에게 정직하게 적는 것이다.
확인했다 사고 유형마다 문제를 냈고 치명 0건이었다
확인 못 했다 실전 데이터는 아직 안 넣어봤다. 시험 문장은 전부 내가 지어냈다
막아놨다 시험에 없던 상황이 와도, 확신이 없으면 확정하지 않고 사람한테 넘기게 만들었다
내놓는 근거는 첫째 줄이 아니라 첫째 줄과 셋째 줄의 조합이다. 시험 점수가 보증하는 건 내가 상상한 범위까지고(둘째 줄이 그 고백이다), 상상 밖의 문장은 셋째 줄의 안전장치가 받친다. 셋째 줄이 없으면 시험 점수는 그냥 숫자다 — 상상 못 한 첫 문장에서 바로 사고가 난다.
시험지는 훔쳐가도 된다. 정답지는 당신이 써야 한다.
그리고 그 정답지가 틀릴 것이다. 그걸 잡는 게 시험이다.
덧. 이 구조 그대로 돌아가는 테스트 러너·채점기 코드는 통째로 공개해뒀다 → github.com/ramses203/llm-test-harness
덧2. 새 실험이 끝날 때마다 메일로도 보냅니다 → AI 검증 노트