Appearance
生图模型调用教程
AI Hub API 支持两种协议调用图像生成模型:
- OpenAI 协议:使用
openai库,调用/v1/images/generations接口,适合生成独立图片 - Gemini 原生协议:使用
google-genai库,支持多轮对话式生图和图文混合输出
前置准备
- 已注册 AI Hub API 账号:https://api.xbai.top
- 已创建 API 令牌,分组选择「默认分组」
- 生图模型推荐使用
nano-banana-2,Gemini 生图模型使用gemini-3.1-flash-image-preview
OpenAI 协议
安装依赖
bash
pip install openai requestsPython 调用
基础生图
python
from openai import OpenAI
client = OpenAI(
api_key="your-api-key", # 替换为你的 API 令牌
base_url="https://api.xbai.top/v1"
)
response = client.images.generate(
model="nano-banana-2", # 生图模型名称
prompt="一只可爱的橘猫在阳光下打盹,水彩画风格",
n=1, # 生成图片数量
size="1024x1024", # 图片尺寸
quality="standard", # standard 或 hd
response_format="url" # 返回 url 或 b64_json
)
image_url = response.data[0].url
print(f"图片地址:{image_url}")生成并保存到本地
python
import requests
from pathlib import Path
from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="https://api.xbai.top/v1"
)
response = client.images.generate(
model="nano-banana-2",
prompt="赛博朋克风格的城市夜景,霓虹灯倒映在雨后的街道上",
size="1024x1024",
response_format="url"
)
image_url = response.data[0].url
img_data = requests.get(image_url).content
Path("output.png").write_bytes(img_data)
print("图片已保存到 output.png")返回 Base64 格式
python
import base64
from pathlib import Path
from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="https://api.xbai.top/v1"
)
response = client.images.generate(
model="nano-banana-2",
prompt="极简风格的山水画,留白构图",
size="1024x1024",
response_format="b64_json" # 返回 Base64 编码
)
b64_data = response.data[0].b64_json
img_bytes = base64.b64decode(b64_data)
Path("output.png").write_bytes(img_bytes)
print("图片已保存到 output.png")curl 调用
基础生图
bash
curl https://api.xbai.top/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"model": "nano-banana-2",
"prompt": "一只可爱的橘猫在阳光下打盹,水彩画风格",
"n": 1,
"size": "1024x1024",
"quality": "standard",
"response_format": "url"
}'响应示例:
json
{
"created": 1234567890,
"data": [
{
"url": "https://example.com/generated-image.png"
}
]
}支持的参数
| 参数 | 类型 | 说明 | 可选值 |
|---|---|---|---|
model | string | 生图模型 | nano-banana-2 等,见控制台模型广场 |
prompt | string | 图片描述提示词 | 最长 4000 字符 |
n | int | 生成数量 | 1–4 |
size | string | 图片尺寸 | 256x256 512x512 1024x1024 1024x1792 1792x1024 |
quality | string | 图片质量 | standard(默认)、hd |
response_format | string | 返回格式 | url(默认)、b64_json |
Gemini 原生协议
Gemini 原生协议基于 Google GenAI SDK,支持对话式生图(多轮迭代)和文图混合输出,图片以 Base64 内嵌方式返回。
安装依赖
bash
pip install google-genai pillowPython 调用
基础生图
python
from google import genai
from google.genai import types
import base64
from pathlib import Path
client = genai.Client(
api_key="your-api-key",
http_options=types.HttpOptions(
base_url="https://api.xbai.top"
)
)
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents="请生成一张图片:一只可爱的橘猫在阳光下打盹,水彩画风格",
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"]
)
)
for part in response.candidates[0].content.parts:
if part.inline_data:
img_bytes = base64.b64decode(part.inline_data.data)
Path("output.png").write_bytes(img_bytes)
print("图片已保存到 output.png")
elif part.text:
print(part.text)多轮对话式生图
python
from google import genai
from google.genai import types
import base64
from pathlib import Path
client = genai.Client(
api_key="your-api-key",
http_options=types.HttpOptions(
base_url="https://api.xbai.top"
)
)
chat = client.chats.create(
model="gemini-3.1-flash-image-preview",
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"]
)
)
# 第一轮:生成初始图片
response = chat.send_message("生成一只橘猫在草地上的图片")
for i, part in enumerate(response.candidates[0].content.parts):
if part.inline_data:
img_bytes = base64.b64decode(part.inline_data.data)
Path(f"round1.png").write_bytes(img_bytes)
print("第一轮图片已保存")
elif part.text:
print(f"描述:{part.text}")
# 第二轮:基于上一张图片继续调整
response = chat.send_message("给猫咪戴上一顶草帽")
for i, part in enumerate(response.candidates[0].content.parts):
if part.inline_data:
img_bytes = base64.b64decode(part.inline_data.data)
Path(f"round2.png").write_bytes(img_bytes)
print("第二轮图片已保存")图文混合输出
python
from google import genai
from google.genai import types
import base64
from pathlib import Path
client = genai.Client(
api_key="your-api-key",
http_options=types.HttpOptions(
base_url="https://api.xbai.top"
)
)
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents="写一段关于秋天的短文,并配上一张秋叶飘落的插图",
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"]
)
)
img_count = 0
for part in response.candidates[0].content.parts:
if part.text:
print(part.text)
elif part.inline_data:
img_bytes = base64.b64decode(part.inline_data.data)
filename = f"image_{img_count}.png"
Path(filename).write_bytes(img_bytes)
print(f"[图片已保存:{filename}]")
img_count += 1curl 调用
Gemini 原生协议通过 generateContent 接口调用,图片以 Base64 格式内嵌在响应中。
基础生图
bash
curl https://api.xbai.top/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
-H "x-goog-api-key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"parts": [
{"text": "请生成一张图片:一只可爱的橘猫在阳光下打盹,水彩画风格"}
]
}
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'响应示例:
json
{
"candidates": [
{
"content": {
"parts": [
{"text": "这是一只在阳光下打盹的橘猫..."},
{
"inlineData": {
"mimeType": "image/png",
"data": "<base64编码的图片数据>"
}
}
]
}
}
]
}从响应中提取图片(Shell 脚本)
bash
# 发送请求并保存响应
curl https://api.xbai.top/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
-H "x-goog-api-key: your-api-key" \
-H "Content-Type: application/json" \
-d '{"contents":[{"parts":[{"text":"生成一张赛博朋克城市夜景图片"}]}],"generationConfig":{"responseModalities":["TEXT","IMAGE"]}}' \
-o response.json
# 提取 Base64 数据并解码为图片(需要安装 jq)
cat response.json | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 -d > output.png
echo "图片已保存到 output.png"两种协议对比
| 特性 | OpenAI 协议 | Gemini 原生协议 |
|---|---|---|
| 调用接口 | /v1/images/generations | /v1beta/models/{model}:generateContent |
| Python 库 | openai | google-genai |
| 返回格式 | URL 或 Base64 | Base64 内嵌 |
| 多轮对话生图 | 不支持 | ✅ 支持 |
| 图文混合输出 | 不支持 | ✅ 支持 |
| 适用场景 | 独立生图任务 | 交互式/迭代式生图 |
相关链接
- 快速开始 - 注册账号与创建令牌
- 模型分组介绍 - 查看可用模型
- 聊天模型调用教程 - 聊天接口教程
- Cherry Studio 图像生成 - 客户端生图教程
最后更新:2026-03-03