このたび、Gemini Batch API を拡張して、新しくリリースされた Gemini エンベディング モデルをサポートするとともに、デベロッパーが OpenAI SDK を活用してバッチの送信および処理を行える機能を提供します。
これは、大容量でレイテンシ許容度の高いユースケース向けに、50% 低いレートでの非同期処理を可能にする Gemini Batch API の初期リリースを基盤としています。
Google の新しい Gemini エンベディング モデルは、すでに数千もの本番環境のデプロイで利用されています。このたび、Batch API を使用して、このモデルをより高いレート制限と半額の料金(100 万入力トークンあたり $ 0.075)で利用できるようになり、コスト重視、レイテンシ許容度、または非同期処理といったより高度なユースケースの実現が可能になりました。
わずか数行のコードで、バッチ エンベディングを開始できます。
# Create a JSONL with your requests:
# {"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}")
# Wait for up to 24 hours
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)
詳細情報と例については、以下をご覧ください。
OpenAI SDK 互換レイヤを使用する場合、Gemini Batch API への切り替えはわずか数行のコードを更新するだけで簡単に行えます。
from openai import OpenAI
openai_client = OpenAI(
api_key="GEMINI_API_KEY",
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
# Upload JSONL file in OpenAI batch input format...
# Create batch
batch = openai_client.batches.create(
input_file_id=batch_input_file_id,
endpoint="/v1/chat/completions",
completion_window="24h"
)
# Wait for up to 24 hours & poll for status
batch = openai_client.batches.retrieve(batch.id)
if batch.status == "completed":
# Download results...
OpenAI 互換レイヤとバッチサポートについて詳しくは、Google のドキュメントをご覧ください。
Gemini API の使用コストをさらに最適化するために、バッチの機能を継続的に拡大しています。今後の更新にご期待ください。それでは開発をお楽しみください!