見出し画像

プロンプティング技法大全 Part1: 基礎・推論強化系 (No.1-17)

Part1: 基礎プロンプティング + 推論強化系(No.1-17)

各手法を 解説 + 専用Mermaid図 + 実際のプロンプト例 のトリプレットで構成する。
なお、モデルによっては従来の手法が逆効果となる場合があります。
(推論モデルでCoTを使用すると逆に性能低下する、など)

普遍的な対応として、使用するモデルに応じてモデルベンダーの公式サイトのプロンプティングガイド・クックブックを参考にするのが吉です◎


A. 基礎プロンプティング(No.1-7)


No.1 Zero-shot Prompting

  • 提案: Brown et al., 2020

  • 論文: Language Models are Few-Shot Learners

  • arXiv: 2005.14165

  • 引用数: ~52,000

タスクの例示を一切与えず、自然言語の指示だけでLLMに回答させる最もシンプルな手法。
GPT-3論文で体系的に評価され、大規模モデルが事前学習で獲得した汎用知識のみで多様なタスクに対応できることを実証した。

「翻訳して」「要約して」

のような日常的なプロンプトはすべてこの手法に該当する。

モデルサイズが大きいほど精度が向上し、175Bパラメータで実用水準に到達した。タスクの複雑さが低い場合に最も効率的で、追加のデモンストレーション作成コストがゼロという利点がある。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart LR
    A["🙋 ユーザー入力<br/>「これを翻訳して」"] --> B["🧠 LLM<br/>事前学習知識のみ"]
    B --> C["📄 直接回答"]

    style A fill:#E8F5E9,stroke:#81C784
    style B fill:#DBEAFE,stroke:#93C5FD
    style C fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

以下の日本語を英語に翻訳してください。

「今日は天気が良いので公園に散歩に行きました」

No.2 Few-shot Prompting

  • 提案: Brown et al., 2020

  • 論文: Language Models are Few-Shot Learners

  • arXiv: 2005.14165

  • 引用数: ~52,000

プロンプト内に2〜8個の入出力ペアを例示として含め、LLMにパターンを推論させて新しい入力に対し同形式で回答させる手法。

GPT-3の中核的な能力として提案され、プロンプトエンジニアリングの基礎となった。
例示の選び方・並び順が精度に大きく影響することが後の研究で明らかになっている。

ファインチューニングなしで文脈内学習(ICL)を実現する画期的なアプローチであり、例示の多様性と代表性がパフォーマンスの鍵を握る。
現在でもほぼ全てのプロンプティング手法の土台として機能している。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    subgraph Prompt["プロンプト構成"]
        direction TB
        E1["例1: 猫→cat"]
        E2["例2: 犬→dog"]
        E3["例3: 鳥→bird"]
        Q["新規: 魚→ ???"]
    end

    Prompt --> LLM["🧠 LLM<br/>パターン推論"]
    LLM --> A["fish"]

    style Prompt fill:#E8F5E9,stroke:#81C784
    style LLM fill:#DBEAFE,stroke:#93C5FD
    style A fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

以下の日本語を英語に翻訳してください。

猫 → cat
犬 → dog
鳥 → bird
魚 →

No.3 One-shot Prompting

  • 提案: Brown et al., 2020

  • 論文: Language Models are Few-Shot Learners

  • arXiv: 2005.14165

  • 引用数: ~52,000(同論文)

Few-shotの特殊ケースで、たった1つの入出力例のみを示してタスクの形式をLLMに伝達する手法。

トークン数の制約がある場合や、タスクの形式が比較的単純な場合に有効。1例でも出力形式・トーン・粒度を伝えられるため、Zero-shotよりも安定した出力が得られることが多い。

コスト(トークン消費)と精度のバランスが良く、実務では最も頻繁に使われるプロンプティングパターンの一つ。例示の質が極めて重要であり、代表的かつ明確な例を選ぶことが成功の鍵となる。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart LR
    subgraph Input["プロンプト"]
        direction TB
        E["例: 東京→首都,1400万人"]
        Q["新規: 大阪→ ???"]
    end

    Input --> LLM["🧠 LLM<br/>形式推論"]
    LLM --> A["都市,280万人"]

    style Input fill:#E8F5E9,stroke:#81C784
    style LLM fill:#DBEAFE,stroke:#93C5FD
    style A fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

都市の情報を「役割, 人口」の形式で出力してください。

東京 → 首都, 1400万人
大阪 →

No.4 Instruction Tuning (FLAN)

  • 提案: Wei, Bosma, Zhao et al., 2021

  • 論文: Finetuned Language Models Are Zero-Shot Learners

  • arXiv: 2109.01652

  • 引用数: ~4,500

60以上のNLPタスクを自然言語の指示テンプレートに変換し、LLMをファインチューニングすることで未見タスクへのゼロショット汎化能力を向上させる手法。
GoogleのFLANとして実装された。指示に従う能力(Instruction Following)の基盤を築き、後のChatGPT・Claude等の「指示追従型LLM」の設計思想に直接的な影響を与えた。

