本記事では、LLM(大規模言語モデル)を業務で活用する際に精度と再現性を高めるためのプロンプトエンジニアリング実践テクニックを解説します。代表的な手法であるFew-shotプロンプティング、Chain-of-Thought(CoT)、System Promptの設計パターンを取り上げ、それぞれの具体的な実装例と注意点を紹介します。プロンプト設計はモデルの出力品質を左右する重要な要素であり、開発者やプロダクトマネージャーが押さえておくべき基礎から応用まで整理しました。
プロンプトエンジニアリングとは
プロンプトエンジニアリングとは、LLMに対する入力(プロンプト)を工夫することで、モデルの推論精度や出力の一貫性を向上させる技術です。モデル自体をファインチューニングせずとも、指示の与え方や例示の工夫だけで出力品質を大きく改善できるため、実務では最初に検討すべきアプローチとなっています。
Few-shotプロンプティングの設計パターン
Few-shotプロンプティングは、タスクの入出力例をいくつか提示してからモデルに実際の入力を渡す手法です。ゼロショットでは出力形式が安定しない場合でも、Few-shotによって期待するフォーマットや粒度をモデルに学習させることができます。
基本パターン
以下の例に従って、入力文の感情を「positive」「negative」「neutral」で分類してください。
入力: この製品は最高です!
出力: positive
入力: 対応が遅くてがっかりしました。
出力: negative
入力: 明日は会議があります。
出力: neutral
入力: {ユーザー入力}
出力:
設計のポイント
- 例の数は3〜5件程度が目安。多すぎるとトークン消費が増え、コストと応答速度に影響する
- 例のバリエーションを持たせ、境界的なケースも含めることで汎化性能を高める
- 出力フォーマットを厳密に統一し、後段のパース処理を安定させる
Few-shotは「タスクの説明」よりも「模範解答の提示」に近く、特に分類・変換・抽出タスクで効果を発揮します。
Chain-of-Thought(CoT)による推論精度の向上
Chain-of-Thoughtは、モデルに最終的な答えだけでなく、途中の思考過程を段階的に出力させる手法です。数学的推論や複雑な条件分岐を伴うタスクにおいて、直接回答を求めるより正解率が向上することが多数報告されています。
ゼロショットCoT
次の問題を解いてください。ステップごとに考えてから、最後に答えを出してください。
問題: あるショップで定価1000円の商品が20%引きで販売されている。
さらにクーポンで100円引きになる場合、支払金額はいくらか。
プロンプト末尾に「ステップごとに考えてから」「順を追って説明してください」といった一文を加えるだけで、モデルは中間の計算過程を出力しやすくなります。
Few-shot CoTの組み合わせ
Few-shotとCoTを組み合わせることで、推論過程のフォーマットも安定させられます。例題に「思考過程+答え」のペアを与えることで、モデルは同様の構造で新しい問題にも回答するようになります。
運用上の注意点
- 思考過程を出力させるとトークン数が増加するため、コストとレイテンシのトレードオフを考慮する
- 最終出力のみをアプリケーションで利用する場合は、区切り記号(例:
###ANSWER###)を指定してパースしやすくする - 推論過程をユーザーに見せない要件がある場合は、内部処理として実行し表示を制御する
System Promptの設計パターン
System Promptは会話全体を通じてモデルの振る舞いを規定する役割を持ちます。ユーザーからの個別の指示よりも優先度が高く扱われることが多く、プロダクトの品質・安全性を担保する上で中心的な役割を果たします。
基本構成要素
- 役割定義: 「あなたは〇〇の専門家です」のようにペルソナを明示する
- 制約条件: 回答の長さ、トーン、禁止事項などを明記する
- 出力フォーマット: JSON形式やMarkdown形式など、後続処理に必要な形式を指定する
- フォールバック指示: 情報が不足する場合の振る舞い(推測しない、質問し返すなど)を定義する
実装例
あなたはカスタマーサポート担当のAIアシスタントです。
以下のルールに従って回答してください。
- 常に丁寧で簡潔な日本語で回答する
- 製品仕様に関する質問には、提供されたFAQの範囲内でのみ回答する
- FAQに情報がない場合は「担当者に確認します」と回答する
- 回答は3文以内にまとめる
設計のポイント
- 指示は肯定文で具体的に書く(「〜しないでください」より「〜してください」の形が効果的)
- 優先順位が競合するルールは順序や強調表現で明確化する
- System Promptが長大になる場合は、動的に条件分岐させるテンプレート管理を検討する
実践における組み合わせ戦略
実際のプロダクト開発では、System Promptで全体方針を定め、タスクごとにFew-shotで出力形式を固定し、複雑な判断が必要な箇所ではCoTを併用するという多層的な設計が有効です。それぞれの手法はトークンコストやレイテンシに影響するため、タスクの重要度に応じて適用範囲を調整することが求められます。
まとめ
プロンプトエンジニアリングは、モデルの追加学習なしに出力品質を改善できる即効性の高い手法です。Few-shotで出力の一貫性を担保し、Chain-of-Thoughtで推論精度を向上させ、System Promptで全体の振る舞いを制御する。この3つのパターンを目的に応じて組み合わせることが、実務でLLMを安定運用するための鍵となります。