PAYATHON 2026

Gemini AI through Vertex AI 的付费与查询限制

支付小周

结论

通过 Vertex AI 调用 Gemini 模型时,通常可以按量付费(pay-as-you-go)。费用一般由所选模型及输入、输出的 token 数量决定,部分功能还会按图片、音频、视频或缓存用量计费。

“每分钟最多 60 次查询”并不是所有 Vertex AI Gemini 调用的统一上限。实际限制取决于以下因素:

  • Google Cloud 项目
  • 模型及模型版本
  • 调用区域
  • 使用的 API 和部署方式
  • 项目当前配额
  • 模型使用固定配额还是 Dynamic Shared Quota
  • 是否购买 Provisioned Throughput

因此,chatbot application 上线前,应以目标项目的 Quotas & System Limits 页面所显示的配额和 API 实际返回的限流信息为准。

付费方式

启用 Google Cloud Billing,并在项目中启用 Vertex AI API 后,通常可以直接按实际用量付费,无需预先购买固定调用套餐。

基本流程如下:

  1. 创建或选择 Google Cloud 项目。
  2. 为项目关联有效的 Billing Account。
  3. 启用 Vertex AI API。
  4. 创建具有适当权限的 Service Account,或使用 Application Default Credentials。
  5. 调用 Gemini 模型。
  6. 通过 Billing Budgets、Usage Reports 和 Cloud Monitoring 监控费用与调用量。

不同 Gemini 模型的价格可能不同,预览版、正式版和多模态能力的计费规则也可能变化。不能只根据模型名称判断费用。上线前,应在 Google Cloud 官方 Vertex AI pricing 页面核对相应模型、区域和输入类型的价格。

按量付费不等于没有容量限制。它表示费用按用量结算,但请求频率、token 吞吐量和共享服务容量仍可能受到限制。

如何确认查询限额

进入 Google Cloud Console,选择 chatbot 实际使用的项目,然后打开:

IAM & Admin → Quotas & System Limits

也可以从 Vertex AI 的相关配额页面进入。筛选时建议检查:

Service: Vertex AI API
Region: chatbot 实际调用的区域
Model: 实际使用的 Gemini 模型

不要只查看“每分钟请求数”。生成式模型常见的限制维度还包括:

  • Requests per minute
  • Input tokens per minute
  • Output tokens per minute
  • Concurrent requests
  • 每个项目或每个区域的吞吐量
  • Batch prediction 或其他专项 API 的限制

某些 Gemini 模型使用 Dynamic Shared Quota。在这种模式下,Google 可能不会为项目提供一个简单、固定的“60 RPM”额度。请求能否立即处理还会受到所在区域共享容量的影响。即使控制台没有显示 60 RPM,也仍可能收到 429 Resource Exhausted。

如果业务需要稳定且可预测的吞吐量,可以评估 Provisioned Throughput。它的容量保障方式不同于普通的按量调用,更适合流量稳定或有明确服务等级要求的生产应用,但通常需要单独配置和付费。

Python 调用示例

下面的示例使用 Google Gen AI SDK,通过 Vertex AI 调用 Gemini。模型名称和区域应替换为项目当前实际可用的值:

from google import genai

client = genai.Client(
    vertexai=True,
    project="YOUR_PROJECT_ID",
    location="us-central1",
)

response = client.models.generate_content(
    model="YOUR_GEMINI_MODEL",
    contents="请简要介绍退款流程。",
)

print(response.text)

认证可以使用 Application Default Credentials:

gcloud auth application-default login

在 Cloud Run、GKE 或 Compute Engine 等生产环境中,更适合为运行服务绑定权限最小化的 Service Account,不要保存个人凭据或长期密钥文件。

处理限流和临时容量不足

chatbot 不能假设每次请求都会立即成功。遇到 HTTP 429、503 或短暂的网络错误时,可以采用指数退避并加入随机抖动,避免大量实例同时重试。

import random
import time
from google import genai
from google.api_core.exceptions import ResourceExhausted, ServiceUnavailable

client = genai.Client(
    vertexai=True,
    project="YOUR_PROJECT_ID",
    location="us-central1",
)

def generate_with_retry(prompt, max_attempts=5):
    for attempt in range(max_attempts):
        try:
            return client.models.generate_content(
                model="YOUR_GEMINI_MODEL",
                contents=prompt,
            )
        except (ResourceExhausted, ServiceUnavailable):
            if attempt == max_attempts - 1:
                raise

            delay = min(2 ** attempt, 16) + random.random()
            time.sleep(delay)

response = generate_with_retry("你好,请介绍一下你的功能。")
print(response.text)

具体异常类型取决于 SDK 版本和调用方式。如果使用 REST API,应根据 HTTP 状态码和响应中的错误详情判断是否重试。认证失败、参数错误等 4xx 问题通常不应盲目重试。

Chatbot 集成建议

生产环境至少应采取以下措施:

  • 在应用侧设置每个用户和全局的速率限制。
  • 控制对话历史长度,避免每次请求重复发送过多 token。
  • 合理缓存可复用的系统提示词或结果。
  • 为 429 和 503 设置有限次数的指数退避。
  • 设置请求超时、并发上限和熔断策略。
  • 记录请求次数、token 用量、延迟和错误码。
  • 设置 Billing Budget 和费用告警。
  • 压力测试时使用独立项目,或设置严格的预算保护。
  • 流量较大时可以评估多个区域,但不要把跨区域切换当作绕过配额的方式。

还要区分 Google AI Studio / Gemini Developer API 与 Gemini on Vertex AI。两者可能提供相似的模型,但认证方式、计费账户、配额体系和速率限制并不相同。其他平台文档中的“60 requests per minute”不能直接套用于 Vertex AI 项目。

简而言之,Vertex AI 上的 Gemini 可以按量付费,但没有一个适用于所有项目和模型的统一 60 次/分钟上限。最终应以目标项目、模型和区域对应的配额控制台、官方定价信息及实际错误响应为准。

备注:内容仅供参考。