第3章:高度なプロンプト技術

Tree of Thought、Self-Consistency、ReAct、推論モデルプロンプト

読了時間:25-30分 プロンプト例:12 演習問題:5 難易度:中級-上級
言語:日本語 | English

はじめに

第1章と第2章の基礎をベースに、この章では複雑な推論タスクでLLMの性能を大幅に向上させる高度なプロンプト技術を扱います。これらの技術は2025-2026年時点でのプロンプトエンジニアリングの最先端を代表しています。

この章を終えると、以下のことができるようになります:

Tree of Thought(ToT)

Tree of Thoughtプロンプティングは、LLMに複数の推論パスを同時に探索させ、各パスを評価し、最も有望な方向を選択させることを促します。計画、探索、または創造的な探求が必要な問題に特に効果的です。

Tree of Thoughtの仕組み

graph TD A[問題] --> B1[思考1] A --> B2[思考2] A --> B3[思考3] B1 --> C1[評価: 70%] B2 --> C2[評価: 85%] B3 --> C3[評価: 40%] C2 --> D1[パス2を継続] D1 --> E1[思考2.1] D1 --> E2[思考2.2] E1 --> F1[最終回答] style C2 fill:#4caf50 style F1 fill:#2196f3

基本的なToTプロンプト

Tree of Thoughtの例

Tree of Thought推論を使用してこの問題を解決してください。

**問題**:農夫がオオカミ、ヤギ、キャベツと一緒に川を渡る必要があります。
ボートは農夫と1つのアイテムしか運べません。一人にされると:
- オオカミはヤギを食べる
- ヤギはキャベツを食べる

**手順**:
1. 3つの異なる初期の手を生成
2. 各手を評価(安全/危険と理由)
3. 最良の手を選択して続行
4. 解決するまで繰り返す

**各ステップの形式**:
```
手の選択肢 [N]:
- アクション: [何を渡すか]
- 手の後の状態: [誰/何がどこにいるか]
- 評価: [安全/危険] - [理由]
- スコア: [1-10]
```

ツリー探索を開始してください:

Self-Consistency

Self-Consistencyは、複数の独立した推論パスを生成し、最も一般的な回答を選択することで信頼性を向上させます。これにより、個々の推論エラーの影響を軽減できます。

Self-Consistencyプロンプト

この問題を5回、異なる推論アプローチを使用して解決してください。
その後、最も一貫した回答を報告してください。

**問題**:店ですべての商品に20%の割引があります。レジでさらに10%引かれます。
100ドルの商品で合計何パーセント節約できますか?

**アプローチ1**:順次パーセンテージ計算
[推論...]
回答1: ___

**アプローチ2**:最終価格から逆算
[推論...]
回答2: ___

...

**最終回答**: [最も一般的な回答]
**信頼度**: [一貫性に基づく]

ReActパターン

ReAct(Reasoning + Acting)は、LLMが問題についての推論とアクション(情報検索やツール使用など)を交互に行うプロンプティングパターンです。これはAIエージェントの基盤となります。

graph LR A[質問] --> B[思考] B --> C[アクション] C --> D[観察] D --> E{完了?} E -->|いいえ| B E -->|はい| F[回答] style B fill:#fff3e0 style C fill:#e3f2fd style D fill:#e8f5e9

ReActパターンテンプレート

ReAct形式を使用して以下の質問に回答してください。
以下のアクションにアクセスできます:
- Search[クエリ]: Wikipediaで情報を検索
- Calculate[式]: 数学計算を実行
- Lookup[用語]: 現在のコンテキストで特定の用語を検索

**質問**: 2024年オリンピックを開催した国の人口密度は?

**形式**:
思考1: [最初に何をすべきかの推論]
アクション1: [アクション名][入力]
観察1: [学んだこと]

思考2: [次の推論ステップ]
アクション2: [次のアクション]
観察2: [結果]

... 回答が得られるまで続ける ...

最終回答: [観察に基づく回答]

開始:

推論モデル向けプロンプティング(o1/o3)

OpenAIのo1o3モデル(およびDeepSeek-R1などの同様の推論モデル)は、応答前に内部「思考」トークンを使用します。これらのモデルは標準的なLLMとは異なるプロンプティング戦略を必要とします。

標準LLMとの主な違い

標準LLM(GPT-4、Claude) 推論モデル(o1、o3、DeepSeek-R1)
詳細な指示が有効 簡潔で明確な目標を好む
明示的なCoTプロンプティングが必要 内部でCoTを実行(自動)
Few-shot例が出力を改善 Few-shotは実際にパフォーマンスを低下させる可能性

o1/o3のベストプラクティス

推論モデル向けガイドライン

  1. 簡潔に:問題を明確に述べ、過度に説明しない
  2. 「ステップバイステップで考えて」と言わない:自動的に行う
  3. Few-shot例を避ける:推論を制約する可能性がある
  4. デリミタを使用:入力の異なる部分を明確に分離
  5. 出力形式を最後に指定:「最終回答を...として提供」

o1/o3向けの悪いプロンプト

あなたは専門の数学者です。ステップバイステップで考え、すべての作業を示してください。

類似の問題を解く方法の例を示します:
[長い例...]

この問題を慎重に解き、すべてのケースを考慮してください:
ランダムな5枚のポーカーハンドがちょうど1ペアを含む確率は?

問題:システムプロンプト、CoT指示、Few-shot例、過度の指定

o1/o3向けの良いプロンプト

ランダムな5枚のポーカーハンドがちょうど1ペアを含む確率を計算してください
(1つのランクのカード2枚、異なるランクのカード3枚)。

最終回答を約分された分数と小数(小数点以下4桁)として提供してください。

なぜ効果的か:簡潔な問題文、明確な出力形式、モデルが自由に推論できる

マルチターン会話設計

効果的なマルチターン会話の設計には、メッセージ間でコンテキストがどのように構築されるかを計画し、会話状態を管理することが含まれます。

会話フローパターン

ファネルパターン

広く始め、徐々に焦点を絞る:

ファネル会話

**ターン1(ユーザー)**: Pythonプロジェクトで助けが必要です
**ターン1(AI)**: 喜んでお手伝いします!教えていただけますか:
- どんな種類のプロジェクト(Webアプリ、データ分析、自動化)?
- どんな具体的な課題に直面していますか?

**ターン2(ユーザー)**: Webスクレイピングプロジェクトです。動的コンテンツで困っています。
**ターン2(AI)**: 動的コンテンツは通常JavaScriptレンダリングが必要です。
- どのWebサイトをスクレイピングしていますか?
- SeleniumやPlaywrightを試しましたか?

**ターン3(ユーザー)**: BeautifulSoupを使っています。コンテンツはAJAXでロードされます。
**ターン3(AI)**: BeautifulSoupはJavaScriptを処理できません。オプションは次の通り:
[AJAXコンテンツ向けの具体的な解決策...]

プロンプトチェーン

プロンプトチェーンは、一つのプロンプトの出力が別のプロンプトの入力になるように複数のプロンプトを接続します。これにより、単一プロンプトの能力を超える複雑なワークフローが可能になります。

ドキュメント分析チェーン

def analyze_document(document):
    # ステップ1: キー情報を抽出
    extraction_prompt = f"""
    このドキュメントから抽出:
    - 主要トピック(リスト)
    - キーエンティティ(人物、組織、場所)
    - 言及された日付と数値
    - アクションアイテム(あれば)

    ドキュメント:
    {document}

    JSONとして返してください。
    """
    extracted = call_llm(extraction_prompt)

    # ステップ2: 感情とトーンを分析
    analysis_prompt = f"""
    この抽出された情報に基づいて:
    {extracted}

    分析:
    - 全体的な感情(ポジティブ/ネガティブ/ニュートラル)
    - トーン(フォーマル/インフォーマル/緊急/ルーティン)
    - 主な懸念事項や優先事項

    JSONとして返してください。
    """
    analysis = call_llm(analysis_prompt)

    # ステップ3: エグゼクティブサマリーを生成
    summary_prompt = f"""
    以下を組み合わせてエグゼクティブサマリーを作成:
    抽出情報: {extracted}
    分析: {analysis}
    """
    return call_llm(summary_prompt)

演習問題

演習1:Tree of Thought(難易度:中)

課題:以下の制約で東京への3日間の旅行を計画するためにTree of Thoughtを使用してください:

演習2:Self-Consistency(難易度:中)

課題:以下を決定するためのSelf-Consistencyプロンプトを設計してください:

「企業がAIを使って求職者をスクリーニングすることは倫理的か?」

演習3:ReActパターン(難易度:中)

課題:以下ができる「リサーチアシスタント」のReActプロンプトを作成してください:

演習4:推論モデルプロンプト(難易度:上級)

課題:このプロンプトをo1/o3向けに書き直してください:

あなたは専門のソフトウェアアーキテクトです。この問題について
ステップバイステップで慎重に考えてください。良いアーキテクチャの例を示します...

1日1000万ユーザーを処理するEコマースプラットフォーム向けの
スケーラブルなマイクロサービスアーキテクチャを設計してください。

演習5:プロンプトチェーン(難易度:上級)

課題:「コードレビュー自動化」のための4ステップのプロンプトチェーンを設計してください。

章のまとめ

重要ポイント

次のステップ

第4章では、Function CallingとTool Useを探求します:


参考文献


更新履歴

免責事項