生成AI入門 2026.04.23

Claude Opus 4.7とは?推論モデルの使い方と速度2倍にするプロンプト4テンプレート

タグ:Claude / 生成AI / プロンプト工夫 / Opus 4.7

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}

分析手順:

  1. エラーの原因を特定する
  2. 問題のある行と理由を説明する
  3. 修正後のコードを提示する
  4. 同様のバグが他にないか確認する
  5. 再発防止のためのベストプラクティスを提案する

各ステップで「なぜそう判断したか」を説明してください。"""

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を使う使い分けが、コストパフォーマンスを最大化します。


あわせて読みたい

参考ソース