영어학원 선생님들은 학생들을 가르치는 일 외에도 해야 할 일이 많습니다.
이를테면 학생들의 시험에 출제할 영어 문제를 만드는 일처럼요.

학원 선생님들의 고충은 여기에 있었습니다. 시험문제를 만드는 일은 창의력과 상당한 시간을 요합니다. 문제의 유형에는 어느 정도 패턴이 있었지만 영어 지문이 매번 새롭게 달라지기 때문입니다. 문득, “이건 LLM이 잘하는 영역 아닌가?” 하는 생각이 들었고, 한번 선생님들을 지루한 반복 작업에서 벗어나게 해보자고 마음을 먹게 되었습니다.
기능은 단순했습니다. 영어 지문을 입력하면 다양한 유형별로 문제를 만들어내면 됩니다. 첫 MVP를 Codex로 3시간 만에 만들 수 있었고, 결과물도 꽤 그럴싸했습니다.
하지만 실제로 사용해보니, 현장에서 사용할 수 있는 수준은 아니었습니다.

그럴듯한 결과
LLM이 생성한 문제를 선생님들과 함께 검토해보니 여러 문제가 발견되더군요.
- 문제 유형이 일반적으로 기대하는 형태가 아니다.
- 요청한 학년에 비해 난이도가 지나치게 쉽다.
- 정답은 맞지만 학습할 가치가 낮은 표현이 출제된다.
- 문맥에 따라 복수의 정답이 가능하다.
하나하나 고쳐보기로 했습니다.
1. 문제 유형이 일반적으로 기대하는 형태가 아니다.
LLM은 '주제 찾기'와 같은 문제 유형이 무엇인지는 알고 있었습니다. 하지만 함께 문제를 검토한 선생님들은 정답보다 오답을 설계하는 데 더 많은 시간을 할애하고 있었습니다.
선생님들의 오답 설계 패턴은 존재합니다. 예를 들면 ‘주제 찾기’ 문제의 오답은 각각 다양한 이유로 틀려야 합니다.
1. 정답은 글 전체를 대표해야 한다.
2. 오답은 각각 다른 이유로 틀려야 한다.
- 세부 내용
- 없는 내용
- 지나친 일반화
- 키워드만 비슷한 문장
이런 규칙은 AI에게는 명시적으로 전달하지 않으면 원하는 기준으로 일관되게 적용하기 어려운 정보였습니다. 결국 선생님들의 오랜 기간 쌓아온 그 도메인 지식을 구조화하고, 그것을 하나의 템플릿으로 만들어 AI가 이해할 수 있도록 전달하는 과정이 필요했던 것이죠.
2. 요청한 학년에 비해 난이도가 너무 쉽다.
사실 '난이도’라는 추상적인 개념에 대해 LLM에게 어떻게 지시해야 할지 몰랐습니다.
당장 저조차도 고등학교 1학년과 3학년 문제의 차이점을 알지 못했으니, AI 역시 제가 바라는 '고1 수준’이 정확히 어떤 수준인지 알지 못했겠죠.
소통하던 선생님께 도움을 구해 학년별 기출문제들을 유형별로 받아와서 AI와 함께 분석해보았습니다. 그러니 일정 패턴이 보이더군요.
| 항목 | 고1 | 고3 |
|---|---|---|
| 수일치 | 주어와 동사가 가깝다. | 주어와 동사가 멀리 떨어져 있다. |
| 시제 | 시간 표현으로 쉽게 판단한다. | 문맥으로 시점을 추론한다. |
| 태 | 행위자와 대상이 명확하다. | 생략된 정보를 복원해야 한다. |
| 준동사 | 기본 용법을 묻는다. | 시점과 태를 함께 판단한다. |
| 관계사 | who / which를 구분한다. | 전치사와 관계사를 함께 판단한다. |
| 문장 구조 | 단순한 절 구조 | 절 안에 절이 포함된 복합 구조 |
| 병렬 | 요소가 가까이 있다. | 요소가 멀리 떨어져 있다. |
적어도 어법 문제에서는 어떤 문법 항목을 묻느냐보다, 문장 구조를 분석하고 문맥을 복원하는 과정의 복잡성이 난이도에 더 큰 영향을 주었습니다.
예를들면, 고1 문제는 주어(The students)와 동사(is)가 바로 이어져 있어 쉽게 판단할 수 있는 문제가 출제됩니다. 이 경우 주어가 복수형이니 are을 써야 맞겠죠.
The students is waiting outside.
반면에 고3 예시에서는 have가 적절한지 판단하기 위해 여러 수식어와 관계절을 제외하고, The increase가 실제 주어임을 찾아야 합니다.
The increase in online transactions, together with several unexpected policy changes that affected consumer behavior, have caused new security concerns.
3. 학습 가치가 낮은 표현이 출제된다.
난이도와 이어지는 내용입니다. 문법적으로 틀린 표현을 만드는 것 자체는 어렵지 않았습니다. 원문의 단어 하나를 바꾸거나 관사를 제거하기만 해도 어법 문제는 만들어집니다.
예를들면 아래 문장에서 book 앞에는 관사 a가 필요합니다.
She bought book at the store.
틀린 문장이지만, 고등학생이 문장 구조나 문맥을 분석할 필요 없이 관사 하나만 확인하면 정답을 찾을 수 있습니다. 문법적으로 틀렸다는 사실과 학생이 배울 수 있는 좋은 문제라는 것은 별개의 문제였던 것이죠.
처음에는 AI에게 원문을 변형해 틀린 표현을 만들라고만 지시했습니다. 그러자 AI는 수많은 후보 중에서 가장 쉽게 변형할 수 있는 표현을 선택하곤 했습니다. 단순히 관사를 제거하거나 단수형과 복수형을 바꾸는 식으로 말이죠
그래서 아래 목록처럼 출제 가능한 문법 항목을 제한했습니다.
- 주어와 동사의 수일치
- 관계대명사·관계부사의 선택과 구조
- 현재분사·과거분사의 능동과 수동
- 부정어·제한어구에 의한 도치
앞서 정리한 학년별 난이도 기준과 결합하니 이때부터 생성되는 문제의 품질이 꽤 좋아졌습니다.
4. 문맥에 따라 복수의 정답이 가능하다.
아무리 프롬프트를 정교하게 작성해도 LLM이 만든 문제는 정답의 유일성과 논리적 일관성을 보장하지 않았습니다. 생성된 문제를 다른 관점에서 다시 풀어보고, 같은 결론에 도달하는지 확인하는 과정이 필요했습니다.
그래서 3개의 검증 에이전트가 서로의 답과 생성기가 제시한 정답을 보지 않은 채, 별도의 호출로 문제를 풀도록 만들었습니다. 물론 세 에이전트가 같은 답을 냈다고 해서 정답이 보장되는 것은 아닙니다. 다만 서로 같은 결론에 도달하는지를 확인해서 명백한 논리적 충돌을 미리 걸러낼 수 있었습니다.
예를들면 검증 에이전트들에게는 아래와 같은 공통 수행 목표와 검증할 항목을 역할별로 주었습니다.
공통 수행 목표
- 생성기가 제시한 정답을 보지 않고 직접 문제를 풀 것
- 자신이 판단한 정답과 근거를 제시할 것
- 다른 선택지도 정답이 될 가능성이 있는지 확인할 것
역할별 검증 항목
| 역할 | 검증 항목 |
|---|---|
| 정답·선택지 검증 | 정답이 정확히 하나인지, 나머지 선택지가 명확한 오답인지 확인 |
| 근거·원문 검증 | 정답의 근거가 지문 안에 있는지, 원문의 의미가 훼손되지 않았는지 확인 |
| 난이도 검증 | 요청한 학년에 적절한지, 해당 학년에 필요한 사고 과정을 요구하는지 확인 |
마지막 판단은 선생님이
AI는 문제를 빠르게 만들고 검증하는 데 분명 도움이 됐습니다. 하지만 같은 학년이라도 학생의 수준이나 수업 진도에 따라 좋은 문제의 기준이 달라질 수 있습니다. 구조화하기 어려운 영역이 아직 분명히 존재하고, 이러한 부분은 선생님들의 판단이 필요합니다. 그렇기에 사람이 마지막에 승인하는 프로세스가 필요하다고 판단했습니다.
자동 검증에 실패한 문제도 실패 사유와 함께 선생님이 확인할 수 있도록 했습니다. 검증 결과가 사람의 판단을 대신하지 않도록 재생성 역시 선생님이 요청한 경우에만 수행했습니다.

