max_thinking_tokensとは
拡張思考(Extended Thinking)の概念
max_thinking_tokensは、Claude APIの拡張思考機能で使用されるパラメータです。これにより、Claudeがレスポンスを生成する前に、より多くの「思考」時間を使って問題を分析できます。
通常のレスポンス:
質問 → 即座にレスポンス
拡張思考を使用:
質問 → 深い思考プロセス → より熟考されたレスポンス
いつ拡張思考が有効か
効果的なケース:
- 複雑なアルゴリズムの設計
- 大規模なリファクタリング
- アーキテクチャの決定
- セキュリティ分析
- パフォーマンス最適化
- デバッグ(難解なバグ)
効果が限定的なケース:
- 簡単なコード生成
- 定型的な作業
- ファイル操作
- 単純な質問への回答
Claude Codeでの設定方法
API経由での設定
Claude APIを直接使用する場合、リクエストにmax_thinking_tokensを含めます:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000 # 思考に使用するトークン数
},
messages=[{
"role": "user",
"content": "複雑なマイクロサービスアーキテクチャを設計してください"
}]
)
Claude Code CLIでの活用
Claude Code CLIで拡張思考を活用するには、いくつかのアプローチがあります:
1. ultrathinkプロンプトの使用
ultrathink
この分散システムの設計について深く考えて
最適なアーキテクチャを提案してください
2. 明示的な思考指示
じっくり考えてから回答してください。
以下の複雑な問題を分析してください:
- マイクロサービス間の通信パターン
- データ整合性の保証方法
- スケーラビリティの確保
思考トークン数の目安
タスクの複雑さ | 推奨トークン数 | ユースケース |
|---|---|---|
低 | 1,000-3,000 | 簡単な分析 |
中 | 3,000-8,000 | 一般的な設計 |
高 | 8,000-16,000 | 複雑なアーキテクチャ |
最高 | 16,000+ | 極めて複雑な問題 |
実践的な活用例
例1:複雑なアルゴリズム設計
ultrathink
以下の要件を満たす検索アルゴリズムを設計してください:
【要件】
- 100万件のデータから全文検索
- レスポンスタイム100ms以内
- 日本語のあいまい検索対応
- リアルタイム更新に対応
【制約】
- メモリ使用量:4GB以内
- 使用可能な技術:Elasticsearch不可
設計の根拠と代替案の比較も含めてください。
例2:セキュリティ監査
ultrathink
このコードベースのセキュリティ監査を行ってください。
【チェック観点】
1. 認証・認可の実装
2. 入力値検証
3. SQLインジェクション
4. XSS脆弱性
5. CSRF対策
6. 機密情報の取り扱い
各脆弱性について:
- 深刻度
- 攻撃シナリオ
- 修正方法
を詳細に分析してください。
例3:パフォーマンス最適化
ultrathink
以下のクエリのパフォーマンスを最適化してください:
【現状】
- 実行時間:5秒
- 目標:100ms以内
【クエリ】
SELECT * FROM orders o
JOIN customers c ON o.customer_id = c.id
JOIN products p ON o.product_id = p.id
WHERE o.created_at > '2024-01-01'
ORDER BY o.total DESC
LIMIT 100;
インデックス戦略、クエリ書き換え、
スキーマ変更の観点から分析してください。
思考プロセスの確認
思考内容の表示
APIレスポンスには思考ブロックが含まれます:
for block in response.content:
if block.type == "thinking":
print("思考プロセス:")
print(block.thinking)
elif block.type == "text":
print("レスポンス:")
print(block.text)
思考の質を評価
良質な拡張思考の特徴:
- 問題の多角的な分析
- 代替案の比較検討
- トレードオフの考慮
- エッジケースの検討
- 根拠の明示
コストとパフォーマンスの考慮
トークン使用量
拡張思考を使用すると、追加のトークンを消費します:
通常のリクエスト:
入力トークン + 出力トークン
拡張思考あり:
入力トークン + 思考トークン + 出力トークン
最適化のヒント
1. 必要な時だけ使用
# 複雑なタスクのみ拡張思考を使用
if is_complex_task:
thinking_budget = 10000
else:
thinking_budget = 0
2. 段階的なアプローチ
# まず通常モードで分析
analyze: このコードの問題点を特定して
# 詳細が必要な場合のみ拡張思考
ultrathink: 特定された問題の詳細な修正案を提示して
3. 適切なトークン数の選択
タスクの複雑さに応じてトークン数を調整することで、コストと品質のバランスを取ります。
よくある質問
Q1: max_thinking_tokensを増やすほど結果が良くなる?
必ずしもそうではありません。タスクの複雑さに見合ったトークン数を設定することが重要です。単純なタスクに過剰な思考トークンを割り当てても効果は限定的です。
Q2: 拡張思考は常に使うべき?
いいえ。以下の場合は通常モードで十分です:
- 簡単なコード生成
- 定型的な変換作業
- 明確な答えがある質問
Q3: 思考内容は保存される?
APIレスポンスに含まれる思考ブロックはセッション中のみ利用可能です。必要に応じてログに保存してください。
Claude Codeのベストプラクティス
1. 明確な問題定義
❌ このコードを改善して
✓ ultrathink
このコードのメモリ使用量を50%削減する
方法を検討してください。現在のメモリ使用量は
2GBで、目標は1GB以下です。
2. 段階的な複雑化
# ステップ1: 問題の理解
まず現在のアーキテクチャの問題点を分析して
# ステップ2: 深い分析(拡張思考)
ultrathink: 特定された問題に対する解決策を
3つの観点から比較検討してください
# ステップ3: 実装
選択した解決策を実装してください
3. フィードバックループ
# 思考結果を確認
この分析結果について、特にXXの部分を
もう少し深掘りしてください
まとめ
Claude Codeでのmax_thinking_tokens活用のポイント:
- 複雑なタスクに拡張思考を活用
- 適切なトークン数を設定
- 段階的なアプローチで効率化
- コストと品質のバランスを考慮
- 思考結果を検証して品質向上
拡張思考を効果的に活用することで、Claude Codeの分析能力を最大限に引き出し、より高品質な開発成果を得ることができます。