[DSPy] 02.처음 시작하기 :Programming—not prompting—Language Models

DSPy
Table of Contents

    LM 파이프라인 구축 및 최적화를 위한 DSPy 시작하는 방법을 안내합니다.

    Installation

    pip install dspy-ai

    또는 Google Colab에서 인트로 노트북을 열어보세요: https://colab.research.google.com/github/stanfordnlp/dspy/blob/main/intro.ipynb

    기본적으로 DSPy는 openai==0.28에 의존합니다. 그러나 openai>=1.0을 설치하면 라이브러리에서 이를 그대로 사용합니다. 두 가지 모두 지원됩니다.

    선택 사항인 Pinecone, Qdrant, ChromaDB, Marqo 또는 Milvus 검색 통합의 경우 아래 추가 항목을 포함하세요:

    INSTALLATION COMMAND

    No Extra:

    pip install dspy-ai

    Pinecone

    pip install "dspy-ai[pinecone]"

    Qdant

    pip install "dspy-ai[qdrant]"

    ChromaDB

    pip install "dspy-ai[chromadb]"

    Margo

    pip install "dspy-ai[marqo]"

    MongoDB

    pip install "dspy-ai[mongodb]"

    Weaviate

    pip install "dspy-ai[weaviate]"

    Milvus

    pip install "dspy-ai[milvus]"

    Minimal Working Example

    DSPy 라이브러리를 사용한 최소한의 작업 예제입니다.

    GSM8K 데이터 세트와 OpenAI GPT-3.5 터보 모델을 사용하여 DSPy 내에서 프롬프트 작업을 시뮬레이션합니다.

    • Setup

      1

    예제를 시작하기 전에 환경이 제대로 구성되어 있는지 확인해 보겠습니다. 필요한 모듈을 가져오고 언어 모델을 구성하는 것부터 시작하겠습니다:

    import dspy
    from dspy.datasets.gsm8k import GSM8K, gsm8k_metric
    
    # Set up the LM
    turbo = dspy.OpenAI(model='gpt-3.5-turbo-instruct', max_tokens=250)
    dspy.settings.configure(lm=turbo)
    
    # Load math questions from the GSM8K dataset
    gsm8k = GSM8K()
    gsm8k_trainset, gsm8k_devset = gsm8k.train[:10], gsm8k.dev[:10]

    gsm8k_trainset 및 gsm8k_devset 데이터 세트에는 각 예제마다 질문과 답변 필드가 있는 예제 목록이 포함되어 있습니다.

    • Define the Module

    환경이 설정되었으므로 ChainOfThought 모듈을 활용하여 단계별 추론을 수행하여 답을 생성하는 사용자 지정 프로그램을 정의해 보겠습니다:

    class CoT(dspy.Module):
    def init(self):
    super().init()
    self.prog = dspy.ChainOfThought("question -> answer")
    def forward(self, question):
        return self.prog(question=question)
    • Compile and Evaluate the Model

    간단한 프로그램이 준비되었으므로 이제 BootstrapFewShot 텔레프롬프터를 사용하여 컴파일해 보겠습니다:

    from dspy.teleprompt import BootstrapFewShot
    
    # Set up the optimizer: we want to "bootstrap" (i.e., self-generate) 4-shot examples of our CoT program.
    config = dict(max_bootstrapped_demos=4, max_labeled_demos=4)
    
    # Optimize! Use the `gsm8k_metric` here. In general, the metric is going to tell the optimizer how well it's doing.
    teleprompter = BootstrapFewShot(metric=gsm8k_metric, **config)
    optimized_cot = teleprompter.compile(CoT(), trainset=gsm8k_trainset)

    부트스트랩퓨샷은 최적화 텔레프롬프터가 아니므로 파이프라인의 단계(이 경우에는 연쇄 추론)에 대한 예제를 간단하게 만들고 검증하지만 메트릭을 최적화하지는 않습니다. BootstrapFewShotWithRandomSearch 및 MIPRO와 같은 다른 텔레프롬프터는 직접 최적화를 적용합니다.

    • Evaluate

    이제 컴파일된(최적화된) DSPy 프로그램이 생겼으니 개발 데이터세트에서 성능을 평가해 보겠습니다.

    from dspy.evaluate import Evaluate
    
    # Set up the evaluator, which can be used multiple times.
    evaluate = Evaluate(devset=gsm8k_devset, metric=gsm8k_metric, num_threads=4, display_progress=True, display_table=0)
    
    # Evaluate our `optimized_cot` program.
    evaluate(optimized_cot)
    • Inspect the Model’s History

    모델의 상호 작용을 더 깊이 이해하기 위해 모델의 이력을 검사하여 가장 최근 세대를 검토할 수 있습니다:

    turbo.inspect_history(n=1)

    이제 완성되었습니다! DSPy 라이브러리를 사용하여 작동하는 예제를 성공적으로 만들었습니다.

    이 예제에서는 환경을 설정하고, 사용자 지정 모듈을 정의하고, 모델을 컴파일하고, 제공된 데이터 세트와 텔레프롬프터 구성을 사용하여 성능을 엄격하게 평가하는 방법을 보여 줍니다.

    이 예제를 특정 사용 사례에 맞게 자유롭게 조정하고 확장하면서 DSPy의 광범위한 기능을 살펴보세요.

    방금 구축한 내용을 사용해보고 싶다면 optimized_cot(question=’Your Question Here’)를 실행하세요.

    1. ↩︎