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

LLMの能力を引き出すプロンプト設計技法。Zero/Few-shot、Chain-of-Thought、Tree of Thoughts、自己一貫性、推論時スケーリング。

最終更新:2025年11月

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

1.1 定義

プロンプトエンジニアリング:LLMに与える入力(プロンプト)を設計・最適化し、望ましい出力を得る技術。

  • モデルの重みを変更せずに性能を向上
  • タスク固有のファインチューニングなしで適応
  • 推論時に適用可能

1.2 重要性

プロンプトが重要な理由:

  • In-Context Learning:プロンプト内の例示から学習
  • タスク指定:曖昧なタスクを明確化
  • 推論誘導:思考過程を導く
  • 出力形式制御:構造化された出力を得る

1.3 プロンプトの構成要素

  • 指示(Instruction):何をすべきか
  • 文脈(Context):背景情報
  • 例示(Examples):入出力のペア
  • 入力(Input):処理対象
  • 出力形式(Format):期待する形式

2. 基本技法

2.1 Zero-shot Prompting

例示なしで指示のみを与える:

以下の文を日本語に翻訳してください:
"Hello, how are you?"
  • シンプルで汎用的
  • モデルの事前知識に依存
  • 複雑なタスクでは精度が低下

2.2 Few-shot Prompting

例示を含めてタスクを示す:

英語を日本語に翻訳します。

English: Hello
Japanese: こんにちは

English: Thank you
Japanese: ありがとう

English: Good morning
Japanese:
  • 例示からパターンを学習
  • タスク定義が明確に
  • 例示の選択・順序が重要

2.3 Few-shotの設計指針

  • 例示数:通常3〜5例で効果的
  • 多様性:様々なケースをカバー
  • 代表性:典型的な例を選択
  • 順序:最近接性効果に注意
  • 形式の一貫性:入出力形式を統一

2.4 役割設定(Role Prompting)

モデルに特定の役割を与える:

あなたは経験豊富な数学教師です。
中学生にもわかりやすく説明してください。

質問:微分とは何ですか?
  • 出力のスタイル・レベルを制御
  • 専門知識の活性化
  • 一貫した応答スタイル

2.5 構造化プロンプト

明確な構造で指示を与える:

# タスク
与えられた文章を要約する

# 制約
- 3文以内
- 重要なポイントのみ
- 専門用語は避ける

# 入力
[文章]

# 出力形式
要約:

3. Chain-of-Thought(CoT)

3.1 CoTとは

Chain-of-Thought(Wei et al. 2022):中間的な推論ステップを明示的に生成させる手法。

  • 複雑な問題を段階的に解決
  • 推論過程が可視化
  • 算術、論理、常識推論で大幅な性能向上

3.2 Few-shot CoT

推論過程を含む例示を提供:

Q: ロジャーはテニスボールを5つ持っています。
   テニスボールの缶を2つ買いました。各缶には3つ入っています。
   今、テニスボールはいくつありますか?

A: ロジャーは最初5つ持っていました。
   2缶 × 3つ = 6つ買いました。
   5 + 6 = 11。答えは11です。

Q: カフェテリアに23個のリンゴがありました。
   昼食に20個使い、さらに6個買いました。
   今、リンゴはいくつありますか?

A:

3.3 Zero-shot CoT

「Let's think step by step」を追加するだけ:

Q: [問題]

A: Let's think step by step.
  • Kojima et al. (2022)
  • 例示なしでCoT効果を発揮
  • シンプルで汎用的

3.4 CoTの効果

ベンチマーク 標準プロンプト CoT
GSM8K(算術) 〜18% 〜58%
SVAMP 〜65% 〜80%
StrategyQA 〜65% 〜73%

※PaLM 540Bでの結果(Wei et al. 2022)

3.5 CoTが効く理由

  • 作業記憶の拡張:中間結果を文脈に保持
  • 問題分解:複雑な問題を小さなステップに
  • エラー検出:推論過程で誤りに気づきやすい
  • 大規模モデルで効果的:〜100B以上で顕著

4. 自己一貫性(Self-Consistency)

4.1 自己一貫性とは

Self-Consistency(Wang et al. 2023):複数の推論パスを生成し、多数決で最終回答を決定。

4.2 手順

  1. 同じ問題に対してCoTを複数回実行(温度を上げてサンプリング)
  2. 各推論パスから最終回答を抽出
  3. 最も頻度の高い回答を採用(多数決)

