
AIを知りたい
大量のデータを一度にAIで処理したいんですが、一つずつAPI呼び出しするしかないですか?

AIエンジニア
大量処理ならBatch APIを使いましょう!OpenAI、Claude、Geminiの各社がバッチ処理用のAPIを提供しています。コストも大幅に安くなります。

AIを知りたい
バッチ処理ってどういうことですか?

AIエンジニア
複数のリクエストをまとめて送信し、非同期で一括処理する方法です。リアルタイム性は不要だけど大量処理が必要な場合に最適です。
Batch APIとは
Batch APIとは、複数のAPIリクエストをまとめて非同期で処理するサービスです。通常のAPI呼び出しと比べて50%のコスト削減が可能で、データ分析、コンテンツ生成、評価タスクなど大量処理に適しています。
各社のBatch API比較

AIを知りたい
各社のバッチAPIってどう違うんですか?

AIエンジニア
比較してみましょう。
| 項目 | OpenAI Batch | Claude Batch | Gemini Batch |
|---|---|---|---|
| コスト削減 | 50% | 50% | 50% |
| 処理時間 | 最大24時間 | 最大24時間 | 数分〜数時間 |
| 入力形式 | JSONL | JSON配列 | BigQuery/GCS |
| 最大リクエスト数 | 50,000件 | 10,000件 | 制限なし(クォータ依存) |
| 結果取得 | ファイルダウンロード | API取得 | BigQuery/GCS出力 |
OpenAI Batch APIの使い方

AIを知りたい
まずOpenAIのバッチAPIの使い方を教えてください!

AIエンジニア
JSONLファイルを作成して送信する流れです。
import openai
import json
# 1. バッチ入力ファイルの作成
requests = []
for i, text in enumerate(texts_to_process):
requests.append({
"custom_id": f"request-{i}",
"method": "POST",
"url": "/v1/chat/completions",
"body": {
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "テキストを要約してください"},
{"role": "user", "content": text}
]
}
})
# JSONLファイルとして保存
with open("batch_input.jsonl", "w") as f:
for req in requests:
f.write(json.dumps(req) + "n")
# 2. ファイルをアップロード
client = openai.OpenAI()
batch_file = client.files.create(
file=open("batch_input.jsonl", "rb"),
purpose="batch"
)
# 3. バッチジョブの開始
batch = client.batches.create(
input_file_id=batch_file.id,
endpoint="/v1/chat/completions",
completion_window="24h"
)
print(f"バッチID: {batch.id}")
Claude Message Batches APIの使い方

AIを知りたい
ClaudeのバッチAPIも教えてください!

AIエンジニア
Claude APIでもバッチ処理が可能です。
import anthropic
client = anthropic.Anthropic()
# バッチリクエストの作成
batch = client.messages.batches.create(
requests=[
{
"custom_id": f"item-{i}",
"params": {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": text}
]
}
}
for i, text in enumerate(texts_to_process)
]
)
# ステータス確認
result = client.messages.batches.retrieve(batch.id)
print(f"ステータス: {result.processing_status}")
# 結果の取得
for result in client.messages.batches.results(batch.id):
print(f"{result.custom_id}: {result.result.message.content}")
バッチ処理の活用シーン

AIを知りたい
どんな場面でバッチAPIを使うべきですか?

AIエンジニア
リアルタイム性が不要な大量処理全般に向いています。
| 活用シーン | 処理内容 | メリット |
|---|---|---|
| データ分類 | 大量テキストのカテゴリ分け | 50%コスト削減 |
| コンテンツ生成 | 商品説明文の一括作成 | 並列処理不要 |
| 翻訳 | 多言語一括翻訳 | API制限回避 |
| 品質評価 | AIモデルのベンチマーク | 大規模評価が安価 |
| データクレンジング | 不正データの検出・修正 | 自動化による効率化 |

AIを知りたい
コスト半分はかなり大きいですね!

AIエンジニア
大量処理でバッチAPIを使わないのは、お金を捨てているようなものです。急がない処理はすべてバッチに回すのが、プロダクション環境での鉄則ですよ!
