プロンプト
比較実験を通して、プロンプトの構成、few-shot、考えてから答えさせる方法、JSON 出力を説明し、最後にプロンプトを一括テストする小さなツールを作ります。
レッスン一覧
- 01よいプロンプトとはどんなものか
同じまとまりのないユーザーの相談を、適当に書いたプロンプトと構成のはっきりしたプロンプトでそれぞれ一度ずつ処理し、結果を一段ずつ比べます。役割、タスク、背景、要件、出力形式の各部分がどんな働きをするのかを説明します。
35 分 · 入門 - 02例を示す:few-shot プロンプト
ユーザーの書き込みを 4 つに分類します。例なしでは 18 件正解、例を 4 つ示すと 20 件正解。例の選び方、いくつ示すか、どんな副作用があるかを説明します。
30 分 · 入門 - 03考えてから答えさせる
間違えやすい 6 問をそれぞれ 5 回ずつ実行すると、直接答えさせた場合は 21 回正解、先に推論過程を書かせると 29 回正解、思考モードをオンにすると全問正解でした。考えてから答えさせるとなぜ効くのか、そしてどれだけの代償を払うのかを説明します。
35 分 · 入門 - 04JSON を出力させる
モデルの回答をプログラムで処理するなら、形式の信頼できる JSON でなければなりません。JSON モード、Pydantic による検証と失敗時にモデルに直させる方法、そして strict モードのツール呼び出しでスキーマに沿った構造化出力を得る方法を説明します。
40 分 · 入門 - 05プロンプトもテストする
プロンプトをファイルに入れ、30 件のテストケースを用意し、それぞれ 3 回ずつ実行して、二つの版のプロンプトをデータで比べます。テスト結果そのものもチェックが必要なことも見ていきます。間違っているのはモデルではなく、正解ラベルのほうだということもあるのです。
40 分 · 入門
このモジュールの各課は、どれも一組の比較実験です。同じタスクを二通りの書き方で実行し、結果を並べて比べます。適当に書いたプロンプトではモデルがユーザーの推測を事実として書いてしまうこと、例を 4 つ示すと分類が全問正解になること、「先に推論過程を書いて」の一言で罠のある問題の誤りが 9 回から 1 回に減ることを見ていきます。
課の中に「万能テンプレート」はありません。プロンプトの良し悪しは、あなたのタスクで実行した結果で決まります。そのため最後の課では、プロンプトを一括でテストする方法を学びます。
なぜこの順番なのか
第 1 課ではプロンプトがどんな部分から成り立っているかを扱います。これが基礎です。第 2 課と第 3 課では、その基礎の上で最もよく使われるテクニックを一つずつ扱います。例を示すことと、考えてから答えさせることです。第 4 課はプログラムでの処理に移り、出力を信頼できる JSON にする方法を扱います。この先アプリやエージェントを作るうえで欠かせません。第 5 課では、それまでのすべてを「テスト」の枠組みに置きます。プロンプトを変える前と後を、データで語るのです。
修了の目安
- 一文だけのプロンプトを渡されたら、その問題点を見つけ、役割、タスク、要件、形式、区切り記号に沿って書き直せる。
- 分類タスクのために適切な few-shot の例を選び、なぜそれを選んだのか説明できる。
- タスクで思考モードを使うべきかどうかを判断し、その判断をデータで裏付けられる。
- 「JSON モード + Pydantic による検証 + 失敗時のリトライ」のコードを書き、文章から構造化データを安定して抽出できる。
- プロンプトを変えたあと、一組のテストケースを使って、新しい版が古い版より何がよく、何が悪いかを示せる。
このモジュールのコード
コードと実行結果は実際に動かしたときのまま載せているため、コメントと出力は中国語です。
- code/02-prompting/few_shot.py
- code/02-prompting/json_output.py
- code/02-prompting/json_strict.py
- code/02-prompting/prompt_structure.py
- code/02-prompting/prompt_test.py
- code/02-prompting/prompts/cases.jsonl
- code/02-prompting/prompts/classify_v1.txt
- code/02-prompting/prompts/classify_v2.txt
- code/02-prompting/reasoning.py
- code/02-prompting/results.jsonl