Utilizzo dell'API per chiamare ComfyUI

1. Invio di Compiti di Disegno

Per inviare un compito di disegno, è necessario utilizzare la seguente richiesta POST:

POST /prompt

Parametri della richiesta:

  • client_id string Un ID compito generato dal client per identificare l'iniziatore del compito
  • prompt json Dati JSON contenenti i parametri di disegno

Esempio

{
  "client_id": "unique_client_id",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "Un paesaggio bellissimo"
  }
}

2. Utilizzo di WebSocket per Ricevere lo Stato del Compito

Dopo aver inviato il compito, puoi ricevere aggiornamenti in tempo reale tramite WebSocket. Connettiti al seguente indirizzo:

ws://<tuo_server>:<porta>/ws?client_id=unique_client_id

Una volta connesso, riceverai informazioni sullo stato di esecuzione del compito, sul progresso, ecc.

Formato Dati

  • Dati di testo: Utilizzati per notificare le modifiche al compito, i passaggi di esecuzione attuali e il progresso.
  • Dati binari: Utilizzati per trasmettere le anteprime delle immagini generate.

Esempio di Codice Python

Di seguito è riportato un esempio di codice che utilizza Python e la libreria client WebSocket per inviare una richiesta di disegno e ricevere i risultati:

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

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

# Invia richiesta di disegno
prompt_data = {
    "width": 768,
    "height": 512,
    "text": "Un paesaggio bellissimo"
}
queue_prompt(prompt_data)