Stanford NLP Groupが開発した宣言型LLMプログラミングフレームワーク。手動プロンプトエンジニアリングを排除し、入出力の型定義と評価メトリクスに基づいてプロンプトやFew-Shot例を自動最適化する。
DSPyとは、Stanford NLP Groupが2023年に公開した宣言型のLLMプログラミングフレームワークである。従来のプロンプトエンジニアリング(手動でプロンプトを調整する作業)を排除し、プログラマが入出力の型(Signature)と評価関数(Metric)を定義するだけで、フレームワークが最適なプロンプト・Few-Shot例・パイプライン構成を自動探索する。2026年6月時点でGitHub Stars 22,000超、PyPIダウンロード月間80万。
| 項目 | 手動プロンプトエンジニアリング | LangChain | DSPy |
|---|---|---|---|
| プロンプト記述 | 手動(試行錯誤) | テンプレート | 自動生成 |
| Few-Shot例選択 | 手動 | 手動 | 自動最適化 |
| モデル変更時 | プロンプト書き直し | テンプレート調整 | 再コンパイルのみ |
| 品質保証 | 目視確認 | ユニットテスト | メトリクスベース自動評価 |
| 再現性 | 低い | 中 | 高い |
DSPyの最大の利点は「モデルを変更してもプロンプトを書き直す必要がない」点である。GPT-4oからClaude 4 Sonnetに切り替える場合、DSPyはメトリクスに基づいて新モデル向けに自動再最適化する。
入出力の型定義。Pythonの型ヒントに似た宣言的記法でモジュールのインタフェースを定義する。
例: "question -> answer" は質問を入力として回答を生成するシグネチャ。"context, question -> reasoning, answer" のように複数入出力も可能。
Signatureを実装する処理単位。PyTorchのnn.Moduleに着想を得た設計で、以下の組み込みモジュールが提供される。
| モジュール | 機能 |
|---|---|
| dspy.Predict | 基本的なLLM呼び出し |
| dspy.ChainOfThought | CoT推論付き生成 |
| dspy.ReAct | ツール使用エージェント |
| dspy.ProgramOfThought | コード生成→実行→回答 |
| dspy.MultiChainComparison | 複数推論チェーンの比較選択 |
| dspy.Retrieve | 検索(RAG統合) |
モジュールのパラメータ(プロンプト・Few-Shot例・命令文)を自動最適化するコンパイラ。
| オプティマイザ | 手法 | 適用場面 |
|---|---|---|
| BootstrapFewShot | 成功例からFew-Shot自動選択 | 小〜中規模データ |
| BootstrapFewShotWithRandomSearch | ランダム探索+Few-Shot | 探索空間が広い場合 |
| MIPRO | 命令文の自動生成・最適化 | プロンプト全体の最適化 |
| MIPROv2 | MIPRO改良版、効率向上 | 2025年以降推奨 |
| BootstrapFinetune | Fine-tuning用データ生成 | 小モデルへの蒸留 |
最適化の目標関数。正解ラベル付きの評価データセットに対して、生成結果の品質を0〜1のスコアで定量化する。完全一致・F1スコア・BERTScore・LLM-as-Judge等を利用可能。
DSPy公式の報告によると、手動プロンプトエンジニアリングと比較して以下の改善が確認されている。
| タスク | 手動プロンプト | DSPy最適化後 | 改善率 |
|---|---|---|---|
| HotPotQA (RAG) | 38.2% EM | 51.4% EM | +34.6% |
| GSM8K (数学) | 72.5% | 84.1% | +16.0% |
| FEVER (事実検証) | 67.8% | 78.3% | +15.5% |
max_bootstrapped_demosとnum_trialsで制御dspy.inspect_history()で中間ステップを確認可能Q1: DSPyは少量データでも効果がありますか? A: BootstrapFewShotは10〜30件程度でも改善効果がある。ただし、MIPROv2のようなプロンプト全体最適化には50件以上推奨。データが少ない場合はLLM-as-Judgeでの合成評価データ生成を検討する。
Q2: DSPyとLangChainは併用できますか?
A: 可能。DSPyでLLM呼び出し部分を最適化し、LangChainのRetriever・Tool統合と組み合わせる構成が一般的。dspy.LangChainModuleアダプタも提供されている。
Q3: DSPyで最適化したプロンプトを別のモデルに適用できますか? A: 推奨しない。DSPyの最適化結果はモデル固有のものであり、GPT-4o向けに最適化したプロンプトをClaude 4で使うとパフォーマンスが低下する。モデル変更時は再コンパイル(再最適化)を推奨する。