Използване на API за повикване на ComfyUI

1. Изпращане на задачи за рисуване

За да изпратите задача за рисуване, трябва да използвате следното POST искане:

POST /prompt

Параметри на искането:

  • client_id string Идентификатор на задача, генериран от клиента, за идентифициране на инициатора на задачата
  • prompt json JSON данни, съдържащи параметри за рисуване

Пример

{
  "client_id": "unique_client_id",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "A beautiful landscape"
  }
}

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"Received: {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": "A beautiful landscape"
}
queue_prompt(prompt_data)