プロンプトエンジニアリングの仕組みを理解し、生成AIやAIエージェントの活用につなげるための知識ロードマップです。
プロンプトエンジニアリングは、単純に「LLMに適切な指示を出す技術」ではありません。
LLMがどのように情報を処理し、どのような指示によって出力が変化するのかを理解し、目的に応じてプロンプトを設計・評価・改善する複数の技術によって構成されています。
そこで、プロンプトエンジニアリングを以下の7つのChapterに分けて学びます。
🧠 Chapter 1:プロンプトエンジニアリングと生成AIの基礎(Section 1〜4)
まずは、プロンプトエンジニアリングとは何か、LLMがどのような仕組みで文章を生成するのかを理解します。
Section 1:プロンプトエンジニアリングとは何か
- プロンプト(Prompt):LLMに対して、質問や指示、背景情報などを与えるための入力。
- プロンプトエンジニアリング(Prompt Engineering):LLMから目的に合った出力を得るために、入力する指示や情報を設計・改善する技術。
- インストラクション(Instruction):LLMに実行してほしいタスクや動作を指定する指示。
- プロンプトテンプレート(Prompt Template):入力する情報や指示の形式をあらかじめ定義し、再利用できるようにしたひな形。
Section 2:LLMの基本的な仕組み
- 大規模言語モデル(LLM):大量のテキストデータなどを学習し、入力された情報に基づいて文章などを生成する機械学習モデル。
- トークン(Token):LLMが文章を処理・生成する際に利用する基本的な単位。単語や文字、単語の一部などが該当する。
- トークナイザー(Tokenizer):文章をLLMが扱うトークンに分割・変換する仕組み。
- 次トークン予測(Next Token Prediction):それまでの入力や生成されたトークンをもとに、次に出現するトークンを予測する仕組み。
- 推論(Inference):学習済みのモデルに入力を与え、予測や文章生成などの処理を実行すること。
Section 3:TransformerとAttention
- Transformer:Attention機構を中心に構成されたニューラルネットワークのアーキテクチャ。現在の多くのLLMの基盤となっている。
- Attention:入力された情報の中で、どの要素に注目するかを計算する仕組み。
- Self-Attention:同じ系列内のトークン同士の関係性を計算し、それぞれのトークンの表現を更新するAttentionの仕組み。
- Query・Key・Value(QKV):Attentionで情報の関連性を計算するために利用される3つのベクトル。
- 位置エンコーディング(Positional Encoding):トークンの順序に関する情報をモデルに与えるための仕組み。
Section 4:LLMの制約とプロンプトの関係
- コンテキストウィンドウ(Context Window):LLMが一度の処理で扱える入力と出力のトークン数の上限。
- 知識カットオフ(Knowledge Cutoff):モデルの学習に利用された知識の時点に関する制約。
- ハルシネーション(Hallucination):LLMが事実と異なる情報や、根拠のない情報を生成する現象。
- 確率的生成:次に生成するトークンを確率分布に基づいて選択する文章生成の考え方。
- プロンプト感度(Prompt Sensitivity):指示の表現や構造の違いによって、LLMの出力が変化する性質。
📝 Chapter 2:プロンプトの基本構造と設計(Section 5〜8)
LLMから適切な回答を得るために、指示や背景情報、制約条件などをどのように構成するのかを学びます。
Section 5:プロンプトの基本構造
- システムプロンプト(System Prompt):LLMの役割や動作方針、回答ルールなどを定義するための指示。
- ユーザープロンプト(User Prompt):ユーザーが質問やタスク、追加情報などをLLMに入力するためのプロンプト。
- コンテキスト(Context):LLMが回答を生成する際に参考にする背景情報や前提条件。
- 出力形式(Output Format):LLMが生成する回答の構造や表現方法を指定するもの。
Section 6:指示と制約の設計
- 指示の明確化:LLMに実行してほしいタスクを具体的に記述し、解釈の揺らぎを減らすこと。
- タスク分解(Task Decomposition):複雑なタスクを複数の小さな処理に分割し、順番に実行できるようにする方法。
- 制約条件(Constraints):回答の範囲、文字数、使用可能な情報など、LLMの出力に対して設ける条件。
- 否定指示(Negative Instruction):回答に含めてほしくない内容や、実行してほしくない動作を指定する指示。
- 指示の優先順位:複数の指示が存在する場合に、どの指示を優先して扱うかを定める考え方。
Section 7:ロールとコンテキストの設計
- ロールプロンプティング(Role Prompting):LLMに特定の役割や立場を与え、その役割に応じた回答を促す手法。
- ペルソナ(Persona):回答時の性格や専門性、話し方などを定義した人物像や振る舞いの設定。
- 背景情報(Background Information):タスクを適切に実行するためにLLMへ与える前提や関連情報。
- 対象読者(Target Audience):回答を誰に向けて作成するのかを指定する情報。
- コンテキスト設計(Context Design):タスクに必要な情報を選択・整理し、LLMが利用しやすい形で与える方法。
Section 8:プロンプトの構造化
- 構造化プロンプト(Structured Prompt):指示や入力情報、制約条件などを明確に区分して整理したプロンプト。
- 区切り文字(Delimiter):指示と入力データなどを区別するために利用する記号や文字列。
- XMLタグ:情報をタグで囲むことで、指示やコンテキストなどの範囲を明確にするための記法。
- Few-shotの例示:入力と期待する出力の例をプロンプトに含め、LLMにタスクの形式や傾向を伝える方法。
- 出力スキーマ(Output Schema):LLMに生成させるデータの項目や型、構造を定義したもの。
🎯 Chapter 3:プロンプティングの代表的な手法(Section 9〜13)
プロンプトの設計方法によって、LLMの回答や推論の進め方がどのように変わるのかを学びます。
Section 9:Zero-shot・One-shot・Few-shot prompting
- Zero-shot Prompting:具体的な回答例を提示せず、指示だけでLLMにタスクを実行させる手法。
- One-shot Prompting:1つの入力と出力の例を提示し、LLMにタスクの形式を伝える手法。
- Few-shot Prompting:複数の入力と出力の例を提示し、LLMにタスクの傾向や回答形式を学習時の追加学習なしに示す手法。
- In-context Learning(ICL):プロンプト内に与えられた例や情報を利用し、モデルのパラメータを更新することなく、タスクに適応した出力を行う能力。
- 例示選択(Example Selection):Few-shot Promptingで利用する例を、タスクや入力内容に応じて選択する方法。
Section 10:Chain-of-Thoughtと推論
- Chain-of-Thought(CoT):複雑な問題に対して、中間的な推論ステップを経由して回答を導くよう促す手法。
- Zero-shot CoT:具体的な推論例を提示せず、段階的な推論を促す指示を追加する手法。
- Few-shot CoT:推論過程を含む例をプロンプトに提示し、同様の形式での推論を促す手法。
- Reasoning(推論):与えられた情報から、論理的な関係や規則などを利用して結論を導く処理。
- Intermediate Steps(中間ステップ):最終的な回答に至るまでに必要となる、途中の計算や判断などの処理。
Section 11:Self-Consistencyと高度な推論
- Self-Consistency:同じ問題に対して複数の推論結果を生成し、それらの回答の一貫性などを利用して最終的な回答を選択する手法。
- Majority Voting(多数決):複数の推論結果から、最も多く選択された回答を採用する方法。
- Best-of-N:複数の回答候補を生成し、評価基準に基づいて適切な候補を選択する方法。
- Tree of Thoughts(ToT):複数の思考の候補を木構造で展開し、評価や探索を通じて解決策を見つける手法。
- Graph of Thoughts(GoT):複数の思考や中間結果をグラフ構造で表現し、それらを組み合わせて問題解決を行う手法。
Section 12:知識生成と質問の再構成
- Generated Knowledge Prompting:回答を生成する前に関連する知識を生成させ、その情報を利用して本来のタスクに取り組む手法。
- Step-back Prompting:具体的な質問から一段階抽象度を上げた質問を考え、関連する原則や背景知識をもとに元の問題を解く手法。
- Question Refinement:曖昧な質問を、回答や検索に適した明確な質問に書き換える方法。
- Query Expansion:元の質問に関連するキーワードや表現を追加し、情報の取得範囲を広げる方法。
- Decomposition Prompting:複雑な質問を複数の小さな質問やタスクに分解して処理する手法。
Section 13:ReActと行動を伴うプロンプティング
- ReAct(Reasoning and Acting):推論と外部ツールの利用などの行動を組み合わせて、タスクを進める手法。
- Thought(思考):次に実行する処理や行動を決定するための推論段階。
- Action(行動):検索や計算、APIの呼び出しなど、外部環境に対して実行する処理。
- Observation(観察):実行した行動によって得られた結果や情報。
- Tool Use(ツール利用):LLMが外部の検索エンジンやプログラム、APIなどを利用して情報取得や処理を行うこと。
🔧 Chapter 4:タスク別プロンプト設計と応用(Section 14〜17)
実際の業務や開発で利用されるタスクごとに、適したプロンプトの設計方法を学びます。
Section 14:文章生成と情報処理
- Text Generation(文章生成):与えられた指示やコンテキストをもとに、新しい文章を生成する処理。
- Summarization(要約):長い文章や複数の情報から、重要な内容を抽出して簡潔にまとめる処理。
- Text Classification(テキスト分類):文章の内容を分析し、あらかじめ定義されたカテゴリに分類する処理。
- Information Extraction(情報抽出):文章から固有名詞や日付、数値などの必要な情報を取り出す処理。
- Sentiment Analysis(感情分析):文章に含まれる肯定的・否定的な感情や意見などを分析する処理。
Section 15:質問応答と構造化出力
- Question Answering(質問応答):入力された質問に対して、与えられた情報やモデルの知識を利用して回答を生成する処理。
- Contextual Question Answering:指定されたコンテキストをもとに、質問への回答を生成する方法。
- Structured Output(構造化出力):回答をJSONや表形式など、あらかじめ定義された構造に沿って生成する方法。
- JSON Mode:LLMの出力をJSON形式に制御するための機能や設定。
- Constrained Decoding(制約付きデコーディング):生成時に形式や文法などの制約を適用し、条件に合った出力を生成する方法。
Section 16:コーディングとプログラム生成
- Code Generation(コード生成):自然言語の指示や仕様に基づいてプログラムのソースコードを生成する処理。
- Code Completion(コード補完):既存のプログラムや入力途中のコードに続く処理を予測して補完する機能。
- Debugging(デバッグ):プログラムの不具合やエラーの原因を特定し、修正する作業。
- Code Review(コードレビュー):プログラムの品質や安全性、保守性などを確認し、改善点を見つける作業。
- Test Generation(テスト生成):プログラムの動作を検証するためのテストケースやテストコードを生成する処理。
Section 17:マルチモーダルプロンプティング
- マルチモーダル(Multimodal):テキスト、画像、音声、動画など、複数の種類の情報を組み合わせて処理する仕組み。
- Visual Question Answering(VQA):画像の内容を理解し、画像に関する質問に回答する技術。
- OCR(Optical Character Recognition):画像内に含まれる文字を認識し、テキストデータに変換する技術。
- Speech-to-Text(STT):音声データをテキストに変換する技術。
- Video Understanding:動画内の映像や音声、時間的な変化などを分析し、内容を理解する技術。
📊 Chapter 5:プロンプトの評価と最適化(Section 18〜21)
プロンプトは一度作成して終わりではありません。出力結果を評価し、目的に応じて継続的に改善するための技術を学びます。
Section 18:プロンプトの評価指標
- 正確性(Accuracy):生成された回答が正しい情報や正解にどの程度一致しているかを評価する観点。
- 関連性(Relevance):生成された回答が、入力された質問や指示にどの程度適合しているかを評価する観点。
- 一貫性(Consistency):類似した入力や同じ条件に対して、回答の内容や形式がどの程度安定しているかを評価する観点。
- 網羅性(Completeness):回答に必要な情報や要素が十分に含まれているかを評価する観点。
- 再現性(Reproducibility):同じ条件や設定で処理を実行した場合に、結果をどの程度再現できるかを評価する観点。
Section 19:プロンプトのテストと評価手法
- 人手評価(Human Evaluation):人間が生成された回答を確認し、正確性や自然さなどを評価する方法。
- ルールベース評価(Rule-based Evaluation):あらかじめ定義した条件やルールに基づいて、生成結果を評価する方法。
- LLM-as-a-Judge:別のLLMを評価者として利用し、生成された回答の品質を判定する方法。
- ベンチマーク(Benchmark):モデルやプロンプトの性能を比較するために利用する、共通の評価用データやタスク。
- A/Bテスト:異なるプロンプトを実際の入力などに適用し、評価指標を比較する方法。
Section 20:プロンプトの改善と最適化
- Prompt Optimization:目的とする出力品質や処理効率を高めるために、プロンプトの内容や構造を改善すること。
- 反復的改善(Iterative Refinement):プロンプトの作成、実行、評価、修正を繰り返して品質を向上させる方法。
- エラー分析(Error Analysis):生成された回答の誤りや期待と異なる出力の原因を特定する作業。
- Prompt Tuning:プロンプトに相当する学習可能なパラメータを調整し、モデルの出力を特定のタスクに適応させる手法。
- Soft Prompt:自然言語の文章ではなく、学習可能な連続ベクトルとして表現されたプロンプト。
- Automatic Prompt Optimization(APO):評価結果や最適化アルゴリズムなどを利用して、プロンプトを自動的に改善する手法。
Section 21:プロンプトの管理と品質保証
- プロンプトバージョン管理:プロンプトの変更履歴や設定を管理し、過去の状態を追跡できるようにする仕組み。
- プロンプトテストセット:プロンプトの品質や性能を検証するために用意した入力データの集合。
- 回帰テスト(Regression Testing):プロンプトの変更によって、以前は正しく動作していたタスクの品質が低下していないかを検証するテスト。
- エッジケース(Edge Case):通常とは異なる入力や特殊な条件など、想定外の挙動が発生しやすいケース。
- LLMOps:LLMを利用したシステムの評価、デプロイ、監視、運用、改善などを継続的に管理する考え方。
🤖 Chapter 6:プロンプトとAIシステムの連携(Section 22〜26)
プロンプトを単体で利用するだけでなく、RAGやAIエージェント、外部ツールなどと連携させ、実用的なAIシステムを構築するための技術を学びます。
Section 22:プロンプトチェーンとワークフロー
- Prompt Chaining:複数のプロンプトを連結し、前の処理で得られた出力を次の処理に利用する手法。
- Chain of Tasks:複数のタスクを順番に実行し、最終的な目的を達成するための処理構成。
- Workflow(ワークフロー):複数の処理やタスクの実行順序、条件分岐などを定義した処理の流れ。
- Conditional Routing:入力内容や処理結果に応じて、実行するプロンプトや処理を切り替える仕組み。
- State Management:ワークフロー内で処理の状態や中間結果を保持・管理する仕組み。
Section 23:Function CallingとTool Calling
- Function Calling:LLMが定義された関数の呼び出しに必要な情報を生成し、外部プログラムによる処理につなげる仕組み。
- Tool Calling:LLMが検索や計算、APIなどの外部ツールを利用するための呼び出し情報を生成する仕組み。
- Function Schema:関数名や引数、データ型など、関数の仕様を定義したもの。
- Tool Selection:入力されたタスクに応じて、利用する外部ツールを選択する処理。
- Tool Response:外部ツールを実行した結果としてLLMに返される情報。
Section 24:AIエージェントとプロンプト
- AIエージェント(AI Agent):目標を達成するために、状況に応じた判断や計画、ツールの利用などを行うAIシステム。
- Agent Prompt:AIエージェントの役割や目標、行動方針、制約条件などを定義するプロンプト。
- Planning(計画):与えられた目標を達成するために、必要なタスクや処理の順序を決定すること。
- Reflection(振り返り):過去の行動や実行結果を評価し、次の行動や計画の改善に利用する手法。
- Memory(メモリ):過去の会話や処理結果、ユーザー情報などを保存し、後続の処理で利用する仕組み。
Section 25:RAGとプロンプトの連携
- Retrieval-Augmented Generation(RAG):外部のデータソースから関連情報を検索し、その結果をLLMの入力に追加して回答を生成する仕組み。
- Retrieval Prompt:検索対象や検索方法、検索クエリの生成などを制御するためのプロンプト。
- Context Injection:検索結果などの外部情報を、LLMのコンテキストに組み込む処理。
- Grounded Prompting:与えられた根拠情報に基づいて回答するようLLMに指示する手法。
- Agentic RAG:AIエージェントが検索の必要性や追加検索などを判断しながら、RAGを利用してタスクを実行する構成。
Section 26:プロンプトエンジニアリングのフレームワーク
- LangChain:LLM、プロンプト、外部ツール、検索システムなどを組み合わせてアプリケーションを構築するためのフレームワーク。
- LangGraph:状態やノード、エッジなどを利用して、AIエージェントや複雑なLLMワークフローを構築するためのフレームワーク。
- DSPy:LLMを利用した処理をモジュールとして定義し、評価指標などに基づいてプロンプトや処理を最適化するためのフレームワーク。
- Semantic Kernel:LLMと外部機能やデータを組み合わせたAIアプリケーションの開発を支援するSDK。
- Prompt Management:プロンプトの作成、共有、バージョン管理、評価、運用などを一元的に管理する仕組み。
🔐 Chapter 7:プロンプトのセキュリティと実践(Section 27〜31)
プロンプトを実際のシステムで利用する際のセキュリティリスクや運用上の注意点を理解し、実践的なプロンプトを設計するための知識を学びます。
Section 27:プロンプトのセキュリティ
- プロンプトインジェクション(Prompt Injection):LLMへの入力に悪意のある指示を含め、本来の指示や想定された動作を逸脱させようとする攻撃。
- 直接プロンプトインジェクション(Direct Prompt Injection):ユーザーが直接入力するプロンプトなどに、悪意のある指示を含める攻撃。
- 間接プロンプトインジェクション(Indirect Prompt Injection):Webページや文書、外部データなどに悪意のある指示を埋め込み、LLMに処理させる攻撃。
- ジェイルブレイク(Jailbreak):LLMに設定された安全上の制約などを回避し、本来制限されている出力や動作を引き出そうとする手法。
- プロンプトリーク(Prompt Leakage):システムプロンプトなど、本来ユーザーに開示することを想定していない指示や情報が漏えいする問題。
Section 28:LLMの安全性と出力制御
- Guardrails:LLMの入力や出力、ツールの利用などを監視・制御し、想定外の動作や不適切な出力を防ぐ仕組み。
- Input Validation(入力検証):LLMへ入力するデータが、定められた形式や条件を満たしているかを確認する処理。
- Output Filtering(出力フィルタリング):LLMが生成した回答を検査し、機密情報や不適切な内容などを除外・制御する処理。
- Human-in-the-Loop(HITL):AIによる処理の一部に人間の確認や判断を組み込み、安全性や品質を確保する仕組み。
- Least Privilege(最小権限の原則):LLMやAIエージェントが利用するツールやデータへのアクセス権限を、タスクに必要な最小限に制限する考え方。
Section 29:プロンプトの運用と管理
- Prompt Versioning:プロンプトのバージョンを管理し、変更内容や過去の設定を追跡する仕組み。
- Prompt Registry:組織やシステム内で利用するプロンプトを登録・保存し、再利用や管理を行う仕組み。
- Prompt Observability:プロンプトの実行状況や入力、出力、処理時間、エラーなどを記録・分析し、動作状況を把握する考え方。
- Tracing(トレーシング):プロンプトの実行からLLMの応答、ツールの利用など、処理全体の流れを追跡すること。
- Cost Optimization(コスト最適化):トークン数やモデルの選択、処理回数などを調整し、品質を維持しながらLLMの利用コストを抑えること。
Section 30:プロンプトエンジニアリングの実践
- Prompt Design(プロンプト設計):目的や要件に応じて、指示やコンテキスト、出力形式などを組み合わせてプロンプトを作成すること。
- Prompt Iteration(プロンプトの反復改善):プロンプトの実行結果を確認し、指示や構造を変更しながら品質を改善すること。
- Prompt Evaluation(プロンプト評価):生成結果をあらかじめ定めた評価基準に基づいて確認し、プロンプトの有効性を判断すること。
- Prompt Deployment(プロンプトのデプロイ):作成・評価したプロンプトを、実際のアプリケーションや業務システムに組み込むこと。
- Production Monitoring(本番環境の監視):実際の利用環境における回答品質やエラー、コストなどを継続的に監視すること。
Section 31:総合演習とシステム構築
- 要件定義(Requirement Definition):プロンプトを利用するシステムの目的や機能、制約条件などを明確にすること。
- プロンプト実装(Prompt Implementation):設計したプロンプトをAPIやアプリケーションに組み込み、実際に動作する形にすること。
- 評価データセットの作成:プロンプトの品質や性能を検証するために、入力データや期待される回答、評価基準などを用意すること。
- 性能検証(Performance Evaluation):実際の入力に対する回答の品質や処理時間、コストなどを測定すること。
- 継続的改善(Continuous Improvement):運用中に得られた評価結果や利用状況をもとに、プロンプトやシステムを継続的に改善すること。



コメント