← レッスンに戻る
第2章 · プロンプトエンジニアリング

プロンプトの反復改善とEval

Iterative Prompt Improvement & Eval · 約 10 分

重要キーワード

English日本語説明
Eval 評価 プロンプトやモデルの品質を客観的指標で測る仕組み
Goldset ゴールドセット 理想出力付きのテストデータ集
Regression リグレッション 変更により以前の能力が劣化すること
LLM-as-Judge LLM 採点 別の LLM に出力を採点させる評価手法

プロンプトの反復改善 (Iterative Improvement)

最初から完璧なプロンプトは書けません。測定 → 改善 のループを回します。 これは ソフトウェア開発のテスト駆動開発 (TDD) とよく似た考え方です。

反復ステップ

  1. タスクを定義: 何が「成功」か明文化する。
  2. テストケースを 10〜30 件作る: 入力と理想出力のペア。
  3. 初期プロンプトで実行: 失敗ケースを観察する。
  4. 失敗パターンを分類: 抜け漏れ・形式違反・幻覚など。
  5. プロンプトを修正: 失敗パターンに対応する指示を追加。
  6. 再測定: 改善とリグレッションを確認。

Eval (評価) を自動化する

簡単な eval は Python でも書けます。

def eval_prompt(prompt_template: str, cases: list[tuple[str, str]]) -> float:
    correct = 0
    for inp, expected in cases:
        out = run_claude(prompt_template.format(input=inp))
        if expected.strip() in out:
            correct += 1
    return correct / len(cases)

本格的には Anthropic Workbench, promptfoo, LangSmith, Inspect などのツールが使えます。

LLM-as-Judge

採点が難しいタスク (要約の品質など) では、別の Claude (高性能モデル) に 採点役 をさせます。

基準:
- 事実性: 0-2
- 簡潔性: 0-2
- 形式遵守: 0-2

質問: {q}
理想: {gold}
出力: {pred}

採点を JSON で返してください: {"factuality": x, "concision": y, "format": z, "comment": "..."}

判定モデルは 被評価モデルと別 にするのが望ましい (Opus が Sonnet を採点するなど)。

Anti-pattern (やりがち失敗)

「プロンプトを書く」 = 「仕様書を書く」

良いプロンプトは 明確な仕様書 に近づきます。 だから、プロンプト改善はソフトウェア設計のスキルそのものです。

Eval を Claude に手伝ってもらう

テストケース作成は Claude に頼むのが効率的です。

▶ テストケース生成依頼
「住所を JSON {prefecture, city, address1, address2} に分解する」プロンプトの境界ケース テストを 10 件作ってください。普通のケース 5 件、境界ケース (番地なし、ビル名あり、丁目漢数字、英字混在など) 5 件を含めて。

演習問題

演習 1: 失敗ケースを Goldset 化する

あなたが第 2 章で書いてきたプロンプト (例: 営業時間 JSON 化、メール分類) のうち 1 つを選び、 5 件のテストケース (入力 + 理想出力) を作って Goldset とし、現状のプロンプトの正答率を測定してください。

形式例:

ケース 1:
  入力: ...
  期待: ...
  実際: ...
  判定: ✓/✗
スタータープロンプト:
私のプロンプトをテストするため、境界ケースを含むテストデータを 5 件提案してください。タスクは「自然言語の営業時間記述から JSON {open, close, closed[]} を抽出」です。普通ケース 2、境界ケース 3 (中休み、24h、不明な記述など)。各ケースに入力と期待出力を示してください。
ヒントを見る

テストデータ生成は Claude に任せると速いですが、生成された期待出力を 必ず人間が検証 すること (Claude が間違った理想出力を生成する可能性)。

理解度チェック

  1. プロンプト改善で最初にすべきは?
    1. 成功の定義とテストケース作成
    2. モデルを上位に切替え
    3. API キーを再発行
    4. GPU を増設
  2. プロンプト評価ツールでないのは?
    1. Anthropic Workbench
    2. promptfoo
    3. LangSmith
    4. Photoshop
  3. 出力が悪いときの最も誠実な仮説は?
    1. モデルが愚かなのが原因
    2. プロンプト側に改善余地がある可能性が高い
    3. ネット回線が遅い
    4. OS のバージョンが古い
  4. LLM-as-Judge の注意点は?
    1. Judge モデルは被評価と同じが必須
    2. Judge と被評価は別モデルが望ましい
    3. Judge は 1 回でも複数回でも同じ
    4. Judge にユーザー入力をそのまま渡す
解答と解説を見る
  1. A — 評価できなければ改善できません。テストケースから始めます。
  2. D — Photoshop は画像編集ソフトで、プロンプト評価とは無関係です。
  3. B — 多くの失敗はプロンプト改善で対応可能です。
  4. B — 同じモデルだとバイアスが乗りやすいので別モデルが推奨されます。