Claude 学習
カリキュラム

Lv2 プロンプト設計と評価

🔮 ウォームアップ — 読む前に予想する

まだ解けなくて正常です(採点されません)。先に予想を立てると本文の読み方が変わり、学習効果が上がります(事前テスト効果 → 設計根拠)。頭の中で答えてから開いてください。同じ概念は本編の自己チェックで再登場します。

Q1. 同僚が「5回試して全部良い感じだったので本番投入します」と言う。何が問題で、最小限の代替案は。

選択肢②の罠。5入力ではコーナーケースを検出できず、「良い感じ」は主観で改善/劣化を比較できない。代替案は、その5入力+敵対入力の小さなデータセットと採点基準で eval に通し、客観スコアで反復すること。

本編で学ぶ → 自己チェック

Q3. 「有効な JSON であること」と「質問に的確に答えていること」。それぞれどの grader で、逆にすると何が起きるか。

JSON 有効性は code based(パースを試すだけで決定的・ほぼ無料)、的確さは柔軟な判断が要るので model based。逆にすると JSON 検証は非決定的・高コストで確実に検出できるエラーを見逃し、的確さはキーワード一致のような粗い代理指標になる。

本編で学ぶ → 自己チェック

Q5. 全 test case が9点以上なのにリリース後の評判が悪い。最初に疑うべきはどこか。

grader の基準でなくその上流、user voice → requirement の翻訳。「間違った意図を精密に記述した」状態で、prompt engineering では直らない。requirement に立ち返り、ユーザーの期待を criteria に反映して eval を作り直す。

本編で学ぶ → 自己チェック

前提: L1(API基礎)修了。CCAドメイン①・②(Prompting and Task Execution/Output Evaluation and Validation) / 力量マップ D・Eこのレベルの核: 「プロンプトを書く技術」より先に「プロンプトを測る技術」。ここで作る eval の習慣は L6 まで全成果物に横断適用する

学習目標

  1. 本番投入前に自前の eval pipeline で客観スコアを得て反復できる
  2. テストデータセットを用意し、code / model / human based grading を基準に応じて使い分けられる
  3. 4技法(明確・具体・XMLタグ・例示)を効果を測定して採否判断できる
  4. 要件分解 → 委譲 → 検証の中に prompt engineering と eval を位置づけて説明できる

モジュール 2.1 — evalファースト思考

学ぶこと

次の図で、eval ファーストが「体感でなく客観スコアの比較で採用/棄却を決める反復サイクル」であることを掴む。

① プロンプトを変更 (V2 ドラフト) ② eval を実行 (grader で採点し平均) ③ スコアを比較 (V1 vs V2) ④ 採用 / 棄却 (改善したときだけ採用) 体感でなく 客観スコアで判断 eval に通す 客観スコアを得る 差を見る 反復する
プロンプト変更を eval に通し、V1 と V2 の客観スコア比較で採用/棄却を判断して反復するサイクル

✏️ 再現チェック: モジュールを読み終えたら、この図を見ずに白紙へ描き直す(矢印のラベルまで)。描けなかった部分が復習ポイント。

読む

やる: 手動テストの限界を体感する(手順付き)

  1. ベースライン: L1 の CLI のプロンプトに入力を3つ投げ、良し悪しを主観でメモ
  2. 設計: 「データセットに入れる入力の種類」「採点基準」を紙に書き出す(実装しない)
  3. 敵対テスト: 壊れそうな入力を5つ以上列挙(空・超長文・言語混在・矛盾指示・フォーマット崩し)
  4. 測定: 手動テストの所要時間を記録し、入力10倍時を見積もる
  5. 言語化: ①②がなぜ罠か、手順3・4を根拠に3行で書く

自己チェック

Q1. 同僚が「5回試して全部良い感じだったので本番投入します」と言う。何が問題で、最小限の代替案は。


モジュール 2.2 — テストデータセット生成と実行

学ぶこと

読む

やる: 自分のデータセットを生成する(要点のみ)

  1. ベースライン: task を持つ JSON 配列を Claude(Haiku 推奨)に3件生成させ dataset.json に保存
  2. 設計・実装: 自分のユースケース向けに生成プロンプトを書き換え 10件以上生成。3関数構成で実行部を書く(採点は仮スコアでよい)
  3. 敵対テスト: 生成結果を目視監査(重複・非現実的・簡単すぎ)。2.1 の「壊れる入力」を2件以上手動追記
  4. 測定: 実行時間とトークン使用量を記録。並行数を変えて時間差を測る
  5. 言語化: 「Claude 生成の利点と目視監査を省けない理由」を3行で

