Gemini Batch API 现已扩展其功能,新增对 Gemini Embedding 模型的支持,并为开发者提供了通过 OpenAI SDK 提交和处理批处理任务的能力。

Batch API 专为高吞吐量、对延迟不敏感的场景设计,能够以异步方式处理任务,且价格比标准 API 低 50%,此次更新将进一步拓宽其应用范围。

支持 Gemini Embedding 模型

现在,您可以通过 Batch API 调用我们强大的 Gemini Embedding 模型。这意味着您可以在更高的速率限制下使用该模型,并且成本仅为标准 API 的一半,即每百万输入 token 0.075 美元。这一特性为更多对成本敏感、延迟容忍度高或需要异步处理的应用场景解锁了可能性。

通过以下几行 Python 代码即可开始使用批量 Embedding 功能:

# 1. 创建一个包含请求的 JSONL 文件 (例如 embedding_requests.jsonl)
# {"key": "request_1", "request": {"output_dimensionality": 512, "content": {"parts": [{"text": "解释一下什么是生成式 AI"}]}}}
# {"key": "request_2", "request": {"output_dimensionality": 512, "content": {"parts": [{"text": "解释一下什么是量子计算"}]}}}

from google import genai

client = genai.Client()

# 2. 上传包含批处理请求的文件
uploaded_batch_requests = client.files.upload(file='embedding_requests.jsonl')

# 3. 创建 Embedding 批处理作业
batch_job = client.batches.create_embeddings(
 model="gemini-embedding-001",
 src={"file_name": uploaded_batch_requests.name}
)

print(f"已创建 Embedding 批处理作业: {batch_job.name}")

# 4. 等待作业完成(最长可能需要 24 小时)
# ... 此处省略轮询或等待逻辑 ...

# 5. 检查作业状态并下载结果
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)

更多关于批量 Embedding 的信息和示例,请参阅官方文档中的相关章节。

兼容 OpenAI SDK

如果您正在使用 OpenAI SDK,现在只需修改几行代码,即可轻松切换到 Gemini Batch API。这得益于我们提供的 OpenAI SDK 兼容层。

以下是如何使用 OpenAI SDK 调用 Gemini Batch API 的示例:

from openai import OpenAI

# 1. 初始化 OpenAI 客户端,但指向 Gemini API 端点
openai_client = OpenAI(
 api_key="YOUR_GEMINI_API_KEY", # 请替换为您的 Gemini API 密钥
 base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

# 2. 以上传符合 OpenAI 批处理输入格式的 JSONL 文件
# ... 此处省略文件上传逻辑,假设已获得 batch_input_file_id ...

# 3. 创建批处理作业
batch = openai_client.batches.create(
 input_file_id=batch_input_file_id,
 endpoint="/v1/chat/completions",
 completion_window="24h"
)

# 4. 等待作业完成(最长 24 小时)并轮询状态
batch = openai_client.batches.retrieve(batch.id)

# 5. 如果作业已完成,下载结果
if batch.status == "completed":
 # ... 此处省略结果下载和处理逻辑 ...
 print("批处理作业已完成。")

您可以查阅相关文档,了解更多关于 OpenAI 兼容层和批处理支持的详细信息。

我们正持续扩展批处理功能,以进一步优化使用 Gemini API 的成本效益。敬请关注未来的更新。


👉 如果你需要 ChatGPT 代充 / Claude / Claude Code / 镜像 / 中转 API