使用ガイド
Imagen 4 电商产品图片:提示词、批量代码与质检
- モデル
- imagen-4
概要
- 标准版 Imagen 4 在 HiAPI 上以
imagen-4.0运行,价格为每张图片 $0.06,每个请求生成一张图片,仅支持文生图。打开 Imagen 4 模型页面可先试用一条提示词。 - 对于产品目录,它很适合生成白底产品图和生活场景图,这些图原本需要为每个配色单独拍摄。它不能还原你实际的 SKU,因为它没有参考图片输入。
aspect_ratio为必填项(无默认值),seed必须是数字字符串。在我们的运行中,"seed": "sku-dripper-01"通过了校验,但约一秒钟后每个任务都以TASK_FAILED失败。- 要安排质检环节。在一个 4 张图的批次中,我们得到了一只未要求的玻璃壶、一处要求哑光却出现的光亮釉面,以及道具上的虚假标签文字,尽管设置了
negative_prompt: "text, logo"。

本指南涵盖的内容
这是一套面向在线商店的实用工作流,用于为一条产品线生成一组图片:每个 SKU 一张白底目录图、一张产品页生活场景图,以及一张用于移动端故事的竖版裁剪图。以下所有内容均于 2026-11-04 针对实时 API 运行,使用一个虚构产品:一只灰绿色陶瓷手冲滤杯和配套马克杯。
如果你只需要让第一个请求跑通,请从如何使用 Imagen 4 API开始。通用提示词模板请参阅Imagen 4 提示词。本指南讲的是如何批量生成商店图片集,并在上线前进行检查。
写提示词前先选择档位
HiAPI 上的三个 Imagen 4 档位均为文生图,请求结构相同:更改 model id 即可切换档位。价格来自测试当日的 HiAPI 定价。
| 档位 | 模型 id | 每张图片价格 | 模型页面 |
|---|---|---|---|
| Fast | imagen-4.0-fast |
$0.03 | Imagen 4 Fast |
| Standard | imagen-4.0 |
$0.06 | Imagen 4 |
| Ultra | imagen-4.0-ultra |
$0.09 | Imagen 4 Ultra |
对于产品目录,算术很简单。200 个 SKU ×(1 张产品图 + 1 张生活场景图)= 400 张图片,在标准档上为 $24,Fast 档为 $12,Ultra 档为 $36,这还不包括任何重试。本文只测试了标准档,因此不对 Fast 或 Ultra 的质量做任何声明。完整价格明细请参阅Imagen 4 API 定价。
请求:四个字段,其中两个容易出错
imagen-4.0 的输入 schema 是封闭的。以下是我们在构建批处理时遇到的边界情况,附确切错误信息:
| 字段 | 规则 | 我们观察到的结果 |
|---|---|---|
prompt |
必填字符串 | — |
aspect_ratio |
必填,取值为 1:1、16:9、9:16、3:4、4:3、auto 之一 |
省略:aspect_ratio: missing required field "aspect_ratio"。"2:1":value must be one of '1:1', '16:9', '9:16', '3:4', '4:3', 'auto' |
negative_prompt |
可选字符串 | 被接受。减少了道具上的文字,但未消除(见质检) |
seed |
可选字符串 | 数字(12):seed: got number, want string。非数字字符串("sku-dripper-01"):以 HTTP 200 接受,随后任务以 TASK_FAILED 结束。数字字符串("1042"):正常工作 |
| 其他任何内容 | 被拒绝 | additional properties 'foo' not allowed |
seed 问题让我们多花了一轮时间。用 SKU 代码作为 seed 以便重跑时可追溯很诱人,而校验器也让它通过了。我们第一批中的全部四个任务都返回如下结果:
{"code":200,"data":{"error":{"code":"TASK_FAILED","message":"task failed"},"model":"imagen-4.0","status":"fail"}}
然后我们逐一移除字段。同一提示词仅带 negative_prompt 时成功,仅带 "seed": "sku-dripper-01" 时失败,而 "seed": "1042" 成功。请让 seed 保持为数字,并将 SKU 映射保存在你自己的任务表中。
输出尺寸随比例而定。在我们的运行中,1:1 返回 1024×1024,4:3 返回 1152×864,9:16 返回 720×1280,均为 WebP。如果你的店面需要 2000 px 的放大图片,请规划一个放大步骤。输出本身不会那么大。
目录图片集的提示词
按拍摄类型而非按产品编写提示词模板,然后填入产品描述。让各 SKU 的光照、相机角度和背景保持一致,才能让一格格产品图看起来像同一本目录。
产品图(1:1)。 说明背景、构图、单一光照方向以及你想要的阴影:
Studio packshot of a matte sage-green ceramic coffee mug with a thin loop handle
on a seamless pure white background, centered, handle pointing right, eye-level view,
soft diffused key light from the left, gentle contact shadow, e-commerce catalog photography

