使用 API 呼叫 ComfyUI

1. 提交繪圖任務

要提交繪圖任務,您需要使用以下 POST 請求:

POST /prompt

請求參數:

  • client_id string 客戶端生成的任務 ID,用於識別任務發起者
  • prompt json 包含繪圖參數的 JSON 數據

範例

{
  "client_id": "unique_client_id",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "一幅美麗的風景"
  }
}

2. 使用 WebSocket 接收任務狀態

提交任務後,您可以通過 WebSocket 實時接收更新。連接到以下地址:

ws://<your_server>:<port>/ws?client_id=unique_client_id

連接後,您將收到有關任務執行狀態、進度等的信息。

數據格式

  • 文本數據:用於通知任務變更、當前執行步驟和進度。
  • 二進制數據:用於傳輸生成的圖像預覽。

Python 範例代碼

以下是使用 Python 和 WebSocket 客戶端庫提交繪圖請求並接收結果的示例代碼:

import websocket
import json
import uuid

server_address = "127.0.0.1:8188"
client_id = str(uuid.uuid4())

def queue_prompt(prompt):
    p = {"client_id": client_id, "prompt": prompt}
    data = json.dumps(p).encode('utf-8')
    req = urllib.request.Request(f"http://{server_address}/prompt", data=data)
    response = urllib.request.urlopen(req)
    return json.loads(response.read())

def on_message(ws, message):
    print(f"收到:{message}")

ws = websocket.WebSocketApp(f"ws://{server_address}/ws?client_id={client_id}",
                            on_message=on_message)
ws.run_forever()

# 提交繪圖請求
prompt_data = {
    "width": 768,
    "height": 512,
    "text": "一幅美麗的風景"
}
queue_prompt(prompt_data)