sy/dev
Study
9 min read

프롬프트 최적화 기법 비교 — APE · ProTeGi · MetaSPO · GEPA, 언제 무엇을 쓸까

자동 프롬프트 최적화의 4대 접근(APE / ProTeGi / MetaSPO / GEPA)을 한 자리에 두고, 알고리즘 패러다임·샘플 효율·전이 가능성·해석 가능성으로 비교한다. 마지막으로 실무에서 어떤 조합으로 묶어 쓰면 좋은지 정리.

들어가며

1편 MetaSPO2편 GEPA에서 두 가지 정반대 접근을 봤다.

  • MetaSPO — 메타러닝으로 전이 가능한 시스템 프롬프트
  • GEPA — 자연어 피드백으로 세밀하게 진화하는 프롬프트

이 글은 이 둘에 더해 더 오래된 두 baseline — APEProTeGi — 까지 한자리에 두고, 언제 무엇을 쓸지 정리한다.

4대 기법 한 줄 요약

기법핵심 아이디어출처
APELLM에게 "더 나은 프롬프트를 제안해줘" + 점수로 후보 선택Zhou et al., 2023
ProTeGi텍스트 그래디언트로 프롬프트 수정 (실패 케이스 → 자연어 비판 → 패치)Pryzant et al., 2023
MetaSPO시스템/유저 분리 + Bilevel 메타러닝 → 전이 가능한 시스템 프롬프트NeurIPS 2025
GEPA유전 알고리즘 + 파레토 + 반성적 변이 (자연어 피드백)arXiv 2507.19457

패러다임 차이 — 두 축으로 보기

두 가지 차원이 모든 차이를 설명한다.

축 1 — 보상 신호의 형태

  • 스칼라 점수 (APE) ↔ 자연어 진단 (ProTeGi, GEPA)

축 2 — 최적화의 단위

  • 단일 태스크 (APE, ProTeGi, GEPA) ↔ 태스크 집합 (MetaSPO)
                  단일 태스크          태스크 집합 (메타)
스칼라 점수      │   APE             │   (드물다)
자연어 진단      │   ProTeGi, GEPA   │   MetaSPO + GEPA 조합

MetaSPO는 축 2의 오른쪽을 차지하고, GEPA는 축 1의 아래쪽을 가장 강하게 차지한다. 둘은 서로 다른 차원을 푼다 — 그래서 합칠 수 있다.

상세 비교표

차원APEProTeGiMetaSPOGEPA
보상 신호점수텍스트 그래디언트점수(평균)자연어 피드백
탐색 전략후보 풀 + 선택Gradient-like 패치Beam SearchGenetic + Pareto
최적화 단위단일 태스크단일 태스크태스크 집합단일 태스크 (모듈별)
전이 가능성⭐⭐⭐⭐⭐⭐⭐
샘플 효율⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
해석 가능성⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
다목적 최적화△(단일 메타스코어)✓ Pareto
모듈성⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
프로덕션 준비도높음 (간단)중간낮음 (연구)높음 (DSPy)

알고리즘 직관 — 한 그림

┌──────────────────────────────────────────────────────────────────┐
│ APE — "후보 만들고 점수 매기고 골라라"                              │
│   Generate N candidates → Evaluate → Pick best                  │
└──────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│ ProTeGi — "실패 케이스로 텍스트 그래디언트 만들어 패치"               │
│   Failures → LLM critique (gradient-like) → Apply patch          │
└──────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│ MetaSPO — "Bilevel: 안쪽은 유저, 바깥쪽은 시스템 프롬프트"           │
│   Outer: System prompt → Meta-Score (avg across tasks)          │
│   Inner: User prompt per task (Beam Search)                     │
└──────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│ GEPA — "유전 + 파레토 + 자연어 반성"                                │
│   Population → Evaluate w/ feedback → Pareto select →           │
│   Reflective mutation + System-aware crossover                  │
└──────────────────────────────────────────────────────────────────┘

의사 결정 — 어떤 상황에 무엇을

