AI PLAY玩法更新持续收录
← 回到更新流

2026-09-23 · 原文发布日

Comfy Router:一个 API 调用多家图像视频模型

Comfy 上线 Comfy Router,把多家前沿图像、视频、3D、音频模型收进同一个 API:集成一次后,只需改模型名和 provider 两个参数即可切换,支持 fal、Runware 等供应商之间手动选择,不做静默替换。自带队列,遇到 429 限流会自动重试,还提供 submit/subscribe 两种调用方式。按 Comfy credits 计费,无需订阅,适合需要在多模型多供应商间切换的开发者。

原文要点

Comfy 在开发者平台上线 Comfy Router:一个 API 集成多家图像、视频、3D、音频前沿模型(首日含 Seedance 2.5、MiniMax H3、Nano Banana Pro、GPT Image 2、Kling、Black Forest Labs 等),同一模型在 fal、Runware、WaveSpeed、Higgsfield 多家供应商间可用时,改 provider 一个参数即可切换;指定 provider 后不做静默替换,失败即失败且每个任务报告实际运行的供应商。内置队列自动重试 429 等瞬时错误,支持 submit(立即返回 request ID)与 subscribe(提交后轮询至完成)两种方式。按 Comfy credits 计费、无需订阅,各模型价格在模型目录列出;输入保留 24 小时、输出保留 24 小时后删除。路由策略(reliable、fast_start、fast_finish、lowest_cost)和按用途路由为规划中的能力。

这次做成什么

用 Comfy Router 完成一次多供应商图像生成练习:同一调用代码只改 model 与 provider 两个字符串切换供应商,并用 submit 提交一个队列任务、凭 request ID 取回结果,体会与直接集成单一供应商的差别。

准备什么

  • Comfy 开发者平台账号及 API key(形如 comfyui-...,在平台控制台获取)
  • Python 环境,能安装 Comfy 官方 SDK(安装命令与包名以官方文档为准)
  • 账户内有可用 Comfy credits 余额(各模型价格需在官方模型目录查询,本文不给出金额)
  • 一个测试用提示词,无需自有 GPU 或 ComfyUI 本地部署

具体怎么做

  1. 获取密钥并写最小调用

    在 Comfy 开发者平台生成 API key,存为环境变量 COMFY_API_KEY。按下方代码 artifact 写最小脚本:用 client.models.run 以 openai/gpt-image-2 和 provider="fal" 生成一张图,确认返回成功并记录结果 URL。

  2. 只改两个参数切换供应商

    把 provider 从 fal 改成该模型支持的另一供应商(如 runware,具体哪些模型在哪些供应商可用需查模型目录),其余代码不动,再跑一次。对比两次的耗时与返回中报告的实际 provider,确认每次任务都标明它真实运行的供应商。

  3. 验证“不静默替换”行为

    故意传一个该模型不支持的 provider 值运行。预期请求直接报错失败,而不是被悄悄路由到别家——这正是 Router 与自动选路的区别,你的账单和结果可审计。

  4. 用 submit 体验队列与限流重试

    改用 submit 方式连续提交 3 个任务,每个立即返回 request ID;把 ID 存进列表,循环轮询状态直到全部完成。遇到并发上限或 429 时队列会自动重试,无需自己写重试循环,也不占着连接。

  5. 评估是否值得用 Router

    对照检查清单判断:如果你只用一个模型一家供应商,直接集成该供应商更合适;需要同一模型多供应商备份、一把密钥统一账单、或批量任务排队时,Router 才有价值。

可直接复制的材料

Comfy Router 最小调用与供应商切换示例

基于原文公开的 SDK 调用形式扩展为对比示例;openai/gpt-image-2 的实际可用供应商列表以模型目录为准,本站未实测。

import os
from comfy_sdk import Comfy

client = Comfy(api_key=os.environ["COMFY_API_KEY"])

PROMPT = "aerial view of a neon coral reef at dusk"

# 第一次:走 fal
result_fal = client.models.run(
    "openai/gpt-image-2",
    arguments={"prompt": PROMPT},
    provider="fal",
)
print("fal 结果:", result_fal)

