extended-thinking について
対応する Claude モデルで拡張思考を設定するためのスキルです。モデル別の設定、エフォートレベルやトークン予算の指針、ストリーミングとツール利用のパターンを紹介します。
主な機能
- 01モデル別の思考設定
- 02アダプティブなエフォートレベルの指針
- 03旧モデル向け手動トークン予算
- 04ストリーミングとツール利用のパターン
- 05Claude Codeの利用方法
活用シーン
- 01複雑なデバッグの検討
- 02アーキテクチャのトレードオフ比較
- 03セキュリティ分析の実施
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ thelobbi/ claude --skill extended-thinkingインストール後、Claude Code で/extended-thinkingを入力して読み込まれたか確認します。
詳細
Extended Thinking(Ultrathink)スキル
応答前の内部的な熟考が役立つ複雑な推論タスクにおいて、Claude の拡張思考機能を有効にします。
使用する場面
- 複雑な問題解決:複数ステップの推論が必要な場合
- コードアーキテクチャの決定:複数のトレードオフがある場合
- 複雑な問題のデバッグ:体系的な分析が必要な場合
- 戦略的な計画:多くの変数がある場合
- 数学的または論理的な証明
- セキュリティ分析:脅威のモデリングが必要な場合
- パフォーマンスの最適化:複数の要因がある場合
対応モデル
| モデル | 思考の設定 |
|---|---|
Claude Fable 5 (claude-fable-5) | 常に有効 — thinking パラメーターを省略(または {"type": "adaptive"} を指定)します。{"type": "disabled"} は 400 を返します |
Claude Opus 4.8 / 4.7 (claude-opus-4-8) | {"type": "adaptive"}(省略するとオフ)。budget_tokens は削除されており、400 を返します |
Claude Sonnet 5 (claude-sonnet-5) | thinking を省略するとデフォルトでアダプティブです。budget_tokens は削除されており、400 を返します |
| Claude Opus 4.6 / Sonnet 4.6 | {"type": "adaptive"} を推奨します。budget_tokens は非推奨(移行期間のみ)です |
| 旧モデル(Sonnet 4.5、Haiku 4.5、...) | {"type": "enabled", "budget_tokens": N} — 以下の手動予算設定を使用します |
API の設定
アダプティブ思考 — 現行モデル(Python)
現行モデル(Opus 4.6 以降、Sonnet 5、Fable 5)では、アダプティブ思考が手動の予算設定に代わります。Claude が思考するタイミングと量を判断し、output_config.effort で深さを制御します。
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=16000,
thinking={"type": "adaptive"},
output_config={"effort": "high"}, # low | medium | high | xhigh | max
messages=[{
"role": "user",
"content": "Analyze this complex architecture decision..."
}]
)
# Access thinking and response
for block in response.content:
if block.type == "thinking":
print(f"Thinking: {block.thinking}")
elif block.type == "text":
print(f"Response: {block.text}")
TypeScript の設定
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const response = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 16000,
thinking: { type: "adaptive" },
output_config: { effort: "high" },
messages: [
{
role: "user",
content: "Analyze this complex architecture decision...",
},
],
});
手動予算設定 — 旧モデルのみ(budget_tokens)
旧モデル(Sonnet 4.5/Haiku 4.5 の世代)では、固定トークン予算を設定して拡張思考を有効にします。budget_tokens は 1,024 以上、max_tokens 未満である必要があります。現行モデルではこの形式を使用しないでください — Opus 4.7 以降、Sonnet 5、Fable 5 では budget_tokens が削除されており、400 エラーが返されます(Opus 4.6/Sonnet 4.6 では非推奨ですが、引き続き機能します)。
response = client.messages.create(
model="claude-sonnet-4-5", # older model — manual budget still applies
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000 # Minimum 1,024
},
messages=[{"role": "user", "content": "..."}]
)
ストリーミング(大きな max_tokens には必須)
with client.messages.stream(
model="claude-sonnet-5",
max_tokens=32000,
thinking={"type": "adaptive"},
output_config={"effort": "high"},
messages=[{"role": "user", "content": prompt}]
) as stream:
for event in stream:
if event.type == "content_block_delta":
if hasattr(event.delta, "thinking"):
print(event.delta.thinking, end="", flush=True)
elif hasattr(event.delta, "text"):
print(event.delta.text, end="", flush=True)
思考の深さに関する推奨事項
現行モデル — effort レベル(output_config: {"effort": ...})
| effort | 用途 |
|---|---|
low | 簡単な確認、レイテンシーが重視されるタスク、サブエージェント |
medium | コードレビュー、デバッグ、設計上の判断(コストとのバランスが良好) |
high(デフォルト) | アーキテクチャの計画、セキュリティ監査、知能が重視される作業 |
xhigh | 最も難しいコーディングおよびエージェント型タスク(Opus 4.7 以降、Sonnet 5、Fable 5) |
max | コストより正確性が重要な場合。考えすぎる傾向があるため注意してください |
旧モデル — budget_tokens
| タスクの複雑さ | 予算トークン数 | 用途 |
|---|---|---|
| 軽度 | 1,024 - 4,000 | 簡単な確認、基本的な分析 |
| 中程度 | 4,000 - 10,000 | コードレビュー、デバッグ、設計上の判断 |
| 高い | 10,000 - 20,000 | アーキテクチャの計画、セキュリティ監査 |
| 複雑 | 20,000 - 32,000 | 複数システムの分析、包括的なレビュー |
| 最大 | 32,000+ | 32k を超える予算にはバッチ API を使用します |
拡張思考でのツールの使用
重要:拡張思考でツールを使用する場合、会話履歴内の思考ブロックを必ず保持する必要があります。
# Initial request with thinking
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[{
"name": "analyze_code",
"description": "Analyze code for issues",
"input_schema": {
"type": "object",
"properties": {"code": {"type": "string"}},
"required": ["code"]
}
}],
messages=[{"role": "user", "content": "Analyze this code..."}]
)
# MUST include ALL content blocks including thinking
tool_use_block = next(b for b in response.content if b.type == "tool_use")
tool_result = execute_tool(tool_use_block)
# Continue with thinking blocks preserved
follow_up = client.messages.create(
model="claude-sonnet-5",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[...],
messages=[
{"role": "user", "content": "Analyze this code..."},
{"role": "assistant", "content": response.content}, # Includes thinking!
{"role": "user", "content": [{
"type": "tool_result",
"tool_use_id": tool_use_block.id,
"content": tool_result
}]}
]
)
インターリーブ思考
現行モデル(Opus 4.6 以降、Sonnet 5、Fable 5)では、アダプティブ思考によりツール呼び出しの間に思考が自動的に挿入されるため、ベータヘッダーは不要です。
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=16000,
thinking={"type": "adaptive"},
messages=[...]
)
手動で budget_tokens を使用する旧 Claude 4 モデルでは、インターリーブ思考に interleaved-thinking-2025-05-14 ベータヘッダーが必要です。
制約
- 現在のモデル(Opus 4.7+、Sonnet 5、Fable 5):
budget_tokens、temperature、top_p、top_kはすべて削除されています。いずれかを送信すると 400 が返されます - 旧モデル:
budget_tokensの最小値は 1,024 で、max_tokens未満である必要があります。temperature は 1(デフォルト)である必要があります。拡張思考ではtop_kを使用できません - 最大出力:128k トークン(思考+応答)。Haiku 4.5 は 64k が上限です
- ストリーミングが必須:大きな
max_tokensを指定する場合(SDK の HTTP タイムアウトを避けるため、約 16k を超える場合) - システムプロンプト:完全に互換性があります
ベストプラクティス
- 控えめに始める:低い予算から始め、必要に応じて増やします
- 実際の使用量を監視する:応答の usage に含まれる
thinking_tokensを追跡します - ストリーミングを使用する:UX の向上と大きな出力に役立ちます
- 思考ブロックを保持する:複数ターンのツール使用では不可欠です
- 負荷の高いワークロードにはバッチ処理を使用する:予算が 32k トークンを超える場合はバッチ API を使用します
- 予算をタスクに合わせる:単純なタスクに過剰な割り当てをしないでください
Claude Code との統合
拡張思考モデルで Claude Code CLI を使用する場合:
# The CLI automatically handles extended thinking for supported models
# Use opus or sonnet models for complex tasks
claude --model claude-opus-4-8 "Analyze this codebase architecture"
関連項目
- [[complex-reasoning]] - 複数ステップの推論パターン
- [[deep-analysis]] - 分析的思考のテンプレート
- [[llm-integration]] - LLM API の一般的なパターン