Claude Opus 4.7 API の使い方

Ashley Innocent

Ashley Innocent

16 4月 2026

Claude Opus 4.7 API の使い方

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

要点

Claude Opus 4.7 (claude-opus-4-7) は、Anthropicの最も高性能なGAモデルです。1Mトークンのコンテキストウィンドウ、128Kの最大出力、適応的思考、新しいxhighのエフォートレベル、タスクバジェット、高解像度ビジョン(3.75 MP)、およびツール使用をサポートしています。このガイドでは、主要な機能ごとのAPIセットアップ、認証、Python、TypeScript、cURLでの動作するコード例を説明します。

はじめに

AnthropicはClaude Opus 4.7を2026年4月16日にリリースしました。これはClaudeファミリーで最も強力なモデルであり、複雑な推論、自律エージェント、およびビジョンを多用するワークフローに最適な選択肢です。

Claude APIを以前使用したことがあるなら、ほとんどのインターフェースは馴染みがあるでしょう。しかし、Opus 4.7はいくつかの新しい機能と、コードの更新が必要な破壊的変更を導入しています。拡張思考バジェットは廃止されました。サンプリングパラメータ(temperaturetop_ptop_k)も廃止されました。思考モードは現在、適応的思考のみをサポートしており、デフォルトではオフになっています。

このガイドでは、APIキーの取得、最初のリクエストの作成、適応的思考の使用、高解像度画像の送信、ツール使用のセットアップ、タスクバジェットの設定、レスポンスのストリーミングといったすべてのステップを説明します。各例はテスト済みで、すぐにコピーして使用できます。また、Apidogを使用してAPI呼び出しをデバッグおよびテストする方法も紹介します。これにより、複数ターンのツール使用会話の検査が、生のJSONをパースするよりもはるかに簡単になります。

button

始め方

APIキーの取得

  1. console.anthropic.comでサインアップします
  2. ダッシュボードのAPI Keysに移動します
  3. Create Keyをクリックしてキーをコピーします
  4. 環境変数として保存します:
export ANTHROPIC_API_KEY="sk-ant-your-key-here"

SDKのインストール

Python:

pip install anthropic

TypeScript/Node.js:

npm install @anthropic-ai/sdk

APIエンドポイント

すべてのリクエストは以下に送信されます:

POST https://api.anthropic.com/v1/messages

必須ヘッダー:

x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01
content-type: application/json

基本的なテキストリクエスト

最もシンプルなAPI呼び出し。メッセージを送信し、レスポンスを受け取ります。

Python:

import anthropic

client = anthropic.Anthropic()

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Explain how HTTP/2 server push works in three sentences."}
    ]
)

print(message.content[0].text)

TypeScript:

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const message = await client.messages.create({
  model: "claude-opus-4-7",
  max_tokens: 1024,
  messages: [
    { role: "user", content: "Explain how HTTP/2 server push works in three sentences." }
  ],
});

console.log(message.content[0].text);

cURL:

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-opus-4-7",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Explain how HTTP/2 server push works in three sentences."}
    ]
  }'

適応的思考

適応的思考は、Opus 4.7で唯一サポートされている思考モードです。これにより、Claudeはタスクの複雑さに基づいて推論トークンを動的に割り当てることができます。デフォルトではオフになっているため、明示的に有効にする必要があります。

Python:

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=16384,
    thinking={
        "type": "adaptive",
        "display": "summarized"  # optional: see thinking output
    },
    messages=[
        {"role": "user", "content": "Analyze this algorithm's time complexity and suggest optimizations:\n\ndef find_pairs(arr, target):\n    result = []\n    for i in range(len(arr)):\n        for j in range(i+1, len(arr)):\n            if arr[i] + arr[j] == target:\n                result.append((arr[i], arr[j]))\n    return result"}
    ]
)

for block in message.content:
    if block.type == "thinking":
        print("Thinking:", block.thinking)
    elif block.type == "text":
        print("Response:", block.text)

重要な点:

エフォートパラメータの使用

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=16384,
    thinking={"type": "adaptive"},
    output_config={"effort": "xhigh"},  # xhigh | high | medium | low
    messages=[
        {"role": "user", "content": "Review this pull request for security vulnerabilities..."}
    ]
)

Opus 4.7のエフォートレベル:

レベル 最適な用途
xhigh コーディング、エージェントタスク、複雑な推論
high 最も知能に依存する作業
medium 速度と品質のバランス
low シンプルなタスク、高速な応答

高解像度ビジョン

Opus 4.7は、長辺が最大2,576ピクセル(3.75メガピクセル)の画像を受け入れます。座標は実際のピクセルと1対1で対応します。

Python — URLからの画像を分析:

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://example.com/architecture-diagram.png"
                    }
                },
                {
                    "type": "text",
                    "text": "Describe this architecture diagram. List every service and the connections between them."
                }
            ]
        }
    ]
)

print(message.content[0].text)

Python — Base64でローカル画像を分析:

import base64

with open("screenshot.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image_data
                    }
                },
                {
                    "type": "text",
                    "text": "What UI bugs do you see in this screenshot?"
                }
            ]
        }
    ]
)

高解像度の画像はより多くのトークンを消費します。完全な忠実度が必要ない場合は、コストを削減するために送信する前に画像をリサイズしてください。

ツール使用(関数呼び出し)

ツール使用により、Claudeは定義した関数を呼び出すことができます。Opus 4.7はデフォルトでツール呼び出しを少なくし、推論を優先する傾向があります。ツール使用を増やすには、エフォートレベルを上げてください。

Python:

import json

tools = [
    {
        "name": "get_weather",
        "description": "Get current weather for a city. Returns temperature, conditions, and humidity.",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string",
                    "description": "City name, e.g. 'San Francisco'"
                },
                "units": {
                    "type": "string",
                    "enum": ["celsius", "fahrenheit"],
                    "description": "Temperature unit"
                }
            },
            "required": ["city"]
        }
    }
]

messages = [
    {"role": "user", "content": "What's the weather like in Tokyo right now?"}
]

# First call — Claude requests a tool
response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    tools=tools,
    messages=messages,
)

# Process tool calls
if response.stop_reason == "tool_use":
    messages.append({"role": "assistant", "content": response.content})

    tool_results = []
    for block in response.content:
        if block.type == "tool_use":
            # Execute your function here
            result = {"temperature": 22, "conditions": "Partly cloudy", "humidity": 65}

            tool_results.append({
                "type": "tool_result",
                "tool_use_id": block.id,
                "content": json.dumps(result)
            })

    messages.append({"role": "user", "content": tool_results})

    # Second call — Claude uses the tool result
    final_response = client.messages.create(
        model="claude-opus-4-7",
        max_tokens=1024,
        tools=tools,
        messages=messages,
    )
    print(final_response.content[0].text)

エージェントループパターン

複数のツール呼び出しを連続して実行する自律エージェントの場合:

def run_agent(system_prompt: str, tools: list, user_message: str) -> str:
    messages = [{"role": "user", "content": user_message}]

    while True:
        response = client.messages.create(
            model="claude-opus-4-7",
            max_tokens=16384,
            system=system_prompt,
            tools=tools,
            thinking={"type": "adaptive"},
            output_config={"effort": "xhigh"},
            messages=messages,
        )

        messages.append({"role": "assistant", "content": response.content})

        if response.stop_reason != "tool_use":
            return "".join(
                block.text for block in response.content
                if hasattr(block, "text")
            )

        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result,
                })

        messages.append({"role": "user", "content": tool_results})

タスクバジェット(ベータ版)

タスクバジェットは、Claudeにエージェントループ全体に対するトークンの割り当てを与えます。モデルは進行中のカウントダウンを見て、バジェットが消費されるにつれて作業を終了します。

response = client.beta.messages.create(
    model="claude-opus-4-7",
    max_tokens=128000,
    output_config={
        "effort": "high",
        "task_budget": {"type": "tokens", "total": 128000},
    },
    messages=[
        {"role": "user", "content": "Review the codebase and propose a refactor plan."}
    ],
    betas=["task-budgets-2026-03-13"],
)

主な制約:

ストリーミングレスポンス

チャットインターフェースでのリアルタイム出力のためにレスポンスをストリームします。

Python:

with client.messages.stream(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "Write a Python function to parse CSV files with error handling."}
    ]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

TypeScript:

const stream = await client.messages.stream({
  model: "claude-opus-4-7",
  max_tokens: 4096,
  messages: [
    { role: "user", content: "Write a Python function to parse CSV files with error handling." }
  ],
});

for await (const event of stream) {
  if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
    process.stdout.write(event.delta.text);
  }
}

display: "summarized"で適応的思考を有効にした場合、思考ブロックが最初にストリームされ、その後にテキストレスポンスが続きます。display: "summarized"がない場合、ユーザーは思考中に一時停止を経験し、その後テキスト出力が表示されます。

プロンプトキャッシュ

