0Pricing
AI Prompt Engineering · レッスン

DSPy Framework入門

DSPyが手書きのプロンプトを宣言的シグネチャに置き換える理由を学びます。

「DSPy Framework入門」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。

手書きプロンプトの脆弱性

手作業で作成したプロンプトは壊れやすいものです。単語を1つ変えただけでモデルの動作が大きく変わることがあり、GPT-4でうまくいくものがClaudeやGeminiでは機能しないこともあります。

プロンプトエンジニアは何時間も文言を調整しますが、その変更がデータセットやモデルのバージョンをまたいで汎用化しないことに気づく場合が少なくありません。この脆弱性こそが、DSPyが解決する中心的な問題です。

DSPyとは

DSPy(Declarative Self-improving Python)はStanfordが開発したフレームワークで、プロンプト作成を職人技ではなくコンパイルの問題として扱います。

"Think step by step and answer the following question..."のように記述する代わりに、必要なもの(シグネチャ)を何かとして宣言し、それを実現するためにモデルへどのようにプロンプトを出すかをDSPyに任せます。

DSPyのインストール

DSPyはPyPIで提供されています。まずDSPyをインストールし、言語モデルのバックエンドを設定してください。

pip install dspy-ai

# Basic setup in Python
import dspy

# Configure the language model
lm = dspy.LM('openai/gpt-4o-mini', api_key='sk-...')
dspy.configure(lm=lm)

print('DSPy configured successfully')

基本概念:ロジックとプロンプトの分離

従来のプロンプト作成では、プログラムのロジックとプロンプトのテキストが密接に結び付いています。モデルの推論方法を変更したい場合は、プロンプト文字列を書き直します。

DSPyはこれらの関心を分離します。モジュールを使ってPythonのロジックを記述すると、DSPyがコンパイルの段階で実際のプロンプトテキストを自動的に生成し、最適化します。

シグネチャ:意図の宣言

DSPyのシグネチャは、入力と出力を型付きで宣言するものです。これはどのようにではなく、何を行うかを表します。

DSPyはシグネチャを使って、コンパイル時に適切なプロンプトを構築します。プロンプトエンジニアリングを自分で行う必要はありません。

import dspy

# Declare: given a question, produce an answer
class SimpleQA(dspy.Signature):
    """Answer questions with short factual responses."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField(desc='A concise factual answer')

# DSPy turns this declaration into a real prompt automatically
print(SimpleQA.__doc__)

モジュール:組み合わせ可能な推論ブロック

DSPyは、一般的な推論パターンを実装するモジュールを提供します。これらはPyTorchのレイヤーと同じように使い、より大きなプログラムへ組み合わせます。

  • dspy.Predict — 直接予測
  • dspy.ChainOfThought — 推論ステップを追加
  • dspy.ReAct — 推論+ツール使用
import dspy

class SimpleQA(dspy.Signature):
    """Answer questions with short factual responses."""
    question: str = dspy.InputField()
    answer: str = dspy.OutputField()

# Three different module strategies for the same signature
predict_module = dspy.Predict(SimpleQA)
cot_module = dspy.ChainOfThought(SimpleQA)

# Call just like a function
result = predict_module(question='What is the capital of France?')
print(result.answer)

コンパイルで行われること

コンパイルとは、トレーニングセットと評価指標関数を使って、DSPyがプログラムのプロンプトを最適化するプロセスです。

コンパイル前は、DSPyは基本的なデフォルトプロンプトを使用します。コンパイル後は、評価指標を最大化するfew-shot例、より適切な指示、またはChain-of-ThoughtのデモンストレーションをDSPyが見つけています。最適化されたプロンプトは保存され、推論時に再利用されます。

最小限のDSPyプログラム

以下は、シグネチャ、モジュール、呼び出しを含む、完全な最小構成のDSPyプログラムです。プロンプト文字列はどこにも記述していません。

import dspy

# 1. Configure LM
lm = dspy.LM('openai/gpt-4o-mini', api_key='sk-...')
dspy.configure(lm=lm)

# 2. Define signature
class Summarize(dspy.Signature):
    """Summarize text into one sentence."""
    text: str = dspy.InputField()
    summary: str = dspy.OutputField()

# 3. Create module
summarizer = dspy.Predict(Summarize)

# 4. Use it
result = summarizer(text='DSPy is a framework for programming language models.')
print(result.summary)

DSPyと従来のプロンプトエンジニアリングの比較

哲学的な違いは次のとおりです。

  • 従来の方法:プロンプトテキストを記述 → モデルが実行 → テキストを手動で調整
  • DSPy:Pythonロジックを記述 → オプティマイザーが最適なプロンプトテキストを探索 → モデルが最適化されたプロンプトを実行

DSPyは、コンパイラーがPythonをバイトコードに変換するのと同じように、プロンプトをコンパイラーが処理すべき実装の詳細として扱います。

DSPyを使う価値がある場面

DSPyは、次の条件がある場合に特に効果を発揮します。

  • 最適化するための明確な評価指標(正解率、F1、ユーザー評価)がある
  • トレーニングセットとして使える例がある(20〜50件でも十分です)
  • 相互に影響する複数の推論ステップを含むパイプラインがある

一度きりの単純なプロンプトでは、DSPyのオーバーヘッドに見合いません。一方、測定可能な目標を持つ本番用のLLMパイプラインでは、大きな変革をもたらします。

DSPyエコシステムの概要

DSPyは単なるAPIラッパーではなく、完全なエコシステムです。

  • シグネチャ:入出力を宣言
  • モジュール:推論戦略
  • オプティマイザー:BootstrapFewShot、MIPRO、COPRO
  • Evaluate:組み込みの評価ハーネス
  • Assertions:出力を宣言的に制約

このコースの後続レッスンでは、これらをそれぞれ詳しく学習します。

理解度チェック:DSPyの基本概念

手動でプロンプトを記述する場合と比べて、DSPyが主に異なる点は何ですか。

まとめ:DSPyフレームワークの基礎

DSPyは、プロンプト作成をコンパイルの問題として扱うことで、手書きプロンプトの脆弱性に対処します。シグネチャ(型付きの入出力宣言)を記述し、PredictやChainOfThoughtなどのモジュールと組み合わせます。次に、オプティマイザーがトレーニングデータと評価指標を使って最適なプロンプトテキストを自動的に見つけます。その結果、手動でプロンプトエンジニアリングを行わなくても、移植性、テスト容易性、自動改善性を備えたプロンプトパイプラインを構築できます。

よくある質問

「DSPy Framework入門」レッスンは無料ですか?

はい。「DSPy Framework入門」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。

「DSPy Framework入門」で何を学びますか?

DSPyが手書きのプロンプトを宣言的シグネチャに置き換える理由を学びます。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Prompt Engineeringを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「DSPy Framework入門」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Prompt Engineeringレッスンでコードを書いて実行できますか?

はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. DSPy Framework入門
  2. シグネチャとモジュールの定義
  3. プロンプトのコンパイルと最適化
  4. DSPyパイプラインの評価
← AI Prompt Engineeringに戻る