목록으로
DSPy
Service2025.11.23

DSPy

요약

DSPy는 프롬프트 엔지니어링 대신 코드로 모듈형 AI 소프트웨어를 구축하여 AI 프로그램을 효과적인 프롬프트 및 LM 가중치로 컴파일하는 선언적 프레임워크입니다.
️ 이 프레임워크는 Signature를 통해 LM의 입출력 동작을 정의하고 dspy.Predictdspy.ChainOfThought와 같은 모듈을 사용하여 다양한 AI 작업을 간결하게 표현합니다.
또한, MIPROv2BootstrapFinetune과 같은 옵티마이저를 활용하여 주어진 데이터와 메트릭에 따라 프로그램의 프롬프트와 LM 가중치를 자동으로 튜닝하여 AI 시스템의 성능과 신뢰성을 체계적으로 최적화합니다.

상세 내용

DSPy는 모듈화된 AI 소프트웨어를 구축하기 위한 선언적(declarative) 프레임워크입니다. 이는 기존의 취약한 문자열 기반의 프롬프트 엔지니어링 대신, 구조화된 코드 기반의 빠른 반복 개발을 가능하게 합니다. DSPy는 AI 프로그램을 언어 모델(LM)을 위한 효과적인 프롬프트와 가중치로 컴파일하는 알고리즘을 제공하며, 이를 통해 분류기, RAG 파이프라인, 에이전트 루프 등 다양한 AI 시스템을 구축할 수 있습니다.

핵심 방법론 및 세부 사항:

  • Programming (Modules):
  • DSPy는 LM 시스템 설계를 특정 LM이나 프롬프트 전략에 대한 세부적인 의존성으로부터 분리하여, interface (LM이 무엇을 해야 하는가)와 implementation (어떻게 LM에게 지시할 것인가)을 분리합니다. 이를 통해 신뢰할 수 있고 유지보수 및 이식성이 뛰어난 AI 소프트웨어를 구축합니다.

    * Signatures: AI 시스템의 각 구성 요소에 대해 입력/출력 동작을 정의하는 방식입니다. 예를 들어, "question>answer:float""question -> answer: float"와 같이 question을 입력받아 float 타입의 answer를 출력하도록 명시합니다. DSPy는 이 signature를 내부적으로 프롬프트로 확장하고, 타입이 지정된 출력을 파싱합니다.
    * Modules: dspy.Predict, dspy.ChainOfThought, dspy.ReAct 등 다양한 내장 module이 제공됩니다. 이 module들은 signature를 기반으로 LM을 호출하는 전략을 할당합니다. 사용자는 여러 module을 조합하여 복잡한 파이프라인(예: DraftArticle module)을 구축할 수 있으며, 이 과정에서 dspy.Module을 상속받아 커스텀 module을 정의할 수 있습니다.
    * LM Configuration: dspy.LM을 통해 OpenAI, Anthropic, Databricks, Gemini, Ollama 등의 다양한 LM 공급자를 통합된 API로 구성하고 사용할 수 있습니다. dspy.configure(lm=lm)dspy.configure(lm=lm)을 통해 전역적으로 설정됩니다. dspy.ColBERTv2와 같은 Retriever module도 함께 사용할 수 있습니다.

  • Optimization (Compiling/Learning):
  • DSPy는 고수준의 코드(자연어 주석 포함)를 LM의 구조와 메트릭에 맞게 정렬하는 저수준 계산, 프롬프트 또는 가중치 업데이트로 컴파일하는 도구를 제공합니다.

    * Optimizers: 주어진 작업의 대표적인 입력(trainset)과 시스템 출력 품질을 측정할 수 있는 metric을 사용하여 LM 프롬프트 또는 가중치를 튜닝합니다. 최적화 과정은 몇 십 또는 몇 백 개의 예제를 필요로 합니다.
    * 다양한 최적화 전략:
    * dspy.BootstrapRS: 모든 module에 대해 좋은 few-shot examples를 합성합니다.
    * dspy.GEPA, dspy.MIPROv2: 각 프롬프트에 대한 더 나은 자연어 지시를 제안하고 지능적으로 탐색합니다.
    * dspy.BootstrapFinetune: module을 위한 데이터셋을 구축하고 이를 사용하여 시스템 내 LM 가중치를 finetune합니다.
    * dspy.MIPROv2 상세 동작:
    * Bootstrapping Stage: 최적화되지 않은 프로그램을 여러 입력에 대해 실행하여 각 module의 입력/출력 동작 trace를 수집합니다. metric에 의해 높은 점수를 받은 궤적에 나타나는 trace만 필터링하여 유지합니다.
    * Grounded Proposal Stage: DSPy 프로그램의 코드, 데이터, 그리고 수집된 trace를 분석하여 프로그램 내 모든 프롬프트에 대한 잠재적인 instruction을 초안으로 작성합니다.
    * Discrete Search Stage: training set에서 mini-batch를 샘플링하고, 파이프라인 내 모든 프롬프트에 사용할 instructiontrace 조합을 제안합니다. 후보 프로그램을 mini-batch에서 평가하고, 이 점수를 사용하여 제안의 품질을 개선하는 surrogate model을 업데이트합니다.
    * Composability: DSPy optimizer는 조합이 가능합니다. 예를 들어, dspy.MIPROv2의 출력을 다시 dspy.MIPROv2 또는 dspy.BootstrapFinetune의 입력으로 사용하여 더 나은 결과를 얻을 수 있습니다. 이는 dspy.BetterTogether의 핵심이며, 최상위 candidate program을 추출하여 dspy.Ensemble을 구축하는 데 활용될 수도 있습니다.

    DSPy는 모듈화된 패러다임을 통해 compositional architecture, inference-time strategy, optimizer를 오픈 소스 방식으로 개선할 수 있도록 커뮤니티를 지원하며, 이를 통해 사용자는 더 큰 제어권과 빠른 반복을 통해 AI 프로그램을 지속적으로 발전시킬 수 있습니다.

    원본 보기
    Web
    Shared by Anonymous