All Products
Search
Document Center

Platform For AI:Pusat Pengembang

Last Updated:Sep 03, 2025

Topik ini menjelaskan cara menggunakan Pusat Pengembang untuk memverifikasi integrasi API ComfyUI.

Verifikasi integrasi API ComfyUI

Edisi API

Edisi API ComfyUI digunakan untuk panggilan API dalam skenario multi-instansi ComfyUI. Dirancang bagi pengembang untuk mengimplementasikan integrasi, tanpa menyediakan antarmuka grafis web. Karena ComfyUI adalah layanan stateful, dalam skenario multi-instansi ComfyUI, gunakan layanan antrian asinkron EAS untuk memanggil layanan ComfyUI dengan benar.

Prasyarat

Anda memiliki lingkungan Python dan telah menginstal SDK EAS (untuk layanan antrian asinkron): pip install eas_prediction

Prosedur

  1. Masuk ke Konsol PAI ArtLab. Pilih Developer Center di panel navigasi sebelah kiri, lalu klik tab Custom Service. Setelah itu, klik Create Custom Service.

    Pilih ComfyUI (API Edition) untuk Service Edition.

  2. Ketika Service Status berubah menjadi Running, klik Call Information. Pada tab Response URL (Internet), dapatkan URL, token, titik akhir, dan ID layanan.

    image

  3. Ganti konten yang sesuai dalam kode dengan informasi panggilan yang baru saja Anda dapatkan, lalu jalankan kode contoh.

    Kode Contoh

    import requests
    
    ##### Ganti parameter berikut berdasarkan informasi panggilan #####
    input_url = "http://115************.cn-shanghai.pai-eas.aliyuncs.com/api/predict/ai4d_comfyuiapi_1u38************"
    token = "Yjha************"
    endpoint = "115************.cn-shanghai.pai-eas.aliyuncs.com"
    service_name = "ai4d_comfyuiapi_1u38************/sink"
    ################################
    
    session = requests.session()
    session.headers.update({"Authorization": f"{token}"})
    
    work_flow = {
        "3": {
            "inputs": {
                "seed": 156680208700286,
                "steps": 20,
                "cfg": 8,
                "sampler_name": "euler",
                "scheduler": "normal",
                "denoise": 1,
                "model": [
                    "4",
                    0
                ],
                "positive": [
                    "6",
                    0
                ],
                "negative": [
                    "7",
                    0
                ],
                "latent_image": [
                    "5",
                    0
                ]
            },
            "class_type": "KSampler",
            "_meta": {
                "title": "K sampler"
            }
        },
        "4": {
            "inputs": {
                "ckpt_name": "3dAnimationDiffusion_v10.safetensors"
            },
            "class_type": "CheckpointLoaderSimple",
            "_meta": {
                "title": "Checkpoint loader (simple)"
            }
        },
        "5": {
            "inputs": {
                "width": 512,
                "height": 512,
                "batch_size": 1
            },
            "class_type": "EmptyLatentImage",
            "_meta": {
                "title": "Empty Latent"
            }
        },
        "6": {
            "inputs": {
                "text": "beautiful scenery nature glass bottle landscape, , purple galaxy bottle,",
                "clip": [
                    "4",
                    1
                ]
            },
            "class_type": "CLIPTextEncode",
            "_meta": {
                "title": "CLIP text encoder"
            }
        },
        "7": {
            "inputs": {
                "text": "text, watermark",
                "clip": [
                    "4",
                    1
                ]
            },
            "class_type": "CLIPTextEncode",
            "_meta": {
                "title": "CLIP text encoder"
            }
        },
        "8": {
            "inputs": {
                "samples": [
                    "3",
                    0
                ],
                "vae": [
                    "4",
                    2
                ]
            },
            "class_type": "VAEDecode",
            "_meta": {
                "title": "VAE decoding"
            }
        },
        "9": {
            "inputs": {
                "filename_prefix": "ComfyUI",
                "images": [
                    "8",
                    0
                ]
            },
            "class_type": "SaveImage",
            "_meta": {
                "title": "Simpan gambar"
            }
        }
    }
    
    for i in range(1):
        payload = work_flow
        response = session.post(url=f'{input_url}/api_prompt?task_id=txt2img_test', json=payload)
        if response.status_code != 200:
            exit(f"kesalahan pengiriman permintaan:{response.content}, kode respons:{response.status_code}")
        else:
            print(f"kirim {i} berhasil, indeks adalah {response.content}")
    
    
    from eas_prediction import QueueClient
    
    sink_queue = QueueClient(f'{endpoint}', f'{service_name}')
    sink_queue.set_token(f'{token}')
    sink_queue.init()
    
    watcher = sink_queue.watch(0, 1, auto_commit=False)
    for x in watcher.run():
        if 'task_id' in x.tags:
            print('indeks {} task_id adalah {}'.format(x.index, x.tags['task_id']))
            print(f'indeks {x.index} data adalah {x.data}')
            sink_queue.commit(x.index)
    
  4. Setelah menjalankan kode, dapatkan nama file dari hasilnya.

    image

  5. Di ArtLab, arahkan kursor ke image di sudut kanan atas. Klik tautan di sebelah Storage untuk pergi ke Bucket OSS dan dapatkan jalur penyimpanan.

    image

  6. Gabungkan alamat gambar OSS dan akses. Format: Jalur Bucket OSS/output/nama file.

    Contohnya: 26****/data-115****************/output/ComfyUI_00000000_174427782695938_599ffc33-edea-4e64-bb60-28e834940f5c_.png