马克杯返回结果很干净:手柄按要求朝右,阴影柔和,背景均匀。无需任何编辑。
生活场景图(4:3)。 指明主体对象、表面、光照方向,以及哪些道具处于失焦状态。然后再次说明产品是清晰主体:
Lifestyle product photo: a matte sage-green ceramic pour-over dripper sitting on a glass carafe
on a light oak kitchen counter, morning window light from the right, a bag of coffee beans and a
gooseneck kettle softly out of focus in the background, warm natural tones, shallow depth of field,
the dripper is the sharp hero of the frame
该提示词生成了本文顶部的图片。
竖版故事图(9:16)。 如果顶部要放标题,请明确要求留出负空间:
Vertical lifestyle product photo for a mobile story: overhead flat lay of a matte sage-green ceramic
pour-over dripper on a linen napkin, scattered roasted coffee beans, a small ceramic cup of black coffee,
on a pale stone surface, soft even daylight, generous empty space in the top third for a headline

顶部三分之一的空白如要求所示。但请注意整颗咖啡豆放在滤杯里面:没人会那样冲咖啡,咖啡买家会注意到。更多内容见下文。
异步批处理代码
HiAPI 图片生成是异步的:POST /v1/tasks 返回一个 taskId,然后轮询 GET /v1/tasks/{taskId},直到 status 为 success 或 fail(见异步 API 文档)。对于产品目录,一次性提交所有任务并并行轮询。这是我们运行的脚本,提示词已精简。两张场景图直接来自该脚本。两张产品图是在我们排查上述 seed 失败(不带 seed 的滤杯产品图)时用相同提示词逐张生成的。
import os, time, json, concurrent.futures as cf
import requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}",
"Content-Type": "application/json"}
NEG = "text, logo, watermark, hands, people, clutter, reflections of camera"
JOBS = [
{"sku": "dripper-white", "aspect_ratio": "1:1", "seed": "1041", "prompt": "Studio packshot of ..."},
{"sku": "mug-white", "aspect_ratio": "1:1", "seed": "1042", "prompt": "Studio packshot of ..."},
{"sku": "dripper-scene", "aspect_ratio": "4:3", "seed": "2041", "prompt": "Lifestyle product photo: ..."},
{"sku": "dripper-story", "aspect_ratio": "9:16", "seed": "3041", "prompt": "Vertical lifestyle product photo ..."},
]
def submit(job):
body = {"model": "imagen-4.0",
"input": {"prompt": job["prompt"], "aspect_ratio": job["aspect_ratio"],
"negative_prompt": NEG, "seed": job["seed"]}} # seed: digits only
r = requests.post(API, headers=HEADERS, json=body, timeout=30)
r.raise_for_status()
return r.json()["data"]["taskId"]
def wait(task_id, timeout_s=300):
deadline = time.time() + timeout_s
while time.time() < deadline:
r = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30)
data = r.json()["data"]
if data["status"] in ("success", "fail"):
return data
time.sleep(4)
raise TimeoutError(task_id)
def run(job):
t0 = time.time()
task_id = submit(job)
data = wait(task_id)
if data["status"] != "success":
return {"sku": job["sku"], "status": "fail", "error": data.get("error")}
url = data["output"][0]["url"]
img = requests.get(url, timeout=60).content
path = f"{job['sku']}.webp"
open(path, "wb").write(img) # download now: output URLs expire
return {"sku": job["sku"], "status": "success", "task_id": task_id,
"seconds": round(time.time() - t0, 1), "bytes": len(img), "file": path}
with cf.ThreadPoolExecutor(max_workers=4) as pool:
for result in pool.map(run, JOBS):
print(json.dumps(result))
生产环境中有三个细节很重要:
- 失败的任务仍返回 HTTP 200。 请检查
data.status == "fail"和data.error.code。不要只依赖raise_for_status()。 - 立即下载。
output[0].url是一个带expireAt时间戳的临时链接(在我们的响应中约为 7 天后)。将字节复制到你自己的存储或 CDN。不要从你的商店热链该 URL。 - 在 SKU 旁记录任务 id。 当审核者拒绝某张图片时,你需要知道生成它的提示词、seed 和任务 id。
在我们的运行中,单个任务在服务端 7–8 秒完成(created → completed)。两个并行的场景任务实际耗时 31 秒和 42 秒,包括 4 秒的轮询间隔和下载。使用 max_workers=4 时,小批次中占主导的是轮询开销而非生成时间。
质检:图片上线前要检查什么
文生图生成的是貌似合理的产品,而不是你仓库中那件产品的照片。每张图片都需要人工或自动对照真实 SKU 检查。以下是我们在一个 4 张图批次中发现的问题:

