All Products
Search
Document Center

Platform For AI:Gunakan Pusat Developer PAI ArtLab

Last Updated:Jun 22, 2026

Topik ini menjelaskan cara menggunakan Pusat Developer untuk memvalidasi integrasi API ComfyUI Anda.

Masuk ke Konsol PAI ArtLab.

Validasi integrasi API ComfyUI

Edisi API

Edisi API ComfyUI memungkinkan Anda melakukan panggilan API di beberapa instans ComfyUI. Edisi ini dirancang untuk integrasi pengembang dan tidak memiliki antarmuka pengguna grafis berbasis web. Karena ComfyUI merupakan layanan stateful, Anda harus menggunakan layanan antrian asinkron EAS untuk memanggil layanan ComfyUI ketika beberapa instans dideploy.

Prasyarat

Lingkungan Python telah disiapkan dan kit pengembangan perangkat lunak (SDK) EAS untuk antrian asinkron telah diinstal: pip install eas_prediction

Prosedur

  1. Masuk ke Konsol PAI ArtLab. Pada halaman Developer Center, klik tab Custom Services, lalu klik Create Custom Service.

    Untuk Service Version, pilih ComfyUI (API Edition).

  2. Saat Service Status berubah menjadi Running, klik Call Information. Pada tab Reponse URL (Internet), peroleh URL permintaan, token, Endpoint, dan ID layanan.

    Bagian Nama domain dari URL, seperti cn-shanghai.pai-eas.aliyuncs.com, adalah Endpoint. Segmen terakhir dari path URL, seperti ai4d_comfyuiapi_, adalah ID layanan. Klik tombol salin di samping URL untuk menyalin alamat tersebut. Token disembunyikan dengan tanda bintang secara default. Klik ikon mata untuk melihat token.

  3. Ganti konten yang sesuai dalam kode dengan informasi yang telah Anda peroleh, lalu jalankan kodenya.

    Contoh kode

    import requests
    ##### Ganti parameter berikut berdasarkan informasi endpoint Anda. #####
    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": "Save Image"
            }
        }
    }
    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"send request error:{response.content}, response code:{response.status_code}")
        else:
            print(f"send {i} success, index is {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('index {} task_id is {}'.format(x.index, x.tags['task_id']))
            print(f'index {x.index} data is {x.data}')
            sink_queue.commit(x.index)
    
  4. Setelah kode dijalankan, peroleh nama file dari output.

    send 0 success,index is b'1'
    index 1 task_id is txt2img_test
    index 1 data is b'{"status_code":200},{"type":"executed","data":{"node":"9","display_node":"9","output":{"images":[{"filename":"ComfyUI_00000000_174427782695938_599ffc33-edea-4e64-bb60-28e834940f5c_..png"}]}}}'
  5. Pada halaman PAI ArtLab, arahkan kursor ke ikon image di pojok kanan atas dan klik Storage untuk mengakses Bucket OSS dan memperoleh path penyimpanan.

    Dalam daftar file OSS, nama folder, seperti 26*/, dan subfoldernya data-115*/, merupakan path penyimpanan.

  6. Buat dan akses URL gambar OSS. Formatnya sebagai berikut: path Bucket OSS/output/nama file

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

Edisi Khusus

Edisi Dedicated ComfyUI mendukung panggilan API maupun debugging berbasis web. Untuk prosedur pengujian dan validasi, lihat bagian Edisi API.

Prasyarat

Lingkungan Python telah disiapkan.

Prosedur

  1. Masuk ke Konsol PAI ArtLab. Pada halaman Developer Center, klik tab Custom Services, lalu klik Create Custom Service.

    Untuk Service Version, pilih ComfyUI (Dedicated Edition).

  2. Saat Service Status berubah menjadi Running, klik Call Information. Pada tab Public network address call, peroleh URL permintaan dan token.

    Kotak dialog Synchronous Call Information menunjukkan bahwa hanya layanan Edisi Standar yang mendukung panggilan sinkron.

  3. Ganti konten yang sesuai dalam kode dengan informasi yang telah Anda peroleh, lalu jalankan kodenya.

    Contoh kode

    import requests
    ##### Ganti parameter berikut berdasarkan informasi endpoint Anda. #####
    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": "Save Image"
                }
            }
        }
    }
    # Kirim 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"Get data: {data}, get prompt ID: {prompt_id}")
    # Peroleh hasilnya
    # Buat 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)
    # Uraikan data berformat JSON untuk memperoleh informasi gambar dari 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"Node ID: {node_id}, Image file name: {filename}")
                    
  4. Setelah kode dijalankan, peroleh nama file dari output.

    Get data:{'prompt_id':'d086402a-7454-43c5-a753-b338e4870be2','number':6,'node_errors':{}}get prompt ID:d086402a-7454-43c5-a753-b338e4870be2
    {'d086402a-7454-43c5-a753-b338e4870be2':{'prompt':[6,'d086402a-7454-43c5-a753-b338e4870be2',{'3':{'inputs':{'seed':156680208700286,'steps':20,'cfg':8.0,'sampler_name':'eu1er','schedu1er':'normal',...}}}]}}
    Node ID: 9, Image file name: ComfyUI_00000000_174427782695938_599ffc33-edea-4e64-bb60-28e834940f5c_.png
  5. Pada halaman PAI ArtLab, arahkan kursor ke ikon image di pojok kanan atas dan klik Storage untuk mengakses Bucket OSS dan memperoleh path penyimpanan.

  6. Buat dan akses URL gambar OSS. Formatnya sebagai berikut: path Bucket OSS/output/nama file

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