DSPy는 LLM 애플리케이션을 프롬프트 문자열 묶음이 아니라 구조화된 Python 프로그램으로 작성하게 하는 프레임워크다. Signature로 입출력 계약을 정의하고, Module로 추론 단계를 조합하며, Optimizer로 프롬프트와 예시, 일부 경우 가중치까지 데이터 기반으로 개선한다.
핵심 개념
| 개념 | 설명 |
|---|---|
| Signature | 입력 필드와 출력 필드를 선언하는 작업 명세 |
| Module | Predict, ChainOfThought, ReAct 같은 재사용 추론 컴포넌트 |
| Optimizer | 개발 데이터와 평가 기준으로 프롬프트·데모 예시를 자동 탐색 |
| LM abstraction | OpenAI, Anthropic, 로컬 모델 등 백엔드를 교체 가능하게 연결 |
간단한 예시
import dspy
lm = dspy.LM("openai/gpt-5.4-nano")
dspy.configure(lm=lm)
class ExtractEvent(dspy.Signature):
email: str = dspy.InputField()
event_name: str = dspy.OutputField()
date: str = dspy.OutputField()
extract = dspy.Predict(ExtractEvent)
result = extract(email="Demo day is on July 9.")언제 쓰면 좋은가
- 프롬프트를 수동으로 계속 다듬는 대신 평가 데이터로 개선하고 싶을 때
- RAG, 분류, 추출, 에이전트 루프처럼 여러 LLM 호출이 결합된 시스템을 모듈화하고 싶을 때
- 모델 교체가 잦아도 작업 명세와 평가 기준을 유지하고 싶을 때
관련 문서
- rag — 검색 증강 생성 기술 개요
- llamaindex — 데이터를 LLM 앱과 연결하는 RAG 프레임워크
- haystack — 프로덕션 RAG와 에이전트 파이프라인 프레임워크
- prompt-tracking — AI 검색 시대의 프롬프트 모니터링 전략
참고 자료
- DSPy — 공식 문서
- stanfordnlp/dspy — GitHub 공식 저장소