- 大量のデータを処理する必要がある場合
- 即座のレスポンスが不要な場合
- コスト効率を最適化したい場合
- 大規模な評価や分析を実行している場合
Message Batches API
Message Batches APIは、大量のMessagesリクエストを非同期で処理するための強力でコスト効率の良い方法です。このアプローチは、即座のレスポンスを必要としないタスクに適しており、ほとんどのバッチは1時間以内に完了し、コストを50%削減し、スループットを向上させます。 このガイドに加えて、APIリファレンスを直接確認することもできます。Message Batches APIの仕組み
Message Batches APIにリクエストを送信すると:- システムは提供されたMessagesリクエストで新しいMessage Batchを作成します。
- バッチは非同期で処理され、各リクエストは独立して処理されます。
- バッチのステータスをポーリングし、すべてのリクエストの処理が終了したときに結果を取得できます。
- 大規模評価:数千のテストケースを効率的に処理します。
- コンテンツモデレーション:大量のユーザー生成コンテンツを非同期で分析します。
- データ分析:大規模データセットに対する洞察や要約を生成します。
- 一括コンテンツ生成:様々な目的(例:商品説明、記事要約)のために大量のテキストを作成します。
バッチの制限
- Message Batchは100,000のMessageリクエストまたは256MBのサイズのいずれか先に達した方に制限されます。
- 各バッチを可能な限り高速で処理し、ほとんどのバッチは1時間以内に完了します。すべてのメッセージが完了するか、24時間後のいずれか早い方でバッチ結果にアクセスできます。処理が24時間以内に完了しない場合、バッチは期限切れになります。
- バッチ結果は作成から29日間利用可能です。その後も、バッチを表示することはできますが、結果はダウンロードできなくなります。
- バッチはワークスペースにスコープされます。APIキーが属するワークスペース内で作成されたすべてのバッチとその結果を表示できます。
- レート制限は、Batches API HTTPリクエストと、処理待ちのバッチ内のリクエスト数の両方に適用されます。Message Batches APIレート制限を参照してください。さらに、現在の需要とリクエスト量に基づいて処理を遅くする場合があります。その場合、24時間後により多くのリクエストが期限切れになる可能性があります。
- 高いスループットと並行処理により、バッチはワークスペースの設定された支出制限をわずかに超える場合があります。
サポートされているモデル
Message Batches APIは現在以下をサポートしています:- Claude Opus 4 (
claude-opus-4-20250514
) - Claude Sonnet 4 (
claude-sonnet-4-20250514
) - Claude Sonnet 3.7 (
claude-3-7-sonnet-20250219
) - Claude Sonnet 3.5 (
claude-3-5-sonnet-20240620
およびclaude-3-5-sonnet-20241022
) - Claude Haiku 3.5 (
claude-3-5-haiku-20241022
) - Claude Haiku 3 (
claude-3-haiku-20240307
) - Claude Opus 3 (
claude-3-opus-20240229
)
バッチ処理できるもの
Messages APIに対して行えるあらゆるリクエストをバッチに含めることができます。これには以下が含まれます:- ビジョン
- ツール使用
- システムメッセージ
- マルチターン会話
- あらゆるベータ機能
バッチの処理には5分以上かかる場合があるため、共有コンテキストでバッチを処理する際のキャッシュヒット率を向上させるために、プロンプトキャッシュで1時間のキャッシュ期間の使用を検討してください。
料金
Batches APIは大幅なコスト削減を提供します。すべての使用量は標準API価格の50%で課金されます。Model | Batch input | Batch output |
---|---|---|
Claude Opus 4.1 | $7.50 / MTok | $37.50 / MTok |
Claude Opus 4 | $7.50 / MTok | $37.50 / MTok |
Claude Sonnet 4 | $1.50 / MTok | $7.50 / MTok |
Claude Sonnet 3.7 | $1.50 / MTok | $7.50 / MTok |
Claude Sonnet 3.5 (deprecated) | $1.50 / MTok | $7.50 / MTok |
Claude Haiku 3.5 | $0.40 / MTok | $2 / MTok |
Claude Opus 3 (deprecated) | $7.50 / MTok | $37.50 / MTok |
Claude Haiku 3 | $0.125 / MTok | $0.625 / MTok |
Message Batches APIの使用方法
バッチの準備と作成
Message Batchは、Messageを作成するリクエストのリストで構成されます。個々のリクエストの形状は以下で構成されます:- Messagesリクエストを識別するための一意の
custom_id
- 標準のMessages APIパラメータを含む
params
オブジェクト
requests
パラメータに渡すことでバッチを作成できます:
custom_id
があり、Messages API呼び出しで使用する標準パラメータが含まれています。
Messages APIでバッチリクエストをテストする各メッセージリクエストの
params
オブジェクトの検証は非同期で実行され、バッチ全体の処理が終了したときに検証エラーが返されます。まずMessages APIでリクエストの形状を検証することで、入力を正しく構築していることを確認できます。in_progress
になります。
JSON
バッチの追跡
Message Batchのprocessing_status
フィールドは、バッチが処理中の段階を示します。in_progress
から始まり、バッチ内のすべてのリクエストの処理が完了し、結果が準備できるとended
に更新されます。コンソールにアクセスするか、取得エンドポイントを使用してバッチの状態を監視できます:
バッチ結果の取得
バッチ処理が終了すると、バッチ内の各Messagesリクエストには結果があります。結果タイプは4つあります:結果タイプ | 説明 |
---|---|
succeeded | リクエストが成功しました。メッセージ結果が含まれます。 |
errored | リクエストでエラーが発生し、メッセージが作成されませんでした。可能なエラーには、無効なリクエストや内部サーバーエラーが含まれます。これらのリクエストに対して課金されることはありません。 |
canceled | このリクエストがモデルに送信される前に、ユーザーがバッチをキャンセルしました。これらのリクエストに対して課金されることはありません。 |
expired | このリクエストがモデルに送信される前に、バッチが24時間の有効期限に達しました。これらのリクエストに対して課金されることはありません。 |
request_counts
で結果の概要を確認できます。これは、これら4つの状態のそれぞれに達したリクエストの数を示します。
バッチの結果は、Message Batchのresults_url
プロパティでダウンロード可能で、組織の権限が許可している場合はコンソールでも利用できます。結果のサイズが潜在的に大きいため、すべてを一度にダウンロードするのではなく、結果をストリーミングすることをお勧めします。
.jsonl
形式で、各行はMessage Batch内の単一リクエストの結果を表す有効なJSONオブジェクトです。ストリーミングされた各結果について、そのcustom_id
と結果タイプに応じて異なる処理を行うことができます。以下は結果セットの例です:
.jsonl file
result.error
は標準のエラー形状に設定されます。
バッチ結果は入力順序と一致しない場合がありますバッチ結果は任意の順序で返される可能性があり、バッチが作成されたときのリクエストの順序と一致しない場合があります。上記の例では、2番目のバッチリクエストの結果が最初のものより前に返されています。結果を対応するリクエストと正しく照合するには、常に
custom_id
フィールドを使用してください。Message Batchesでのプロンプトキャッシュの使用
Message Batches APIはプロンプトキャッシュをサポートしており、バッチリクエストのコストと処理時間を潜在的に削減できます。プロンプトキャッシュとMessage Batchesの価格割引は重複適用でき、両方の機能を一緒に使用するとさらに大きなコスト削減を提供します。ただし、バッチリクエストは非同期かつ並行して処理されるため、キャッシュヒットはベストエフォートベースで提供されます。ユーザーは通常、トラフィックパターンに応じて30%から98%のキャッシュヒット率を経験します。 バッチリクエストでキャッシュヒットの可能性を最大化するには:- バッチ内のすべてのMessageリクエストに同一の
cache_control
ブロックを含める - キャッシュエントリが5分の有効期限後に期限切れになるのを防ぐため、リクエストの安定したストリームを維持する
- 可能な限り多くのキャッシュされたコンテンツを共有するようにリクエストを構造化する
cache_control
でマークされた『高慢と偏見』の全文が含まれています。
効果的なバッチ処理のベストプラクティス
Batches APIを最大限に活用するには:- バッチ処理ステータスを定期的に監視し、失敗したリクエストに対して適切な再試行ロジックを実装する。
- 順序が保証されないため、結果をリクエストと簡単に照合できるよう、意味のある
custom_id
値を使用する。 - 管理しやすくするため、非常に大きなデータセットを複数のバッチに分割することを検討する。
- 検証エラーを避けるため、Messages APIで単一のリクエスト形状をドライランする。
一般的な問題のトラブルシューティング
予期しない動作が発生した場合:- バッチリクエストの合計サイズが256MBを超えていないことを確認する。リクエストサイズが大きすぎる場合、413
request_too_large
エラーが発生する可能性があります。 - バッチ内のすべてのリクエストでサポートされているモデルを使用していることを確認する。
- バッチ内の各リクエストが一意の
custom_id
を持っていることを確認する。 - バッチの
created_at
時刻(処理ended_at
時刻ではない)から29日未満であることを確認する。29日を超えた場合、結果は表示できなくなります。 - バッチがキャンセルされていないことを確認する。
バッチストレージとプライバシー
- ワークスペースの分離:バッチは作成されたワークスペース内で分離されます。そのワークスペースに関連付けられたAPIキー、またはコンソールでワークスペースバッチを表示する権限を持つユーザーのみがアクセスできます。
- 結果の可用性:バッチ結果はバッチ作成後29日間利用可能で、取得と処理に十分な時間を提供します。
FAQ
バッチの処理にはどのくらい時間がかかりますか?
バッチの処理にはどのくらい時間がかかりますか?
バッチの処理には最大24時間かかる場合がありますが、多くはより早く完了します。実際の処理時間は、バッチのサイズ、現在の需要、およびリクエスト量によって異なります。バッチが期限切れになり、24時間以内に完了しない可能性があります。
Batches APIはすべてのモデルで利用できますか?
Batches APIはすべてのモデルで利用できますか?
サポートされているモデルのリストについては、上記を参照してください。
Message Batches APIを他のAPI機能と一緒に使用できますか?
Message Batches APIを他のAPI機能と一緒に使用できますか?
はい、Message Batches APIはベータ機能を含むMessages APIで利用可能なすべての機能をサポートします。ただし、バッチリクエストではストリーミングはサポートされていません。
Message Batches APIは料金にどのような影響を与えますか?
Message Batches APIは料金にどのような影響を与えますか?
Message Batches APIは、標準API価格と比較してすべての使用量に対して50%の割引を提供します。これは入力トークン、出力トークン、および特別なトークンに適用されます。料金の詳細については、料金ページをご覧ください。
送信後にバッチを更新できますか?
送信後にバッチを更新できますか?
いいえ、バッチが送信されると変更できません。変更が必要な場合は、現在のバッチをキャンセルして新しいものを送信する必要があります。キャンセルは即座に効果を発揮しない場合があることに注意してください。
Message Batches APIのレート制限はありますか?Messages APIのレート制限と相互作用しますか?
Message Batches APIのレート制限はありますか?Messages APIのレート制限と相互作用しますか?
Message Batches APIには、HTTPリクエストベースのレート制限に加えて、処理が必要なリクエスト数の制限があります。Message Batches APIレート制限を参照してください。Batches APIの使用は、Messages APIのレート制限に影響しません。
バッチリクエストのエラーはどのように処理しますか?
バッチリクエストのエラーはどのように処理しますか?
結果を取得すると、各リクエストには
succeeded
、errored
、canceled
、またはexpired
を示すresult
フィールドがあります。errored
結果の場合、追加のエラー情報が提供されます。APIリファレンスでエラーレスポンスオブジェクトを確認してください。Message Batches APIはプライバシーとデータ分離をどのように処理しますか?
Message Batches APIはプライバシーとデータ分離をどのように処理しますか?
Message Batches APIは強力なプライバシーとデータ分離対策で設計されています:
- バッチとその結果は、作成されたワークスペース内で分離されます。これは、同じワークスペースのAPIキーのみがアクセスできることを意味します。
- バッチ内の各リクエストは独立して処理され、リクエスト間でのデータ漏洩はありません。
- 結果は限られた時間(29日間)のみ利用可能で、データ保持ポリシーに従います。
- コンソールでのバッチ結果のダウンロードは、組織レベルまたはワークスペース単位で無効にできます。
Message Batches APIでプロンプトキャッシュを使用できますか?
Message Batches APIでプロンプトキャッシュを使用できますか?
はい、Message Batches APIでプロンプトキャッシュを使用することは可能です。ただし、非同期バッチリクエストは並行して任意の順序で処理される可能性があるため、キャッシュヒットはベストエフォートベースで提供されます。