좋은 문제를 계속 만들기 위해 필요한 것
기능이 동작하고 나니 다음으로 필요한 것은 서비스 운영 지표를 기록하는 것이었습니다.
시스템을 도입하는 것도, LLM을 사용하는 것도 전부 비용입니다. 학원을 운영하는 사람 입장에서는 이 비용을 무시할 수 없겠죠. 시스템은 아직 테스트 단계에 있기 때문에 최소한 토큰으로 발생한 비용이 선생님의 시간을 얼만큼 절약했는지 알 수 있도록 아래 데이터들을 기록해놨습니다.
(영어문제 생성기가 실제로 선생님의 업무 시간을 얼마나 줄였는지는 아직 확인이 필요합니다. 지금은 어느 정도의 승인율을 확보해야 비용 대비 효과가 생기는지 논의하고 있습니다.)
- 문제 하나를 생성하는 데 사용한 토큰
- 문제 하나를 생성하는 데 걸린 시간
- 생성된 문제의 검증 성공률
- 재생성 시도 횟수
- 최초 승인율
지금까지의 성과를 보여드린다면 솔직히 아직 만족스럽지 않습니다. 6월에 유형별 템플릿을 도입하고 검증 과정을 세분화하면서 문제당 토큰과 생성 시간은 늘었지만, 검증 성공률과 최초 승인율도 함께 높아졌습니다. 원인을 단정할 수는 없지만, 재생성 횟수가 줄어드는 방향은 확인할 수 있었습니다.
| 문제당 토큰 | 평균 소요시간 | 검증 성공률 | 재생성 시도횟수 | 최초 승인율 | |
|---|---|---|---|---|---|
| 2026.05 | 2428 | 4.2s | 21% | 3.9 | 12% |
| 2026.06 | 8247 | 7.4s | 58% | 2.1 | 38% |
AI보다 먼저 이해해야 했던 것

처음에는 비싼 모델과 최신 기법이 좋은 문제를 만들 수 있다고 생각했습니다. 그런데 지시가 명확하지 않으니 아무리 좋은 모델을 쓰더라도 개선되지 않더군요.
가장 중요했던 건 결국 실무자들이 현장에서 무슨 일을 하는지 아는 것 이었습니다.
어떻게 문제를 만들고 좋은 문제를 선별하는지, 그 판단 기준을 이해하고 나서야 비로소 AI에게 정확한 지시를 할 수 있었습니다. 제가 모호하게 요청하면 AI도 그럴싸하게 둘러대고, 제가 명확히 요청하는 만큼 퀄리티 높은 답변을 돌려줍니다. 이건 Anthropic도 공식적으로 강조하는 원칙이기도 합니다.

출처: Claude prompting best practices
AI라는 강력한 도구가 생겼지만 엔지니어의 본질적인 역할은 크게 변하지 않는 것 같습니다.
현장의 목소리에 귀 기울이며 아는 것과 모르는 것을 명확히 구분하고, 진짜 문제를 찾아내어 풀어내는 일 말이죠.
그런 엔지니어가 되는 것이 제가 앞으로 나아갈 방향이 아닐까 합니다.