HiAPI
博客

对比评测

ChatGPT 虚拟试穿替代方案:实测 4 个试穿 API

ChatGPT 的 Try on 按钮没有 API。我们把相同的人物和服装照片发送给四个线上 HiAPI 模型,并比较了服装保真度、印花、人脸和成本。

2026年11月3日
ChatGPT 虚拟试穿替代方案:实测 4 个试穿 API

ChatGPT 于 2026 年 10 月 1 日为服装和配饰新增了 Try on(试穿)按钮。你上传一张自拍,选择一件商品,ChatGPT Images 2.5 便会渲染出你穿着它的样子。这对购物者来说很好用。但它并不是你可以从自己的店铺、应用或商品目录流水线中调用的东西:它没有试穿接口,没有固定的人像加服装输入,结果取决于对话如何理解你的请求。

如果你需要以 API 形式实现同样的功能,可以从两类模型中选择:专用试穿模型,严格接收一张人物照片和一张服装照片;以及多参考图像编辑器,接收两张图像再加一段文字指令。我们用相同的两组输入,分别跑了两类共四个线上 HiAPI 模型,总计 12 次真实的 /v1/tasks 运行,并在下面展示所有输出。

快速答案

FASHN Try-On v1.6 Google Virtual Try-On FIBO Edit 1.5 GPT Image 2.5 Sunburst(编辑)
模型页面 fashn-tryon-v1.6 google-virtual-try-on fibo-edit-1.5 gpt-image-2.5-sunburst
类型 专用试穿 专用试穿 多参考编辑(1–4 张图像) 多参考编辑
是否需要提示词 否 否 是(instruction) 是(prompt)
服装控制项 category、garment_photo_type、mode、seed 无,仅两个图像字段 指令措辞,加上 seed 提示词措辞
我们运行中的输出 832×1248(与输入一致) 832×1248(与输入一致) 768×1152 832×1248,1K,2:3
每张图像价格(HiAPI,2026-11-03) $0.1072 $0.1075 $0.0575 1K 时 $0.025(2K 时 $0.04,4K 时 $0.06)

基于这 12 次运行,我们的简短结论是:

  • GPT Image 2.5 Sunburst 在两项测试中都还原出最忠实的服装,价格约为试穿模型的四分之一。它是 ChatGPT 该功能背后模型最接近的 API 对应版本。代价是你需要编写提示词,而模型可以自由改动提示词未锁定的任何内容。
  • Google Virtual Try-On 集成最简单:两个图像 URL,无需提示词,并且人物的脸部和姿态保持完整。它干净地放置了服装,但裁掉了胸前印花第一个字母。
  • FASHN Try-On v1.6 是控制项最多的专用模型,提供 category、photo-type、mode 和 seed 字段。在我们的臀长外穿衬衫上,它连续两次返回了裁短的衣长。
  • FIBO Edit 1.5 在四者中最干净地渲染了胸前印花。价格为 $0.0575,约为专用模型的一半,但它对人物脸部的偏移比其它模型更大。

ChatGPT 的试穿是什么,不是什么

根据 2026 年 10 月发布时的报道,Try on 按钮会出现在 ChatGPT 内的服装和配饰商品页上。你拍摄或上传一张参考照片,ChatGPT 会保存该照片以备将来试穿使用,图像由 ChatGPT Images 2.5 生成。你也可以上传商品的截图并请求试穿。报道指出,结果可能无法准确反映合身程度或尺码。

对于开发者而言,缺少三样东西:

  1. 没有接口。 该功能存在于聊天产品中。你的店铺无法向它发送购物者照片和 SKU 图像并拿回一个 URL。
  2. 没有固定契约。 服装是否正确落位取决于对话,而非命名的输入字段。
  3. 没有批处理路径。 一个想要让 500 个 SKU 由三位品牌模特展示的商品团队,需要队列、重试和回调。

