文生图
用文字描述生成图片,可以走 Interactions API,也可以走 OpenAI 兼容接口。
计费方式
每张图片是一笔独立的订单。下单时先冻结这张图的费用,图片交付后再扣费;生成失败则解冻,不收费。使用免费额度的图片不收费。
Interactions API
向 POST /v1/interactions 发送创建请求:op 填 create,mode 填 background,并带上 model、prompt、width 和 height(宽和高必须同时给出,且只能是该模型支持的尺寸),请求头里必须带 Idempotency-Key。返回的 id 就是订单 ID,之后用 op 为 get、interaction_id 为该 ID 的请求反复查询,直到订单成功、失败或被取消。订单成功后,result.download_url 是有效期 15 分钟的下载链接。
curl https://api.inferway.ai/v1/interactions \
-H "Authorization: Bearer $INFERWAY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"op": "create",
"mode": "background",
"model": "inferway/image-gen-v1",
"prompt": "a red panda riding a bicycle",
"width": 1024,
"height": 1024
}'OpenAI 兼容接口
POST /v1/images/generations 沿用 OpenAI Images 的请求格式,n 可填 1 到 4,每张图是一笔订单。请每次调用都带上 Idempotency-Key:OpenAI 官方 SDK 遇到超时或断连会自动重试,却不会自己带这个请求头;没有它,每次重试都会变成一笔新订单,成功后各自扣费。
import os
import uuid
from openai import OpenAI
client = OpenAI(base_url="https://api.inferway.ai/v1", api_key=os.environ["INFERWAY_API_KEY"])
resp = client.images.generate(
model="inferway/image-gen-v1",
prompt="a red panda riding a bicycle",
size="1024x1024",
extra_headers={"Idempotency-Key": str(uuid.uuid4())},
)尺寸
每个模型只接受它支持的尺寸。其它尺寸会返回 invalid_size,错误信息里会列出可用的尺寸。
| 模型 | 尺寸 |
|---|---|
inferway/image-gen-v1 | 1024×1024 · 1024×768 · 768×1024 · 1280×720 · 720×1280 |
免费图片
每个账号每天可以免费生成少量标准尺寸的图片。
- 每个账号每个 UTC 日最多免费生成 7 张,UTC 00:00(北京时间 08:00)重置。具体张数以 402 响应里 free_alternative 的 daily_limit 为准。
- 只有标准模型的标准尺寸免费。
- 账户里有可用余额(含赠金)、够付这张图时,直接按价格扣费,不占用免费额度;余额为零或不够付,或者所属项目的预算拒绝这张图时,才会用免费额度。
- 因平台原因生成失败或过期的图片,会退回这一张的免费额度;排队时取消的也会退回,开始生成后再取消则不退。
- 当天的免费额度用完、余额又不够付时,请求返回 402;免费图片不会被改成扣费订单。如果是项目预算拒绝了这张图,402 的错误码为 budget_exceeded,调高预算或等下个计费周期后再试。
- 排队等免费生成的图片太多时,请求返回 429,错误码为 free_image_queue_busy,Retry-After 为 30 秒。这种情况不占用额度,也不影响付费图片,等一会儿再试就行。
检查图片中的文字
图片里的长段文字、书法字体和小字可能出现错字或乱码,生成后请检查。