【AI】Claude APIのBatch APIで大量処理をする方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

Claude APIで大量のリクエストをまとめて安く処理したい」とお考えではありませんか?

数千件の分類や要約を通常のMessages APIで1件ずつ呼び出すと、処理時間もコストもかさみます。

Message Batches APIを使えば、大量のリクエストを非同期でまとめて処理でき、トークン料金も半額になります

いずみ

バッチ投入と結果取得だけなので、サクッと解説します。

ということで、本記事ではClaude APIのMessage Batches API(Batch API)でバッチ処理をする方法を解説します。

いずみ

すぐ読み終わるので、ぜひ最後まで読んでくださいませ。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

【AI】Claude APIのBatch APIで大量処理をする方法

早速ですが、Claude APIのMessage Batches APIで大量のリクエストを処理する手順を見ていきます。

Message Batches APIとは

Message Batches APIは、Messages APIへのリクエストをまとめて非同期で処理する仕組みです。

入力トークンと出力トークンの両方が、通常料金の半額になります。

1つのバッチには最大100,000リクエスト、または合計256MBまで詰め込めます。

多くのバッチは1時間以内に終わり、処理の上限は24時間です。

処理結果はバッチ作成から29日間ダウンロードできます。

ツール呼び出しや画像入力、プロンプトキャッシュなど、通常のMessages APIの機能はバッチでもそのまま使えます。

いずみ

即時レスポンスが要らない処理なら、半額はかなり大きいですね。

事前準備

まずはPython SDKと認証情報を準備します。

STEP
SDKをインストールする
pip install anthropic
STEP
APIキーを環境変数に設定する

Anthropic ConsoleでAPIキーを発行し、環境変数に設定します。

export ANTHROPIC_API_KEY="your_api_key"

SDKは環境変数ANTHROPIC_API_KEYを自動で読み込みます。

バッチを作成する

requestsに、リクエストの配列を渡してバッチを作成します。

各リクエストには一意のcustom_idと、通常のMessages APIと同じパラメータをparamsとして指定します。

import anthropic
from anthropic.types.message_create_params import MessageCreateParamsNonStreaming
from anthropic.types.messages.batch_create_params import Request

client = anthropic.Anthropic()

reviews = [
    "配送が早くて満足しています",
    "梱包が雑で商品が傷んでいた",
    "可もなく不可もなくといった印象",
]

batch = client.messages.batches.create(
    requests=[
        Request(
            custom_id=f"review-{i}",
            params=MessageCreateParamsNonStreaming(
                model="claude-haiku-4-5",
                max_tokens=50,
                messages=[
                    {
                        "role": "user",
                        "content": f"次のレビューをポジティブ・ネガティブ・中立のいずれかで分類して: {text}",
                    }
                ],
            ),
        )
        for i, text in enumerate(reviews)
    ]
)

print(batch.id)
print(batch.processing_status)

custom_idは結果とリクエストを突き合わせるための識別子なので、重複しない値を付けます。

いずみ

例ではレビュー3件ですが、数万件を一度に投げても書き方は同じです。

処理状況をポーリングする

バッチIDを使って、処理が終わったかどうかを確認します。

import time

while True:
    batch = client.messages.batches.retrieve(batch.id)
    if batch.processing_status == "ended":
        break
    print(batch.request_counts)
    time.sleep(60)

processing_statusがendedになれば、全リクエストの処理が完了しています。

request_countsには、処理中・成功・失敗・キャンセル・期限切れの件数が入ります。

結果を取得する

処理が終わったら、resultsで結果をストリーミング取得します。

for result in client.messages.batches.results(batch.id):
    match result.result.type:
        case "succeeded":
            message = result.result.message
            text = next((b.text for b in message.content if b.type == "text"), "")
            print(result.custom_id, text)
        case "errored":
            print(result.custom_id, "エラー:", result.result.error)
        case "expired":
            print(result.custom_id, "期限切れ。再投入が必要")

結果はリクエストを投げた順番では返りません。

custom_idをキーにして、元のデータと突き合わせる作りにします。

いずみ

順番に依存したコードを書くとバグるので、custom_id管理は必須です。

バッチのキャンセルと一覧取得

投入済みのバッチは、処理完了前ならキャンセルできます。

client.messages.batches.cancel(batch.id)

過去に投入したバッチの一覧は、listで取得できます。

for b in client.messages.batches.list(limit=20):
    print(b.id, b.processing_status)

使いどころと注意点

Message Batches APIは、即時の応答が要らない処理に向いています。

大量のデータ分類、ドキュメントの一括要約、評価データセットの生成などが典型的な用途です。

逆に、チャットのようにユーザーを待たせる場面には向きません。

共通の長いコンテキストを複数リクエストで使い回す場合は、プロンプトキャッシュを併用するとコストをさらに抑えられます。

24時間以内に処理しきれなかったリクエストはexpiredとなり、課金対象外で返ります。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式

【厳選】フリーランスエンジニアにおすすめなエージェント3選

フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。

僕が実際に利用しているおすすめエージェントを紹介しますね。

いずみ

エージェントは必ず複数登録してください。

担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…

僕は実際に5つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • IT案件に特化したフリーランスエージェント。
  • 週2〜3日の案件が豊富。
  • リモート案件が多く、直エンドなので単価も高い。

※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。

はIT案件に特化したフリーランスエージェントです。

週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。

いずみ

週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。

とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!

よくある質問

Message Batches APIと通常のMessages APIの違いは何ですか?

非同期でまとめて処理する点と、入力・出力トークンの料金が半額になる点が主な違いです。

即時応答が不要な大量処理に向いており、チャットのようなリアルタイム用途には向きません。

バッチの処理にはどのくらい時間がかかりますか?

多くのバッチは1時間以内に完了します。

処理の上限は24時間で、超えたリクエストはexpiredとなり課金されません。

結果はリクエストと同じ順番で返りますか?

同じ順番とは限りません。

結果は順不同で返るため、custom_idをキーにして元データと対応付けます。

まとめ

今回は、Claude APIのMessage Batches API(Batch API)でバッチ処理をする方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • Message Batches APIは大量リクエストを非同期でまとめて処理でき、トークン料金が半額になる。
  • client.messages.batches.createで投入し、processing_statusがendedになったらresultsで結果を取得する。
  • 結果は順不同なので、custom_idでリクエストと突き合わせる。
  • 分類・要約・評価データ生成など、即時応答が不要な処理に向いている。
まとめ
いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次