在 API 侧,同一次发布的图像模型以 gpt-image-2.5-flare 和 gpt-image-2.5-sunburst 提供。如果你想了解产品名称如何映射到这些 ID,请参阅 ChatGPT Images 2.5 与 Flare 和 Sunburst 对比。在下面的测试中,我们使用了 Sunburst 的编辑线,因为它是面向精确编辑的层级。

我们如何测试

我们用 gpt-image-2/text-to-image 生成了两组原始输入对,并将它们上传到公开 URL,然后把完全相同的输入对发送给全部四个模型。

  • 输入对 1,结构测试。 一位穿着白色 T 恤和浅蓝色牛仔裤的女性,以及一件平铺的芥末黄宽条纹灯芯绒外穿衬衫:五颗纽扣、一个带盖胸袋、尖领、下摆呈弧形且落在腰部以下。
  • 输入对 2,印花测试。 一位穿着灰色 T 恤和橄榄色休闲裤的男性,以及一件平铺的米白色 T 恤,上面印有橙色太阳和海军蓝大写字母 SUNDAY CLUB。

设置在各次运行中保持不变:

  • FASHN:category: "tops"、garment_photo_type: "flat-lay"、mode: "quality"、output_format: "jpeg"、seed: 42(另加一次 seed: 7 的重复运行)
  • Google:仅 person_image_url + product_image_url
  • FIBO:两张图像放在 image_urls 中,一句指令,aspect_ratio: "2:3"
  • GPT Image 2.5 Sunburst:两张图像放在 image_urls 中,aspect_ratio: "2:3"、resolution: "1K"

每个任务从提交到出结果大约需要 25–60 秒,按 5 秒轮询间隔测量。全部 12 个任务都在首次提交时成功。

测试 1:灯芯绒外穿衬衫(结构与长度)

从左到右:FASHN、Google、FIBO、GPT Image 2.5 Sunburst。以下是原始分辨率的上半身,首先展示原始人物照片:

我们观察到的现象:

  • 四个模型都保留了芥末黄色、深色纽扣、尖领,以及穿着者左胸上的单一带盖口袋。它们都没有把口袋放到错误的一侧。
  • FASHN 把外穿衬衫缩短成了露脐短上衣。灯芯绒条纹被渲染出来,但服装长度错误。
  • Google 保留了全长衬衫,下摆落在牛仔裤腰头处,略有蓬松感。脸部、头发和姿态与输入照片最接近。
  • FIBO 生成了一件外观合理的衬衫,条纹较柔和。脸部有明显偏移:下颌线、头发体积和表情都与输入不同。
  • GPT Image 2.5 Sunburst 是唯一一个复现了落在腰部以下的弧形下摆、与平铺图一致的模型,宽条纹清晰可见,脸部也保持完整。

这可以重复吗?

我们用不同的 seed 重跑了 FASHN,并用相同提示词重跑了 GPT Image 2.5 Sunburst:

FASHN 使用 seed: 7 再次输出偏短:衬衫底部敞开,露出腹部。GPT Image 2.5 Sunburst 两次返回了几乎相同的结果。在这件服装上,FASHN 的长度问题是模式性的,而非偶然。

测试 2:印花 T 恤(标志与文字)

印花是试穿通常出问题的地方,所以这里是特写(FASHN、Google、FIBO、使用我们特定提示词的 GPT Image 2.5 Sunburst,以及使用通用提示词的 Sunburst):

  • FASHN 把印花放大得太多,以至于 SUNDAY 中的 S 顶到衬衫侧面并被部分截断。
  • Google 把印花放在自然大小,但第一个字母也落在侧面褶皱上并被部分遮挡。
  • FIBO 干净地渲染了太阳和完整的 SUNDAY CLUB,大小接近平铺图。
  • GPT Image 2.5 Sunburst 在两次运行中都正确渲染了完整文字,但印花比原图更小且位置更高。
  • 四个模型都保留了插兜的手、橄榄色长裤和米色背景。

如果胸前印花、标志或文字对你的商品目录很重要,无论选择哪个模型,都要对印花增加质量控制检查。

编辑器需要详细提示词吗?

