[開発者向け]Gemini Batch APIの機能拡張:Embeddings対応とOpenAI互換性による開発効率化

目次

はじめに

 本稿では、Google Developers Blogで2025年9月10日に公開された「Gemini Batch API now supports Embeddings and OpenAI Compatibility」という記事を基に、Gemini APIのバッチ処理機能に関する最新のアップデートについて、解説します。

参考記事

要点

  • Gemini Batch APIが、新しく公開されたGemini Embeddingモデルに対応した。
  • これにより、大量のテキストデータをベクトル化する処理(Embeddings)を、通常価格の半額(100万入力トークンあたり$0.075)かつ、より高いレート制限で実行できるようになった。
  • OpenAI SDKとの互換性レイヤーが提供され、既存のOpenAI SDKを利用したコードから、ごくわずかな修正でGemini Batch APIへ移行可能となった。
  • これらの更新は、大量のデータを非同期で処理するユースケースにおいて、コスト削減と開発の円滑化に貢献する。

詳細解説

そもそもGemini Batch APIとは?

 まず「Gemini Batch API」そのものについて説明します。

 通常のAPI(同期API)がリクエストを送信するとすぐに結果が返ってくるリアルタイム処理を前提としているのに対し、Batch APIは大量のリクエストを一度にまとめて送信し、後で結果を受け取る「非同期処理」を専門とします。

 リアルタイム性は求められないものの、大量のデータを処理したい場合(例えば、何万もの文書ファイルを一度に要約するなど)に、このBatch APIは非常に有効です。そして最大の利点は、通常の同期APIに比べて50%低い料金で利用できるというコスト効率の高さにあります。

アップデート1:Embeddingsモデルへの対応でコスト効率がさらに向上

 今回のアップデートの大きな柱の一つが、Batch APIでEmbeddings(埋め込み)モデルが利用可能になったことです。

具体的なメリット

 新しいgemini-embedding-001モデルをBatch APIで利用することにより、以下のメリットが得られます。

  • 圧倒的な低コスト: 料金は100万入力トークンあたり$0.075と、通常の半額で利用できます。大量のドキュメントをベクトル化する際のコストを大幅に削減できます。
  • 高いレート制限: 一度に処理できるデータ量が多いため、大規模なデータ処理も効率的に行えます。

利用コード例

 以下は、実際にBatch APIを使ってテキストの埋め込み処理を行うPythonコードのサンプルです。リクエストを記述したJSONLファイルを用意し、それをアップロードしてバッチ処理を実行します。

# embedding_requests.jsonl の内容例:
# {"key": "request_1", "request": {"output_dimensionality": 512, "content": {"parts": [{"text": "Explain GenAI"}]}}}
# {"key": "request_2", "request": {"output_dimensionality": 512, "content": {"parts": [{"text": "Explain quantum computing"}]}}}

from google import genai

client = genai.Client()

# リクエストファイルをアップロード
uploaded_batch_requests = client.files.upload(file='embedding_requests.jsonl')

# バッチジョブを作成
batch_job = client.batches.create_embeddings(
    model="gemini-embedding-001",
    src={"file_name": uploaded_batch_requests.name}
)

print(f"Created embedding batch job: {batch_job.name}")

# バッチ処理は最大24時間かかる場合があります
if batch_job.state.name == 'JOB_STATE_SUCCEEDED':
    result_file_name = batch_job.dest.file_name
    file_content_bytes = client.files.download(file=result_file_name)
    file_content = file_content_bytes.decode('utf-8')
    for line in file_content.splitlines():
        print(line)

アップデート2:OpenAI SDKとの互換性で移行が容易に

 もう一つの重要なアップデートが、OpenAI SDKとの互換性レイヤーの提供です。

 「SDK(Software Development Kit)」とは、開発者が特定のサービスを簡単に利用できるように、GoogleやOpenAIが提供しているプログラムの部品セットのようなものです。

 これまで多くの開発者がOpenAIのAPIを利用するためにOpenAI SDKを使ってきました。今回の互換性対応により、それらの開発者は慣れ親しんだコードをほぼそのままに、わずかな変更だけでGemini Batch APIを利用できるようになります。これは、学習コストや移行の手間を大幅に削減できる点で、非常に実用的なアップデートと言えます。

利用コード例

 以下のコードは、OpenAI SDKを使ってGemini Batch APIを呼び出すサンプルです。api_keyにGeminiのAPIキーを指定し、base_urlをGoogleのエンドポイントに向けるだけで、既存のコード資産を活かせることがわかります。

from openai import OpenAI

# クライアントの初期化時にAPIキーとBASE URLを変更する
openai_client = OpenAI(
    api_key="GEMINI_API_KEY",
    base_url="[https://generativelanguage.googleapis.com/v1beta/openai/](https://generativelanguage.googleapis.com/v1beta/openai/)"
)

# ... OpenAIのバッチ入力形式でJSONLファイルをアップロード ...
# input_file_id = ...

# バッチジョブを作成
batch = openai_client.batches.create(
    input_file_id=input_file_id,
    endpoint="/v1/chat/completions",
    completion_window="24h"
)

# 最大24時間待機し、ステータスを確認
batch = openai_client.batches.retrieve(batch.id)

if batch.status == "completed":
    # 結果をダウンロードする処理
    ...

まとめ

 今回のGemini Batch APIのアップデートは、Embeddingsモデルへの対応によるコスト効率の向上と、OpenAI SDKとの互換性による開発効率の向上の二つの側面から、開発者にとって大きなメリットをもたらします。

 特に、大量のテキストデータを扱う必要がある研究開発やサービス構築において、これまでコストの観点から難しかった取り組みが、より現実的なものになる可能性があります。Googleは今後もバッチ処理サービスの拡充を続けるとしており、さらなるアップデートが期待されます。

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

  • URLをコピーしました!
  • URLをコピーしました!
目次