Skip to content

Nano Banana 图像生成

「Nano Banana」是 Google 在 Gemini 系列下推出的图像生成 / 图像编辑模型的代称,可通过 why01 直接调用。

写代码前先到控制台确认

  • 模型实际可用名(如 gemini-2.5-flash-image 等)以控制台 模型 / 定价页 当前列表为准——Google 经常改名
  • 价格按"调用次数 + 输出尺寸"计,按上游 usage 计费

它能做的事

  • 文生图:根据 prompt 生成新图像
  • 图生图 / 局部编辑:传入一张参考图 + prompt,输出改写后的新图(典型场景:换背景、改风格、抠图重绘)
  • 多图融合:将多张参考图合成为一张(取决于上游版本是否支持)

接入方式

走 OpenAI 兼容路径调即可,与文本对话模型同一套鉴权 / Base URL:

Base URL:  https://s1.why01.top
API Key:   sk-...(控制台 → 令牌管理 创建)
Model:     以控制台模型页当前的 Nano Banana 系列模型名为准

调用示例

Python(OpenAI SDK 风格)

很多图像模型通过 chat.completions 接口返回——返回字段里包含 base64 图或图 URL:

python
from openai import OpenAI
import base64

client = OpenAI(
    base_url="https://s1.why01.top/v1",
    api_key="sk-你的key",
)

# 模型名按控制台当前列表替换
resp = client.chat.completions.create(
    model="gemini-2.5-flash-image",
    messages=[{
        "role": "user",
        "content": "生成一张:黄昏的东京街道,赛博朋克风格,霓虹灯反射在湿润路面"
    }],
)

# 不同上游返回格式不一样,常见三种:
# 1) message.content 是 markdown 含 ![](data:image/png;base64,...) 
# 2) message.content 是 base64 字符串本身
# 3) 单独的 images 字段
print(resp.choices[0].message.content[:200])

返回格式没有统一标准

图像生成不像文本对话有 OpenAI 标准 schema。上游不同渠道返回字段差异较大——拿到响应先 print 原始 JSON 看结构,再决定怎么解析。出问题先看控制台「日志」原始响应。

cURL

bash
curl https://s1.why01.top/v1/chat/completions \
  -H "Authorization: Bearer sk-你的key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-flash-image",
    "messages": [
      {"role": "user", "content": "生成一只在月球上滑滑板的猫"}
    ]
  }'

图生图(传入参考图)

把参考图作为 image_url 传给模型,prompt 描述要做什么改动:

python
import base64

with open("input.jpg", "rb") as f:
    img_b64 = base64.standard_b64encode(f.read()).decode()

resp = client.chat.completions.create(
    model="gemini-2.5-flash-image",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "把这张图里的天空改成黄昏粉紫色"},
            {"type": "image_url", "image_url": {
                "url": f"data:image/jpeg;base64,{img_b64}"
            }}
        ]
    }],
)

计费

按上游返回的 usage 字段计——通常输入 token + 输出 token(图像本身的像素折算成 token 后参与计费)。具体倍率以控制台 模型 / 定价页 当前数值为准。

控成本三招

  • 先低分辨率出图:上游多数支持 size 参数,先用最小尺寸调通流程再拉高分辨率
  • 单次专 Key:给图像调用建一个独立令牌、单独限额,防止意外刷量
  • prompt 精简:图像模型对 prompt 长度不敏感,长 prompt 多花的 token 价值有限

常见问题

提示「模型不存在 / 404」

  1. 控制台 → 模型页确认当前 Nano Banana 系列的精确模型名
  2. Google 经常改名——半年前能用的模型名今天可能下线,看公告
  3. 仍不行 → 联系客服,说明你调用的模型名和报错时间

返回的图打不开 / 乱码

返回的多半是 base64 编码。前端渲染需要拼前缀:

html
<img src="data:image/png;base64,<base64 字符串>" />

Python 里写文件:

python
import base64
with open("out.png", "wb") as f:
    f.write(base64.b64decode(img_b64))

生成内容触发审核

图像模型上游有内容审核,部分 prompt(涉及暴力 / 色情 / 真人脸 / 政治敏感)会被拒。这是上游策略,why01 不能绕过——换 prompt 表述即可。

下一步