我们的 Sunburst 提示词描述了每件服装的细节(口袋位置、条纹宽度、印花布局)。为了检查这有多重要,我们用一段从不提及服装的通用提示词重跑了两个输入对:

图 1 是一个人。图 2 是一件服装的商品照片。让图 1 中的人穿上图 2 中的服装。保持人物的脸、头发、身体、姿态、所有其他服装、背景和光照不变。精确复现服装的颜色、面料、长度、结构细节以及任何印花或文字。写实商品目录照片。

两个结果都站得住脚:外穿衬衫保留了弧形下摆,印花拼写正确。因此一个模板化提示词可以服务整个商品目录,你不需要为每个 SKU 编写提示词。风险则不同:由于编辑模型会改动提示词未保护的内容,请在每个请求中保留“保持不变”列表。

我们为输入对 1 使用的详细版本提示词如下:

图 1 是一个人。图 2 是一件芥末黄色灯芯绒外穿衬衫。让图 1 中的人穿上图 2 中的外穿衬衫,扣好纽扣。保持她的脸、头发、体型、姿态、牛仔裤、运动鞋、背景和光照与图 1 完全一致。精确复现外穿衬衫:相同的芥末黄色、宽条纹灯芯绒、深棕色纽扣、她左胸上的一个带纽扣盖口袋、尖领、带袖口的长袖。写实全身商品目录照片,无文字。

通过一个 API 调用它们

四个模型都使用相同的异步流程:POST /v1/tasks,然后轮询 GET /v1/tasks/{taskId},直到 status 为 success 或 fail。只有 input 对象会变化。完整契约,包括回调和 Idempotency-Key,见 异步 API 文档。

import os, time, requests

API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}

PERSON = "https://your-cdn.example.com/person.jpg"
GARMENT = "https://your-cdn.example.com/garment.jpg"

REQUESTS = {
    "fashn-tryon-v1.6": {
        "model_image": PERSON,
        "garment_image": GARMENT,
        "category": "tops",              # tops | bottoms | one-pieces | auto
        "garment_photo_type": "flat-lay",  # auto | model | flat-lay
        "mode": "quality",               # performance | balanced | quality
        "seed": 42,
    },
    "google-virtual-try-on": {
        "person_image_url": PERSON,
        "product_image_url": GARMENT,
    },
    "fibo-edit-1.5/image-to-image": {
        "image_urls": [PERSON, GARMENT],
        "instruction": "让图 1 中的人穿上图 2 中的服装。"
                       "保持脸、姿态、其他服装和背景不变。",
        "aspect_ratio": "2:3",
    },
    "gpt-image-2.5-sunburst/image-to-image": {
        "image_urls": [PERSON, GARMENT],
        "prompt": "图 1 是一个人。图 2 是一件服装的商品照片。"
                  "让图 1 中的人穿上图 2 中的服装。"
                  "保持人物的脸、头发、身体、姿态、所有其他服装、"
                  "背景和光照不变。",
        "aspect_ratio": "2:3",
        "resolution": "1K",              # 1K | 2K | 4K
    },
}

def try_on(model: str) -> str:
    r = requests.post(API, headers=HEADERS, json={"model": model, "input": REQUESTS[model]})
    r.raise_for_status()
    task_id = r.json()["data"]["taskId"]
    while True:
        task = requests.get(f"{API}/{task_id}", headers=HEADERS).json()["data"]
        if task["status"] == "success":
            return task["output"][0]["url"]   # 临时 URL:请下载并存储
        if task["status"] == "fail":
            raise RuntimeError(task.get("error"))
        time.sleep(5)

print(try_on("google-virtual-try-on"))

我们运行中得到的三个细节:

  • 编辑线拒绝 quality。 向 gpt-image-2.5-sunburst/image-to-image 发送 "quality": "medium" 会返回 400 INVALID_REQUEST: additional properties 'quality' not allowed。请仅使用 resolution 和 aspect_ratio 控制输出尺寸。
  • 输出 URL 会过期。 结果 URL 是临时的(expireAt 在任务输出中),因此请下载图像并存储到你自己的存储中。
  • 输入必须是公开的 http(s) URL。 四个模型都接收图像 URL,而不是 base64。请先上传购物者照片,再提交任务。

