
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’)를 실행하세요.