将 GPT 4.1 Mini 与 Comfy Router 配合使用
通过 Comfy Router 调用 openai/gpt-4.1-mini:端点、请求格式以及 Router 返回的响应。
将 GPT 4.1 Mini 与 Comfy Router 配合使用
通过 Comfy Router 调用 openai/gpt-4.1-mini:端点、请求格式以及 Router 返回的响应。
openai/gpt-4.1-mini 的 API 参考文档,由 Comfy Router 提供,模型来自 OpenAI。
输入: 文本, 图像 · 输出: 文本
快速开始
在 你的 Comfy 工作区 中创建一个密钥,并将其导出为 COMFY_API_KEY。Python 和 TypeScript 代码片段使用 Comfy SDK(pip install comfy-sdk 和 npm install @comfyorg/sdk);cURL 代码片段是通过原始 HTTP 进行的同一调用。
模型 ID:openai/gpt-4.1-mini
端点:POST https://api.comfy.org/v2/models/openai/gpt-4.1-mini
[tab] 等待结果 ``python Python theme={null} from comfy_sdk import Comfy # 从环境变量中读取 COMFY_API_KEY。 # SDK 会自动创建幂等键,并在自动重试时复用它。 with Comfy() as client: result = client.models.run( "openai/gpt-4.1-mini", { "input": "Reply with the single word: ok", "max_output_tokens": 1024, }, ) print(result)``typescript TypeScript theme={null} import { comfy } from "@comfyorg/sdk"; // 从环境变量中读取 COMFY_API_KEY。 // SDK 会自动创建幂等键,并在自动重试时复用它。 const { data } = await comfy.models.run("openai/gpt-4.1-mini", { input: "Reply with the single word: ok", max_output_tokens: 1024, }); console.log(data);``bash cURL theme={null} curl https://api.comfy.org/v2/models/openai/gpt-4.1-mini \ -H "X-API-Key: $COMFY_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}"``
[tab] 排队并稍后收集 相同的请求体,发送到POST https://api.comfy.org/v2/models/openai/gpt-4.1-mini/requests。运行一经受理,Router 就会立即返回201和request_id;结果就绪后,可从本进程或其他进程收集。队列投递 详细介绍了状态、取消和收集。 ``python Python theme={null} import asyncio from comfy_sdk import AsyncComfy # 从环境变量中读取 COMFY_API_KEY。 # 每次 submit() 调用都会生成自己的 Idempotency-Key,并在自动重试时复用它。 async def main(): async with AsyncComfy() as client: handle = await client.models.submit( "openai/gpt-4.1-mini", { "input": "Reply with the single word: ok", "max_output_tokens": 1024, }, ) print("request_id:", handle.request_id) # 加上模型 ID,就是另一个进程所需的全部信息 # 轮询直到请求完成,等待服务器指定的 Retry-After 时长。 async for update in handle.iter_events(): print(update.status, update.queue_position) # 提供商自身的载荷,即 models.run() 返回的同一个值。 # 失败或已取消的请求会在这里抛出类型化的 Router 错误。 result = await handle.get() print(result) asyncio.run(main())``typescript TypeScript theme={null} import { comfy } from "@comfyorg/sdk"; // 从环境变量中读取 COMFY_API_KEY。 // 每次 submit() 调用都会生成自己的 Idempotency-Key,并在自动重试时复用它。 const handle = await comfy.models.submit("openai/gpt-4.1-mini", { input: "Reply with the single word: ok", max_output_tokens: 1024, }); console.log("requestId:", handle.requestId); // 加上模型 ID,就是另一个进程所需的全部信息 // 轮询直到请求完成,等待服务器指定的 Retry-After 时长。 for await (const update of handle.events()) { console.log(update.status, update.queuePosition); } // 与 models.run() 返回的结果相同。失败或已取消的请求会在这里被拒绝。 const result = await handle.get(); console.log(result.data);``bash cURL theme={null} # 1. 提交。Router 返回 201,并带有 request_id、status_url、response_url 和 cancel_url。 curl https://api.comfy.org/v2/models/openai/gpt-4.1-mini/requests \ -H "X-API-Key: $COMFY_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d "{\"input\": \"Reply with the single word: ok\", \"max_output_tokens\": 1024}" # 2. 轮询直到状态为 COMPLETED,每次响应指定的 Retry-After 秒数需要等待。 REQUEST_ID="<request_id from the 201 body>" curl -i https://api.comfy.org/v2/models/openai/gpt-4.1-mini/requests/$REQUEST_ID/status \ -H "X-API-Key: $COMFY_API_KEY" # 3. 收集。返回 200 时为模型的原生输出;若仍在运行,则返回 202 及状态响应体。 curl https://api.comfy.org/v2/models/openai/gpt-4.1-mini/requests/$REQUEST_ID \ -H "X-API-Key: $COMFY_API_KEY"``
Schema
输入
include string[]
要包含在模型响应中的额外输出数据。
input string | object[] required
提供给模型的文本、图像或文件输入,用于生成响应。这是本契约中 Router 无法提供的唯一字段,也是下方 required 中唯一的条目。
instructions string
将系统(或开发者)消息作为第一项插入模型上下文中。
max\_output\_tokens integer
为一次响应生成的 token 数量上限,包括可见输出 token 和推理 token。在推理 id 上,该上限与隐藏的推理 token 共享,因此较小的值可能在产生任何可见文本之前就耗尽全部预算,这正是推理冒烟用例发送 1024、而聊天用例发送 16 的原因。
范围:1 到 …
model string
OpenAI 模型标识符。在 Comfy Router 上该字段是可选的(OPTIONAL),Router 会用 {model} 路径段填充它;显式的 null 也会以同样方式被替换。发送与路径不一致的值会被拒绝。
parallel\_tool\_calls boolean
是否允许模型并行执行工具调用。
previous\_response\_id string
上一个响应的 ID,用于多轮对话。
reasoning object
仅限推理层级。推理模型的配置,例如 {"effort": "medium"}。原样转发;可接受的键请参阅 OpenAI 的推理指南。聊天层级的 id 会忽略它。
store boolean
OpenAI 是否存储已生成的响应以便日后检索。
stream boolean
声明该字段是为了让发送它的调用方不被拒绝,但它在本接口上不起作用(INERT):Router 会在派发之前将其置为 false,因为 Router 捕获的是提供商响应,而不是转发 text/event-stream。Router 无法解码该流,因此流式生成会由 OpenAI 计费,却没有任何一方进行计量。Comfy 的任何接口都不提供该流:v1 POST /proxy/openai/v1/responses 入口会以 400 拒绝 stream: true,并且从不将请求转发到上游,因此请省略该字段,或在任一接口上发送 false,并以单个 JSON 正文读取已完成的响应。
temperature number
采样温度。仅限聊天层级:o 系列推理 id(o1、o1-pro、o3、o4-mini)会在 OpenAI 处拒绝该参数。Router 不会替它们拒绝该参数(原因请参见本组件中关于两个层级为何共用同一 schema 的说明),因此发送该参数的推理调用会收到 OpenAI 自身的错误响应。
范围:0 到 2
text object
输出格式配置,例如用于 Structured Outputs 的 {"format": {"type": "json_schema", ...}}。原样转发。
tool\_choice string | object
模型应如何选择要使用的工具。可以是一个字符串模式,也可以是一个指明某个工具的对象。
tools object[]
模型可以调用的工具定义。Router 不会收窄工具分类;可接受的形状请参阅 OpenAI 的 Responses API 参考文档。
top\_p number
核采样截断值。仅限聊天层级,条件与 temperature 相同。
范围:0 到 1
truncation string
当上下文超过模型窗口时使用的截断策略。与上面三个词表不同,此处的枚举会被强制执行,因为这两个值是 OpenAI 文档给出的完整集合,且至今没有增加。显式的 null 仍然会被接受,条件与上面的字段相同。
可选值:auto、disabled
usage object
Token 用量封装结构。该字段出现在本契约中,是因为 v1 操作在请求体上声明了它;OpenAI 会在响应中填充它,因此调用方没有理由发送它。
本文档由 Router 在 GET /v2/models/openai/gpt-4.1-mini/openapi.json 提供的 schema 生成,Router 在请求到达提供商之前对调用进行校验时使用的也正是这份文档。
输出
instructions string
将一条 system(或 developer)消息作为第一项插入模型的上下文中。
当与 previous_response_id 一起使用时,上一个响应中的 instructions 不会被带入下一个响应。这使得在新响应中替换 system(或 developer) 消息变得非常简单。
max\_output\_tokens integer
可为响应生成的 token 数量上限,包括可见输出 token 和推理 token。
model string
用于生成响应的模型
temperature number (default: 1)
控制响应的随机性
范围:0 到 2
top\_p number (default: 1)
通过核采样控制响应的多样性
范围:0 到 1
truncation string (default: "disabled")
用于模型响应的截断策略。
auto:如果此响应及之前响应的上下文超过 模型的上下文窗口大小,模型将通过丢弃对话中间 的输入项来截断响应,使其适应上下文窗口。disabled(默认):如果模型响应将超过该模型的上下文窗口 大小,请求将失败并返回 400 错误。
可选值:auto、disabled
previous\_response\_id string
模型上一个响应的唯一 ID。用它来 创建多轮对话。了解更多关于 对话状态的信息。
reasoning object
仅限 o 系列模型
推理模型 的配置选项。
reasoning.context string
控制在后续轮次中哪些推理项会被渲染回模型,例如 auto、current_turn 或 all_turns。
reasoning.effort string (default: "medium")
仅限 o 系列模型
约束推理模型 的推理投入程度。 目前支持的值为 low、medium 和 high。降低 推理投入程度可以使响应更快,并在响应中 用于推理的 token 更少。
可选值:low、medium、high
reasoning.generate\_summary string
弃用: 请改用 summary。
模型所执行推理的摘要。这对于 调试和理解模型的推理过程很有用。 取值为 auto、concise 或 detailed 之一。
可选值:auto、concise、detailed
reasoning.mode string
用于该响应的推理模式。
reasoning.summary string
模型所执行推理的摘要。这对于 调试和理解模型的推理过程很有用。 取值为 auto、concise 或 detailed 之一。
可选值:auto、concise、detailed
text object
text.format object
一个对象,用于指定模型必须输出的格式。
配置 { "type": "json_schema" } 会启用结构化输出, 从而确保模型匹配你提供的 JSON schema。了解更多信息请参阅 结构化输出指南。
默认格式为 { "type": "text" },不附带其他选项。
不建议用于 gpt-4o 及更新模型:
设置为 { "type": "json_object" } 会启用较旧的 JSON 模式,它 可确保模型生成的消息是有效的 JSON。对于支持 json_schema 的模型,建议优先使用它。
text.verbosity string
约束模型响应的详细程度。取值为 low、medium 或 high 之一。
tool\_choice \\none, auto, required | object
模型在生成响应时应如何选择要使用的一个或多个 工具。请参阅 tools 参数,了解如何指定模型 可以调用哪些工具。
tools object[]
background boolean
模型响应是否在后台运行。
billing object
该响应的计费信息。
billing.payer string
负责为该响应付费的一方。
completed\_at number
此响应完成时的 Unix 时间戳(以秒为单位)。仅当状态为 completed 时存在。
created\_at number
此响应创建时的 Unix 时间戳(以秒为单位)。
error object
当模型未能生成响应时返回的错误对象。
error.code string required
该响应的错误代码。
可选值:server_error, rate_limit_exceeded, invalid_prompt, vector_store_timeout, invalid_image, invalid_image_format, invalid_base64_image, invalid_image_url, image_too_large, image_too_small, image_parse_error, image_content_policy_violation, invalid_image_mode, image_file_too_large, unsupported_image_media_type, empty_image_file, failed_to_download_image, image_file_not_found
error.message string required
错误的可读描述。
frequency\_penalty number
根据 token 目前在文本中出现的频率对新 token 进行惩罚。
id string
此 Response 的唯一标识符。
incomplete\_details object
响应未完成的原因详情。
incomplete\_details.reason string
响应未完成的原因。
可选值:max_output_tokens, content_filter
max\_tool\_calls integer
一次响应中可以处理的内置工具调用总数上限。
metadata object
可以附加到响应上的键值对集合。
moderation object
响应输入和输出的审核结果(如果请求了经过审核的补全)。
object string
此资源的对象类型,始终为 response。
可选值:response
output object[]
由模型生成的内容项数组。
output数组中各项的长度和顺序取决于模型的响应。- 与其访问
output数组中的第一项并假定它是包含模型生成内容的assistant消息,你不如在 SDK 支持的情况下考虑使用output_text属性。
output\_text string
仅 SDK 提供的便捷属性,包含 output 数组中所有 output_text 项聚合后的文本输出(如果存在)。 在 Python 和 JavaScript SDK 中受支持。
parallel\_tool\_calls boolean (default: true)
是否允许模型并行执行工具调用。
presence\_penalty number
根据 token 是否已在当前文本中出现来对新 token 进行惩罚。
prompt\_cache\_key string
OpenAI 用于缓存相似请求的响应,以优化缓存命中率。取代 user 字段。
prompt\_cache\_retention string
提示缓存的保留策略,例如 in_memory 或 24h。
safety\_identifier string
一个稳定的标识符,用于帮助检测可能违反 OpenAI 使用政策的应用用户。
service\_tier string
用于处理请求的处理层级,例如 auto、default、flex、scale 或 priority。
status string
响应生成的状态。取值为 completed、failed、in_progress、cancelled、queued 或 incomplete 之一。
可选值:completed, failed, in_progress, cancelled, queued, incomplete
store boolean
响应是否会被存储,以便之后通过 API 检索。
tool\_usage object
按内置工具细分的 token 和请求用量。
tool\_usage.image\_gen object
图像生成工具的 token 用量。
tool\_usage.image\_gen.input\_tokens integer
tool\_usage.image\_gen.input\_tokens\_details object
tool\_usage.image\_gen.input\_tokens\_details.image\_tokens integer
tool\_usage.image\_gen.input\_tokens\_details.text\_tokens integer
tool\_usage.image\_gen.output\_tokens integer
tool\_usage.image\_gen.output\_tokens\_details object
tool\_usage.image\_gen.output\_tokens\_details.image\_tokens integer
tool\_usage.image\_gen.output\_tokens\_details.text\_tokens integer
tool\_usage.image\_gen.total\_tokens integer
tool\_usage.web\_search object
网络搜索工具的用量。
tool\_usage.web\_search.num\_requests integer
top\_logprobs integer
在每个 token 位置返回的最可能 token 的最大数量,每个 token 都带有对应的对数概率。
usage object
表示 token 用量详情,包括输入 token、输出 token、 输出 token 的明细以及使用的总 token 数。
usage.input\_tokens integer required
输入 token 的数量。
usage.input\_tokens\_details object required
输入 token 的详细明细。
usage.input\_tokens\_details.cache\_write\_tokens integer
写入缓存的输入 token 数量。
usage.input\_tokens\_details.cache\_write\_tokens\_details object
按缓存存活时间拆分的缓存写入。两个计数之和等于 cache_write_tokens。
usage.input\_tokens\_details.cache\_write\_tokens\_details.ttl\_12h\_tokens integer
以 12 小时存活时间写入缓存的输入 Token 数。
usage.input\_tokens\_details.cache\_write\_tokens\_details.ttl\_30m\_tokens integer
以 30 分钟存活时间写入缓存的输入 Token 数。
usage.input\_tokens\_details.cached\_tokens integer required
从缓存中检索到的 token 数量。 关于提示缓存的更多内容。
usage.output\_tokens integer required
输出 token 的数量。
usage.output\_tokens\_details object required
输出 token 的详细明细。
usage.output\_tokens\_details.reasoning\_tokens integer required
推理 token 的数量。
usage.total\_tokens integer required
使用的 token 总数。
user string
已弃用的终端用户标识符。已替换为 safety_identifier 和 prompt_cache_key。
示例
输入
{
"input": "Reply with the single word: ok",
"max_output_tokens": 1024
}
输出
{
"completed_at": 1767225601,
"created_at": 1767225600,
"id": "resp_0a1b2c3d4e5f6a7b8c9d0e1f",
"object": "response",
"output": [
{
"content": [
{
"annotations": [],
"text": "ok",
"type": "output_text"
}
],
"id": "msg_0a1b2c3d4e5f6a7b8c9d0e1f",
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"output_text": "ok",
"status": "completed",
"usage": {
"input_tokens": 14,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 2,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 16
}
}
发布前须知
SDK 会生成 Idempotency-Key 并在自动重试中复用它。手动重试时,请复用原始 key。Router 最长可保持连接 10 分钟。
请求失败时,Router 会发送 X-Comfy-Error-Type 响应头说明原因。422 表示 Router 在调用提供商之前就拒绝了输入,413 表示请求体超出了 Router 可接受的大小。已生成的资源请及时下载,因为结果 URL 会过期。
上文任何字段描述中提到的尺寸限制,都是提供商对该字段自身的限定,引自提供商的规范。Router 会对整个请求体另行设置上限,base64 编码的媒体内容也计入其中:参见请求体大小。
本页记录的是通过 Comfy Router 调用的某一个合作伙伴模型。同一个 comfy-sdk / @comfyorg/sdk 包还提供第二个客户端,用于在 Comfy Cloud 上运行完整的 ComfyUI 工作流图:Comfy(api_key=...) / new Comfy({ apiKey }),并带有 client.workflows、client.assets 和 client.jobs。请参阅 Comfy SDKs。
[card] 请求头 身份验证、幂等性、请求 ID、错误分类、重试节奏、消费限额。
[card] 使用 Router API 模型发现、验证错误、重试与计费。
[card] 限制 Router 目前不支持的功能,以及替代方案。