4.3 効果

  • 単一のCoTより高精度
  • GSM8Kで〜74%(CoT単体は〜58%)
  • 推論の信頼性向上
  • 計算コストは増加

4.4 設計のポイント

  • サンプル数:通常5〜40
  • 温度:0.5〜0.7で多様性を確保
  • 回答抽出:最終回答のみを比較

5. Tree of Thoughts(ToT)

5.1 ToTとは

Tree of Thoughts(Yao et al. 2023):思考を木構造で探索。バックトラック、評価、選択を可能に。

5.2 CoTとの違い

項目 CoT ToT
構造 線形(チェーン) 木構造
探索 単一パス 複数パス、バックトラック
評価 最終結果のみ 中間状態も評価
計算コスト

5.3 ToTの構成要素

  • 思考生成:次の思考候補を複数生成
  • 状態評価:各思考の有望さを評価
  • 探索アルゴリズム:BFS、DFS、ビームサーチ等

5.4 適用例:24ゲーム

4つの数字から24を作る問題:

  1. 可能な演算を複数生成
  2. 各中間状態を評価(24に近づいているか)
  3. 有望な枝を探索、行き詰まったらバックトラック

ToTにより解決率が大幅向上(4% → 74%)。

5.5 ToTの限界

  • 計算コストが高い
  • 状態評価の設計が必要
  • すべての問題に適するわけではない

6. 高度な技法

6.1 ReAct(Reasoning + Acting)

推論と行動を交互に実行:

  • Thought:推論ステップ
  • Action:外部ツール呼び出し(検索等)
  • Observation:ツールからの結果
  • 繰り返して最終回答に到達

6.2 Reflexion

失敗から学ぶ反省的推論:

  • タスクを実行
  • 結果を評価
  • 失敗した場合、反省を生成
  • 反省を踏まえて再試行

6.3 Least-to-Most Prompting

複雑な問題を部分問題に分解:

  1. 問題を小さな部分問題に分解
  2. 簡単な部分から順に解決
  3. 前の解答を使って次の部分を解決

6.4 Generated Knowledge Prompting

回答前に関連知識を生成:

  1. 「この問題に関連する事実を列挙して」
  2. 生成された知識を文脈に追加
  3. 知識を踏まえて回答

6.5 Automatic Prompt Engineering

プロンプトの自動最適化:

  • APE:自動プロンプトエンジニアリング
  • OPRO:LLMによるプロンプト最適化
  • 人間が設計するより良いプロンプトを発見することも

7. 推論時スケーリング

7.1 推論時計算の重要性

従来のスケーリング:訓練時の計算(パラメータ、データ)を増やす。

新しいアプローチ:推論時の計算を増やす

7.2 Test-Time Compute

推論時に計算を増やす方法:

  • 複数サンプリング:Self-Consistency
  • 探索:ToT、MCTS
  • 反復改善:Reflexion
  • 長い思考:より多くのトークンを生成

7.3 o1/o3モデル

OpenAIのo1/o3シリーズ:

  • 推論時に「思考」トークンを大量に生成
  • 内部でCoT的な推論を実行
  • 推論時間と性能のトレードオフ
  • ARC-AGIで87.5%(o3)

7.4 スケーリング則との関係

推論時計算のスケーリング則:

  • 推論時計算を増やすと性能が向上
  • 訓練時スケーリングと相補的
  • 小さなモデル + 多い推論 vs 大きなモデル + 少ない推論

7.5 実践的考慮

手法 計算倍率 適用場面
標準推論 1x シンプルなタスク
CoT 〜2-3x 推論タスク
Self-Consistency 〜10-40x 高精度が必要
ToT 〜100x+ 複雑な探索問題

8. 参考文献

主要論文

  • Wei et al. (2022). "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models" NeurIPS
  • Kojima et al. (2022). "Large Language Models are Zero-Shot Reasoners" NeurIPS
  • Wang et al. (2023). "Self-Consistency Improves Chain of Thought Reasoning in Language Models" ICLR
  • Yao et al. (2023). "Tree of Thoughts: Deliberate Problem Solving with Large Language Models" NeurIPS
  • Yao et al. (2023). "ReAct: Synergizing Reasoning and Acting in Language Models" ICLR
  • Shinn et al. (2023). "Reflexion: Language Agents with Verbal Reinforcement Learning" NeurIPS

サーベイ・リソース