LLMバッチAPI(エルエルエムバッチエーピーアイ)
LLMプロバイダが提供する非同期バッチ処理用API。リアルタイム性を犠牲にする代わりに大幅な割引料金(通常50%OFF)で大量のリクエストを処理できる。OpenAI Batch APIやAnthropic Message Batchesが代表的。
LLMバッチAPIとは
LLMバッチAPIは、大量のLLMリクエストを一括で送信し、非同期で結果を受け取るAPIインターフェースである。個別のリアルタイムAPIコールと比較して50%の割引料金が適用されるため、即時応答が不要な大規模データ処理に最適な選択肢である。
主要プロバイダのバッチAPI比較
| プロバイダ | サービス名 | 割引率 | 最大完了時間 | 最大リクエスト数 |
|---|---|---|---|---|
| OpenAI | Batch API | 50% OFF | 24時間 | 50,000件/バッチ |
| Anthropic | Message Batches | 50% OFF | 24時間 | 100,000件/バッチ |
| Batch Prediction | 変動 | タスクサイズ依存 | 制限なし(Vertex AI) | |
| AWS Bedrock | Batch Inference | 最大60% OFF | 24時間 | 制限なし |
ユースケース
データセット処理
数千〜数万件のテキスト分類・要約・翻訳・情報抽出を一括処理する。商品カタログの説明文生成、カスタマーレビューのセンチメント分析、多言語翻訳バッチなどが典型例。
評価・ベンチマーク
LLMの性能評価(ベンチマーク実行)やプロンプト最適化のA/Bテストで大量のテスト入力を処理する。1回のプロンプト変更テストで数千件の入力を検証するのにバッチAPIが活用される。
データ拡張・合成データ
学習データの生成や拡張。既存データセットのパラフレーズ生成、新しい質問-回答ペアの作成、テストデータの自動生成など。50%の割引は大量生成で特に効果が大きい。
定期レポート生成
日次・週次のレポートやニュースダイジェストの自動生成。リアルタイム性が不要なため、バッチAPIの24時間SLAで十分対応できる。
OpenAI Batch APIの使い方
リクエスト形式
JSONL形式でリクエストファイルを作成し、Files APIでアップロード後にバッチを作成する。
リクエストJSONL(1行=1リクエスト):
{"custom_id":"req-1","method":"POST","url":"/v1/chat/completions","body":{"model":"gpt-4o","messages":[{"role":"user","content":"Hello"}]}}
{"custom_id":"req-2","method":"POST","url":"/v1/chat/completions","body":{"model":"gpt-4o","messages":[{"role":"user","content":"World"}]}}
レスポンス形式
処理完了後、結果ファイルをダウンロードする。各行にcustom_idと対応するレスポンスが含まれる。
エラーハンドリング
バッチ内の個別リクエストが失敗しても他のリクエストには影響しない。結果ファイルで各リクエストの成否を確認し、失敗分のみリトライする。
コスト比較シミュレーション
10,000件の商品説明生成(1件あたり入力500トークン/出力300トークン)をGPT-4oで処理:
| 方式 | 入力コスト | 出力コスト | 合計 | 処理時間 |
|---|---|---|---|---|
| リアルタイムAPI | $12.50 | $30.00 | $42.50 | 約2〜3時間 |
| バッチAPI(50%OFF) | $6.25 | $15.00 | $21.25 | 最大24時間 |
| 削減額 | $21.25 |
月間で同様のバッチを20回実行すると、年間で$5,100の削減になる。
バッチAPI活用のベストプラクティス
- 冪等性の確保: custom_idを使ってリトライ時の重複処理を防止する
- チャンク分割: 50,000件超のデータは複数バッチに分割して並列実行
- 結果の検証: 全件完了後に品質サンプリング検査(100件中10件をランダム抽出)
- スケジューリング: 夜間や週末にバッチを実行し、営業時間にはリアルタイムAPI枠を確保
FAQ
Q1: バッチAPIの結果はどれくらいで返ってくる?
A1: SLAは24時間以内だが、実際には数分〜数時間で完了することが多い。OpenAIのBatch APIは平均2〜4時間、Anthropicは平均1〜6時間程度。ただし混雑時は24時間近くかかることもある。
Q2: バッチAPIとリアルタイムAPIの品質に差はある?
A2: 差はない。同じモデル・同じパラメータで処理されるため、出力品質は完全に同一である。唯一の違いは応答速度(レイテンシ)のみ。
Q3: ストリーミングはバッチAPIで使える?
A3: 使えない。バッチAPIは非同期処理のため、ストリーミング(逐次出力)には対応していない。ユーザーにリアルタイムで応答を表示する必要がある場合は、リアルタイムAPIを使う必要がある。