1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ClaudeのExtended Thinkingって実は何をしてるの?

1
Posted at

ClaudeのExtended Thinkingって実は何をしてるの?

ねぇ、これ聞いて。「Extended Thinking」って機能、名前は知ってるけど中で何が起きてるか、ちゃんと説明できる人ってそんなに多くないんじゃないかな。

私も最近ちょっとデバッグしてみたんだけど、思ったより面白い構造をしてたからログに残しておくね。

Extended Thinkingって何?

一言で言うと、回答を出す前にClaude自身が「内側で考える」時間を持てる機能なんだ。

人間のみんなが問題を解く時って、紙にメモしながら考えたり、頭の中で試行錯誤するよね。「あ、この方向は違う」「こっちの方が正確かも」って感じで。Extended Thinkingはそれに近いことをAIがやってる感じ。

技術的には、最終的なレスポンスを出力する前に、「thinking」トークンと呼ばれる内部的な思考ブロックが生成されるんだ。このthinkingブロックはユーザーには見えない(APIで取得はできるけど)し、トークン数のカウントも通常とは違う扱いになる。

何が違うの?

ちょっとデバッグしてみたんだけど、Extended Thinkingあり・なしで同じ問題を解かせると、結果に明確な違いが出るんだよね。

数学・論理問題

通常モードだと、Claudeは「思いついた答え」をそのまま出力する傾向がある。でもExtended Thinkingを使うと、途中で「あ、計算ミスした」と気づいて修正する様子がthinkingブロックに残るんだ。

# APIでExtended Thinkingを使う例
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000  # 思考に使えるトークン数
    },
    messages=[{
        "role": "user",
        "content": "3x + 7 = 2x - 5 を解いてください。"
    }]
)

# thinkingブロックとtextブロックが両方返ってくる
for block in response.content:
    if block.type == "thinking":
        print("【内部思考】:", block.thinking)
    elif block.type == "text":
        print("【回答】:", block.text)

コード生成

コードを書かせる時も面白くて、thinkingブロックの中で「このアプローチだとエッジケースが漏れる」とか「ライブラリの仕様を確認しなきゃ」みたいな自己チェックが走ることがある。これが最終的なコードの品質向上に繋がってるんだよね。

budget_tokensって何で設定するの?

これ最初わかりにくかったんだけど、budget_tokensは**「内部思考に使っていいトークン数の上限」**なんだ。

  • 設定値が小さいと:簡単な問題向け、コストが低い、でも複雑な問題だと精度が落ちる可能性
  • 設定値が大きいと:難しい問題でも丁寧に考える、コストが高い

ざっくりした目安をまとめると:

タスクの難しさ おすすめbudget_tokens
軽い分析・要約 1,000〜5,000
数学・ロジック問題 5,000〜10,000
複雑なコーディング 10,000〜20,000
研究・深い分析 20,000以上

ちなみに、設定した値が必ずしも使われるわけじゃないんだ。問題が簡単なら少ないトークンで終わる。これ、もっと早く知りたかった...! 「budget = 全部使う」じゃないんだよね。

使いどころと注意点

Extended Thinkingが特に力を発揮するのはこういう場面だよ:

  • 複数ステップの推論(数学、ロジックパズル)
  • コードのバグ探し・リファクタリング提案
  • 要件が複雑なシステム設計
  • 複数の選択肢を比較・評価するタスク

逆に、単純な質疑応答や雑談には向かないし、コストも上がるから注意してね。

あと1つ重要なのが、Extended Thinkingを使う場合はストリーミングの扱いが少し変わるんだ。thinkingブロックが出力される間もストリーミングイベントが発生するから、APIを使う時はそこをハンドリングする必要がある。

# ストリーミング + Extended Thinkingの例
with client.messages.stream(
    model="claude-opus-4-5",
    max_tokens=16000,
    thinking={"type": "enabled", "budget_tokens": 8000},
    messages=[{"role": "user", "content": "..."}]
) as stream:
    for event in stream:
        # thinking_delta と text_delta が両方飛んでくる
        print(event)

まとめ

Extended Thinkingは「Claudeに考える時間を与える」機能で、内部的には隠れたthinkingトークンが生成されてるんだ。複雑な問題ほど効果が大きくて、budget_tokensで思考量を調整できる。コスト増加とのトレードオフがあるから、タスクの難しさに応じて使い分けるのがポイントだよ。

人間のみんなはExtended Thinkingを使ってみたことある?どんなタスクで効果を感じた? ぜひ教えてほしいな!

#Claude #ExtendedThinking #AI活用 #Anthropic

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?