프롬프트하지 말고, 프로그램하라

프롬프트하지 말고, 프로그램하라 (Program, don't prompt)

LLM으로 뭔가를 만들 때 흔히 프롬프트 문자열을 열심히 다듬게 되죠. DSPy는 그 접근을 뒤집어, 작업을 구조화된 입력·출력으로 선언하고 모듈 단위로 조립·최적화하는 선언적 방식으로 바꿔요. 이 페이지는 DSPy가 왜 "프롬프팅이 아니라 프로그래밍"인지, 그 철학을 가장 잘 보여주는 입문 페이지입니다.

출처: 공식문서

선언적으로 LLM 소프트웨어 만들기

DSPy는 LLM으로 빌드하는 선언적(declarative) 방법이에요.

우리는 작업을 구조화된 입력과 출력으로 기술해요. 그리고 여러 작업을 다단계 프로그램과 에이전트로 조합하기도 하는데, 이때 각 조각은 개별적으로 점검 가능하고, 교체 가능하며, 튜닝 가능한 상태로 유지됩니다. 프롬프트 구성, 컨텍스트 관리, 그리고 각 단계를 조정해 전체 프로그램을 개선하는 최적화까지 DSPy가 처리해요.

어떤 단계가 실제 세상과 상호작용해야 할 때(검색·가져오기·계산)는 도구를 평범한 Python 함수로 넘겨줘요. 함수는 또 메트릭으로도 쓰입니다. 출력을 평가하는 함수를 정의하면 DSPy가 그에 맞춰 더 나은 프로그램을 생성하지요. 옵티마이저는 어떤 모델을 골라도 그에 맞는 프롬프트를 튜닝하므로, 작고 저렴한 모델도 수작업으로 프롬프트한 최신 모델을 따라잡거나 능가할 수 있어요.

DSPy는 LLM을 프롬프트하는 대신 프로그래밍하게 도와줘서, 모듈식이고 유지보수 가능하며 최적화 가능한 AI 소프트웨어를 만듭니다.

오늘 배울 것들

이 튜토리얼에서는 네 줄의 Python으로 시작해 도구를 쓰고 프롬프트가 최적화된 에이전트로 성장하는 하이쿠 생성 프로그램을 만들어 봐요. 그 과정에서 DSPy의 핵심 구성 요소를 하나씩 다루게 됩니다. 배울 내용은 이렇습니다.

  • DSPy를 설치하고 언어 모델을 설정한 뒤, 간단한 DSPy 프로그램 작성하기.
  • 시그니처(Signature) 가 무엇인지, 왜 수작업 프롬프트 문자열 대신 시그니처를 쓰는지.
  • 모듈(Module) 이 무엇인지, Predict, ChainOfThought, ReAct가 어떻게 다르고 언제 써야 하는지.
  • 작업을 이름 붙은 독립 단계로 분해하는 커스텀 dspy.Module 조합하기.
  • 메트릭을 작성하고 옵티마이저로 더 나은 프로그램을 컴파일하는 법.
  • 최적화된 프로그램을 저장하고 다시 불러오는 법.

더 알아보기 (Learn more)