ComfyUI 部署服务,发起 API 请求

12 天前
 WolverineL

我在尝试部署 ComfyUI ,尝试启动后通过 API 调用 comfyui 的接口

前置:我在 comfyui 页面编辑后可成功运行并生图

但是通过 API 调用,在第一步就倒下了,调/prompt 接口 prompt 参数是 workflow.json ,代码如下:

# 读取 workflow.json
with open(workflow_path, "r", encoding="utf-8") as f:
  workflow = json.load(f)

  # 如果有输入图片,上传并替换 workflow 参数
  if input_image:
    uploaded_filename = self.upload_image(input_image)
    # 注意:具体替换哪个节点要看你 workflow.json 的结构
    # 这里假设 workflow 里有一个节点的输入是 "image"
    for node in workflow:
      # 确保 node 是 dict
      if isinstance(node, dict) and node.get("type") == "LoadImage":
        # 替换 widgets_values[0] 为上传后的文件名
        if "widgets_values" in node and len(node["widgets_values"]) > 0:
          node["widgets_values"][0] = uploaded_filename
          print(f"[INFO] 已替换 workflow 输入图: 节点 {node.get('id')}")
          break

          # 给任务分配唯一 ID
          prompt_id = str(uuid.uuid4())
          payload = {"prompt": workflow}

          # 提交任务
          url = f"{self.api_base}/prompt"
          resp = requests.post(url, json=payload)
          print("URL:", url)
          print("请求 payload:", payload)
          print("HTTP 状态码:", resp.status_code)
          print("响应内容:", resp.text)
          resp.raise_for_status()
          self.log(f"[INFO] 任务提交成功, prompt_id={prompt_id}")

一请求就报错

HTTP 状态码: 400
响应内容: {"error": {"type": "invalid_prompt", "message": "Cannot execute because a node is missing the class_type property.", "details": "Node ID '#id'", "extra_info": {}}, "node_errors": {}}

实在不知道是什么原因,令人头大,希望有经验的大佬分享一下🫡

1635 次点击
所在节点    程序员
4 条回复
Parva
11 天前
抓包正常 ComfyUI 页面发起的/prompt 请求,看看请求体是什么数据结构就知道了
supersadmin
11 天前
可以试试创建一个 websocket:ws://{host}/ws?clientId={client_id},
再调用 http://{host}/api/prompt ,参数:{"prompt": prompt, "client_id": client_id},
其中 prompt 是使用的 ComfyUI 上的 workflow 导出的 API 文件内容,
后续生成的进度、结果就都在 websocket 里面接受处理。
lijunjieone
11 天前
demo 中 json 有问题,是旧版本的,你用最新版本导出一个最新的 json,复制进去就可以用了
lijunjieone
11 天前
我基于 comfyui 的 api 搞了一个网站 https://www.hubinnovation.tech/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1154362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX