Usando la API para llamar a ComfyUI

1. Enviando Tareas de Dibujo

Para enviar una tarea de dibujo, necesitas usar la siguiente solicitud POST:

POST /prompt

Parámetros de la solicitud:

  • client_id string Un ID de tarea generado por el cliente para identificar al iniciador de la tarea
  • prompt json Datos JSON que contienen los parámetros de dibujo

Ejemplo

{
  "client_id": "unique_client_id",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "Un hermoso paisaje"
  }
}

2. Usando WebSocket para Recibir el Estado de la Tarea

Después de enviar la tarea, puedes recibir actualizaciones en tiempo real a través de WebSocket. Conéctate a la siguiente dirección:

ws://<tu_servidor>:<puerto>/ws?client_id=unique_client_id

Una vez conectado, recibirás información sobre el estado de ejecución de la tarea, el progreso, etc.

Formato de Datos

  • Datos de texto: Se utilizan para notificar cambios en la tarea, pasos de ejecución actuales y progreso.
  • Datos binarios: Se utilizan para transmitir vistas previas de imágenes generadas.

Código de Ejemplo en Python

A continuación se muestra un código de ejemplo que utiliza Python y la biblioteca cliente WebSocket para enviar una solicitud de dibujo y recibir resultados:

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

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

# Enviar solicitud de dibujo
prompt_data = {
    "width": 768,
    "height": 512,
    "text": "Un hermoso paisaje"
}
queue_prompt(prompt_data)