Images
图片接口使用独立的 GPT 图片生成线路 Key,走标准 OpenAI Images API。
- Base URL:
https://api.laoshirenai.com/v1 - 图片生成:
POST /v1/images/generations - 图片编辑:
POST /v1/images/edits
想用 Gemini 的 Nano Banana 生图,请看 Nano Banana 生图。
当前文本分组仍可能保留自身的原生图片能力;新接入请使用独立生图线路,避免把文本 Key 和图片 Key 混在一起。
可用模型和价格
图片按张计费,不按 Token 计费。价格只看图片尺寸档位,和 quality 无关。余额需要先充值,请求失败不扣费。
| 模型 | 1K | 2K | 4K | 说明 |
|---|---|---|---|---|
gpt-image-2 |
¥0.15/张 | ¥0.20/张 | ¥0.25/张 | 2K / 4K 是放大后的图片,清晰度不如原生大图 |
gpt-image-2.5-flare |
¥0.25/张 | ¥0.35/张 | ¥0.45/张 | 原生 2K / 4K |
gpt-image-2.5-sunburst |
¥0.25/张 | ¥0.35/张 | ¥0.45/张 | 原生 2K / 4K |
需要真正清晰的大图时,请用 gpt-image-2.5-flare 或 gpt-image-2.5-sunburst。
尺寸和档位
档位按请求尺寸的像素面积计算:
size |
档位 |
|---|---|
1024x1024 |
1K |
1536x1024 |
1K |
1024x1536 |
1K |
2048x2048 |
2K |
3840x2160 |
4K |
2160x3840 |
4K |
规则:不超过 2 MP(百万像素,例如 1792x1024)算 1K;不超过 4.3 MP(例如 2048x2048)算 2K;更大的算 4K。
1. 创建并检查 Key
打开 API 密钥,选择 GPT 图片生成线路 创建 Key,然后检查模型权限:
curl https://api.laoshirenai.com/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"
返回结果里应能看到上面的图片模型。这一步只查询模型,不生成图片,不产生费用。
2. 图片生成
| 参数 | 必填 | 说明 |
|---|---|---|
model |
是 | gpt-image-2、gpt-image-2.5-flare 或 gpt-image-2.5-sunburst |
prompt |
是 | 图片内容、构图、风格和限制条件 |
size |
是 | 见上面的尺寸表 |
quality |
是 | low、medium、high;不影响价格 |
n |
是 | 固定为 1 |
output_format |
否 | png、jpeg、webp |
output_compression |
否 | JPEG / WebP 压缩率;示例值 70 |
background |
否 | 支持 transparent |
moderation |
否 | 支持 low |
style |
否 | 支持 vivid |
下面生成一张 2048x2048 的原生 2K 图片:
curl https://api.laoshirenai.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--max-time 300 \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "一只红色陶瓷杯,浅灰色背景,产品摄影,无文字",
"size": "2048x2048",
"quality": "high",
"n": 1
}'
成功响应的 data[0].b64_json 是 Base64 图片。每次请求只返回 1 张图片,需要多张时请分别发起请求。
Python SDK
安装 OpenAI Python SDK:
python3 -m pip install openai
import base64
from pathlib import Path
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.laoshirenai.com/v1",
timeout=300,
)
result = client.images.generate(
model="gpt-image-2.5-flare",
prompt="一只红色陶瓷杯,浅灰色背景,产品摄影,无文字",
size="2048x2048",
quality="high",
n=1,
)
Path("result.png").write_bytes(base64.b64decode(result.data[0].b64_json))
3. 图片编辑
图片编辑使用 multipart/form-data。让 SDK 或 cURL 自动生成 Content-Type 的 boundary,不要手写该请求头。
编辑同样按输出的图片张数计费,档位规则和生成一样。下面的编辑示例和参数范围以 gpt-image-2 为准。
| 参数 | 必填 | 当前文档范围 |
|---|---|---|
model |
是 | gpt-image-2 |
prompt |
是 | 编辑内容以及必须保持不变的部分 |
image |
是 | PNG、JPEG、WebP 或 GIF;多图时重复传入多个 image 文件 |
mask |
否 | PNG,格式和尺寸必须与第一张图片一致 |
size |
是 | 1024x1024 |
quality |
是 | low |
n |
是 | 1 或 2;n=2 按 2 张计费 |
input_fidelity |
否 | 支持 high |
output_format |
否 | 支持 png、jpeg、webp |
output_compression |
否 | JPEG / WebP 压缩率;示例值 70 |
下面几种编辑方式均使用 gpt-image-2。把 YOUR_API_KEY 替换为生图线路 Key。
单图编辑
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.laoshirenai.com/v1",
timeout=300,
)
with open("source.png", "rb") as source:
result = client.images.edit(
model="gpt-image-2",
image=source,
prompt="把背景改成纯白色,主体和构图保持不变,无文字",
size="1024x1024",
quality="low",
n=1,
)
遮罩编辑
遮罩必须是 PNG,尺寸与原图一致;透明区域表示需要修改的范围。
with open("source.png", "rb") as source, open("mask.png", "rb") as mask:
result = client.images.edit(
model="gpt-image-2",
image=source,
mask=mask,
prompt="只在遮罩区域加入一朵白色小花,其余部分保持不变",
size="1024x1024",
quality="low",
n=1,
)
多图编辑
把多张参考图作为列表传入;不要先把图片转成 URL 或 file_id。
with open("product.png", "rb") as product, open("scene.png", "rb") as scene:
result = client.images.edit(
model="gpt-image-2",
image=[product, scene],
prompt="把第一张图的产品放入第二张图的场景,保持产品外观,无文字",
size="1024x1024",
quality="low",
n=1,
)
一次返回两张编辑结果
编辑接口支持 n=2,按 2 张计费:
with open("source.png", "rb") as source:
result = client.images.edit(
model="gpt-image-2",
image=source,
prompt="生成两个不同的纯白背景版本,主体保持不变,无文字",
size="1024x1024",
quality="low",
n=2,
)
assert len(result.data) == 2
保存结果
生成和编辑使用相同的保存方式:
import base64
from pathlib import Path
Path("result.png").write_bytes(base64.b64decode(result.data[0].b64_json))
成功响应是 OpenAI Images JSON 结构:
{
"created": 1780000000,
"data": [
{ "b64_json": "iVBORw0KGgoAAAANSUhEUg..." }
],
"usage": {
"input_tokens": 10,
"output_tokens": 20,
"total_tokens": 30
}
}
响应中的 usage 只是用量信息;费用按图片张数和档位计算。
4. 在 Codex 中自动生图
安装公开 Skill:
请使用 $skill-installer 安装:
https://github.com/nobody396/laoshirenai-skills/tree/main/skills/laoshirenai-imagegen
安装后直接对 Codex 说:
生成一张 1024×1024 的红色陶瓷杯产品图,低质量草稿,浅灰色背景,无文字。
首次调用时,Skill 会自动打开只监听 127.0.0.1 的本机配置页:
- 粘贴 GPT 图片生成线路 Key;
- 点击 保存并完成配置;
- Skill 自动保存 Key、准备运行环境,并通过
/v1/models做零费用检查; - 检查通过后自动继续刚才的图片任务,不需要重新提问。
以后提出生成、编辑、遮罩或多图合成需求时,Codex 会自动选择 laoshirenai-imagegen。生成调用 /v1/images/generations,编辑调用 /v1/images/edits。
支持范围
| 能力 | 可直接使用的范围 |
|---|---|
| 图片生成 | 三个模型;六种尺寸;low / medium / high;PNG / JPEG / WebP;透明背景;moderation=low;style=vivid |
| 单图编辑 | PNG、JPEG、WebP 或 GIF + 文本提示词 |
| 遮罩编辑 | 原图 + 同尺寸 PNG 遮罩 + 文本提示词 |
| 多图编辑 | 重复上传多个 image 文件 + 文本提示词 |
| 编辑结果数量 | n=1 或 n=2 |
| 编辑保真度 | input_fidelity=high |
| Codex 自动调用 | 自然语言生成与自然语言编辑 |
图片生成暂不提供流式输出;带 stream=true 的请求会返回 400 image streaming is not supported。图片编辑必须使用 multipart/form-data 文件上传,不接受 URL 或 Data URL JSON 输入。/v1/images/variations 当前不存在。
等待时间与计费
- 一张图通常要 20–60 秒。客户端总超时请设置为 至少 300 秒,否则图还没出来连接就断了。
- 图片按张、按尺寸档位扣余额;请求失败不扣费。
- 调用后到“使用记录”核对模型、分组、状态和费用。
- 请求失败时可保留响应头
X-Request-ID以便查询对应请求。 - 图片生成和编辑不是幂等操作。超时或连接中断时,先查使用记录,确认没有成功结果和扣费后再决定是否重试。
常见错误
400:模型、提示词、参数、图片或遮罩不符合要求;按错误信息修正,不自动重试。400 images endpoint requires an image model:使用了文本模型名。401:Key 缺失、无效或已停用。402:余额或可用额度不足。403:当前 Key 不属于 GPT 图片生成线路。413:上传图片或请求体过大。408/504:等待超时;先查看使用记录,再决定是否重新提交。429:并发或请求频率达到限制。500/502/503:网关或上游暂时失败;确认没有成功图片后再决定是否重试。