Verwendung der API zur Aufruf von ComfyUI

1. Einreichen von Zeichnungsaufgaben

Um eine Zeichnungsaufgabe einzureichen, müssen Sie die folgende POST-Anfrage verwenden:

POST /prompt

Anforderungsparameter:

  • client_id string Eine von dem Client generierte Aufgaben-ID zur Identifizierung des Aufgabeninitiators
  • prompt json JSON-Daten, die Zeichnungsparameter enthalten

Beispiel

{
  "client_id": "einzigartige_client_id",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "Eine schöne Landschaft"
  }
}

2. Verwendung von WebSocket zum Empfang des Aufgabenstatus

Nachdem Sie die Aufgabe eingereicht haben, können Sie in Echtzeit Updates über WebSocket empfangen. Stellen Sie eine Verbindung zu folgender Adresse her:

ws://<Ihr_Server>:<Port>/ws?client_id=einzigartige_client_id

Sobald die Verbindung hergestellt ist, erhalten Sie Informationen über den Status der Aufgabenausführung, den Fortschritt usw.

Datenformat

  • Textdaten: Werden verwendet, um Änderungen an der Aufgabe, aktuelle Ausführungsschritte und Fortschritt zu benachrichtigen.
  • Binärdaten: Werden verwendet, um generierte Bildvorschauen zu übertragen.

Python-Beispielcode

Nachfolgend ein Beispielcode, der Python und die WebSocket-Client-Bibliothek verwendet, um eine Zeichnungsanfrage einzureichen und Ergebnisse zu erhalten:

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

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

# Zeichnungsanfrage einreichen
prompt_data = {
    "width": 768,
    "height": 512,
    "text": "Eine schöne Landschaft"
}
queue_prompt(prompt_data)