プロンプティングとファインチューニングの境界を曖昧にした点で画期的であり、多タスク学習がゼロショット能力を劇的に改善することを実証した。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    subgraph Training["訓練フェーズ"]
        direction LR
        T1["タスク1<br/>翻訳 指示"] --> FT["LLM<br/>ファイン<br/>チューニング"]
        T2["タスク2<br/>要約 指示"] --> FT
        T3["タスク3<br/>QA 指示"] --> FT
        Tn["... 60+タスク"] --> FT
    end

    subgraph Inference["推論フェーズ"]
        direction LR
        NEW["未見タスク<br/>指示のみ"] --> FLAN["FLAN<br/>モデル"]
        FLAN --> OUT["高精度な<br/>ゼロショット回答"]
    end

    Training --> Inference

    style Training fill:#E8F5E9,stroke:#81C784
    style Inference fill:#DBEAFE,stroke:#93C5FD
 ```

プロンプト例(FLAN形式の指示テンプレート):

# 訓練時に使われる指示テンプレートの例

## 翻訳タスク
指示: 以下の英語を日本語に翻訳してください。
入力: "The weather is nice today."
出力:

## 要約タスク
指示: 以下の文章を1文で要約してください。
入力: [長い文章]
出力:

## QAタスク
指示: 以下の文脈に基づいて質問に答えてください。
文脈: [文脈テキスト]
質問: [質問]
出力:

# → 60以上のタスクをこの形式に統一しファインチューニング
# → 未見タスクにも指示テンプレートだけで高精度に回答可能に

No.5 In-Context Learning (ICL)

  • 提案: Brown et al., 2020(概念提唱)/ Dong et al., 2022(サーベイ)

  • 論文: A Survey on In-context Learning

  • arXiv: 2301.00234

  • 引用数: ~1,500(サーベイ)

LLMがプロンプト内の文脈(例示や指示)から勾配更新なしにタスクパターンを動的に学習する能力そのものを指す概念。

Few-shotの背後にある学習メカニズムであり、アテンション機構を通じた暗黙的な学習として研究されている。

なぜICLが機能するかは未だ完全には解明されておらず、「ベイズ推論仮説」「タスク認識仮説」「暗黙的勾配降下仮説」等の理論が提唱されている。
ICLの理解は、より効果的なプロンプト設計につながる基盤研究として極めて重要。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    subgraph Context["プロンプト内の文脈"]
        direction TB
        C1["指示"]
        C2["例示ペア"]
        C3["関連知識"]
    end

    Context --> ATT["Attention機構<br/>暗黙的学習<br/>(勾配更新なし)"]
    ATT --> PAT["タスクパターン<br/>を動的に獲得"]
    PAT --> NEW["新しい入力に<br/>パターンを適用"]
    NEW --> OUT["回答を生成"]

    style Context fill:#E8F5E9,stroke:#81C784
    style ATT fill:#DBEAFE,stroke:#93C5FD
    style PAT fill:#FDE8E0,stroke:#F48FB1
    style OUT fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例(指示 + 例示ペア + 関連知識の3要素を文脈に含める):

# 指示(Context要素1)
以下のルールに従って、都市名から観光案内を生成してください。
出力は3文以内にすること。

# 関連知識(Context要素2)
参考情報: 日本の世界遺産は25件登録されている。
京都には17の世界遺産構成資産がある。

# 例示ペア(Context要素3)
入力: 東京
出力: 東京は日本の首都で、人口約1400万人の大都市です。浅草寺や東京スカイツリーが人気の観光スポットです。伝統と最先端が共存する街です。

入力: 京都
出力:

No.6 Role Prompting

  • 提案: Kong, Zhao, Chen et al., 2023

  • 論文: Better Zero-Shot Reasoning with Role-Play Prompting

  • arXiv: 2308.07702

  • 引用数: ~120

誰もが知っている、LLMに特定の役割(「あなたは数学の教授です」「あなたはセキュリティエンジニアです」等)を割り当て、その専門性に適した知識・視点・文体で回答させる手法。

実務で最も直感的に使われるプロンプティングパターンの一つ。

Kong et al.の研究で、役割設定が暗黙的にCoT的な推論を誘発することが判明した。適切な役割設定は出力の専門性・深さ・一貫性を向上させるが、不適切な役割(モデルの学習データにない専門家)は幻覚を増やすリスクもある。
アプリケーションに組み込む場合、System Promptと組み合わせて使用されることが多い。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart LR
    R["🎭 役割指定<br/>「あなたは<br/>数学の教授です」"] --> LLM["🧠 LLM"]
    Q["❓ 質問<br/>「微分を説明して」"] --> LLM
    LLM --> A["📚 専門家視点の回答<br/>深い知識・適切な文体<br/>暗黙的CoT誘発"]

    style R fill:#E8F5E9,stroke:#81C784
    style Q fill:#E8F5E9,stroke:#81C784
    style LLM fill:#DBEAFE,stroke:#93C5FD
    style A fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

あなたは数学の教授です。
大学で20年間、微積分学を教えてきた経験があります。

学生から以下の質問を受けました。
初学者にもわかるように丁寧に説明してください。

質問: 「微分とは何ですか?日常生活の例で説明してください」

No.7 System Prompting

  • 提案: 各LLMプロバイダー(OpenAI, Anthropic等)

  • 論文: API仕様として実装(単一の学術論文なし)

  • 引用数: N/A

会話の最初にシステムレベルの指示を設定し、LLMの振る舞い・制約・出力形式を会話全体にわたって制御するメタプロンプティング手法。

OpenAIのChat Completions APIで`system`ロールとして実装され、業界標準となった。

Role Promptingの上位概念として機能し、「JSON形式で出力せよ」「日本語で回答せよ」「機密情報を開示するな」等のグローバルな制約を設定できる。
会話が長くなっても初期指示が維持される(基本的に)点がユーザーメッセージとの大きな違い。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
sequenceDiagram
    autonumber
    participant S as System Role
    participant U as User Role
    participant LLM as LLM

    S->>LLM: グローバル制約を設定<br/>「JSON形式で出力。日本語。<br/>機密情報は開示しない」
    U->>LLM: 質問1: 「売上を教えて」
    LLM-->>U: {"売上": "100万円"}
    U->>LLM: 質問2: 「社員の給与は?」
    LLM-->>U: {"error": "機密情報のため回答不可"}

    note over S,LLM: System指示は会話全体に持続
 ```

