Claude API には複数の実行モードがあります。何を優先するかによって最適な選択が変わります。

実行モードの比較

モード レイテンシ コスト 主な用途
通常(同期) 即時 標準 通常の API 呼び出し
ストリーミング 即時(逐次) 標準 チャット UI・対話的なアプリ
バッチ処理 非同期(最大24時間) 50%削減 大量処理・評価・データ生成
高速モード 最大2.5倍高速(OTPS) 割高 レイテンシ最重要のエージェント

通常(同期)

デフォルトの使い方です。リクエストを送ると完成したレスポンスが返ってきます。シンプルで即時応答が得られますが、モデルがすべてのトークンを生成し終わるまで待つ必要があります。

ストリーミング

stream: true を設定すると、トークンが逐次返ってきます。チャットインタフェースや対話的なアプリでは、ユーザーが「考えている」様子を即座に見られるためUXが向上します。コストは通常と同じです。

with client.messages.stream(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[{"role": "user", "content": "説明してください"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    # ストリーム終了後に完全なレスポンスオブジェクトを取得
    final_message = stream.get_final_message()

max_tokens が 21,333 を超える場合、SDK はタイムアウト防止のためにストリーミングを必須とします。ストリーミングは SSE(Server-Sent Events)形式で実装されており、message_startcontent_block_deltamessage_stop などのイベントが流れます。

バッチ処理(Batch API)

即時応答が不要な大量処理に最適です。50%のコスト削減が受けられます。最大 100,000 リクエストを一度に送信でき、ほとんどのバッチは1時間以内に完了します。

import anthropic

client = anthropic.Anthropic()

# バッチを作成
batch = client.messages.batches.create(requests=[
    {"custom_id": "req-1", "params": {
        "model": "claude-opus-4-8", "max_tokens": 1024,
        "messages": [{"role": "user", "content": "1つ目の質問"}],
    }},
    {"custom_id": "req-2", "params": {
        "model": "claude-opus-4-8", "max_tokens": 1024,
        "messages": [{"role": "user", "content": "2つ目の質問"}],
    }},
])
batch_id = batch.id

# 完了待ち(polling)
import time
while True:
    status = client.messages.batches.retrieve(batch_id)
    if status.processing_status == "ended":
        break
    time.sleep(60)

# 結果を取得
for result in client.messages.batches.results(batch_id):
    print(result.custom_id, result.result.message.content[0].text)

バッチ結果は作成後29日間保持されます。ZDR(ゼロデータ保持)の対象外な点に注意してください。

高速モード(Fast Mode)

Opus 4.8 / 4.7 / 4.6 で利用できるリサーチプレビューです。同じモデルの重みを使いながら、より高速な推論構成で実行します。標準速度と比べて最大2.5倍の出力トークン/秒(OTPS)を実現しますが、最初のトークンまでの時間(TTFT)は改善されません。

高速モードには標準とは別の専用レート制限があり、料金も割高です。ウェイトリストへの登録が必要です。

response = client.beta.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    speed="fast",
    betas=["fast-mode-2026-02-01"],
    messages=[{"role": "user", "content": "..."}],
)

重要な注意点:高速モードと標準速度ではプロンプトキャッシュが共有されません。切り替えるたびにキャッシュミスが発生します。キャッシュを活用している場合は切り替えのコストを計算に含める必要があります。

どれを選ぶか

  • コスト最優先・即時性不要:バッチ処理
  • 対話性重視:ストリーミング
  • レイテンシ最優先・コスト許容:高速モード(要ウェイトリスト)
  • シンプルな用途:通常の同期呼び出し

まとめ

  • ストリーミングはコスト同じでUX向上。対話的なアプリの基本
  • バッチは50%コスト削減。batches.createbatches.retrievebatches.results の3ステップ
  • 高速モードは OTPS 向上(TTFT は改善なし)。高速↔標準の切り替えでキャッシュミスが起きる点に注意