0Pricing
AI Prompt Engineering · レッスン

Chain-of-Thoughtプロンプティング

段階的な推論を引き出します。

「Chain-of-Thoughtプロンプティング」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。

トークン予算としての推論

Chain-of-thought(CoT)プロンプティングは、最終的な回答の前に中間的な推論ステップを引き出します。重要な点は、Transformer がトークンごとに一定量の計算を行うことです。そのため、モデルが推論トークンを出力できるようにすると、答えに到達するための逐次計算量を実質的に増やせます。

難しい問題に対して即答を強制すると、利用できる計算量に上限が設定されます。CoT では生成トークン全体に計算を分散させることで、この上限を取り除きます。

# Direct: model must compute everything before the first token
DIRECT = 'Q: ' + q + '\nA:'
# CoT: model can use tokens as scratch space
COT = 'Q: ' + q + '\nA: Let us reason step by step.'

Zero-Shot CoT

有名なトリガーフレーズ Let us think step by step(Kojima et al., 2022)は、例なしで推論を引き出します。このフレーズの後には解答例が続くというパターンを、命令チューニング済みモデルが内部化しているため機能します。

Zero-shot CoT は低コストで驚くほど効果的ですが、厳選したデモを使う few-shot CoT よりも推論品質を制御しにくくなります。

def zero_shot_cot(question):
    stage1 = llm('Q: ' + question + '\nA: Let us think step by step.')
    # Extract the final answer in a second, constrained call
    stage2 = llm(stage1 + '\nTherefore, the final answer is:')
    return parse_answer(stage2)

Few-Shot CoT

Few-shot CoT(Wei et al., 2022)では、答えだけでなく推論の軌跡も含むデモを提示します。これにより、望ましい形式だけでなく、推論の方法も学習させられるため、zero-shot よりも信頼性と一貫性の高い推論チェーンが得られます。

コピーさせたい推論のスタイル、粒度、長さに合うデモを厳選してください。デモ間で推論が一貫していないと、生成されるチェーンも一貫しません。

FS_COT = (
    'Q: Roger has 5 balls, buys 2 cans of 3. How many balls?\n'
    'A: 5 + 2*3 = 5 + 6 = 11. The answer is 11.\n\n'
    'Q: ' + question + '\nA:'
)

推論と回答の分離

必ず最終回答を機械で抽出可能にしてください。チェーンの末尾に、固定マーカー(例:The answer is X や JSON フィールド)を置きます。自由形式のチェーンを解析するのは脆弱です。

ユーザー向け製品では、チェーンを隠し、解析した回答だけを表示してもよいでしょう。推論は内部的なスクラッチパッドとして保持します。

import re

def extract(chain):
    m = re.search(r'[Tt]he answer is\s*(.+?)[.\n]', chain)
    if not m:
        raise ValueError('no answer marker found')
    return m.group(1).strip()

忠実性は保証されない

重要な注意点として、言語化されたチェーンがモデルの実際の計算を反映しているとは限りません。研究では、モデルがもっともらしい推論を生成しながら、実際には選択肢の位置などの隠れたバイアスに左右された回答を、事後的に正当化している可能性が示されています。

CoT を忠実な説明や監査証跡として扱わないでください。多くのタスクで正解率は向上しますが、モデルの実際の仕組みを知る窓ではありません。

# Faithfulness probe: perturb an irrelevant cue (e.g., always make
# option A correct in the few-shot). If the chain still 'justifies'
# choosing A, the stated reasoning is unfaithful to the real cause.

CoT のデコード設定

決定的なチェーンを一つ生成する場合は、温度を低くすると分散が小さくなります。一方、CoT はサンプリングと非常に相性がよく、中程度の温度で多様なチェーンを複数生成し、それらを集約できます(self-consistency で扱います)。

複数の経路をサンプリングするつもりなら、greedy decoding は避けてください。greedy decoding では多様性が失われ、集約の効果がなくなります。

single = llm(COT, temperature=0.0)            # one stable chain
paths  = [llm(COT, temperature=0.7) for _ in range(10)]  # diverse

構造化推論と表形式推論

複雑な問題では、チェーンに構造を持たせます。番号付きのステップ、状態表、または計画と実行を分ける形式などです。構造化によってステップの省略が減り、中間状態を検証しやすくなります。

プログラム支援型のアプローチではさらに、推論として実行可能なコードを出力し、算術計算をインタープリターに任せることで、計算ミスの一群を排除します。

PAL = (
    'Solve by writing Python. Q: ' + q + '\n'
    'A:\ndef solve():\n'
    '    # the model writes code here, then we exec() it\n'
)
# Offload arithmetic to a deterministic interpreter

長さ、コスト、レイテンシ

CoT では出力トークン数が増えるため、コストとレイテンシが上昇します。簡単な項目ではオーバーヘッドに見合う効果がなく、難しい項目では不可欠です。実用的なパターンは適応的推論です。低コストの難易度推定や、直接回答の確信度が低い場合にだけ CoT を起動します。

思考機能を内蔵した推論モデルでは、チェーンを自分でプロンプトに記述するのではなく、推論努力の予算を制御します。

def adaptive(question):
    direct = llm('Q: ' + question + '\nA (answer only):', temperature=0)
    if confidence(direct) > 0.85:
        return direct
    return zero_shot_cot(question)  # escalate to reasoning only if needed

推論に特化したモデルでの CoT

最新の推論モデルは、拡張された内部熟考を自動的に行います。冗長な Let us think step by step という指示を詰め込むと、冗長になるだけでなく、学習済みの思考プロセスを妨げて逆効果になることさえあります。

こうしたモデルでは、簡潔なタスク記述と明示的な回答形式の要件を優先し、チェーンを手作業で作るのではなく、推論努力のパラメータを調整してください。

# Reasoning-native model: let it think, just constrain the output
resp = reasoning_model(
    prompt=question,
    reasoning_effort='medium',
    output_format='Final answer on the last line as: ANSWER=<x>'
)

CoTが逆効果になる場合

CoTは、熟考によって正しい直感が上書きされるタスク、単純なパターンマッチング、あるいは言語化によってモデルが暗黙には犯さない誤りが生じるタスクでは、性能を低下させることがあります。また、長いチェーン内にプロンプトインジェクションを仕込める攻撃対象領域も広げてしまいます。

タスクごとに、CoTと直接回答をベンチマークで比較してください。推論プロンプトがあらゆる場面で有効だと決めつけてはいけません。

def should_use_cot(task_acc_cot, task_acc_direct, cot_cost_mult):
    gain = task_acc_cot - task_acc_direct
    # Only adopt CoT if accuracy gain justifies the token multiplier
    return gain > MIN_GAIN and gain / cot_cost_mult > MIN_EFFICIENCY

CoTを本番環境に導入する

本番環境でCoTを使う場合は、一貫性のある例題を厳選する(またはモデル本来の推論に任せる)、解析可能な回答マーカーを必須にする、難しい項目では複数のチェーンをサンプリングする、可能な場合はコード実行で算術を検証する、そしてコストを管理するため難易度の推定に基づいて推論を有効化してください。

オフライン分析用にチェーンをログへ記録しても、それを正解根拠の説明としてユーザーに公開してはいけません。

def production_solve(q):
    if easy(q):
        return extract(llm(DIRECT_PROMPT.format(q=q), temperature=0))
    chains = [llm(FS_COT.format(q=q), temperature=0.7) for _ in range(8)]
    return majority_vote([extract(c) for c in chains])

クイックチェック

CoTがなぜ有効なのか、またどのような場合に有効でないのかを考えてみましょう。

まとめ

重要なポイント:

  • CoTは、追加のトークンと引き換えに逐次的な計算量を増やします。多段階のタスクには有効ですが、単純なタスクには適しません。
  • Zero-shot CoTはトリガーフレーズを使い、few-shot CoTは一貫した推論例を提示します。
  • 必ず機械的に抽出できる回答マーカーで終えてください。チェーンは忠実な説明ではありません。
  • 難しい項目では複数のチェーンをサンプリングし、算術はコードに任せ、難易度に応じてCoTを有効化してください。
  • 推論を本来備えたモデルでは、冗長なチェーンの指示よりも、簡潔なプロンプトと推論量の予算を優先してください。

よくある質問

「Chain-of-Thoughtプロンプティング」レッスンは無料ですか?

はい。「Chain-of-Thoughtプロンプティング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。

「Chain-of-Thoughtプロンプティング」で何を学びますか?

段階的な推論を引き出します。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Prompt Engineeringを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Chain-of-Thoughtプロンプティング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Prompt Engineeringレッスンでコードを書いて実行できますか?

はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Chain-of-Thoughtプロンプティング
  2. Self-Consistencyサンプリング
  3. Tree-of-Thought探索
  4. 推論プロンプトが役立つ場面
← AI Prompt Engineeringに戻る