선택 가이드 (실무):

  • 빠르게 한 태스크에 적용 → APE (가장 간단)
  • 실패 케이스가 명확하고 패치하고 싶다 → ProTeGi
  • 여러 도메인/태스크에 전이 필요 → MetaSPO
  • 다목적 + 해석 가능 + 샘플 효율 → GEPA (DSPy 환경이면 더더욱)
  • 여러 도메인 + 모듈별 세밀 조정 → MetaSPO + GEPA 조합

시나리오별 권장

시나리오1순위2순위
단일 태스크 빠른 시작APEProTeGi
신규 도메인 부트스트랩MetaSPO 시스템 프롬프트 → ProTeGi 미세MetaSPO 단독
RAG 파이프라인 모듈 최적화GEPA (모듈별)ProTeGi
다목적 (정확도+근거성+비용)GEPA Pareto
다중 도메인 + 모듈 튜닝MetaSPO 시스템 → GEPA 모듈GEPA 단독
해석 가능성 우선GEPAProTeGi
비용 제약 (소형 budget)GEPA (35× 적은 샘플)MetaSPO 재사용

시너지 — MetaSPO + GEPA 결합

두 알고리즘은 정확히 보완적이다.

  • MetaSPO는 어떤 태스크에도 잘 통하는 시스템 프롬프트를 준다 → 출발점이 좋음
  • GEPA는 그 시스템 프롬프트 위에서 모듈별로 진화세밀 조정

권장 파이프라인

Phase 1: MetaSPO로 도메인 가족(Family) 학습
  Input:  여러 태스크 (Amazon-* 또는 Med-* 등)
  Output: 전이 가능한 시스템 프롬프트 S*

Phase 2: GEPA로 신규 태스크에서 모듈별 진화
  Initial: S* (MetaSPO 결과를 시스템 프롬프트로 주입)
  Optimize: Query / Retrieval / Generation 모듈 각각
  Feedback: 자연어 진단으로 진화

통합 피드백 루프 — 의사코드

def unified_feedback(prediction, expected, context):
    """MetaSPO 식 정량 + GEPA 식 정성 결합"""
    accuracy = score(prediction, expected)
 
    if accuracy < 0.8:
        diagnosis = analyze_failure(prediction, expected, context)
        # "Answer missed key entity 'Paris'.
        #  Retrieval returned irrelevant docs.
        #  Suggest: Improve query expansion."
    else:
        diagnosis = "OK"
 
    return {"score": accuracy, "feedback": diagnosis}

이 함수를 GEPA의 평가 함수로 쓰면 점수와 자연어 피드백 둘 다 활용 가능. 메타-스코어로 시스템 프롬프트를 고르고, 자연어 피드백으로 모듈 변이.

실무 도입 우선순위

처음부터 4종을 다 도입하면 부담스럽다. 단계화한다면:

  1. 즉시 — DSPy + GEPA. 모듈성·해석 가능성·샘플 효율 모두 합리적.
  2. 단기 — 도메인 가족이 늘어나기 시작하면 MetaSPO 도입. 시스템 프롬프트 부트스트랩 용도.
  3. 중기 — APE/ProTeGi는 단순 백업 또는 비-DSPy 환경에서. 굳이 메인으로 갈 이유는 약하다.
  4. 장기 — 통합 평가 함수(unified_feedback)와 자체 운영 데이터로 지속 개선 루프.

정리 — 한 줄로

APE/ProTeGi는 옛 paradigm — 점수 vs 자연어. MetaSPO/GEPA는 새 paradigm — 메타러닝 vs 진화.
실무에선 둘을 조합해 쓰는 게 가장 실용적이다.

각 기법은 서로 다른 차원을 푼다. 같은 자리에서 경쟁하는 게 아니다. 그래서 교체가 아니라 조합이 답이다 — MetaSPO가 출발점, GEPA가 미세조정.

참고 자료

  • 1편: MetaSPO 리뷰
  • 2편: GEPA 리뷰
  • APE: Zhou et al., Large Language Models Are Human-Level Prompt Engineers, ICLR 2023
  • ProTeGi: Pryzant et al., Automatic Prompt Optimization with "Gradient Descent" and Beam Search, EMNLP 2023
  • DSPy 공식: dspy.ai

Comments