APE: 모델이 프롬프트를 작성하고 점수를 매기고 선택하게 하라
요약
Automatic Prompt Engineer (APE)는 프롬프트 작성을 주관적인 반복 과정이 아닌 '검색' 문제로 정의합니다. 모델에게 후보 지침을 생성하게 하고, 이를 객관적으로 점수 매긴 후 최고의 것을 선택하는 방식입니다. 이 방법은 파인튜닝 없이도 인간 수준 이상의 성능을 보여주며, 반복적인 국소 탐색(local search)을 통해 최적의 프롬프트를 찾아냅니다.
핵심 포인트
- APE는 프롬프트 작성을 검색 문제로 접근합니다.
- 모델이 제안자(proposer)와 실행자(executor) 역할을 수행합니다.
- 객관적인 '실행 정확도'를 점수 매기는 핵심 지표로 사용합니다.
- 반복적 Monte-Carlo 단계를 통해 최적의 프롬프트를 개선할 수 있습니다.
좋은 프롬프트를 직접 손으로 작성하는 것은 추측에 가깝습니다. 어떤 표현을 시도해 보고, 몇 개의 출력을 대충 살펴본 다음, 단어를 수정하고 다시 실행하며, '적절하다'고 느껴질 때까지 반복합니다. 이 과정은 느리고 주관적이며, 우연히 생각해 낸 세네 가지 표현만을 탐색할 뿐입니다. Automatic Prompt Engineer (APE)는 이러한 과정을 버리고 프롬프트 작성을 **검색(search)**으로 간주합니다. 예시를 제공하고, 모델이 후보 지침을 생성하게 한 다음, 각각의 지침을 객관적으로 점수 매기고 최고의 것을 선택하는 방식입니다.
🔮 대화형 데모: https://dev48v.infy.uk/prompt/day33-ape.html
아이디어 (Zhou et al., 2022)
논문 _"Large Language Models Are Human-Level Prompt Engineers"_는 LLM을 사용하여 자체적으로 지침을 생성, 점수 매기기 및 선택하는 방식을 제안합니다. 이 우아한 부분은 모델이 한 번에 두 가지 역할을 수행한다는 것입니다. **제안자(proposer)**로서 몇 개의 입력→출력 예시를 읽고 후보 지침을 초안 작성합니다. **실행자(executor)**로서 각 후보 지침을 실행하여 실제로 얼마나 잘 작동하는지 측정합니다. 파인튜닝(fine-tuning)도, 그래디언트(gradients)도 필요 없습니다. 단지 지침을 샘플링하고 평가할 뿐입니다. 지침 유도 벤치마크에서 APE가 발견한 프롬프트는 인간이 작성한 것과 같거나 능가하는 성능을 보였습니다.
당신은 프롬프트를 작성하지 않는다 — 예시를 제공한다
APE는 오직 시연(demonstrations)으로만 정의된 작업에서 시작합니다. 예를 들어, 작업이
- '입력 단어의 반의어를 작성하라.'
- '단어의 반대말을 제시하라.'
- '단어의 의미를 역전시켜라.'
- '입력 단어와 관련된 단어를 출력하라.'
이것은 모델에게 예시로부터 작업을 역설계하도록 요구하는 것입니다.
2. 점수 매기기 (Score). 이것이 목적 함수입니다. 보유된(held-out) 모든 입력에 대해 각 후보를 실행하고 정확히 일치하는 횟수를 세어 '실행 정확도(execution accuracy)'를 계산합니다:
async function score(instruction, heldout) {
let correct = 0;
for (const ex of heldout) {
...
(모델이 올바른 출력에 할당하는 로그 확률(log-probability)은 다른 고전적인 점수 매기기 방식이며, 더 부드럽고 저렴합니다.) 이 과정에는 인간의 판단이 개입되지 않습니다.
3. 선택 (Select). 점수별로 정렬하여 가장 높은 것을 선택합니다. '입력 단어의 반의어를 작성하라'가 83%를 기록하며 승리하고, '입력 단어와 관련된 단어를 출력하라'는 17%까지 떨어집니다. 선택된 프롬프트는 읽기에 가장 우아한 것이 아니라 실질적으로 가장 잘 작동하는 것입니다.
우승자 근처에서 재표본 추출하기 (Resample near the winner)
한 라운드만으로는 최고점에 도달하는 경우가 드뭅니다. APE는 반복적인 Monte-Carlo 단계를 추가합니다: 현재 최고의 지침을 가져와 모델에게 의미적으로 유사한 변형들을 요청하고, 이들 역시 점수를 매겨 새로운 챔피언을 유지합니다. 이것은 이미 작동하는 것을 중심으로 하는 국소 탐색(local search)이며, 광범위한 첫 라운드에서는 결코 제시하지 못했던 더 날카로운 표현을 주기적으로 찾아냅니다:
round 1 winner: '입력 단어의 반의어를 작성하라.' 83%
resample near it → '단일 단어 반의어(정확한 반대말)를 입력 단어와 함께 작성하라.' 100%
여기에
두 가지 이유가 있다. 커버리지(Coverage) — 수십 개의 구문 작성을 시도하고 그 모든 것을 테스트하는 반면, 사람은 몇 개만 시도한다. 객관성(Objectivity) — 측정된 정확도를 기준으로 선택하기 때문에 우리를 속이는 직관적 함정에 면역이다. 권위 있게 들리는 구문이 항상 가장 높은 점수를 받는 것은 아니다. 유명한 결과가 있다: APE가 발견한 프롬프트(
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기