Utilisation de l'API pour appeler ComfyUI

1. Soumettre des tâches de dessin

Pour soumettre une tâche de dessin, vous devez utiliser la demande POST suivante :

POST /prompt

Paramètres de la requête :

  • client_id string Un ID de tâche généré par le client pour identifier l'initiateur de la tâche
  • prompt json Données JSON contenant les paramètres de dessin

Exemple

{
  "client_id": "unique_client_id",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "Un beau paysage"
  }
}

2. Utilisation de WebSocket pour recevoir l'état de la tâche

Après avoir soumis la tâche, vous pouvez recevoir des mises à jour en temps réel via WebSocket. Connectez-vous à l'adresse suivante :

ws://<votre_serveur>:<port>/ws?client_id=unique_client_id

Une fois connecté, vous recevrez des informations sur l'état d'exécution de la tâche, les progrès, etc.

Format des données

  • Données texte : Utilisées pour notifier les changements de tâche, les étapes d'exécution actuelles et les progrès.
  • Données binaires : Utilisées pour transmettre des aperçus d'images générées.

Exemple de code Python

Voici un exemple de code utilisant Python et la bibliothèque client WebSocket pour soumettre une demande de dessin et recevoir les résultats :

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"Reçu : {message}")

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

# Soumettre la demande de dessin
prompt_data = {
    "width": 768,
    "height": 512,
    "text": "Un beau paysage"
}
queue_prompt(prompt_data)