プロンプトエンジニアリングとは
プロンプトエンジニアリング(Prompt Engineering)とは、大規模言語モデル(LLM)から望ましい出力を引き出すために、効果的な入力(プロンプト)を設計する技術です。
ChatGPT、Claude、GeminiなどのLLMは非常に強力ですが、その能力を最大限に引き出すには適切な「質問の仕方」「指示の出し方」が重要です。同じ質問でも、プロンプトの書き方次第で回答の質が大きく変わります。
🎯 なぜプロンプトエンジニアリングが重要なのか
- 品質向上: より正確で詳細な回答を得られる
- 効率化: 試行錯誤の時間を削減できる
- 再現性: 同じ品質の出力を安定して得られる
- コスト削減: APIトークン使用量を最適化できる
- 応用範囲の拡大: より複雑なタスクに対応できる
良いプロンプトの6つの特徴
効果的なプロンプトには、以下の6つの特徴があります:
1. 明確性(Clarity)
曖昧さを排除し、具体的に何を求めているのか明確に示します。
❌ 悪い例
AIについて教えて
問題点: 範囲が広すぎて、何を知りたいのか不明確
✅ 良い例
機械学習における教師あり学習と教師なし学習の違いを、
具体例を含めて3つのポイントで説明してください。
改善点: トピック、形式、詳細度が明確
2. 具体性(Specificity)
期待する出力の形式、長さ、スタイルを具体的に指定します。
❌ 悪い例
メールを書いて
✅ 良い例
クライアントへの提案書送付メールを作成してください。
【条件】
- 受取人: 田中様(ABC株式会社 部長)
- 目的: 新システム導入の提案書を送付
- トーン: フォーマルで丁寧
- 長さ: 200-300文字
- 含める要素: 挨拶、提案書の要点、次のステップ
3. 文脈提供(Context)
タスクの背景情報や前提条件を提供します。
💡 プロンプト例:文脈を含む
あなたは経験豊富なPythonプログラマーです。
初心者向けのプログラミング教材を作成しています。
Pythonのリスト内包表記について、以下の形式で説明してください:
1. 基本的な概念(100文字以内)
2. シンプルなコード例
3. よくある使用場面(3つ)
4. 初心者が間違えやすいポイント
4. 制約条件(Constraints)
出力に関する制限や要件を明示します。
💡 プロンプト例:制約条件付き
以下の制約条件で商品説明文を作成してください:
【制約】
- 長さ: 150文字以内
- トーン: カジュアルで親しみやすい
- 必須キーワード: 「エコ」「耐久性」「コスパ」
- 避けるべき表現: 誇大広告、専門用語
- ターゲット: 20-30代の社会人
【商品】ステンレス製タンブラー
5. 例示(Examples)
期待する出力の例を示すことで、形式や品質の基準を明確にします。
💡 プロンプト例:Few-shot学習
以下の例に従って、感情分析を行ってください。
例1:
入力: 今日は最高の一日だった!
出力: ポジティブ (喜び、満足)
例2:
入力: 雨で予定がキャンセルになって残念
出力: ネガティブ (失望、悲しみ)
例3:
入力: 明日は晴れるかな
出力: ニュートラル (期待、不確実性)
では、以下の文を分析してください:
入力: 新しいプロジェクトが始まるけど不安だ
6. 段階的指示(Step-by-step)
複雑なタスクは段階的に分解して指示します。
💡 プロンプト例:段階的指示
以下の手順で、データ分析レポートを作成してください:
【ステップ1】データの概要を確認
- データセットの規模(行数、列数)
- 各列のデータ型
- 欠損値の有無
【ステップ2】基本統計量の算出
- 数値列の平均、中央値、標準偏差
- カテゴリ列の出現頻度
【ステップ3】異常値の検出
- 外れ値の特定
- その原因の推測
【ステップ4】結論と推奨事項
- 主要な発見事項(3つ)
- 次のアクションの提案
Zero-shot学習とFew-shot学習
Zero-shot学習
Zero-shotは、例示なしで直接タスクを指示する方法です。シンプルなタスクや一般的な質問に適しています。
💡 Zero-shot プロンプト例
以下の文章を英語に翻訳してください:
「機械学習は、データから学習してタスクを実行するコンピュータの能力です。」
Few-shot学習
Few-shotは、いくつかの例を示してからタスクを実行させる方法です。形式が特殊な場合や、品質の基準を明確にしたい場合に有効です。
💡 Few-shot プロンプト例(2-shot)
以下の例に従って、商品名を短縮形に変換してください:
例1:
入力: スーパープレミアム高機能多用途ハイブリッド掃除機
出力: プレミアム掃除機
例2:
入力: ウルトラスリムデザインワイヤレス充電対応スマートフォン
出力: スリムスマホ
では、以下を変換してください:
入力: エクストラロングバッテリー搭載ポータブルBluetoothスピーカー
One-shot vs Few-shot vs Many-shot
| 手法 | 例の数 | メリット | デメリット | 適した場面 |
|---|---|---|---|---|
| Zero-shot | 0個 | シンプル、トークン節約 | 精度が低い場合あり | 一般的なタスク |
| One-shot | 1個 | 形式を示せる | パターン学習に不十分 | 単純な形式指定 |
| Few-shot | 2-5個 | パターン学習、高精度 | トークン増加 | 複雑なタスク |
| Many-shot | 6個以上 | 最高精度 | トークン大量消費 | 高精度が必須の場合 |
Chain of Thought(CoT)プロンプティング
Chain of Thought(思考の連鎖)は、LLMに段階的な推論を促す技術です。「ステップバイステップで考えてください」という指示を加えることで、より論理的で正確な回答を得られます。
基本的なCoTプロンプト
❌ CoTなし
Q: りんごが5個、みかんが3個あります。
りんご2個とみかん1個を使いました。
残りの果物の合計は何個ですか?
問題点: 計算過程が不明確で、エラーが起きやすい
✅ CoTあり
Q: りんごが5個、みかんが3個あります。
りんご2個とみかん1個を使いました。
残りの果物の合計は何個ですか?
ステップバイステップで考えてください。
期待される出力:
ステップ1: 最初の果物の数を確認
- りんご: 5個
- みかん: 3個
- 合計: 5 + 3 = 8個
ステップ2: 使った果物を引く
- りんご: 5 - 2 = 3個
- みかん: 3 - 1 = 2個
ステップ3: 残りの合計を計算
- 残り: 3 + 2 = 5個
答え: 5個
Few-shot CoTプロンプト
💡 Few-shot CoT プロンプト例
以下の例に従って、問題を解いてください:
例:
Q: カフェでコーヒー2杯(各450円)とケーキ1個(600円)を注文しました。
1000円札2枚で支払います。お釣りはいくらですか?
A: ステップバイステップで考えます。
1. コーヒー2杯の金額: 450円 × 2 = 900円
2. 合計金額: 900円 + 600円 = 1500円
3. 支払い金額: 1000円 × 2 = 2000円
4. お釣り: 2000円 - 1500円 = 500円
答え: 500円
では、以下の問題を解いてください:
Q: 本屋で本3冊(各1200円)と雑誌2冊(各800円)を買いました。
5000円札で支払います。お釣りはいくらですか?
CoTが特に有効な場面
- 数学的推論: 計算問題、論理パズル
- 複雑な意思決定: 複数の要因を考慮する判断
- 因果関係の分析: 原因と結果の関係を説明
- 多段階の問題解決: 複数のステップが必要なタスク
- デバッグ: コードやプロセスのエラー原因特定
実践的なプロンプトテンプレート
以下は、すぐに使える実践的なプロンプトテンプレートです。
テンプレート1: タスク実行型
【役割】あなたは [専門分野] の専門家です。
【タスク】[具体的なタスク内容]
【入力】
[処理対象のデータや情報]
【出力形式】
- [形式1]
- [形式2]
- [形式3]
【制約条件】
- [制約1]
- [制約2]
【例】(オプション)
[期待する出力の例]
テンプレート2: 分析型
以下のデータを分析してください:
【データ】
[分析対象のデータ]
【分析の観点】
1. [観点1]
2. [観点2]
3. [観点3]
【求める出力】
1. 主要な発見事項(3つ)
2. データから読み取れる傾向
3. 推奨される次のアクション
ステップバイステップで分析してください。
テンプレート3: 創作型
以下の条件でコンテンツを作成してください:
【種類】[ブログ記事 / メール / プレゼン資料など]
【テーマ】[主題]
【対象読者】
- 年齢層: [年齢範囲]
- 知識レベル: [初心者 / 中級者 / 専門家]
- 関心事: [興味や課題]
【トーン】[フォーマル / カジュアル / 専門的など]
【構成】
1. [セクション1]
2. [セクション2]
3. [セクション3]
【長さ】[文字数または単語数]
【必須要素】
- [含めるべき要素1]
- [含めるべき要素2]
テンプレート4: コード生成型
以下の仕様でPythonコードを作成してください:
【機能】[実装する機能の説明]
【入力】[関数の引数や入力データ]
【出力】[期待される出力]
【要件】
- プログラミング言語: Python 3.8+
- 使用ライブラリ: [ライブラリ名]
- エラーハンドリング: 必須
- コメント: 各関数に日本語のdocstring
【例】
入力例: [具体例]
期待される出力: [結果例]
コードと使用例を提供してください。
よくある失敗パターンと改善方法
失敗パターン1: 指示が曖昧
❌ 改善前
ビジネスメールを書いて
✅ 改善後
取引先への新商品紹介メールを作成してください。
【条件】
- 受取人: 営業部長
- 目的: 新商品「XYZ」の紹介と商談アポイント獲得
- トーン: フォーマルかつ親しみやすい
- 長さ: 300文字程度
- 含める要素: 挨拶、商品の特徴(3つ)、具体的な日程提案
失敗パターン2: 一度に複数のタスクを依頼
❌ 改善前
このコードをレビューして、バグを修正して、
さらに性能を改善して、ドキュメントも書いて
✅ 改善後
【タスク1】まず、このコードのバグを特定してください:
[コード]
バグが見つかったら、次のタスクに進みます。
その後、順次タスクを分けて依頼する
失敗パターン3: 文脈不足
❌ 改善前
この文章を改善して:
「商品を開発しました」
✅ 改善後
【背景】
スタートアップのプレスリリースを作成しています。
対象読者は投資家とメディア関係者です。
【改善してほしい文章】
「商品を開発しました」
【改善の方向性】
- より具体的で印象的な表現に
- 商品の革新性を強調
- 読者の関心を引く
- プロフェッショナルなトーン
失敗パターン4: 出力形式の未指定
❌ 改善前
Pythonの主要な機能について説明して
✅ 改善後
Pythonの主要な機能を以下の形式で説明してください:
【出力形式】
各機能について:
1. 機能名
2. 簡潔な説明(50文字以内)
3. コード例(5行以内)
4. 使用場面
【対象機能】
- リスト内包表記
- デコレータ
- ジェネレータ
初心者向けに分かりやすく説明してください。
プロンプト設計のベストプラクティス
💡 実践のヒント
- 反復改善: 最初のプロンプトで完璧を求めず、出力を見ながら改善
- テンプレート化: よく使うプロンプトはテンプレート化して再利用
- バージョン管理: 効果的だったプロンプトを記録・管理
- A/Bテスト: 複数のプロンプトを試して最適なものを選択
- フィードバック活用: LLMの出力から学び、プロンプトを改善
プロンプト設計のチェックリスト
- ☐ タスクの目的が明確か?
- ☐ 必要な文脈情報を提供したか?
- ☐ 出力形式を具体的に指定したか?
- ☐ 制約条件を明示したか?
- ☐ 複雑なタスクは段階的に分解したか?
- ☐ 必要に応じて例示を含めたか?
- ☐ トーンやスタイルを指定したか?
- ☐ 対象読者や利用シーンを明確にしたか?
この章のまとめ
🎯 重要ポイント
- 明確性が最重要: 曖昧さを排除し、具体的に指示する
- 6つの特徴: 明確性、具体性、文脈、制約、例示、段階的指示
- Zero-shot vs Few-shot: タスクの複雑さに応じて使い分ける
- Chain of Thought: 複雑な推論には「ステップバイステップで考えて」を追加
- テンプレート活用: 効果的なパターンを再利用して効率化
- 反復改善: 最初から完璧を求めず、出力を見ながら改善
演習問題
以下の演習で、学んだ知識を実践してみましょう。
演習1: プロンプト改善(難易度: ★☆☆)
問題: 以下の曖昧なプロンプトを、6つの特徴を踏まえて改善してください。
料理のレシピを教えて
ヒント: 料理名、人数、調理時間、難易度、出力形式を明確にしましょう。
演習2: Few-shotプロンプト作成(難易度: ★★☆)
問題: 商品レビューの感情分析(ポジティブ/ネガティブ/ニュートラル)を行うFew-shotプロンプトを作成してください。最低3つの例を含めること。
演習3: Chain of Thoughtプロンプト(難易度: ★★☆)
問題: 以下の問題を解くためのCoTプロンプトを作成してください。
問題: ある会社の従業員は120人です。
そのうち40%が営業部、30%が開発部、残りが管理部です。
開発部の人数が10人増えた場合、開発部の割合は何%になりますか?
演習4: タスク実行型プロンプト(難易度: ★★★)
問題: 「顧客からのクレームメールへの返信」を作成するための、包括的なプロンプトテンプレートを設計してください。役割、タスク、制約条件、出力形式を含めること。
演習5: 実践応用(難易度: ★★★)
問題: あなたの実際の仕事や学習で使えるプロンプトを1つ作成し、実際にLLMで試してください。結果を評価し、改善点を3つ挙げてください。
次のステップ
第1章では、プロンプトエンジニアリングの基礎を学びました。次の章では、より高度な技法を学びます:
- 第2章(準備中): Role Prompting、Context Setting、Output Formatなど基本技法
- 第3章(準備中): Tree of Thought、Self-Consistencyなど応用技術
- 第4章(準備中): タスク別の最適化手法(要約、翻訳、コード生成など)
- 第5章(準備中): 実践プロジェクトとプロンプトライブラリ構築
参考資料
- OpenAI. (2023). GPT Best Practices
- Wei, J., et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- Brown, T., et al. (2020). Language Models are Few-Shot Learners
- Anthropic. (2024). Prompt Engineering Guide
更新履歴
- 2025-12-01: v1.0 初版公開