Використання API для виклику ComfyUI

1. Подання завдань для малювання

Щоб подати завдання для малювання, вам потрібно використати наступний POST запит:

POST /prompt

Параметри запиту:

  • client_id string Ідентифікатор завдання, згенерований клієнтом для ідентифікації ініціатора завдання
  • prompt json JSON дані, що містять параметри малювання

Приклад

{
  "client_id": "унікальний_client_id",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "Красива пейзаж"
  }
}

2. Використання WebSocket для отримання статусу завдання

Після подання завдання ви можете отримувати оновлення в режимі реального часу через WebSocket. Підключіться до наступної адреси:

ws://<ваш_сервер>:<порт>/ws?client_id=унікальний_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)