Использование API для вызова ComfyUI

1. Отправка задач на рисование

Чтобы отправить задачу на рисование, вам необходимо использовать следующий POST-запрос:

POST /prompt

Параметры запроса:

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

Пример

{
  "client_id": "уникальный_идентификатор_клиента",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "Прекрасный пейзаж"
  }
}

2. Использование WebSocket для получения статуса задачи

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

ws://<ваш_сервер>:<порт>/ws?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)