GitHub - stanfordnlp/dspy: DSPy: The framework for programming—not prompting—language models
Service

GitHub - stanfordnlp/dspy: DSPy: The framework for programming—not prompting—language models

stanfordnlp
2026.05.17
·GitHub·by Leon
#Agent#DSPy#LLM#Python#RAG

핵심 포인트

  • 1DSPy는 brittle한 prompting 대신 compositional Python 코드를 사용하여 Foundation Model을 프로그래밍하는 프레임워크입니다.
  • 2이는 LM의 prompts와 weights를 최적화하여 AI 시스템 구축을 가속화하며, 선언적인 LM 호출을 self-improving pipeline으로 compile합니다.
  • 3DSPy는 간단한 분류기부터 복잡한 RAG pipeline 및 Agent loop에 이르기까지 다양한 AI 애플리케이션에 적용될 수 있습니다.

DSPy는 "prompting"이 아닌 "programming" 방식으로 Foundation Models을 다루기 위한 프레임워크입니다. 이 프레임워크는 모듈형 AI 시스템을 빠르게 구축하고 반복 작업을 수행할 수 있게 하며, 간단한 Classifier부터 복잡한 RAG pipelines 또는 Agent loops에 이르기까지 다양한 애플리케이션을 위해 Language Model (LM)의 prompts와 weights를 최적화하는 알고리즘을 제공합니다. DSPy는 Declarative Self-improving Python의 약자로, 기존의 취약한 prompts 대신 조합 가능한(compositional) Python 코드를 작성하여 LM이 고품질의 출력을 제공하도록 "가르치는" 것을 목표로 합니다.

핵심 방법론 (Core Methodology):

DSPy의 핵심은 선언적인 LM 호출을 자체 개선(Self-improving) 파이프라인으로 "컴파일"하는 것입니다. 전통적인 LM 개발 방식에서는 개발자가 특정 작업에 맞는 prompts를 수동으로 신중하게 설계하고 조정해야 했습니다. 이러한 수동 프롬프트 엔지니어링은 시간 소모적이고, 복잡하며, 작은 변화에도 성능이 크게 저하될 수 있는(brittle) 한계를 가집니다.

DSPy는 이러한 문제를 해결하기 위해 다음과 같은 접근 방식을 취합니다:

  1. Declarative Programming: 사용자는 직접 prompts를 작성하는 대신, 원하는 LM 프로그램의 논리적 흐름과 구성 요소를 Python 코드로 선언합니다. 예를 들어, 텍스트 분류나 질문 답변과 같은 고수준의 작업을 추상화된 모듈로 정의합니다. 이러한 모듈은 내부적으로 LM 호출을 포함하지만, 개발자는 이 호출에 사용될 prompts의 구체적인 내용에 대해 직접적인 제어를 하지 않습니다. 대신, "이 모듈은 이러한 입력이 주어졌을 때 이러한 종류의 출력을 생성해야 한다"는 의도를 선언합니다.
  1. Algorithmic Optimization: DSPy는 선언된 프로그램과 주어진 데이터셋(또는 태스크 정의)을 기반으로, LM의 성능을 최대화하기 위해 내부적으로 사용되는 prompts와 LM의 weights(필요한 경우 Fine-tuning을 통해)를 자동으로 최적화하는 알고리즘을 적용합니다. 이 과정은 다음과 같은 연구에서 파생된 기술들을 포함합니다:
    • Prompt Evolution/Optimization: GEPA (Generative Prompt Augmentation)와 같은 기술을 통해 prompts를 진화시키고 최적화하여 특정 작업에 가장 효과적인 지시문(instructions)과 시연(demonstrations)을 찾아냅니다. prompts는 더 이상 고정된 문자열이 아니라, 자동적으로 튜닝되는 학습 가능한 "hyperparameters"로 간주됩니다.
    • Fine-Tuning Integration: prompts 최적화와 함께 LM의 weights를 Fine-tuning하는 전략을 통합하여 두 가지 최적화 기법의 시너지를 활용합니다.
    • Computational Constraints (Assertions): DSPy Assertions를 통해 LM 출력에 대한 계산적 제약 조건(예: 출력 형식, 특정 키워드 포함 여부 등)을 명시할 수 있으며, 이는 LM이 스스로 개선하고 정제하는(Self-refining) 과정에 활용됩니다. LM이 이러한 제약 조건을 위반할 경우, DSPy는 내부 prompts나 모델 설정을 조정하여 다음 시도에서 더 나은 결과를 얻도록 학습합니다.
    • Demonstrate-Search-Predict (DSP): Retrieval과 Language Models을 결합하여 지식 집약적인 NLP 작업을 수행하는 기반 연구 중 하나로, 복잡한 파이프라인 구성 및 최적화에 기여합니다.

이러한 방법론을 통해 DSPy는 개발자가 LM 프로그램의 고수준 논리에 집중할 수 있도록 하며, 세부적인 prompt 엔지니어링의 부담을 덜어줍니다. 대신 DSPy 런타임이 LM이 특정 작업을 수행하는 데 필요한 최적의 내부 표현(prompts 및 weights)을 자동으로 "컴파일"하고 학습함으로써, 견고하고 고성능의 AI 시스템 구축을 가능하게 합니다.