C
Claude Academy
Batch API

Batch API で大量処理

約 8 分 · クイズ 3 問 · 演習 1 問
重要キーワード (3 語)
Batch API (バッチAPI) — 大量リクエストを非同期で安く処理するエンドポイント
custom_id (カスタムID) — リクエストと結果を紐づけるユーザー定義の ID
Async (非同期) — 応答を即座に待たず、後で取りに行く処理形態

Batch API

大量のリクエストを 非同期で安く 処理する API です。

メリット

  • 50% オフ の料金。
  • 1 ジョブで 10,000 件 まで投入可能。
  • 24 時間以内に処理完了 (通常はもっと早い)。

使い方

batch = client.messages.batches.create(
    requests=[
        {
            "custom_id": "task-1",
            "params": {
                "model": "claude-sonnet-4-6",
                "max_tokens": 256,
                "messages": [{"role": "user", "content": "..." }],
            },
        },
        # ... 大量の request ...
    ]
)
print(batch.id)

結果の取得

# ポーリング (簡易)
import time
while True:
    status = client.messages.batches.retrieve(batch.id)
    if status.processing_status == "ended":
        break
    time.sleep(30)

for r in client.messages.batches.results(batch.id):
    print(r.custom_id, r.result)

ユースケース

  • データセットのラベル付け
  • 大量ドキュメントの要約
  • A/B テスト用の生成
  • Eval (評価) スイート実行
  • バルクのデータ抽出

注意

  • リアルタイム応答には向かない (非同期前提)。
  • 失敗したリクエストは個別に確認可能。
  • レスポンス順は保証されない (custom_id で紐づける)。
  • Prompt Caching と併用すれば追加で 30-50% コスト削減も可能。

Batch + Cache のシナジー

例: 「1 万件のレビューを同じ system プロンプトで分類」 - Batch: 50% オフ - Cache: 残り料金の 90% オフ (システム部分) - 合計: 元の 5-10% に圧縮

失敗時の挙動

for r in client.messages.batches.results(batch.id):
    if r.result.type == "succeeded":
        ...
    elif r.result.type == "errored":
        print("error:", r.result.error)

Hands-on 演習

演習 1: 100 件のレビューを Batch で分類

100 件のダミーレビュー (positive/negative/neutral にランダムに偏らせる) を生成し、 Batch API で一括分類してください。 結果を CSV id,label で書き出すこと。

▶ Playground を開いて実行
💡 ヒント

Batch の status は validating / in_progress / canceling / ended 等。ended まで sleep でループします。実利用では指数バックオフで頻度を下げましょう。

進捗保存にはログインが必要 クイズに挑戦 (3問)

💬 このレッスンへの質問 (0)

全質問を見る →
質問の投稿には ログイン が必要です。閲覧は誰でも可能です。

まだ質問はありません。最初の 1 件を投稿してみましょう。