การใช้ API เรียก ComfyUI

1. การส่งงานวาดภาพ

ในการส่งงานวาดภาพ คุณต้องใช้คำขอ POST ดังต่อไปนี้:

POST /prompt

พารามิเตอร์คำขอ:

  • client_id string รหัสงานที่สร้างโดยไคลเอนต์เพื่อระบุผู้ริเริ่มงาน
  • prompt json ข้อมูล JSON ที่ประกอบด้วยพารามิเตอร์การวาดภาพ

ตัวอย่าง

{
  "client_id": "unique_client_id",
  "prompt": {
    "width": 768,
    "height": 512,
    "text": "ทิวทัศน์ที่สวยงาม"
  }
}

2. การใช้ WebSocket เพื่อรับสถานะงาน

หลังจากส่งงานแล้ว คุณสามารถรับการอัปเดตแบบเรียลไทม์ผ่าน WebSocket เชื่อมต่อไปที่ที่อยู่ต่อไปนี้:

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

เมื่อเชื่อมต่อแล้ว คุณจะได้รับข้อมูลเกี่ยวกับสถานะการดำเนินการของงาน ความก้าวหน้า ฯลฯ

รูปแบบข้อมูล

  • ข้อมูลข้อความ: ใช้เพื่อแจ้งการเปลี่ยนแปลงของงาน ขั้นตอนการดำเนินการปัจจุบัน และความก้าวหน้า
  • ข้อมูลไบนารี: ใช้เพื่อส่งภาพพรีวิวที่สร้างขึ้น

ตัวอย่างโค้ด Python

ด้านล่างนี้คือตัวอย่างโค้ดที่ใช้ Python และไลบรารี WebSocket client เพื่อส่งคำขอการวาดภาพและรับผลลัพธ์:

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

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

# ส่งคำขอการวาดภาพ
prompt_data = {
    "width": 768,
    "height": 512,
    "text": "ทิวทัศน์ที่สวยงาม"
}
queue_prompt(prompt_data)