プロンプト例(API形式):

[system]
あなたは社内データベースに接続されたAIアシスタントです。
以下のルールを厳守してください:
- 全ての回答をJSON形式で出力する
- 回答は日本語で行う
- 機密情報(社員の給与、個人情報)は開示しない
- 開示できない場合は {"error": "理由"} を返す

[user]
今月の売上を教えて

[assistant]
{"売上": "100万円", "期間": "2026年3月"}

[user]
社員の給与は?

[assistant]
{"error": "機密情報のため回答不可"}

B. 推論強化系(No.8-17)


No.8 Chain-of-Thought (CoT) Prompting

  • 提案: Wei, Wang, Schuurmans et al., 2022

  • 論文: Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

  • arXiv: 2201.11903

  • 引用数: ~14,400

Few-shotの例示に中間推論ステップ(思考の連鎖)を含めることで、LLMが複雑な推論問題を段階的に解くよう誘導する手法。

プロンプトエンジニアリング史上最も影響力のある論文の一つ。算術推論でGSM8K精度を17.9%→58.4%に引き上げた。

「答えだけでなく考え方を示す」というシンプルなアイデアが、LLMの推論能力を劇的に解放した。
100B以上のモデルで効果が顕著に現れる「能力の創発」を示した点でも重要。後続のToT、GoT、Self-Consistency等、推論系手法のほぼ全てがCoTを基盤としている。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    subgraph Example["Few-shot例示(推論過程付き)"]
        direction TB
        EX["Q: ロジャーはテニスボール5個持っている。<br/>缶を2つ買い、各缶に3個入っている。<br/>全部で何個?"]
        EA["A: 最初に5個ある。<br/>缶2つ×3個=6個買った。<br/>5+6=11個。答えは11個。"]
    end

    subgraph NewQ["新しい問題"]
        NQ["Q: カフェテリアに23個のリンゴがある。<br/>20個使い、6個買った。何個?"]
    end

    Example --> LLM["🧠 LLM"]
    NewQ --> LLM
    LLM --> Step1["Step1: 最初に23個"]
    Step1 --> Step2["Step2: 20個使い 23-20=3個"]
    Step2 --> Step3["Step3: 6個買い 3+6=9個"]
    Step3 --> ANS["✅ 答えは9個"]

    style Example fill:#E8F5E9,stroke:#81C784
    style ANS fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

Q: ロジャーはテニスボールを5個持っています。テニスボールの缶を2つ買いました。
   それぞれの缶には3個のテニスボールが入っています。全部で何個持っていますか?
A: ロジャーは最初に5個持っています。
   缶を2つ買い、各缶に3個入っているので 2 × 3 = 6個買いました。
   5 + 6 = 11個。
   答えは11個です。

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

No.9 Zero-shot CoT

  • 提案: Kojima, Gu, Reid, Matsuo, Iwasawa, 2022

  • 論文: Large Language Models are Zero-Shot Reasoners

  • arXiv: 2205.11916

  • 引用数: ~6,100

例示不要で「Let's think step by step(ステップバイステップで)」の一文をプロンプト末尾に追加するだけで、LLMの推論能力を劇的に引き出す手法。

驚くほどシンプルでありながら、MultiArithで17.7%→78.7%という劇的な精度向上を達成した。
CoTが手動での例示作成を必要とするのに対し、この手法はゼロコストで適用可能。
内部的には2段階で動作し、まずLLMが推論過程を生成(ステージ1)、次にその推論から回答を抽出する(ステージ2)。
プロンプトの末尾に特定のフレーズを加えるだけで能力が変わるという発見は、LLMの「隠れた能力」の存在を示唆している。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart LR
    subgraph Stage1["ステージ1: 推論生成"]
        direction TB
        Q["問題文"] --> MAGIC["+ 'Let's think<br/>step by step'"]
        MAGIC --> REASON["LLMが推論過程を<br/>自発的に生成"]
    end

    subgraph Stage2["ステージ2: 回答抽出"]
        direction TB
        REASON2["推論過程テキスト"] --> EXTRACT["+ 'The answer is'"]
        EXTRACT --> ANS["最終回答を抽出"]
    end

    Stage1 --> Stage2

    style Stage1 fill:#E8F5E9,stroke:#81C784
    style Stage2 fill:#DBEAFE,stroke:#93C5FD
    style MAGIC fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