# 第二次:同一模型换供应商,只改这一行
result_rw = client.models.run(
    "openai/gpt-image-2",
    arguments={"prompt": PROMPT},
    provider="runware",  # 需先在模型目录确认该模型支持此供应商
)
print("runware 结果:", result_rw)

submit 队列提交与轮询示意

本站按原文 submit/subscribe 语义编写的示意代码;client.jobs.get 的具体方法名与状态字段需以官方 SDK 文档核对,未实测。

import os, time
from comfy_sdk import Comfy

client = Comfy(api_key=os.environ["COMFY_API_KEY"])

prompts = [
    "watercolor painting of a mountain village in spring",
    "isometric illustration of a tiny coffee shop",
    "studio photo of a ceramic teapot on linen",
]

# submit:立即拿到 request ID,队列自动处理 429 重试
job_ids = []
for p in prompts:
    job = client.models.submit(
        "openai/gpt-image-2",
        arguments={"prompt": p},
        provider="fal",
    )
    job_ids.append(job.request_id)
    print("已提交:", job.request_id)

# 轮询取结果(subscribe 会让 SDK 替你轮询,此处手动演示)
for rid in job_ids:
    while True:
        status = client.jobs.get(rid)
        if status.state in ("completed", "failed"):
            print(rid, status.state, status.result if status.state == "completed" else status.error)
            break
        time.sleep(5)

环境变量与账户配置

按原文 Pricing and data 部分整理;具体价格与供应商覆盖以平台页面实时信息为准。

COMFY_API_KEY=comfyui-在这里替换为你的真实密钥
计费:Comfy credits,无订阅;各模型价格在官方模型目录按模型列出,运行前先查价
数据保留:上传的输入保留 24 小时、生成的输出保留 24 小时后删除,需要长期保存请自行下载结果
供应商:fal / Runware / WaveSpeed / Higgsfield(并非每个模型都覆盖全部四家)

输入与输出示例

本站虚构的输出结构与字段名仅为示意,真实响应格式以官方文档为准;未实际调用。

输入

调用 client.models.run("openai/gpt-image-2", arguments={"prompt":"isometric illustration of a tiny coffee shop"}, provider="fal")

对应输出

返回示意:{"request_id":"req_7f3a2c91","state":"completed","provider":"fal","model":"openai/gpt-image-2","result":{"images":[{"url":"https://cdn.example.com/outputs/req_7f3a2c91.png"}]}}——其中 provider 字段明确报告本任务真实运行在 fal;若 fal 不可用且你指定了 fal,任务直接失败而不会改走别家。

做完检查这些

  • 脚本从环境变量读取密钥,代码仓库中不出现明文 API key
  • 两次调用仅 provider 参数不同,其余代码完全一致,且返回中都带实际运行的 provider 标识
  • 传入不支持的 provider 时请求报错失败,没有被静默路由到其他供应商
  • submit 批量提交后立即拿到全部 request ID,后续凭 ID 取结果,主线程不阻塞等待
  • 运行前已在官方模型目录核对所选模型的 credits 价格与可用供应商清单

容易卡住的地方

  • “同一模型多家供应商可切换”并非全部模型:只有一家供应商的模型改 provider 会直接失败,先查目录
  • 指定 provider 后没有兜底路由,对可用性敏感的功能应自己捕获失败后再换 provider 重试
  • 输出只保留 24 小时,生产流程必须在拿到结果后立刻转存到自己的存储
  • 路由策略(lowest_cost、fast_start 等)和“按用途路由”是原文预告的后续能力,当前不可用,不要写进依赖它们的方案
  • credits 同时覆盖 Partner Nodes、Cloud 工作流运行和 Router 调用,混用时注意余额消耗来源

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Introducing Comfy Router: One API for Frontier Media Models
原作者
ComfyUI Newsletter
原始发布日期
2026-09-23T15:47:01.070Z
来源
https://blog.comfy.org/p/introducing-comfy-router-one-api