프로그램하세요, 프롬프트하지 마세요
프로그램하세요, 프롬프트하지 마세요 (Program, don't prompt)
DSPy는 LLM으로 무언가를 "프롬프트하는" 대신 "프로그램하는" 방식으로 빌드하게 해 주는 도구예요. 오늘 강의에서는 이 철학이 실제로 어떻게 작동하는지, 네 줄짜리 파이썬 코드에서 시작해 도구를 쓰고 프롬프트가 최적화된 에이전트까지 자라나는 하이쿠 작성 프로그램을 함께 만들어 보면서 DSPy의 핵심 개념을 전부 만나볼게요.
출처: 문서
본문
DSPy는 LLM을 활용해 빌드하는 선언적(declarative) 방식이에요. 우리가 하려는 작업을 구조화된 입력과 출력으로 기술합니다. 그리고 여러 작업을 자주 다단계 프로그램과 에이전트로 조합하는데, 이때 각 조각은 독립적으로 검사하고, 교체하고, 튜닝할 수 있는 상태로 남아 있어요.
DSPy는 프롬프트 구성, 컨텍스트 관리, 그리고 각 단계를 튜닝해서 전체 프로그램을 개선하는 최적화를 처리해 줍니다. 어떤 단계가 세상과 상호작용해야 할 때(검색, 가져오기, 계산 등)는 그 단계에 평범한 파이썬 함수를 도구로 넘겨줘요.
함수는 메트릭(metric) 으로도 쓰여요. 출력물을 채점하는 함수를 하나 정의해 두면, DSPy가 그에 맞춰 더 나은 프로그램을 생성해 냅니다. 최적화기는 우리가 고른 어떤 모델이든 프롬프트를 튜닝해 주기 때문에, 작고 값싼 모델이 손으로 프롬프트를 짠 최첨단(frontier) 모델을 따라잡거나 이기는 일도 자주 생겨요.
정리하면, DSPy는 LLM을 "프롬프트"하는 대신 "프로그램"하게 도와줘서, 모듈화되고 유지보수 가능하며 최적화할 수 있는 AI 소프트웨어를 만들 수 있게 해 줍니다.
오늘 배울 것
이번 튜토리얼에서는 네 줄의 파이썬으로 시작해 도구를 쓰고 프롬프트가 최적화된 에이전트로 성장하는 하이쿠 작성 프로그램을 만들 거예요. 그 과정에서 DSPy의 핵심 구성 요소를 하나씩 짚어 보게 됩니다.
- DSPy 설치 방법, 언어 모델(LM) 설정 방법, 간단한 DSPy 프로그램 작성 방법
- **시그니처(Signature)**가 무엇이고, DSPy가 손으로 쓴 프롬프트 문자열 대신 시그니처를 쓰는 이유
- **모듈(Module)**이 무엇인지,
Predict·ChainOfThought·ReAct가 어떻게 다르고 각각 언제 사용하면 좋은지 - 작업을 이름 붙인 독립적인 단계들로 분해하는 커스텀
dspy.Module을 조합하는 방법 - 메트릭을 작성하고 최적화기(optimizer) 로 프로그램의 더 나은 버전을 컴파일하는 방법
- 최적화된 프로그램을 저장하고 다시 불러오는 방법
다음: DSPy 설정하기 →