低コスト版: Claude の出力を JSON に保存し、以降は記録済みレスポンスに採点だけ再実行(API を呼ぶのはプロンプトを変えたときだけ)。

自己チェック

Q2. Claude 生成の10件が全部「教科書どおりの綺麗な入力」だった。このまま回すと何が起きるか。


モジュール 2.3 — 採点方式の使い分け(code / model / human)

学ぶこと

次の図で、3つの採点方式を「何を測るのに向くか」の軸で対比し、基準ごとに方式を割り当てる使い分けを押さえる。

評価基準を先に決め、基準ごとに方式を割り当てる 割り当てる Code based 向く基準 フォーマット・構文 (JSON パース・正規表現) 特性 決定的・高速・低コスト Model based 向く基準 品質・忠実さ・完全性 (タスクへの的確な対応) 特性 柔軟な基準を評価できる コスト増・採点が揺らぐ Human based 向く基準 最も柔軟な判断 (スポットチェックの基準点) 特性 遅く地道 全件には使えない
評価基準を先に決め、フォーマット・構文は code based、品質・忠実さ・完全性は model based、最も柔軟な判断は human based に割り当てる

読む

やる: 自分の grader を実装する(要件のみ)

  1. ベースライン: 仮スコアのまま1回実行し、平均スコアを記録
  2. 設計・実装: 評価基準を3つ以上書き出し、code / model を割り当ててから両方を最低1つずつ実装しマージ。model grader には strengths / weaknesses / reasoning を要求
  3. 敵対テスト: わざと壊れた出力(不正 JSON・途切れ・冗長な説明つき)を直接食わせ、低スコアになるか確認。grader 自体もテスト対象
  4. 測定: model grader の時間・コスト増分を記録。同じ出力に3回採点させばらつきを観察
  5. 言語化: 「この基準はなぜ code / model なのか」を基準ごとに1行で

自己チェック

Q3. 「有効な JSON であること」と「質問に的確に答えていること」。それぞれどの grader で、逆にすると何が起きるか。


モジュール 2.4 — プロンプトエンジニアリング4技法

学ぶこと

必ず eval とセットで、1技法適用するたびに再測定する(コースの食事プランデモで 2.32 → 7.96。講師は弱いモデルで伸びを誇張したと明言、絶対値の再現は不要)。

  1. Being clear and direct: 最初の一行が最重要。action verb+シンプルな言葉で何をすべきかを正確に伝える。デモで 2.32 → 3.92、演習(トピック抽出)ではこれだけで 2.8 → 9.5
  2. Being specific: タイプA=出力に持たせたい属性のリスト(ほぼ常に推奨)と タイプB=従うべき手順のリスト(自然には考慮しない視点を検討させたいとき)。実務では併用が多い。デモではAで 7.86(Bは 7.3 で劣りAに戻した)
  3. Structure with XML tags: 補間するコンテンツの塊をタグで囲み、何が何かを明確にする。大量・複数種のコンテンツで特に効く。タグ名は自由で内容を表す名前をつける(<my_code> <docs> 等)
  4. Providing examples(one-shot / multi-shot): サンプル入力と理想の出力のペアを XML タグで囲んで示す。コーナーケース(皮肉ツイート分類)と複雑な出力フォーマットに有効。eval レポートの高スコア実例を例に転用し、reasoning も添えるとさらに効く

読む

やる: 測定つきプロンプト改善(要件のみ・本レベルの中心)

  1. ベースライン: L1 の CLI のプロンプトを 2.2〜2.3 の eval に通し、スコアを記録
  2. 設計・実装: 4技法を1つずつ適用し、適用のたびに再測定(一度に全部入れると効果を分離できない)。examples はレポートの高スコア事例から転用
  3. 敵対テスト: 最高スコア版に 2.1 の敵対入力を追加しスコア低下を観察。カバーする guidelines か example を足して再測定
  4. 測定: 各バージョンのスコア・時間・トークン数を表に(技法を足すほど高コスト、トレードオフを見る)
  5. 言語化: 採用/棄却した技法と根拠を設計判断メモに残す

