dspy.COPRO
dspy.COPRO
dspy.COPRO는 자동 명령어 최적화(automatic instruction optimization) 계열의 옵티마이저예요. 이름은 Coordinate ascent PROmpt optimizer에서 왔고, 각 단계(predictor)에 새 명령어를 생성하고 다듬은 뒤, 좌표 상승(coordinate ascent) 으로 최적화해요. 좌표 상승은 메트릭 함수와 trainset을 쓰는 hill-climbing이에요.
프롬프트의 예시가 아니라 명령어 문구가 문제일 때, 즉 데모는 이미 괜찮은데 문구만 다듬으면 될 때 특히 잘 맞는 옵티마이저예요. 더 큰 형제인 MIPROv2가 명령어와 데모를 함께 탐색한다면, COPRO는 명령어 최적화에 집중하는 가벼운 선택이에요.
생성자 시그니처
dspy.COPRO(
prompt_model=None,
metric=None,
breadth=10,
depth=3,
init_temperature=1.4,
track_stats=False,
)
prompt_model: 명령어 후보를 생성하는 LM이에요. 지정하지 않으면 기본 설정을 따라요.metric: 각 프롬프트/프로그램을 채점하는 함수예요.breadth: 각 predictor마다 생성할 명령어 후보 개수예요.depth: 프롬프트 개선을 반복하는 단계(레벨) 수예요. 이 값이 곧 옵티마이저가 몇 번 반복할지 결정해요.init_temperature: 명령어 생성 초기 온도예요.
동작 방식
COPRO는 폭 우선(breadth-first) 제안자예요. depth개의 각 레벨에서 prompt_model로 predictor마다 breadth개의 후보 명령어를 생성하고, trainset에 대해 점수를 매긴 뒤 최고를 유지해요. 총 LM 비용은 대략 breadth × depth × num_predictors예요.
명령어 문구만 고치면 될 때 가볍고 효과적이에요. 데모가 이미 강한 상태에서 표현만 다듬고 싶을 때 특히 그렇죠.
언제 쓰나요?
- 프롬프트의 명령어 문구가 틀렸고, 예시(데모)는 괜찮아 보일 때
- 0-shot 프롬프트를 유지하고 싶을 때
- 가벼운(few LM calls) 명령어 최적화를 원할 때
GEPA처럼 메트릭의 텍스트 피드백을 읽지는 않아요. COPRO는 메트릭을 블랙박스 스칼라로 취급해서, 후보 A가 후보 B보다 높은 점수를 받았는지만 알아요. 피드백이 풍부한 메트릭이 없다면 같은 예산에서 GEPA보다 오히려 COPRO나 MIPROv2가 나은 결과를 낼 수도 있어요.