Używanie API do wywoływania ComfyUI

1. Przesyłanie zadań rysunkowych

Aby przesłać zadanie rysunkowe, musisz użyć następującego żądania POST:

POST /prompt

Parametry żądania:

  • client_id string ID zadania generowane przez klienta w celu zidentyfikowania inicjatora zadania
  • prompt json Dane JSON zawierające parametry rysowania

Przykład

{
  "client_id": "unikalne_id_klienta",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "Piękny krajobraz"
  }
}

2. Używanie WebSocket do odbierania statusu zadania

Po przesłaniu zadania możesz otrzymywać aktualizacje w czasie rzeczywistym za pośrednictwem WebSocket. Połącz się z następującym adresem:

ws://<twój_serwer>:<port>/ws?client_id=unikalne_id_klienta

Po połączeniu otrzymasz informacje o statusie wykonania zadania, postępie itp.

Format danych

  • Dane tekstowe: Używane do powiadamiania o zmianach w zadaniu, bieżących krokach wykonania i postępie.
  • Dane binarne: Używane do przesyłania podglądów wygenerowanych obrazów.

Przykładowy kod w Pythonie

Poniżej znajduje się przykładowy kod używający Pythona i biblioteki klienta WebSocket do przesłania żądania rysunkowego i odebrania wyników:

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"Odebrano: {message}")

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

# Przesłanie żądania rysunkowego
prompt_data = {
    "width": 768,
    "height": 512,
    "text": "Piękny krajobraz"
}
queue_prompt(prompt_data)