第1章:プロンプトエンジニアリングの基礎

効果的なプロンプト設計の原則と実践技術

📖 読了時間: 20-25分 💡 プロンプト例: 10個 📝 演習: 5問 📊 難易度: 初級
🌐 言語: 日本語 | English (準備中)

プロンプトエンジニアリングとは

プロンプトエンジニアリング(Prompt Engineering)とは、大規模言語モデル(LLM)から望ましい出力を引き出すために、効果的な入力(プロンプト)を設計する技術です。

ChatGPT、Claude、GeminiなどのLLMは非常に強力ですが、その能力を最大限に引き出すには適切な「質問の仕方」「指示の出し方」が重要です。同じ質問でも、プロンプトの書き方次第で回答の質が大きく変わります。

🎯 なぜプロンプトエンジニアリングが重要なのか

良いプロンプトの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. 使用場面

【対象機能】
- リスト内包表記
- デコレータ
- ジェネレータ

初心者向けに分かりやすく説明してください。

プロンプト設計のベストプラクティス

💡 実践のヒント

プロンプト設計のチェックリスト

この章のまとめ

🎯 重要ポイント

演習問題

以下の演習で、学んだ知識を実践してみましょう。

演習1: プロンプト改善(難易度: ★☆☆)

問題: 以下の曖昧なプロンプトを、6つの特徴を踏まえて改善してください。

料理のレシピを教えて

ヒント: 料理名、人数、調理時間、難易度、出力形式を明確にしましょう。

演習2: Few-shotプロンプト作成(難易度: ★★☆)

問題: 商品レビューの感情分析(ポジティブ/ネガティブ/ニュートラル)を行うFew-shotプロンプトを作成してください。最低3つの例を含めること。

演習3: Chain of Thoughtプロンプト(難易度: ★★☆)

問題: 以下の問題を解くためのCoTプロンプトを作成してください。

問題: ある会社の従業員は120人です。
そのうち40%が営業部、30%が開発部、残りが管理部です。
開発部の人数が10人増えた場合、開発部の割合は何%になりますか?

演習4: タスク実行型プロンプト(難易度: ★★★)

問題: 「顧客からのクレームメールへの返信」を作成するための、包括的なプロンプトテンプレートを設計してください。役割、タスク、制約条件、出力形式を含めること。

演習5: 実践応用(難易度: ★★★)

問題: あなたの実際の仕事や学習で使えるプロンプトを1つ作成し、実際にLLMで試してください。結果を評価し、改善点を3つ挙げてください。

次のステップ

第1章では、プロンプトエンジニアリングの基礎を学びました。次の章では、より高度な技法を学びます:


参考資料


更新履歴

免責事項