繰り返されるコンテキスト(システムプロンプト、長いドキュメント)をキャッシュすることでコストを削減します。

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "You are a senior code reviewer. Review code for security vulnerabilities, performance issues, and best practices violations...",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    messages=[
        {"role": "user", "content": "Review this function:\n\ndef process_user_input(data):\n    return eval(data)"}
    ]
)

Opus 4.7のキャッシュ料金:

操作 コスト
5分キャッシュ書き込み $6.25 / MTok (ベースの1.25倍)
1時間キャッシュ書き込み $10 / MTok (ベースの2倍)
キャッシュ読み取り/ヒット $0.50 / MTok (ベースの0.1倍)

1回のキャッシュ読み取りで5分キャッシュ書き込みの費用を賄えます。2回の読み取りで1時間書き込みの費用を賄えます。

複数ターンの会話

メッセージ配列に追加することで、ターンを越えてコンテキストを維持します。

messages = []

# Turn 1
messages.append({"role": "user", "content": "I need to build a REST API for a todo app."})

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=messages,
)

messages.append({"role": "assistant", "content": response.content})

# Turn 2
messages.append({"role": "user", "content": "Add authentication with JWT tokens."})

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=messages,
)

ApidogでAPI呼び出しをテストする

Claude API統合の構築には、複数ターンのメッセージ、ツール定義、ツール結果、Base64画像、ストリーミングレスポンスといった複雑なペイロードが伴います。Apidogのようなツールは、デバッグとテストを簡素化します。

環境のセットアップ:

  1. Apidogで新しいプロジェクトを作成し、Claude Messages APIエンドポイントを追加します
  2. ANTHROPIC_API_KEYを環境変数に保存します
  3. 必要なヘッダー(x-api-key, anthropic-version, content-type)を設定します

ツール使用フローのテスト:

Apidogを使用すると、リクエストを連結できるため、完全なツール使用ループをシミュレートできます。最初のメッセージを送信し、Claudeのツール呼び出しを検査し、ツール結果を構築して送り返します。視覚的なリクエスト/レスポンスインスペクターは、各ペイロードの内容を正確に表示します。

モデルの比較:

claude-opus-4-6claude-opus-4-7に対して同じプロンプトを実行し、トークン数、レスポンス品質、レイテンシを比較します。Apidogのテストランナーにより、A/B比較を繰り返し行えます。

スキーマの検証:

期待するレスポンス形式のJSONスキーマを定義し、ApidogがClaudeのレスポンスがそれに一致するかを自動的に検証させます。これにより、プロンプトを変更したりモデルを切り替えたりした際に発生するリグレッションを検出できます。

button

一般的なエラーと修正

エラー 原因 修正
400: thinking.budget_tokensはサポートされていません 拡張思考構文を使用しています thinking: {"type": "adaptive"}に切り替えてください
400: temperatureはサポートされていません デフォルト以外のサンプリングパラメータを設定しています temperaturetop_ptop_kを削除してください
400: max_tokensを超過しました 新しいトークナイザーがより多くのトークンを生成しています max_tokensを増やしてください(最大128,000)
429: レート制限 リクエストが多すぎます 指数関数的バックオフを実装し、ティア制限を確認してください
空白の思考ブロック デフォルトの思考表示は"omitted"です 思考設定にdisplay: "summarized"を追加してください

料金参照

使用量 コスト
入力トークン $5 / MTok
出力トークン $25 / MTok
バッチ入力 $2.50 / MTok
バッチ出力 $12.50 / MTok
キャッシュ読み取り $0.50 / MTok
5分キャッシュ書き込み $6.25 / MTok
1時間キャッシュ書き込み $10 / MTok

注: Opus 4.7の新しいトークナイザーは、Opus 4.6と比較して、同じテキストに対して最大35%多くのトークンを使用する可能性があります。本番環境にデプロイする前に、/v1/messages/count_tokensエンドポイントを使用してコストを見積もってください。

結論

Claude Opus 4.7は、Claudeファミリーの中で最も高性能なモデルです。APIはOpus 4.6と大部分で互換性がありますが、拡張思考バジェットとサンプリングパラメータの廃止によりコード変更が必要です。適応的思考、xhighエフォート、タスクバジェット、高解像度ビジョンといった新しい機能は、モデルがどのように推論するか、そしてどれくらいのコストがかかるかをより細かく制御できるようにします。

基本的なテキストリクエストから始め、複雑なタスクには適応的思考を追加し、エージェントが成長するにつれてツール使用やタスクバジェットを組み込んでください。Apidogを使用して、統合のテスト、ペイロードの検証、モデルバージョン間のパフォーマンス比較を行います。

button

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる