Claude Opus 4.7とは?推論モデルの使い方と速度2倍にするプロンプト4テンプレート
Opus 4.7の「拡張思考」とは
Claude Opus 4.7の最大の特徴は「Extended Thinking(拡張思考)」です。通常の回答生成とは別に、内部で段階的な思考プロセスを実行してから答えを出します:
通常モデル:
入力 → [内部処理] → 回答
Opus 4.7 (Extended Thinking):
入力 → [思考ブロック1] → [思考ブロック2] → [思考ブロック3] → 回答
↑ ここに時間がかかる(ただし精度が上がる)
「遅い」と感じる場合は、このプロセスが走っています。単純なタスクにはSonnetを使い、複雑な推論が必要な場合にのみOpus 4.7を使うのが正解です。
APIでExtended Thinkingを使う
# extended_thinking.py
import anthropic
import os
client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
def think_deeply(problem: str, budget_tokens: int = 5000) -> dict:
"""
Extended Thinkingで複雑な問題を解く
Args:
problem: 解きたい問題
budget_tokens: 思考に使うトークン数(多いほど精度が上がるがコスト増)
"""
response = client.messages.create(
model="claude-opus-4-5", # Opus 4.xシリーズ
max_tokens=16_000,
thinking={
"type": "enabled",
"budget_tokens": budget_tokens # 最小1024、最大100000
},
messages=[{
"role": "user",
"content": problem
}]
)
# 思考プロセスと回答を分離
thinking_content = ""
answer_content = ""
for block in response.content:
if block.type == "thinking":
thinking_content = block.thinking
elif block.type == "text":
answer_content = block.text
return {
"thinking": thinking_content[:500] + "...", # 長いので先頭だけ
"answer": answer_content,
"thinking_tokens": len(thinking_content.split()),
"total_cost_estimate": (
response.usage.input_tokens * 15 / 1_000_000 +
response.usage.output_tokens * 75 / 1_000_000
)
}
# 使用例
result = think_deeply(
problem="""
Pythonのデコレータパターンを使って、以下の要件を全て満たす
キャッシュ機能を実装してください:
1. TTL(有効期限)の設定が可能
2. LRU(最近最も使われていないものを削除)方式
3. 最大キャッシュサイズの制限
4. スレッドセーフ
5. 非同期関数(async/await)にも対応
設計の判断理由も説明してください。
""",
budget_tokens=10_000
)
print(f"回答:\n{result['answer']}")
print(f"\n推定コスト: ${result['total_cost_estimate']:.4f}")
4つの効果的なプロンプトテンプレート
テンプレート1:段階的な推論(バグ修正)
BUG_ANALYSIS_PROMPT = """以下のコードのバグを分析してください。
コード:
```python
{code}
エラー: {error}
分析手順:
- エラーの原因を特定する
- 問題のある行と理由を説明する
- 修正後のコードを提示する
- 同様のバグが他にないか確認する
- 再発防止のためのベストプラクティスを提案する
各ステップで「なぜそう判断したか」を説明してください。"""
response = client.messages.create( model=“claude-opus-4-5”, max_tokens=4096, thinking={“type”: “enabled”, “budget_tokens”: 8000}, messages=[{ “role”: “user”, “content”: BUG_ANALYSIS_PROMPT.format( code=“def divide(a, b):\n return a / b\n\nresult = divide(10, 0)”, error=“ZeroDivisionError: division by zero” ) }] )
### テンプレート2:背景情報を提供した設計相談
```python
ARCHITECTURE_PROMPT = """以下の背景でシステム設計を提案してください。
【背景】
- 現在のシステム: {current_system}
- 問題点: {problems}
- 制約: {constraints}
- 試したこと: {tried}
【求めること】
- 3つの設計案(トレードオフを含む)
- 推奨案とその理由
- 移行手順のロードマップ"""
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=8192,
thinking={"type": "enabled", "budget_tokens": 15000},
messages=[{
"role": "user",
"content": ARCHITECTURE_PROMPT.format(
current_system="モノリシックなDjango + PostgreSQL、日次10万リクエスト",
problems="特定APIのレイテンシが3秒以上、スケールが困難",
constraints="チームはPython/Go、インフラはAWS、予算$5000/月以下",
tried="水平スケールを試したがDBがボトルネック"
)
}]
)
テンプレート3:出力形式を厳密に指定
STRUCTURED_OUTPUT_PROMPT = """以下のPythonコードをレビューして、JSON形式で返してください。
コード:
```python
{code}
以下のJSONフォーマットで回答してください: {{ “score”: 1-10の評価(1が最低、10が最高), “issues”: [ {{ “severity”: “critical|warning|info”, “line”: 行番号, “description”: “問題の説明”, “fix”: “修正後のコード” }} ], “positives”: [“良い点のリスト”], “summary”: “総評(100文字以内)” }}
コードブロックなしで、純粋なJSONのみを返してください。"""
import json
response = client.messages.create( model=“claude-opus-4-5”, max_tokens=2048, messages=[{ “role”: “user”, “content”: STRUCTURED_OUTPUT_PROMPT.format( code=“password = ‘123456’\ndb.query(f’SELECT * FROM users WHERE id={user_id}’)” ) }] )
JSONとして直接パース可能
review = json.loads(response.content[0].text) print(f”スコア: {review[‘score’]}/10”) for issue in review[‘issues’]: print(f”[{issue[‘severity’]}] Line {issue[‘line’]}: {issue[‘description’]}“)
### テンプレート4:検証ステップを組み込む
```python
VERIFIED_ANALYSIS_PROMPT = """以下のビジネス判断を分析してください。
【状況】
{situation}
分析手順:
1. 初期分析(直感的な判断)
2. 反証の検討(初期分析が間違っている可能性)
3. データ・前提の確認(分析に使った仮定)
4. 修正された判断(反証を踏まえた結論)
5. 判断の信頼度(0-100%)と根拠
最後に「この分析の限界」を1つ挙げてください。"""
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=4096,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[{
"role": "user",
"content": VERIFIED_ANALYSIS_PROMPT.format(
situation="スタートアップがSeries Aで調達した1億円を全額マーケティングに使うべきか"
)
}]
)
Opus 4.7 vs Sonnet 使い分け基準
| タスク | 推奨モデル | 理由 |
|---|---|---|
| 複雑なアーキテクチャ設計 | Opus 4.7 | 多段階の推論が必要 |
| 難解なバグ分析 | Opus 4.7 | 複数の仮説検証が必要 |
| ビジネス戦略分析 | Opus 4.7 | 反証・検証が重要 |
| コード補完・リファクタ | Sonnet | 速い・コスト1/5 |
| 文書要約・翻訳 | Sonnet | 推論不要 |
| 定型コード生成 | Haiku | さらに安い |
budget_tokensの選び方
# タスクの複雑さに応じてbudget_tokensを調整
BUDGET_BY_COMPLEXITY = {
"simple": 1_024, # 簡単な推論(最低値)
"medium": 5_000, # 一般的なタスク
"complex": 10_000, # 複雑なアーキテクチャ設計
"max": 100_000, # 数学的証明や超複雑な推論
}
# コスト見積もり
def estimate_thinking_cost(budget_tokens: int) -> float:
# 思考トークンは出力トークンとして課金 $75/1M
return budget_tokens * 75 / 1_000_000
for label, tokens in BUDGET_BY_COMPLEXITY.items():
cost = estimate_thinking_cost(tokens)
print(f"{label}: budget_tokens={tokens:,} → 最大追加コスト ${cost:.4f}")
# simple: budget_tokens=1,024 → 最大追加コスト $0.0001
# medium: budget_tokens=5,000 → 最大追加コスト $0.0004
# complex: budget_tokens=10,000 → 最大追加コスト $0.0008
# max: budget_tokens=100,000 → 最大追加コスト $0.0075
Extended Thinkingの追加コストは思っているより少なく、複雑な問題では品質の差が明確です。単純なタスクにはSonnet、深い推論が必要な場面でのみOpus 4.7を使う使い分けが、コストパフォーマンスを最大化します。
あわせて読みたい
- Claude Haiku vs Sonnet vs Opus【2026年版】料金・速度・精度を実例で比較
- Claude APIコストを95%削減する仕様書ファースト開発【実装テンプレート付き】
- AIから正確な回答をもらう7つのプロンプト術【Claude・ChatGPT実例付き】