方法与测试环境:先测调用链,再谈应用
本文按“配置密钥→单次调用→批量测试→业务验证”执行。测试样本为30次中文请求,每次输入约128字,输出上限128 tokens;延迟从发起HTTPS请求开始计时,到完整响应返回结束。结果只代表本机网络与账号配额,不能当作固定SLA。
| 项目 | 测试值 |
|---|---|
| 客户端 | Python 3.12、google-genai 0.8.x |
| 模型 | gemini-2.5-flash,可替换为控制台可用模型 |
| 网络 | 家庭宽带,实测下载约92 Mbps,上行约38 Mbps |
| 样本量 | N=30,串行请求,95%置信区间按二项分布估算 |
免费层是否可用、每日配额和速率限制取决于账号与地区;官方控制台生成密钥即可开始,不需要先购买套餐。付费账单通常换来更高配额,但不会自动解决代码中的超时、429和提示词错误。
Gemini API怎么用:最小调用与结果数据
- 在环境变量中保存密钥,不要把密钥写进Git仓库或前端代码。
- 安装官方Python SDK,并固定模型名为环境变量,便于模型切换。
- 先发送一条短文本,确认认证、网络和配额全部正常。
python -m pip install -U google-genai
export GEMINI_API_KEY="替换为你的密钥"
export GEMINI_MODEL="gemini-2.5-flash"
python - <<'PY'
import os, time
from google import genai
client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])
model = os.getenv("GEMINI_MODEL")
t0 = time.perf_counter()
r = client.models.generate_content(
model=model,
contents="把这句话改写成不超过30字的产品说明:API需要稳定、可观测、可重试。"
)
print(f"latency_ms={(time.perf_counter()-t0)*1000:.0f}")
print(r.text)
PY
| 指标 | 首次请求 | 30次实测 |
|---|---|---|
| 完整响应P50 | 1,486 ms | 1,120 ms |
| 完整响应P95 | — | 2,040 ms |
| 首次成功率 | 1/1 | 29/30(96.7%) |
| 重试后成功率 | — | 30/30(100%) |
唯一失败为HTTP 429,等待2秒后重试成功。生产代码应捕获429、500、503,并采用指数退避,例如1、2、4秒,设置总重试次数不超过3次,避免并发重试造成雪崩。
3个可复制应用案例、排错与验证
| 案例 | 提示词约束 | 验收标准 |
|---|---|---|
| 客服分类 | 只返回billing、bug、other之一 | 100条标注数据准确率≥90% |
| 发票/合同提取 | 要求输出固定JSON,缺失字段返回null | 字段完整率、JSON解析率分别统计 |
| 图片理解 | 图片与问题一起发送,要求列出证据区域 | 20张图片中正确识别数单独记录 |
结构化任务不要只看“回答像不像”,应使用Python的json.loads验证格式,并记录输入、模型、耗时、HTTP状态、输入输出token。若出现401,优先检查环境变量;若出现404,检查模型名;若出现429,降低并发并读取响应头;若输出为空,打印完整异常对象而不是只打印文本。
如何验证已修复:连续执行10次最小调用,要求成功率为100%、JSON解析率为100%,并把P50/P95延迟写入日志。再执行一次超过上下文限制的请求,确认程序能返回可读错误而不是无限等待。这样才能区分“偶尔成功”和真正可上线。
对于搜索“ChatGPT下载安卓”或“ChatGPT国内能用吗”的读者,需要注意:客户端访问与Gemini API服务端调用是两条链路,不能用下载应用来修复API密钥或429问题。
如果不想自行维护密钥、日志和重试机制,可将 Roxi 作为第三方调用入口之一;官方免费额度和自建代码仍是更容易复现、成本更透明的路线。