mcpField
D
dspy

dspy

github.com/magnus919エージェントワークフロー16160 回インストール1 日前に更新
リポジトリ

dspy について

dspy は、Python、型付きシグネチャ、評価指標を使って LLM プログラムを構築・最適化する開発者向けスキルです。チェーンによる構成ではなく、プロンプトをコンパイルして調整する方法を解説します。

主な機能

  1. 01型付きシグネチャによるタスク定義
  2. 02予測・推論・ツール利用モジュールの構成
  3. 03指標に基づくプロンプト最適化
  4. 04プログラムの評価・保存・読み込み
  5. 05RAG と複数段階プログラムの参照例

活用シーン

  1. 01既存プロンプトを最適化可能なプログラムに変換
  2. 02複数段階の LLM ワークフロー構築
  3. 03ツール利用エージェントの最適化
  4. 04分類や RAG プログラムの評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/magnus919/agent-skills --skill dspy

インストール後、Claude Code で/dspyを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
evals/
evals.json
references/
agent-patterns.md
compilation-guide.md
core-modules.md
evaluation.md
example-rag-compilation.md
faq-and-troubleshooting.md
optimizer-guide.md
program-patterns.md
validation-audit.md
scripts/
check-setup.py
templates/
classification.py
multi-step.py
rag-program.py

詳細

DSPy エキスパートスキル

DSPy はプロンプトプログラム用のコンパイラーであり、チェーンや RAG のフレームワークではありません。型付きシグネチャを使った Python プログラムを記述すると、DSPy がプロンプトを自動的に最適化します。

⚠️ DSPy はチェーンフレームワークではありません。 prompt | model | parser は使いません。LCEL もありません。DSPy は異なるレイヤーで動作します。Python の制御フローと型付きシグネチャでプログラムを定義し、コンパイラーがメトリクスに基づいてプロンプトを最適化します。LangChain のような合成を期待して DSPy を使おうとしているなら、選ぶツールを間違えています。

LLM 向けの PyTorch と考えてください。アーキテクチャを定義し、コンパイラーが重み(プロンプト)を調整します。

コアとなるパラダイム

まずここを読んでください。DSPy について理解すべき最も重要な内容です。

import dspy

# 1. Configure the LM
lm = dspy.LM("openai/gpt-4o-mini")
dspy.configure(lm=lm)