低コスト版: データセットを10件・モデルは Haiku に絞る。各バージョンの応答は保存し、grader の調整・再採点は記録済みレスポンスに対して行う(API を呼ぶのはプロンプトを変えた直後の再測定だけ)。

自己チェック

Q4. 皮肉まじりの入力を誤分類する。guidelines には「皮肉に注意」と既に書いてある。次の一手は。


モジュール 2.5 — 要件分解と委譲(ai-fluency-for-builders 接続)

学ぶこと

読む

やる: eval を Description Chain に位置づける

  1. ベースライン: 2.4 のプロンプトが「誰の何の要求に応えるか」を1段落で書く
  2. 設計: user voice → requirement → spec → AI instruction → tests(eval の criteria)の5リンクを自分のプロジェクトで埋める
  3. 敵対テスト: 「スコアは高いのに想定ユーザーが不満」なシナリオを2つ考案し、どのリンクの記述漏れが原因か特定
  4. 測定: 記述漏れを criteria に反映し、eval を再実行してスコア変化を記録
  5. 言語化: 「AI に委譲した部分・自分に残した判断」を各3つ列挙

自己チェック

Q5. 全 test case が9点以上なのにリリース後の評判が悪い。最初に疑うべきはどこか。


キャップストーン増分 — ドキュメント調査アシスタント【第2形態】

L1 の構造化出力つきチャット CLI に eval ハーネスを追加する。

提出物(4点): ①実装 ②eval データ(dataset.json+敵対ケース) ③実行結果(前後スコア・時間・トークン数) ④設計判断メモ(採用/棄却と grader 割り当ての根拠)


修了ゲート(L2)

共通ゲート運用(知識20% / 実技60% / 説明20%、総合80%以上、部分合格・遅延チェックあり)は README.md 参照。安全性の必須項目は配点と独立に全問正解(safety-security.md 参照)。

L2 固有の宣言: L3A 以降 L6 まで、全レベルの成果物(tool use・RAG・MCP 等)に eval による測定と回帰チェックを横断適用する。以降のゲートの「評価」観点はこのレベルの成果物が土台。

演習導線: この時点で safety-security.md演習 S-2(eval ハーネスに敵対 eval ケース10件を追加。S.6)を実施する。追加した敵対ケースは L3A 以降のゲートの実技評価(「安全性」観点)で再利用する。

知識確認(4問・類題2〜3種から出題)

  1. eval ワークフローの5ステップを成果物とともに順に述べよ
  2. code / model / human based grading の使い分けを、コスト・決定性・柔軟性の3軸で説明せよ
  3. model grader に strengths / weaknesses / reasoning を要求する理由を述べよ
  4. being specific のタイプA(属性リスト)とタイプB(手順リスト)はそれぞれどんな場面に向くか

安全必須問題(全問正解が必要・配点と独立)

  1. eval データや grader に入れる外部由来テキストを無条件に信頼してはいけない理由を述べよ(S.2)
  2. 演習 S-2(敵対 eval ケース10件の追加。S.6)を実施し、「攻撃成功の定義」と誤検知の測定まで含めて説明できること

(詳細は safety-security.md の組込み表を参照)

実技(eval ハーネスのルーブリック: 5観点 × 0〜3点)

観点 0 1 2 3
機能 eval が動かない 手動テストのみ(採点が自動化されていない) code または model 単独の eval が end-to-end で動く 10件以上で code+model 併用の eval が end-to-end で動く
堅牢性 異常出力で grader がクラッシュ 正常系のみ 敵対ケースを含むデータセットで動く 左+grader の誤採点テストあり、レート制限時に並行数を落とせる
安全性 秘密情報がコード・データに混入 外部由来テキストを無検証で信頼 外部入力を無検証で信頼しない扱いを実装 左+敵対 eval ケース(演習 S-2 の10件)を組み込み
評価 スコア記録なし 単発スコアのみ(前後比較不能) 前後のスコアが対で記録され再実行可能 左+低コストモード(記録済みレスポンスへの再採点)あり
説明 メモなし 実装の羅列 採用案の理由を記述 左+棄却案とトレードオフまで記述

説明課題(20%)

いずれかを他者に見せられる文章(400〜800字目安)で:


レベル末尾情報

Claude 学習サイト — 完全ローカル静的サイト(build.py で生成)。進捗はこのブラウザの localStorage に保存されます。