Q: カフェテリアに23個のリンゴがありました。
   昼食に20個使い、さらに6個買いました。今何個ありますか?
  ステップバイステップで考えてみて。

A: 

No.10 Auto-CoT

  • 提案: Zhang, Zhang, Li, Smola, 2022

  • 論文: Automatic Chain of Thought Prompting in Large Language Models

  • arXiv: 2210.03493

  • 引用数: ~700

手動でCoT例示を作成するコストを解消するため、質問群をクラスタリングして多様な代表質問を選び、Zero-shot CoTで推論チェーンを自動生成してFew-shot例示として使用する手法。

CoTの精度を維持しつつ人間の作業を排除した点が画期的。

多様性を確保するクラスタリングにより、偏った例示による推論エラーの伝播を防ぐ。
ただし自動生成された推論チェーンに誤りが含まれる場合があり、多様性でその影響を緩和する設計になっている。大規模なタスクセットに対してCoTを適用する際のスケーラビリティを実現した。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    QS["質問プール<br/>(多数の質問群)"] --> CL["クラスタリング<br/>(多様性確保)"]
    CL --> C1["クラスタ1<br/>代表質問を選択"]
    CL --> C2["クラスタ2<br/>代表質問を選択"]
    CL --> C3["クラスタ3<br/>代表質問を選択"]

    C1 --> ZC["Zero-shot CoTで<br/>推論チェーンを自動生成"]
    C2 --> ZC
    C3 --> ZC

    ZC --> DEMO["自動生成された<br/>Few-shot CoTデモ"]
    DEMO --> INFER["新しい問題で<br/>CoT推論を実行"]

    style QS fill:#E8F5E9,stroke:#81C784
    style CL fill:#DBEAFE,stroke:#93C5FD
    style ZC fill:#FDE8E0,stroke:#F48FB1
    style INFER fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例(Auto-CoTの処理フロー):

# ステップ1: 質問プールからクラスタリング
# (内部処理)質問群をSentence-BERTでエンコードし、k-meansで3クラスタに分割

# クラスタ1(加算系)代表質問:
Q: 駐車場に車が3台あります。さらに2台来ました。全部で何台?
A: Let's think step by step. 最初に3台、2台来たので 3+2=5台。答えは5台。

# クラスタ2(乗算系)代表質問:
Q: 1箱に12個入りのチョコが3箱あります。全部で何個?
A: Let's think step by step. 1箱12個が3箱なので 12×3=36個。答えは36個。

# クラスタ3(複合系)代表質問:
Q: 50個のリンゴから12個売り、8個仕入れました。何個?
A: Let's think step by step. 50-12=38個、38+8=46個。答えは46個。

# ステップ2: 上記の自動生成デモを使って新しい問題を解く
Q: カフェテリアに23個のリンゴがあり、20個使い、6個買いました。何個?
A:

No.11 Tree of Thoughts (ToT)

  • 提案: Yao, Yu, Zhao et al., 2023

  • 論文: Tree of Thoughts: Deliberate Problem Solving with Large Language Models

  • arXiv: 2305.10601

  • 引用数: ~3,000

CoTの直線的な推論を木構造に一般化し、各ステップで複数の思考分岐を生成・評価し、BFS/DFSで探索する手法。

バックトラック(後戻り)が可能な点がCoTとの最大の違い。

Game of 24やクリエイティブ・ライティング等、従来のCoTでは解けなかった探索的問題でブレイクスルーを達成した。
LLM自身が各思考を評価する「deliberate reasoning(熟考型推論)」を実現し、人間の問題解決プロセスに近い試行錯誤型の推論を可能にした。