# 2. Define a signature (input/output schema)
class QASignature(dspy.Signature):
    """Answer questions concisely."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

# 3. Build a program using modules
qa = dspy.ChainOfThought(QASignature)

# 4. Compile against a metric
optimizer = dspy.MIPROv2(metric=dspy.answer_exact_match)
compiled_qa = optimizer.compile(qa, trainset=trainset, num_trials=25)

# 5. Use the compiled program (portable artifact)
answer = compiled_qa(question="What is DSPy?").answer

コア原則

  1. DSPy はコンパイラーであり、チェーンフレームワークではありません。 Python の制御フローと型付きシグネチャでプログラムの構造を定義します。コンパイラーがプロンプトを最適化します。これは、LangChain の明示的なプロンプト合成とは根本的に異なります。

  2. シグネチャでタスクを定義します。 任意の説明を付けられる入力フィールドと出力フィールドのペアが、タスクの定義になります。構文は input1, input2 -> output1, output2 です。

  3. モジュールはプログラムの構成要素です。 dspy.Predict(直接予測)、dspy.ChainOfThought(推論)、dspy.ReAct(ツール使用)、およびカスタムの dspy.Module サブクラスを使います。Python の制御フロー(if/for/while)でこれらを合成します。

  4. オプティマイザーは重みではなくプロンプトを調整します。 多数のオプティマイザー(テレプロンプター)が、指示、少数ショットのデモ、またはその両方を調整します。選択はボトルネックと予算によって異なります。オプティマイザーの早見表を参照してください。

  5. 一度コンパイルして、何度も提供します。 コンパイルには高いコストがかかります($3~$300 以上)。出力は program.save(path) で保存できるポータブルな成果物です。推論のコストは低く抑えられます。

  6. 積極的にキャッシュします。 DSPy はデフォルトですべての LM 呼び出しをキャッシュします。現在のクライアント用に DSPY_CACHEDIR を設定してください。dspy.LM(..., cache=False) で無効にできます。

どこから始めるか

すでにあるものここから始める
何もない — DSPy を試しているパラダイムを理解し(まずこのページを読んでください)、次にシンプルな Predict プログラムを作成します
最適化したい、動作中のプロンプトDSPy の Signature に移植し、ChainOfThought を追加して、BootstrapFewShot でコンパイルします
複数ステップのパイプラインカスタムの dspy.Module として Python の制御フローで構築し、MIPROv2 でコンパイルします
エージェント/ツール使用のタスクツールと dspy.ReAct を使い、GEPA または AvatarOptimizer でコンパイルします
フレームワークを比較しているフレームワーク選択ガイドを参照してください

クイックリファレンス

タスク方法参照先
基本的な予測dspy.Predict(signature)references/core-modules.md
推論を伴う予測dspy.ChainOfThought(signature)references/core-modules.md
ツールを使った予測dspy.ReAct(tools=tools)references/agent-patterns.md
カスタムプログラムclass MyProgram(dspy.Module)references/program-patterns.md
手軽な最適化dspy.BootstrapFewShot(metric)references/optimizer-guide.md
本格的な最適化dspy.MIPROv2(metric, auto="medium")references/optimizer-guide.md
評価dspy.Evaluate(metric=fn, devset=examples)references/evaluation.md
保存/読み込みprogram.save(path) / program.load(path)references/compilation-guide.md
検索dspy.Retrieve(k=5)references/program-patterns.md

フレームワーク選択ガイド

シナリオ選ぶもの理由
プロンプト最適化/コンパイル済みプログラムDSPyメトリクスに基づいてプロンプトを自動最適化する唯一のフレームワークです
ドキュメントのクエリ/RAGLlamaIndexデータの取り込みと検索が第一級のプリミティブです
チェーン/エージェントの合成LangChainLCEL はパイプベースの合成モデルとして最も洗練されています
ステートマシン型のマルチエージェントLangGraphグラフトポロジー、サブグラフ、human-in-the-loop を扱えます
検索パイプラインHaystack検索ワークロードでは、パイプラインモデルがより成熟しています
役割ベースのチームCrewAIより高水準のエージェント抽象化を提供します

参照ファイル

参照先読み込むタイミングファイル
コアモジュールPredict、ChainOfThought、ReAct を使用して構築する場合references/core-modules.md
オプティマイザーガイドオプティマイザーを選択、設定する場合references/optimizer-guide.md
プログラムパターンRAG、分類、マルチステップ、ツール使用の場合references/program-patterns.md
評価メトリクス、評価ループ、データセットの作成の場合references/evaluation.md
コンパイルガイドキャッシュ、コスト管理、保存/読み込みの場合references/compilation-guide.md
エージェントパターンReAct エージェント、ツール使用、AvatarOptimizer の場合references/agent-patterns.md
FAQ とトラブルシューティングよくあるエラーと解決方法を確認する場合references/faq-and-troubleshooting.md
検証監査すべての API に関する主張を調査、検証する場合references/validation-audit.md
RAG の実例期待される出力を含む RAG の完全なコンパイル例references/example-rag-compilation.md

テンプレートファイル

テンプレート使用する場面ファイル
分類BootstrapFewShot を使用したテキスト分類templates/classification.py
RAG プログラムColBERT 検索と ChainOfThought を使用した RAGtemplates/rag-program.py
マルチステップ推論ツール使用を含むマルチステッププログラムtemplates/multi-step.py

スクリプト

スクリプト目的ファイル
check-setupDSPy のインストールと設定を確認するscripts/check-setup.py

トラブルシューティング

症状考えられる原因解決方法参照先
コンパイルが遅すぎる候補やスレッドが多すぎるnum_candidates を減らすか、auto="light" を使用しますreferences/optimizer-guide.md
コンパイルのコストが高すぎるキャッシュがないDSPY_CACHEDIR を有効にしますreferences/compilation-guide.md
コンテキストが長すぎるデモが多すぎるmax_bootstrapped_demos と max_labeled_demos を減らしますreferences/faq-and-troubleshooting.md
コンパイル後の品質が低いボトルネックに合わないオプティマイザーチートシートで、指示・デモ・重みのどれが該当するか確認しますreferences/optimizer-guide.md
プログラムが改善しないメトリクスに判別力がないbool ではなく float を返すメトリクスを使用しますreferences/evaluation.md
サブモジュールが更新されない_compiled フラグが設定されている再コンパイル前に module._compiled = False を設定しますreferences/compilation-guide.md

DSPy を使用しない場合

  • シンプルな単一プロンプトのアプリケーション — 生の API 呼び出しのほうが簡単です
  • 事前構築済みのアプリケーションモジュール(PDF の Q&A、テキストから SQL への変換)が必要な場合 — LlamaIndex または LangChain を使用します
  • 最適化の予算がない単発タスク — DSPy のコンパイラーのオーバーヘッドを償却できません
  • リアルタイム性が重視される低レイテンシのタスク — コンパイルは開発時に行われるため、推論時のオーバーヘッドは増加しません

コメント