从 Google AI Studio 或 Replicate 迁移到 genmux API
1 分钟阅读作者 genmux API Team
把已有的 Nano Banana 集成搬到这里,通常一个下午就够了:概念是一一对应的,而那些差异恰恰是你会很乐意删掉的部分。下面是被问得最多的几组映射。
心智模型
| 概念 | Google AI Studio(Gemini API) | Replicate | 我们 |
|---|---|---|---|
| 调用方式 | 同步 generateContent | 异步 prediction | 异步任务 |
| 鉴权 | x-goog-api-key | Authorization: Bearer | Authorization: Bearer |
| 结果 | 响应里的 base64 | prediction 完成后的 URL | 任务上的预签名 URL |
| 重试安全 | 无内建机制 | 无内建机制 | 强制 Idempotency-Key |
| 失败调用 | 按 token 计费 | 视情况而定 | 积分自动退回 |
| 完成推送 | 无 | webhook | 带签名的 webhook |
从 Google AI Studio 迁移
Google 的 API 是同步的,图片以 base64 内联返回。要改两处:
- 把调用拆开。 先
POST /v1/generations(拿到id),再轮询GET /v1/generations/{id}或使用webhook_url。你的超时问题会随之消失:无论模型负载多高,提交都在毫秒级返回。 - 改成取回,而不是解码。 结果是有效期 15 分钟的预签名 URL——把它们流式写入你自己的存储,而不是把 base64 大块留在内存里。
diff
- POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent
- {"contents":[{"parts":[{"text":"a red fox in snow"}]}]}
+ POST $BASE/v1/generations
+ {"model":"nanobanana","prompt":"a red fox in snow","resolution":"1K","ratio":"1:1"}提示词字符串本身原封不动就能用——底层是同一个模型家族,提示词行为也一致。
从 Replicate 迁移
形态你已经很熟悉了(创建 prediction → 轮询或 webhook)。变化在于:
version哈希 → 稳定的模型 id(nanobanana、nanobanana-pro),可在GET /v1/models查看;不用再做版本锁定那一套,路由和故障切换都在 id 背后完成。input: {...}→ 扁平请求体:prompt、resolution(1K/2K/4K)、ratio、n、seed,图生图再加images。旧的size字段("1024x1024")仍被接受,并映射到最接近的档位和比例。- 计费:按 GPU 秒计价 → 每张固定积分,提交前就已知(响应里的
cost),失败退回。