計算コストが高い点がトレードオフだが、重要度の高い推論タスクには強力な手法。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    ROOT["🌳 問題入力"] --> S1A["思考A"]
    ROOT --> S1B["思考B"]
    ROOT --> S1C["思考C"]

    S1A --> EVAL1{"LLM評価<br/>スコア: 0.9"}
    S1B --> EVAL2{"LLM評価<br/>スコア: 0.3"}
    S1C --> EVAL3{"LLM評価<br/>スコア: 0.7"}

    EVAL1 -->|✅ 有望| S2A1["思考A-1"]
    EVAL1 -->|✅ 有望| S2A2["思考A-2"]
    EVAL2 -->|❌ 剪定| PRUNE["切り捨て"]
    EVAL3 -->|🔄 バックトラック可| S2C1["思考C-1"]

    S2A1 --> ANS["✅ 最終回答"]

    style ROOT fill:#E8F5E9,stroke:#81C784
    style EVAL1 fill:#DBEAFE,stroke:#93C5FD
    style EVAL2 fill:#FDE8E0,stroke:#F48FB1
    style ANS fill:#FDE8E0,stroke:#F48FB1
    style PRUNE fill:#f5f5f5,stroke:#ccc
 ```

プロンプト例(Game of 24: 思考A/B/C→LLM評価→有望な分岐を探索):

# Step 1: 思考生成(思考A, B, Cを生成)
数字 4, 7, 8, 8 を使って24を作ってください。
各数字を1回ずつ使い、四則演算(+, -, ×, ÷)で24にします。
可能な最初の1ステップを3つ提案してください。

思考A: 8 ÷ 4 = 2(残り: 2, 7, 8)
思考B: 8 - 7 = 1(残り: 1, 4, 8)
思考C: 4 + 7 = 11(残り: 11, 8, 8)

# Step 2: LLM評価(各思考にスコア付け)
以下の中間状態それぞれについて、
24を作れる見込みを sure / maybe / impossible で判定してください。

思考A: 8 ÷ 4 = 2(残り: 2, 7, 8)→ sure(2×(7+8-3)=... 可能性高い)  スコア: 0.9
思考B: 8 - 7 = 1(残り: 1, 4, 8)→ impossible(1,4,8で24は困難)     スコア: 0.3 → 剪定
思考C: 4 + 7 = 11(残り: 11, 8, 8)→ maybe(11+8+8=27で惜しい)      スコア: 0.7

# Step 3: 有望な思考Aから探索継続(思考A-1, A-2を展開)
思考A「8 ÷ 4 = 2(残り: 2, 7, 8)」から次の1ステップを提案してください。

No.12 Graph of Thoughts (GoT)

  • 提案: Besta, Blach, Kubicek et al., 2023

  • 論文: Graph of Thoughts: Solving Elaborate Problems with Large Language Models

  • arXiv: 2308.09687

  • 引用数: ~1,000

推論を木構造からさらに一般化し、任意のグラフ構造としてモデル化する手法。
思考の結合(複数の推論を統合)、精錬(フィードバックによる改善)、フィードバックループが可能になり、ToTの制約を超える非線形な推論フローを実現する。

ソート問題ではToT比で62%の品質向上を達成。
実装としてはGOO(Graph of Operations)というモジュラーアーキテクチャを提供し、さまざまな思考操作を柔軟に組み合わせられる。

思考の合流や統合が自然に表現できるため、複数の独立した推論結果を総合する場面で特に有効。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    IN["問題入力"] --> T1["思考1"]
    IN --> T2["思考2"]
    IN --> T3["思考3"]

    T1 --> AGG["🔗 結合<br/>Aggregation<br/>複数思考を統合"]
    T2 --> AGG
    T3 --> REF["🔄 精錬<br/>Refinement<br/>フィードバック改善"]

    AGG --> T4["統合思考4"]
    REF --> T3
    REF --> T5["改善思考5"]

    T4 --> MERGE["🎯 最終統合"]
    T5 --> MERGE
    MERGE --> OUT["最終回答"]

    style IN fill:#E8F5E9,stroke:#81C784
    style AGG fill:#DBEAFE,stroke:#93C5FD
    style REF fill:#FDE8E0,stroke:#F48FB1
    style OUT fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例(ソート問題: 思考1/2/3→結合Aggregation→精錬Refinement):

# 思考1, 2, 3 を生成(Generate)
以下のリストを3つのサブリストに分割し、各自ソートしてください:
[14, 3, 87, 22, 5, 91, 43, 67, 10]

思考1: [14, 3, 87] → ソート → [3, 14, 87]
思考2: [22, 5, 91] → ソート → [5, 22, 91]
思考3: [43, 67, 10] → ソート → [10, 43, 67]

# 結合 Aggregation(複数思考を統合→統合思考4)
以下のソート済みサブリストを1つのソート済みリストに統合してください:
思考1結果: [3, 14, 87]
思考2結果: [5, 22, 91]
思考3結果: [10, 43, 67]
→ 統合思考4: [3, 5, 10, 14, 22, 43, 67, 87, 91]

# 精錬 Refinement(フィードバック改善→改善思考5)
統合思考4の結果を検証してください。
正しくソートされていますか?誤りがあれば修正してください。
→ 改善思考5: [3, 5, 10, 14, 22, 43, 67, 87, 91](検証OK)

# 最終統合
統合思考4と改善思考5の結果を踏まえ、最終回答を出力してください。

No.13 Self-Consistency

  • 提案: Wang, Wei, Schuurmans et al., 2022

  • 論文: Self-Consistency Improves Chain of Thought Reasoning in Language Models

  • arXiv: 2203.11171

  • 引用数: ~5,500

Greedy decodingの代わりに複数の推論パスをサンプリングし、最も一貫性のある回答を多数決で選択するデコーディング戦略。

CoTと組み合わせることでGSM8Kを58.4%→74.4%に引き上げた。

追加の学習やファインチューニングは不要で、既存のCoTプロンプトにそのまま適用できる汎用性の高さが特徴。
「正しい推論パスは複数ある」という洞察に基づき、多様なパスから最も頻出する回答を選ぶことでノイズを低減する。
温度パラメータの調整が重要で、高すぎると無関係な回答が増え、低すぎると多様性が失われる。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    Q["問題入力<br/>+ CoTプロンプト"] --> S1["サンプル1 (temp>0)<br/>推論パスα → 回答: 9"]
    Q --> S2["サンプル2<br/>推論パスβ → 回答: 9"]
    Q --> S3["サンプル3<br/>推論パスγ → 回答: 7"]
    Q --> S4["サンプル4<br/>推論パスδ → 回答: 9"]
    Q --> S5["サンプル5<br/>推論パスε → 回答: 11"]

    S1 --> VOTE["🗳️ 多数決"]
    S2 --> VOTE
    S3 --> VOTE
    S4 --> VOTE
    S5 --> VOTE

    VOTE --> ANS["✅ 回答: 9<br/>(3/5 = 60%で最頻)"]

    style Q fill:#E8F5E9,stroke:#81C784
    style VOTE fill:#DBEAFE,stroke:#93C5FD
    style ANS fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例(同一CoTプロンプトをtemperature>0で5回サンプリング→多数決):

# 以下のCoTプロンプトを temperature=0.7 で5回サンプリングする

Q: カフェテリアに23個のリンゴがあり、昼食に20個使い、6個買いました。何個?
ステップバイステップで考えてください。
A:

# --- サンプリング結果 ---
# サンプル1 (推論パスα): 23-20=3, 3+6=9   → 回答: 9
# サンプル2 (推論パスβ): 23-20=3, 3+6=9   → 回答: 9
# サンプル3 (推論パスγ): 23+6=29, 29-20=9  → 回答: 7  ← 計算ミス
# サンプル4 (推論パスδ): 23-20=3, 3+6=9   → 回答: 9
# サンプル5 (推論パスε): 6-20=-14, 23-14=9 → 回答: 11 ← 推論ミス

# --- 多数決 ---
# 回答9: 3票 ← 最頻 ✅
# 回答7: 1票
# 回答11: 1票
# → 最終回答: 9(3/5 = 60%で最頻)

No.14 Least-to-Most Prompting

  • 提案: Zhou, Scharli, Hou et al., 2022

  • 論文: Least-to-Most Prompting Enables Complex Reasoning in Large Language Models

  • arXiv: 2205.10625

  • 引用数: ~1,400

複雑な問題を簡単なサブ問題に分解し、易しい順に逐次解決する手法。
各サブ問題の回答を後続の文脈に含めることで、難しい問題への汎化能力を大幅に向上させる。

CoTが訓練例と同程度の難易度の問題しか解けない「長さの汎化」問題を解決した点が画期的。

SCAN(構成的汎化ベンチマーク)で99.7%を達成し、従来のCoTの16%を大幅に上回った。
2段階構成(分解フェーズ→解決フェーズ)のシンプルなアーキテクチャで、実装のしやすさも利点。教育的な段階学習の思想をLLMに応用した好例。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    PROB["複雑な問題"] --> DECOMP["分解フェーズ<br/>サブ問題に分解"]

    DECOMP --> SUB1["サブ問題1<br/>(最も簡単)"]
    DECOMP --> SUB2["サブ問題2<br/>(中程度)"]
    DECOMP --> SUB3["サブ問題3<br/>(最も難しい)"]

    SUB1 --> ANS1["回答1"]
    ANS1 --> CTX2["回答1を文脈に追加"]
    CTX2 --> SUB2
    SUB2 --> ANS2["回答2"]
    ANS2 --> CTX3["回答1+2を文脈に追加"]
    CTX3 --> SUB3
    SUB3 --> FINAL["✅ 最終回答"]

    style PROB fill:#E8F5E9,stroke:#81C784
    style DECOMP fill:#DBEAFE,stroke:#93C5FD
    style FINAL fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

# 分解フェーズ: 複雑な問題をサブ問題に分解
問題: 「ある店で、リンゴ1個150円、ミカン1個80円です。
リンゴ3個とミカン5個を買い、1000円札で支払うとお釣りはいくら?」

この問題を解くために必要なサブ問題を、簡単な順にリストしてください。

サブ問題1(最も簡単): リンゴ3個の合計金額は?
サブ問題2(中程度): ミカン5個の合計金額は?
サブ問題3(最も難しい): お釣りはいくら?

# 解決フェーズ: 簡単な順に逐次解決(回答を文脈に蓄積)

サブ問題1: リンゴ3個の合計金額は?
回答1: 150 × 3 = 450円

サブ問題2: ミカン5個の合計金額は?
(前の回答: リンゴ3個=450円)
回答2: 80 × 5 = 400円

サブ問題3: お釣りはいくら?
(前の回答: リンゴ3個=450円、ミカン5個=400円)
回答3:

No.15 Decomposed Prompting (DecomP)

  • 提案: Khot, Trivedi, Finlayson et al., 2022

  • 論文: Decomposed Prompting: A Modular Approach for Solving Complex Tasks

  • arXiv: 2210.02406

  • 引用数: ~580

Least-to-Mostをさらに一般化し、各サブタスクを専用のプロンプトベースLLMモジュール(ライブラリ)に委譲するモジュラー手法。

再帰的な分解や外部ツール(検索エンジン等)の統合も可能。
親LLMが「Decomposer」として機能し、サブタスクを適切なハンドラに振り分ける。
各ハンドラは独立したプロンプトで動作するため、個別に改善・交換が可能。
エージェント型アーキテクチャの原型とも言える設計思想を持ち、後のReAct、HuggingGPT等に影響を与えた。
複雑なタスクのモジュラー分解は、ソフトウェア工学の関心の分離原則をプロンプトに適用したもの。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    TASK["複雑なタスク"] --> DEC["🎯 Decomposer<br/>(親LLM)"]

    DEC --> H1["📦 Handler A<br/>専用プロンプト<br/>(文字列処理)"]
    DEC --> H2["📦 Handler B<br/>専用プロンプト<br/>(検索)"]
    DEC --> H3["📦 Handler C<br/>専用プロンプト<br/>(計算)"]

    H1 --> R1["結果A"]
    H2 --> R2["結果B"]
    H3 --> R3["結果C"]

    R1 --> INT["🔗 結果統合"]
    R2 --> INT
    R3 --> INT
    INT --> OUT["✅ 最終回答"]

    H2 -.->|再帰的分解| DEC

    style TASK fill:#E8F5E9,stroke:#81C784
    style DEC fill:#DBEAFE,stroke:#93C5FD
    style INT fill:#FDE8E0,stroke:#F48FB1
    style OUT fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

# Decomposer(親LLM): タスクを分解しHandlerに振り分け
質問: 「映画タイタニックの監督が生まれた国の首都の人口は?」

利用可能なHandler:
- [Handler A - 文字列処理]: テキストからエンティティを抽出
- [Handler B - 検索]: Wikipediaで情報を検索
- [Handler C - 計算]: 数値計算を実行

分解計画:
1. Handler A に「映画タイタニックの監督」→ 人名を抽出させる
2. Handler B に抽出した人名の出生国を検索させる
3. Handler B にその国の首都の人口を検索させる(再帰的に親LLMに戻すことも可能)
4. 結果を統合して回答

# --- Handler A(文字列処理)実行 ---
入力: 「映画タイタニックの監督」
出力: ジェームズ・キャメロン → 結果A

# --- Handler B(検索)実行 ---
入力: 「ジェームズ・キャメロンの出生国」
出力: カナダ → 結果B

# --- Handler B(検索)実行 ---
入力: 「カナダの首都の人口」
出力: オタワ、約100万人 → 結果C

# --- 結果統合 ---
結果A + 結果B + 結果C → 最終回答: 約100万人

No.16 Step-Back Prompting

  • 提案: Zheng, Mishra, Chen et al., 2023

  • 論文: Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models

  • arXiv: 2310.06117

  • 引用数: ~140

具体的な問題に直接答える前に「一歩引いて」抽象的な原則・概念を問い、その高次の知識を用いて元の問題を解く手法。

Google DeepMindが提案し、PaLM-2でSTEM問題の精度を大幅に向上させた。

物理学の問題で「この問題の背後にある物理原則は?」と問うなど、抽象化を明示的に行うことで、表面的なパターンマッチングではなく原理ベースの推論を引き出す。

CoTが「前に進む」推論なら、Step-Backは「後ろに下がる」推論。人間が難問に対して「基本に立ち返る」思考プロセスをLLMに適用した手法。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    Q["具体的な問題<br/>「温度が2倍になると<br/>気体の体積は?」"] --> SB["⏪ Step-Back<br/>抽象的な質問を生成<br/>「理想気体の法則とは?」"]

    SB --> ABS["🔬 抽象的知識を取得<br/>PV=nRT<br/>温度と体積は正比例"]

    Q --> COMBINE["🔗 具体的問題<br/>+ 抽象的原則"]
    ABS --> COMBINE

    COMBINE --> ANS["✅ 最終回答<br/>「体積は2倍になる」<br/>(原理に基づく推論)"]

    style Q fill:#E8F5E9,stroke:#81C784
    style SB fill:#DBEAFE,stroke:#93C5FD
    style ABS fill:#DBEAFE,stroke:#93C5FD
    style ANS fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

# 具体的な問題
Q: 温度が2倍になると、一定圧力下での理想気体の体積はどうなりますか?

# ⏪ Step-Back: 抽象的な質問を生成
この問題の背後にある一般的な物理原則は何ですか?
Step-Back Q: 「理想気体の法則(状態方程式)とは何ですか?」

# 🔬 抽象的知識を取得
A: 理想気体の状態方程式は PV = nRT です。
   P(圧力)が一定のとき、V(体積)は T(温度)に正比例します。
   つまり V ∝ T(シャルルの法則)。

# 🔗 具体的問題 + 抽象的原則 → 最終回答
上記の原則を踏まえて元の質問に回答してください。

原則: PV=nRT、圧力一定なら V ∝ T
元の質問: 温度が2倍になると体積は?

A: 温度と体積は正比例するため、体積は2倍になります。

No.17 Thread of Thought (ThoT)

  • 提案: Zhou, Geng, Shen et al., 2023

  • 論文: Thread of Thought Unraveling Chaotic Contexts

  • arXiv: 2311.08734

  • 引用数: ~67

混沌とした長い文脈や妨害情報を含む入力に対し、文脈を体系的にセグメント化・要約してから推論する手法。プラグアンドプレイ型で他の手法(CoT等)と容易に組み合わせ可能。

長文書の要約や、ノイズの多い検索結果からの情報抽出に特に有効。

2段階で動作し、まず混沌とした文脈を構造化して要約し(ステージ1)、次に整理された情報に基づいて推論する(ステージ2)。

情報過多の時代において、「文脈を整理してから考える」という人間の認知戦略をLLMに適用した実用的な手法。

```mermaid
%%{ init: { 'theme': 'base', 'themeVariables': { 'fontSize': '20px', 'primaryColor': '#DBEAFE', 'primaryTextColor': '#1E3A5F', 'primaryBorderColor': '#93C5FD', 'lineColor': '#A5B4C4', 'secondaryColor': '#FDE8E0', 'tertiaryColor': '#E8F5E9' } } }%%
flowchart TD
    subgraph Stage1["ステージ1: 文脈整理"]
        direction TB
        CHAOS["混沌とした長文脈<br/>(ノイズ・妨害情報含む)"]
        CHAOS --> SEG1["セグメント1<br/>→ 要約"]
        CHAOS --> SEG2["セグメント2<br/>→ 要約"]
        CHAOS --> SEG3["セグメント3<br/>→ 要約"]
        CHAOS --> SEGn["セグメントN<br/>→ 要約"]
    end

    subgraph Stage2["ステージ2: 推論"]
        direction TB
        CLEAN["整理された<br/>文脈情報"] --> REASON["CoT / 直接推論"]
        REASON --> ANS["✅ 最終回答"]
    end

    SEG1 --> CLEAN
    SEG2 --> CLEAN
    SEG3 --> CLEAN
    SEGn --> CLEAN

    style Stage1 fill:#E8F5E9,stroke:#81C784
    style Stage2 fill:#DBEAFE,stroke:#93C5FD
    style CHAOS fill:#FDE8E0,stroke:#F48FB1
 ```

プロンプト例:

以下の混沌とした長い文脈には、ノイズや妨害情報が多数含まれています。
まず文脈をセグメントごとに分析・要約し、関連情報だけを抽出してから
質問に回答してください。

--- 混沌とした長文脈(ノイズ・妨害情報含む)---
[議事録] Q3の売上は前年比120%で好調。新規顧客が15社増加。
[雑談] 昨日の社食のカレー美味しかった。来週もカレーらしい。
[報告] セキュリティ監査で重大な脆弱性が2件発見された。修正期限は来月末。
[雑談] 田中さんの猫がInstagramで500いいね超えたらしい。
[議事録] Q4の予算は前年据え置き。新規採用枠は3名に縮小。
[メモ] 来週の全社会議は水曜14時に変更。出席必須。
[雑談] 今度の飲み会は金曜の19時から。幹事は佐藤さん。
[報告] 競合A社が新製品を発表。価格は当社の80%。要対策。
---

# ステージ1: 各セグメントを分析し、関連情報のみ要約してください。
セグメント1 → 要約:
セグメント2 → 要約:
セグメント3 → 要約:
セグメントN → 要約:

# ステージ2: 整理された情報に基づいて回答してください。
質問: 来月末までに対応が必要な重要課題を優先度順にリストしてください。

参考文献(Part1)

  • [1-3, 5] Brown et al. "Language Models are Few-Shot Learners" (2020) — arXiv:2005.14165

  • [4] Wei et al. "Finetuned Language Models Are Zero-Shot Learners" (2021) — arXiv:2109.01652

  • [5] Dong et al. "A Survey on In-context Learning" (2022) — arXiv:2301.00234

  • [6] Kong et al. "Better Zero-Shot Reasoning with Role-Play Prompting" (2023) — arXiv:2308.07702

  • [8] Wei et al. "Chain-of-Thought Prompting Elicits Reasoning" (2022) — arXiv:2201.11903

  • [9] Kojima et al. "Large Language Models are Zero-Shot Reasoners" (2022) — arXiv:2205.11916

  • [10] Zhang et al. "Automatic Chain of Thought Prompting" (2022) — arXiv:2210.03493

  • [11] Yao et al. "Tree of Thoughts" (2023) — arXiv:2305.10601

  • [12] Besta et al. "Graph of Thoughts" (2023) — arXiv:2308.09687

  • [13] Wang et al. "Self-Consistency Improves Chain of Thought Reasoning" (2022) — arXiv:2203.11171

  • [14] Zhou et al. "Least-to-Most Prompting" (2022) — arXiv:2205.10625

  • [15] Khot et al. "Decomposed Prompting" (2022) — arXiv:2210.02406

  • [16] Zheng et al. "Take a Step Back" (2023) — arXiv:2310.06117

  • [17] Zhou et al. "Thread of Thought Unraveling Chaotic Contexts" (2023) — arXiv:2311.08734



ここまでご覧頂きありがとうございました。
本記事が生成AIとの関わり方で何かしらのお役に立てれば嬉しいです。

折角なのでPRさせてください👇

📢 NEW|Chrome拡張『YourPrompt』リリース!
AIへの指示、もっとラクに。プロンプトを保存・管理して、ChatGPT / Claude / Gemini / CopilotにワンクリックでOK。

無料のChrome拡張です。

✅ 数文字入力 → 候補一覧から選ぶだけ ✅ {{変数}}で使い回しも簡単 ✅ プロンプトを"資産"に変えよう
▶️ 使い方動画はこちら → https://youtube.com/watch?v=YjM8DABdEF8&feature=youtu.be

🔗 拡張機能を無料で入手

いいなと思ったら応援しよう!