| 检查项 | 我们批次中的情况 | 修复方法 |
|---|---|---|
| 画面中只有列出的产品 | 滤杯产品图额外添加了一只带手柄的配套绿色玻璃壶,而提示词从未要求(见上图)。 | 添加“single object, nothing else in frame”并重试。绝不要发布你并不销售的套装。 |
| 表面效果与材质 | 我们要求“哑光”釉面。两张滤杯图返回的都是光亮效果。马克杯更接近缎面。 | 将材质词视为提示。与真实产品对比,不匹配就拒绝。 |
| 道具上的文字 | 生活场景中的咖啡袋有一个类似 logo 的标记和无法辨认的标签文字,即使设置了 negative_prompt: "text, logo"。 |
不要让带标签的道具出现在提示词中,或对其模糊或裁剪。绝不要让虚假文字进入商品列表。 |
| 产品逻辑 | 俯拍图把整颗咖啡豆放在滤杯里面。 | 让了解该产品品类的人审核场景图。 |
| 各图之间的一致性 | 滤杯的肋纹图案和底部形状在产品图、场景图和俯拍图之间各不相同。 | 除非与真实物品匹配,否则不要在同一产品页混用“同一” SKU 的生成图。 |
| 尺寸与比例 | 所有输出均符合要求的比例(1024²、1152×864、720×1280)。 | 下载后自动检查像素尺寸。 |
最后一点是商店的关键决策。将 Imagen 4 用于品类横幅、生活方式氛围图、广告创意,以及仅以规格形式存在的产品的占位图。 对于必须展示你确切商品的列表照片,应从真实产品照片开始,改用图生图模型。我们的Seedream 4.5 图生图电商指南详细介绍了该工作流。
常见问题
imagen-4.0 能把我的真实产品放进新场景吗?
不能。在 HiAPI 上它只接受 prompt、aspect_ratio、negative_prompt 和 seed。没有图片输入字段,因此无法将你的产品照片作为参考。
negative_prompt 会移除所有文字吗?
在我们的测试中不会。发送它值得,但生活场景的背景道具上仍出现虚假标签文字。可靠的修复方法是避免带标签的道具。
为什么我的任务立即以 TASK_FAILED 失败?
先检查你的 seed。像 "sku-dripper-01" 这样的非数字字符串能通过校验,但在我们的运行中每个任务都失败。请使用字符串形式的数字,例如 "1042"。
Google-Imagen4 是另一个模型吗?
在我们的测试中,使用 "model": "Google-Imagen4" 发送的请求成功了,而任务负载报告 "model": "imagen-4.0"。在新代码中请使用 imagen-4.0。
下一步
选择一个产品,为它编写上面的三个提示词模板,并针对 Imagen 4 模型运行批处理脚本。如果你要将其接入目录流水线,异步 API 文档涵盖了身份验证和轮询。
関連記事
すべての記事を見る →-
使用ガイド
GPT Image 2.6とは?markup編集と判明している仕様
OpenAI API 仕様にある GPT Image 2.6 の全情報、新しい markup 編集パラメータの使い方、そしてまだ公表されていない部分について。
-
使用ガイド
Vidu Q4 Preview API の料金は?540p で毎秒 $0.0515
2 モード同価格、5 段階の解像度と 3〜16 秒の課金方法、$10 で何本生成できるか、そしてサイト内の動画モデルとの価格比較。
-
使用ガイド
Recraft V4.1 Flash によるEC商品画像:1枚あたり$0.01でカタログ画像を一括生成
recraft-v4.1-flash/text-to-image での実際の並列バッチ:商品リスト画像とシーン画像、実測した背景の白さ、所要時間、バッチスクリプト。