Edisi eksklusif

Edisi eksklusif ComfyUI mendukung panggilan API dan debugging online. Proses verifikasinya mirip dengan edisi API.

Prasyarat

Anda memiliki lingkungan Python.

Prosedur

  1. Masuk ke Konsol PAI ArtLab. Pilih Developer Center di panel navigasi sebelah kiri, lalu klik tab Custom Service. Setelah itu, klik Create Custom Service.

    Pilih ComfyUI (Exclusive edition) untuk opsi Service Edition.

  2. Ketika Service Status berubah menjadi Running, klik Call Information. Pada tab Internet Endpoint, dapatkan URL dan token.

    image

  3. Ganti konten yang sesuai dalam kode dengan informasi panggilan yang baru saja Anda dapatkan, lalu jalankan kode contoh.

    Kode Contoh

    import requests
    
    ##### Ganti parameter berikut berdasarkan informasi debug #####
    url = "http://ai4d_comfyuiapi_1u38************.115************.cn-shanghai.pai-eas.aliyuncs.com/"
    token = "Yjha************"
    ################################
    
    payload = {
        "prompt": {
            "3": {
                "inputs": {
                    "seed": 156680208700286,
                    "steps": 20,
                    "cfg": 8,
                    "sampler_name": "euler",
                    "scheduler": "normal",
                    "denoise": 1,
                    "model": [
                        "4",
                        0
                    ],
                    "positive": [
                        "6",
                        0
                    ],
                    "negative": [
                        "7",
                        0
                    ],
                    "latent_image": [
                        "5",
                        0
                    ]
                },
                "class_type": "KSampler",
                "_meta": {
                    "title": "K sampler"
                }
            },
            "4": {
                "inputs": {
                    "ckpt_name": "3dAnimationDiffusion_v10.safetensors"
                },
                "class_type": "CheckpointLoaderSimple",
                "_meta": {
                    "title": "Checkpoint loader (simple)"
                }
            },
            "5": {
                "inputs": {
                    "width": 512,
                    "height": 512,
                    "batch_size": 1
                },
                "class_type": "EmptyLatentImage",
                "_meta": {
                    "title": "Empty Latent"
                }
            },
            "6": {
                "inputs": {
                    "text": "beautiful scenery nature glass bottle landscape, , purple galaxy bottle,",
                    "clip": [
                        "4",
                        1
                    ]
                },
                "class_type": "CLIPTextEncode",
                "_meta": {
                    "title": "CLIP text encoder"
                }
            },
            "7": {
                "inputs": {
                    "text": "text, watermark",
                    "clip": [
                        "4",
                        1
                    ]
                },
                "class_type": "CLIPTextEncode",
                "_meta": {
                    "title": "CLIP text encoder"
                }
            },
            "8": {
                "inputs": {
                    "samples": [
                        "3",
                        0
                    ],
                    "vae": [
                        "4",
                        2
                    ]
                },
                "class_type": "VAEDecode",
                "_meta": {
                    "title": "VAE decoding"
                }
            },
            "9": {
                "inputs": {
                    "filename_prefix": "ComfyUI",
                    "images": [
                        "8",
                        0
                    ]
                },
                "class_type": "SaveImage",
                "_meta": {
                    "title": "Simpan gambar"
                }
            }
        }
    }
    
    # Mulai permintaan
    session = requests.session()
    session.headers.update({"Authorization": f"{token}"})
    prompt_url = url + "prompt"
    
    response = session.post(url=f'{prompt_url}', json=payload)
    if response.status_code != 200:
        raise Exception(response.content)
    
    data = response.json()
    prompt_id = data['prompt_id']
    print(f"dapatkan data: {data}, dapatkan prompt id: {prompt_id}")
    
    
    # Dapatkan hasil
    # Konstruksi URL permintaan
    history_url = f"{url}history/{prompt_id}"
    
    session = requests.session()
    session.headers.update({"Authorization": f"{token}"})
    
    response = session.get(url=f'{history_url}')
    
    if response.status_code != 200:
        raise Exception(response.content)
    
    data = response.json()
    print(data)
    
    # Parsing data JSON untuk mendapatkan informasi gambar untuk semua output
    for prompt_id, prompt_data in data.items():
        outputs = prompt_data.get("outputs", {})
        for node_id, node_data in outputs.items():
            images = node_data.get("images", [])
            for image in images:
                filename = image.get("filename")
                print(f"Nomor node: {node_id}, Nama file gambar: {filename}")
    
  4. Setelah menjalankan kode, dapatkan nama file dari hasilnya.

    image

  5. Di ArtLab, arahkan kursor ke image di sudut kanan atas. Klik tautan di sebelah Storage untuk pergi ke Bucket OSS dan dapatkan jalur penyimpanan.

    image

  6. Gabungkan alamat gambar OSS dan akses. Format: Jalur Bucket OSS/output/nama file.

    Contohnya: 26****/data-115****************/output/ComfyUI_00000000_174427782695938_599ffc33-edea-4e64-bb60-28e834940f5c_.png