如何选择

在以下情况下选择专用试穿模型(FASHN 或 Google):

  • 购物者或运营人员会提交图像,而你不希望流程中出现任何提示词
  • 你希望脸部和姿态尽可能接近输入(Google 在这方面最强)
  • 你需要明确的 category 和 garment-photo-type 控制项,以及用于可复现重跑的 seed(FASHN)

在以下情况下选择多参考编辑器(GPT Image 2.5 Sunburst 或 FIBO):

  • 服装结构和长度比零提示词的简洁性更重要(Sunburst 在我们的外穿衬衫测试中最强)
  • 每张图像成本是决策因素:Sunburst 1K 为 $0.025,FIBO 为 $0.0575,而专用模型约为 $0.107
  • 你想在同一次调用中做超出简单换装的造型,例如扣上还是敞开、塞进还是放出、或更换背景
  • 印花和文字必须保持可读(FIBO 和 Sunburst 在我们的测试中都完整拼出了印花)

在以下情况下留在 ChatGPT 中: 你只是一个人,想看看某件商品穿在自己身上的效果。你不需要任何代码。

常见问题

ChatGPT 有虚拟试穿 API 吗?

没有。截至 2026 年 11 月,试穿是 ChatGPT 应用的一项功能,从商品页或上传图像触发。同一次发布的图像模型可作为 API 模型使用,但没有带人物和服装字段的试穿专用接口。在 HiAPI 上,你可以通过 /v1/tasks 调用这些图像模型或专用试穿模型。

哪个模型最接近 ChatGPT 使用的模型?

ChatGPT 的试穿运行在 ChatGPT Images 2.5 上。该次发布的 API 模型是 GPT Image 2.5 Flare 和 Sunburst。我们测试了 Sunburst 的图像到图像线,它接收多张参考图像加提示词。

专用试穿模型比通用图像编辑器更好吗?

不一定。在我们的两项测试中,专用模型更容易调用,人脸也最接近输入;而 GPT Image 2.5 Sunburst 更忠实地还原了服装长度和完整印花。在决定之前,请用你自己的服装分别跑两类模型。每种各一张的成本远低于 $0.25。

每次试穿成本是多少?

截至 2026-11-03,在 HiAPI 上:FASHN Try-On v1.6 $0.1072,Google Virtual Try-On $0.1075,FIBO Edit 1.5 $0.0575,GPT Image 2.5 Sunburst 图像到图像 1K 为 $0.025(2K 为 $0.04,4K 为 $0.06)。请查看定价页面了解当前费率。失败的任务不收费。

我能保持购物者的脸部和姿态不变吗?

专用模型正是为此设计的,Google 在我们的运行中最接近。使用编辑器时,请明确说明(“保持脸、头发、身体、姿态、背景不变”)。我们的通用提示词搭配 Sunburst 很好地保持了脸部,而 FIBO 偏移更多。

可以用于下装或连衣裙吗?

FASHN 的 category 接受上装、下装和连身装的值。Google 的模型页面将常见上装、夹克和连衣裙列为合适的候选。我们这里只测试了上装。

结论

ChatGPT 的试穿是面向购物者的功能。对于产品而言,你需要一个接口,而 HiAPI 上通过一个密钥就有四个可靠的接口。如果你想要最少的集成工作,从 Google Virtual Try-On 开始。如果你想要明确控制和可复现的 seed,使用 FASHN Try-On v1.6。如果服装保真度和成本最重要,用模板化提示词测试 GPT Image 2.5 Sunburst。把同样的两张图像发送给其中两个模型,让你的服装来决定。在写代码之前,你可以在任一模型页面的 Playground 中试用。

相关阅读

立即开始构建持久 AI 产物

获取 API 密钥,通过一个基于任务(task)的 API 调用图像、视频和音频模型。

阅读 API 文档