何时使用每个端点
| 用户工作流程 | 端点 | 使用时机 | 避免时机 |
|---|---|---|---|
| 文本到图像 | POST /v1/images/generations | 用户仅从提示开始 | 需要官方的 GPT 图像编辑流程 |
| 图像到图像 | POST /v1/images/generations | 模型文档通过 operation: "image-to-image" 以及 image_url、image_urls 或 reference_image_urls 引用图像 | 模型期望多部分编辑输入 |
| 图像编辑 | POST /v1/images/edits | 您正在使用支持的编辑模型(如 GPT 图像系列模型)编辑现有图像 | 您正在使用 Nano Banana 风格的图像到图像生成 |
| 变体 | POST /v1/images/variations | 您维护一个遗留的变体兼容集成 | 您正在构建新的参考图像工作流程 |
| 状态 | GET /v1/tasks/{id} | 创建响应返回 task_id、status: "pending" 或 poll_url | 创建响应已经包含最终的 data[] |
model。图像端点故意不依赖于历史隐式默认模型来处理生产流量。
选择模型
从模型发现开始,然后检查所选模型的 TokenLab 契约:tokenlab.public_contract_summary。模型详细页面可能会暴露更完整的 tokenlab.public_contract。使用这些字段进行确认:
- 支持的操作,例如
text-to-image、image-to-image或image-edit。 - 模型期望的请求端点。
- 用于引用的形状,例如
image_url、image_urls、reference_image_urls、多部分image或 JSONimages[]。 - 模型是否接受
size、aspect_ratio、resolution、quality、background、output_format或response_format。
请求形状规则
gpt-image-2风格的请求使用类似 OpenAI 的size、quality和编辑字段。当您希望模型或 TokenLab 使用自动默认值时,请省略可选字段。- Gemini 和 Nano Banana 图像系列通常使用
aspect_ratio;仅在模型契约暴露时发送resolution。 - Nano Banana 图像到图像应在
/v1/images/generations上,带有operation: "image-to-image"和参考图像 URL。 /v1/images/generations不接受顶级images[]或file_id;这些是编辑流程形状。- 远程图像引用必须是公共的
http或httpsURL。请勿发送私有网络 URL、嵌入凭据、URL 片段或可能在处理开始之前过期的签名 URL。
文本到图像示例
参考图像示例
处理结果
图像响应可以是同步或异步的:- 同步响应返回最终的
data[],其中包含url或b64_json。 - 异步响应返回
id、task_id、status,通常还有poll_url。 - 当
poll_url存在时优先使用。如果您需要固定路由,请轮询GET /v1/tasks/{id}。 - 当您特别需要
b64_json时使用同步请求;异步图像结果是以 URL 为导向的。
生产检查清单
- 在调用 TokenLab 之前验证用户输入:提示长度、图像数量、URL 可达性和文件类型。
- 将 HTTP 超时设置得足够高,以便进行同步高分辨率请求。在可用的情况下使用异步模式以处理长时间工作。
- 存储
request_id、task_id、poll_url、模型、端点和清理后的请求形状以供支持。 - 在客户端超时的情况下,检查任务是否已创建,然后再重试创建请求。
- 在存在时与使用记录和
billing_transaction_id对账,而不是与供应商任务 ID 对账。
常见错误
| 症状 | 可能原因 | 修复 |
|---|---|---|
400 和 param: "model" | 缺少显式模型 | 查询 /v1/models?recommended_for=image 并发送 model |
| 不支持的字段 | 字段不在该模型的公共契约中 | 删除该字段或选择文档中包含该字段的模型/端点 |
异步结果中没有 b64_json | 异步图像任务返回以 URL 为导向的结果 | 使用同步模式以获取 base64 输出 |
| 参考图像被拒绝 | 错误的端点或私有/过期的 URL | 匹配模型文档中的参考形状并使用可达的 URL |