全部产品
Search
文档中心

Alibaba Cloud Model Studio:Wan - referensi API teks-ke-gambar V2

更新时间:Nov 11, 2025

Model teks-ke-gambar Wan menghasilkan citra berdasarkan teks. Model ini mendukung berbagai gaya artistik dan efek fotografi realistis untuk memenuhi beragam kebutuhan kreatif.

Tautan cepat: Coba Wan secara daring

Catatan

Fitur-fitur di situs web resmi Wan mungkin berbeda dengan kemampuan yang didukung oleh API. Dokumen ini menjelaskan kemampuan API dan diperbarui segera setelah fitur baru dirilis.

Ikhtisar

Model

Deskripsi

Format citra keluaran

wan2.5-t2i-preview Direkomendasikan

Pratinjau Wan 2.5

Menghapus batas panjang sisi tunggal. Anda dapat memilih dimensi secara bebas dalam batasan luas total piksel dan rasio aspek.

Contohnya, mendukung resolusi 768×2700. Sebagai perbandingan, versi 2.2 dan sebelumnya memiliki batas maksimum 1400 piksel pada satu sisi.

Resolusi citra: Total piksel antara 768×768 hingga 1440×1440.

Rasio aspek citra: [1:4, 4:1]
Format citra: png

wan2.2-t2i-flash Direkomendasikan

Edisi Flash Wan 2.2

50% lebih cepat dibandingkan model 2.1.

Resolusi citra: Lebar dan tinggi masing-masing antara 512 hingga 1440 piksel.

Format citra: png

wan2.2-t2i-plus Direkomendasikan

Edisi Profesional Wan 2.2

Stabilitas dan tingkat keberhasilan lebih baik dibandingkan model 2.1.

wanx2.1-t2i-turbo

Edisi Turbo Wan 2.1

wanx2.1-t2i-plus

Edisi Profesional Wan 2.1

wanx2.0-t2i-turbo

Edisi Turbo Wan 2.0

Catatan

Sebelum melakukan panggilan, lihat Model untuk mengetahui model yang didukung di setiap wilayah.

Prasyarat

Sebelum melakukan panggilan, dapatkan Kunci API dan atur Kunci API sebagai variabel lingkungan. Untuk melakukan panggilan menggunakan SDK, instal SDK DashScope.

Penting

Wilayah Beijing dan Singapura memiliki Kunci API dan titik akhir permintaan yang terpisah. Jangan saling menukarnya. Panggilan lintas wilayah menyebabkan kegagalan otentikasi atau kesalahan layanan.

HTTP

Tugas teks-ke-gambar memerlukan waktu pemrosesan yang lama, biasanya 1 hingga 2 menit. Oleh karena itu, API menggunakan panggilan asinkron. Prosesnya melibatkan dua langkah inti: Buat tugas → Polling hasil.

Waktu aktual yang dibutuhkan bergantung pada jumlah tugas dalam antrian dan status layanan. Bersabarlah saat menunggu hasilnya.

Langkah 1: Buat tugas dan dapatkan ID tugas

Singapura: POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis

Beijing: POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis

Catatan
  • Setelah tugas dibuat, gunakan task_id yang dikembalikan untuk menanyakan hasilnya. task_id berlaku selama 24 jam. Jangan membuat tugas duplikat. Gunakan polling untuk mengambil hasilnya.

Parameter permintaan

Teks-ke-gambar

Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan dan konfigurasikan Kunci API
URL yang disediakan adalah untuk wilayah Singapura. Untuk model di wilayah Beijing, gunakan URL berikut: https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.5-t2i-preview",
    "input": {
        "prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display"
    },
    "parameters": {
        "size": "1024*1024",
        "n": 1
    }
}'    

Teks-ke-gambar (dengan prompt negatif)

Gunakan `negative_prompt` untuk mencegah munculnya "orang" dalam citra yang dihasilkan.

Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API
URL default adalah untuk wilayah Singapura. Untuk model di wilayah Beijing, gunakan URL berikut sebagai gantinya: https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.2-t2i-flash",
    "input": {
        "prompt": "Snowy ground, a small white chapel, aurora borealis, winter scene, soft light.",
        "negative_prompt": "people"
    },
    "parameters": {
        "size": "1024*1024",
        "n": 1
    }
}'
Header permintaan

Content-Type string (Wajib)

Tipe konten permintaan. Atur parameter ini menjadi application/json.

Authorization string (Wajib)

Kredensial otentikasi identitas untuk permintaan. API ini menggunakan Kunci API Model Studio untuk otentikasi identitas. Contoh: Bearer sk-xxxx.

X-DashScope-Async string (Wajib)

Parameter konfigurasi pemrosesan asinkron. Permintaan HTTP hanya mendukung pemrosesan asinkron. Anda harus mengatur parameter ini menjadi enable.

Penting

Jika header permintaan ini tidak ada, pesan kesalahan "current user api does not support synchronous calls" akan dikembalikan.

Isi badan permintaan

model string (Wajib)

Nama model. Contoh: `wan2.5-t2i-preview`.

Untuk informasi lebih lanjut tentang setiap model, lihat Model dan harga.

input object (Wajib)

Informasi masukan dasar, seperti prompt.

Properti

prompt string (Wajib)

Prompt positif. Menggambarkan elemen dan fitur visual yang Anda inginkan dalam citra yang dihasilkan.

Mendukung bahasa Tionghoa dan Inggris. Setiap karakter Tionghoa atau huruf dihitung sebagai satu karakter. Teks yang melebihi batas akan dipotong secara otomatis. Batas panjang bervariasi berdasarkan versi model:

  • wan2.5-t2i-preview: Maksimal 2000 karakter.

  • Model versi 2.2 dan sebelumnya: Maksimal 800 karakter.

Contoh: Seekor kucing oranye duduk, ekspresi bahagia, lincah dan imut, realistis dan akurat.

Untuk tips penggunaan prompt, lihat Panduan prompt teks-ke-gambar.

negative_prompt string (Opsional)

Prompt negatif. Menggambarkan konten yang tidak Anda inginkan dalam citra dan dapat digunakan untuk membatasi konten citra.

Mendukung bahasa Tionghoa dan Inggris. Panjangnya dibatasi hingga 500 karakter. Teks yang melebihi batas akan dipotong secara otomatis.

Contoh: resolusi rendah, kesalahan, kualitas terburuk, kualitas rendah, cacat bentuk, jari ekstra, proporsi buruk.

parameters object (Opsional)

Parameter pengeditan citra. Gunakan parameter ini untuk mengatur resolusi citra, mengaktifkan penulisan ulang prompt, menambahkan watermark, dan lainnya.

Properti

size string (Opsional)

Resolusi citra keluaran, dalam format lebar×tinggi. Nilai default dan batasannya bervariasi berdasarkan versi model:

  • wan2.5-t2i-preview: Default adalah 1280×1280. Jumlah total piksel harus antara 768×768 hingga 1440×1440, dan rasio aspek harus antara 1:4 hingga 4:1. Misalnya, 768×2700 adalah resolusi yang valid.

  • Model versi 2.2 dan sebelumnya: Default adalah 1024×1024. Lebar dan tinggi harus antara 512 hingga 1440 piksel, dengan resolusi maksimum 1440×1440. Misalnya, 768×2700 tidak didukung karena melebihi nilai maksimum untuk satu dimensi.

Contoh: `1280×1280`.

Resolusi yang direkomendasikan untuk rasio aspek umum

  • 1:1: 1280×1280 atau 1024×1024

  • 2:3: 800×1200

  • 3:2: 1200×800

  • 3:4: 960×1280

  • 4:3: 1280×960

  • 9:16: 720×1280

  • 16:9: 1280×720

  • 21:9: 1344×576

n integer (Opsional)

Penting

Nilai n secara langsung memengaruhi biaya. Biaya = Harga Satuan × Jumlah Citra. Sebelum melakukan panggilan, tinjau harga model.

Jumlah citra yang akan dihasilkan. Nilainya harus bilangan bulat antara 1 hingga 4. Nilai default adalah 4. Kami menyarankan mengatur nilai ini menjadi 1 saat pengujian untuk memverifikasi hasil dengan biaya rendah.

prompt_extend boolean (Opsional)

Menentukan apakah akan mengaktifkan penulisan ulang prompt. Jika diaktifkan, model bahasa besar akan menulis ulang prompt masukan. Ini dapat meningkatkan hasil secara signifikan untuk prompt pendek tetapi meningkatkan waktu pemrosesan.

  • true: Aktifkan penulisan ulang prompt.

  • false: Nonaktifkan penulisan ulang prompt.

Nilai default parameter ini bervariasi berdasarkan versi model:

  • wan2.5-t2i-preview: Default adalah false.

  • wan2.2 dan sebelumnya: Default adalah true.

Contoh: true.

watermark boolean (Opsional)

Menentukan apakah akan menambahkan watermark. Watermark ditempatkan di pojok kanan bawah citra, bertuliskan "AI Generated".

  • false: Nilai default. Tidak ada watermark yang ditambahkan.

  • true: Tambahkan watermark.

seed integer (Opsional)

Bilangan acak seed. Nilainya harus bilangan bulat antara [0, 2147483647].

Jika Anda tidak memberikan seed, algoritma akan menghasilkan seed secara otomatis. Jika Anda memberikan seed, algoritma akan menghasilkan seed untuk masing-masing dari n citra. Misalnya, jika `n` adalah 4, seed-nya akan menjadi seed, seed+1, seed+2, dan seed+3.

Untuk meningkatkan reproduktibilitas hasil, gunakan nilai seed tetap.

Perlu diperhatikan bahwa karena sifat probabilistik model, penggunaan seed yang sama tidak menjamin hasil identik setiap kali.

Parameter respons

Respons berhasil

Simpan task_id untuk menanyakan status dan hasil tugas.

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

Respons kesalahan

Pembuatan tugas gagal. Untuk informasi lebih lanjut, lihat Pesan kesalahan untuk menyelesaikan masalah.

{
    "code":"InvalidApiKey",
    "message":"Invalid API-key provided.",
    "request_id":"fb53c4ec-1c12-4fc4-a580-xxxxxx"
}

output object

Informasi keluaran tugas.

Properti

task_id string

ID tugas. Kueri berlaku selama 24 jam.

task_status string

Status tugas.

Enumerasi

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN

request_id string

ID permintaan unik. Anda dapat menggunakan ID ini untuk melacak dan memecahkan masalah.

code string

Kode kesalahan untuk permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

message string

Informasi detail tentang permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

Langkah 2: Tanyakan hasil berdasarkan ID tugas

Wilayah Singapura: GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}

Wilayah Beijing: GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

Catatan
  • Saran polling: Pembuatan citra memerlukan beberapa menit. Gunakan mekanisme polling dan atur interval kueri yang wajar, misalnya 10 detik, untuk mengambil hasilnya.

  • Transisi status tugas: PENDING (Dalam antrian) → RUNNING (Sedang diproses) → SUCCEEDED (Berhasil) atau FAILED (Gagal).

  • Tautan hasil: Setelah tugas berhasil, tautan citra dikembalikan. Tautan tersebut berlaku selama 24 jam. Setelah Anda mendapatkan tautan tersebut, segera unduh dan simpan citra ke layanan penyimpanan permanen, seperti Alibaba Cloud OSS.

Parameter permintaan

Tanyakan hasil tugas

Ganti 86ecf553-d340-4e21-xxxxxxxxx dengan ID tugas yang sebenarnya.

Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API.
Kode berikut menyediakan base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Header permintaan

Authorization string (Wajib)

Kredensial otentikasi identitas untuk permintaan. API ini menggunakan Kunci API Model Studio untuk otentikasi identitas. Contoh: Bearer sk-xxxx.

Parameter jalur URL

task_id string (Wajib)

ID tugas.

Parameter respons

Tugas berhasil

URL citra hanya disimpan selama 24 jam dan secara otomatis dihapus setelah periode ini. Anda harus segera menyimpan citra yang dihasilkan.

{
    "request_id": "f767d108-7d50-908b-a6d9-xxxxxx",
    "output": {
        "task_id": "d492bffd-10b5-4169-b639-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-01-08 16:03:59.840",
        "scheduled_time": "2025-01-08 16:03:59.863",
        "end_time": "2025-01-08 16:04:10.660",
        "results": [
            {
                "orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
                "actual_prompt": "A flower shop with exquisitely carved windows and a beautiful dark wooden door with a brass handle. A variety of fresh flowers, including roses, lilies, and sunflowers, are displayed in vibrant colors. The background is a warm indoor scene with the street visible through the window. High-definition realistic photography, medium shot composition.",
                "url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/1.png"
            }
        ],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Tugas gagal

Jika tugas gagal, task_status diatur menjadi FAILED, dan kode kesalahan serta pesan disediakan. Untuk informasi lebih lanjut, lihat Pesan kesalahan untuk menyelesaikan masalah.

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-xxxxxx",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "xxxxxx",
        "task_metrics": {
            "TOTAL": 4,
            "SUCCEEDED": 0,
            "FAILED": 4
        }
    }
}

Tugas sebagian gagal

Model dapat menghasilkan beberapa citra dalam satu tugas. Jika setidaknya satu citra berhasil dihasilkan, status tugas ditandai sebagai SUCCEEDED, dan URL citra yang sesuai dikembalikan. Untuk citra yang gagal dihasilkan, hasilnya berisi alasan kegagalannya. Selain itu, hanya hasil yang berhasil yang dihitung dalam statistik penggunaan. Untuk informasi lebih lanjut, lihat Pesan kesalahan untuk menyelesaikan masalah.

{
    "request_id": "85eaba38-0185-99d7-8d16-xxxxxx",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [
            {
                "url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/123/a1.png"
            },
            {
                "code": "InternalError.Timeout",
                "message": "An internal timeout error has occurred during execution, please try again later or contact service support."
            }
        ],
        "task_metrics": {
            "TOTAL": 2,
            "SUCCEEDED": 1,
            "FAILED": 1
        }
    },
    "usage": {
        "image_count": 1
    }
}

Kueri tugas kedaluwarsa

task_id berlaku selama 24 jam. Setelah periode ini, kueri gagal dan pesan kesalahan berikut dikembalikan.

{
    "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
    "output": {
        "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
        "task_status": "UNKNOWN"
    }
}

output object

Informasi keluaran tugas.

Properti

task_id string

ID tugas. Kueri berlaku selama 24 jam.

task_status string

Status tugas.

Enumerasi

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN

Transisi status selama polling:

  • PENDING (Dalam antrian) → RUNNING (Sedang diproses) → SUCCEEDED (Berhasil) atau FAILED (Gagal).

  • Status kueri pertama biasanya PENDING (Dalam antrian) atau RUNNING (Sedang diproses).

  • Jika status berubah menjadi SUCCEEDED, respons berisi URL citra yang dihasilkan.

  • Jika statusnya FAILED, periksa pesan kesalahan dan coba lagi.

submit_time string

Waktu saat tugas diajukan. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

scheduled_time string

Waktu saat tugas mulai berjalan. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

end_time string

Waktu saat tugas selesai. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

results array of object

Daftar hasil tugas, termasuk URL citra, prompt, dan pesan kesalahan untuk tugas yang sebagian gagal.

Struktur data

{
    "results": [
        {
            "orig_prompt": "",
            "actual_prompt": "",
            "url": ""
        },
        {
            "code": "",
            "message": ""
        }
    ]
}

Properti

orig_prompt string

Prompt masukan asli. Ini sesuai dengan parameter permintaan prompt.

actual_prompt string

Jika penulisan ulang prompt diaktifkan, parameter ini mengembalikan prompt yang dioptimalkan sebenarnya yang digunakan. Jika fitur ini dinonaktifkan, parameter ini tidak dikembalikan.

url string

URL citra. Ini hanya dikembalikan ketika `task_status` adalah `SUCCEEDED`. Tautan berlaku selama 24 jam. Anda dapat mengunduh citra dari URL ini.

code string

Kode kesalahan untuk permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

message string

Informasi detail tentang permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

task_metrics object

Statistik hasil tugas.

Properti

TOTAL integer

Jumlah total tugas.

SUCCEEDED integer

Jumlah tugas yang berhasil.

FAILED integer

Jumlah tugas yang gagal.

code string

Kode kesalahan untuk permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

message string

Informasi detail tentang permintaan yang gagal. Parameter ini tidak dikembalikan jika permintaan berhasil. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

usage object

Statistik keluaran. Hanya hasil yang berhasil yang dihitung.

Properti

image_count integer

Jumlah citra yang berhasil dihasilkan oleh model. Rumus penagihan: Biaya = Jumlah citra × Harga satuan.

request_id string

ID permintaan unik. Anda dapat menggunakan ID ini untuk melacak dan memecahkan masalah.

DashScope SDK

Nama parameter dalam SDK sebagian besar konsisten dengan API HTTP. Struktur parameter dienkapsulasi berdasarkan fitur-fitur masing-masing bahasa pemrograman.

Karena tugas teks-ke-gambar memerlukan waktu lama (biasanya 1 hingga 2 menit), SDK mengenkapsulasi proses panggilan asinkron HTTP dan mendukung metode panggilan sinkron maupun asinkron.

Waktu aktual yang dibutuhkan bergantung pada jumlah tugas dalam antrian dan status layanan. Bersabarlah saat menunggu hasilnya.

SDK Python

Catatan

Instal versi terbaru SDK Python DashScope. Jika tidak, kesalahan waktu proses dapat terjadi. Untuk informasi lebih lanjut, lihat Instal atau tingkatkan SDK.

Sinkron

Contoh permintaan
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os
import dashscope

# URL berikut untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

print('----sync call, please wait a moment----')
rsp = ImageSynthesis.call(api_key=api_key,
                          model="wan2.5-t2i-preview",
                          prompt="A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
                          negative_prompt="",
                          n=1,
                          size='1024*1024',
                          prompt_extend=True,
                          watermark=False,
                          seed=12345)
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
    # Simpan citra ke direktori saat ini
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('sync_call Failed, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))
Contoh respons
URL berlaku selama 24 jam. Unduh citra segera.
{
    "status_code": 200,
    "request_id": "9d634fda-5fe9-9968-a908-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "d35658e4-483f-453b-b8dc-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [{
            "url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/1.png",
            "orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
            "actual_prompt": "An exquisite flower shop with elegantly carved windows and a beautiful wooden door with a brass handle. A variety of colorful flowers, such as roses, tulips, and lilies, are on display. The background is a warm indoor scene with soft light, creating a peaceful and comfortable atmosphere. High-definition realistic photography, close-up center composition."
        }],
        "submit_time": "2025-01-08 19:36:01.521",
        "scheduled_time": "2025-01-08 19:36:01.542",
        "end_time": "2025-01-08 19:36:13.270",
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Asinkron

Contoh permintaan
from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os
import dashscope

# URL berikut untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

def async_call():
    print('----create task----')
    task_info = create_async_task()
    print('----wait task done then save image----')
    wait_async_task(task_info)


# Buat tugas asinkron
def create_async_task():
    rsp = ImageSynthesis.async_call(api_key=api_key,
                                    model="wan2.5-t2i-preview",
                                    prompt="A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
                                    negative_prompt="",
                                    n=1,
                                    size='1024*1024',
                                    prompt_extend=True,
                                    watermark=False,
                                    seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))
    return rsp


# Tunggu hingga tugas asinkron selesai
def wait_async_task(task):
    rsp = ImageSynthesis.wait(task=task, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output)
        # simpan file ke direktori saat ini
        for result in rsp.output.results:
            file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
            with open('./%s' % file_name, 'wb+') as f:
                f.write(requests.get(result.url).content)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


# Dapatkan informasi tentang tugas asinkron
def fetch_task_status(task):
    status = ImageSynthesis.fetch(task=task, api_key=api_key)
    print(status)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (status.status_code, status.code, status.message))


# Batalkan tugas asinkron. Hanya tugas dalam status PENDING yang dapat dibatalkan.
def cancel_task(task):
    rsp = ImageSynthesis.cancel(task=task, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.task_status)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    async_call()
Contoh respons

1. Contoh respons untuk membuat tugas

{
	"status_code": 200,
	"request_id": "31b04171-011c-96bd-ac00-f0383b669cc7",
	"code": "",
	"message": "",
	"output": {
		"task_id": "4f90cf14-a34e-4eae-xxxxxxxx",
		"task_status": "PENDING",
		"results": []
	},
	"usage": null
}

2. Contoh respons untuk menanyakan hasil tugas

URL berlaku selama 24 jam. Unduh citra segera.
{
    "status_code": 200,
    "request_id": "9d634fda-5fe9-9968-a908-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "d35658e4-483f-453b-b8dc-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [{
            "url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/xxx.png",
            "orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
            "actual_prompt": "An exquisite flower shop with elegantly carved windows and a beautiful wooden door with a brass handle. A variety of colorful flowers, such as roses, tulips, and lilies, are on display. The background is a warm indoor scene with soft light, creating a peaceful and comfortable atmosphere. High-definition realistic photography, close-up center composition."
        }],
        "submit_time": "2025-01-08 19:36:01.521",
        "scheduled_time": "2025-01-08 19:36:01.542",
        "end_time": "2025-01-08 19:36:13.270",
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

SDK Java

Catatan

Instal versi terbaru SDK Java DashScope. Jika tidak, kesalahan waktu proses dapat terjadi. Untuk informasi lebih lanjut, lihat Instal atau tingkatkan SDK.

Sinkron

Contoh permintaan
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisListResult;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.task.AsyncTaskListParam;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.HashMap;
import java.util.Map;

public class Main {

  static {
     // URL berikut untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
     Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";  
  }
  
  // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey="sk-xxx"
  // Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
  static String apiKey = System.getenv("DASHSCOPE_API_KEY");
  
  public static void basicCall() throws ApiException, NoApiKeyException {
        // Atur parameter
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.5-t2i-preview")
                        .prompt("A flower shop with exquisite windows, a beautiful wooden door, and flowers on display")
                        .n(1)
                        .size("1024*1024")
                        .negativePrompt("")
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            System.out.println("---sync call, please wait a moment----");
            result = imageSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
    }

    public static void listTask() throws ApiException, NoApiKeyException {
        ImageSynthesis is = new ImageSynthesis();
        AsyncTaskListParam param = AsyncTaskListParam.builder().build();
        param.setApiKey(apiKey);
        ImageSynthesisListResult result = is.list(param);
        System.out.println(result);
    }

    public static void fetchTask(String taskId) throws ApiException, NoApiKeyException {
        ImageSynthesis is = new ImageSynthesis();
        // Jika variabel lingkungan DASHSCOPE_API_KEY diatur, apiKey dapat bernilai null.
        ImageSynthesisResult result = is.fetch(taskId, apiKey);
        System.out.println(result.getOutput());
        System.out.println(result.getUsage());
    }

    public static void main(String[] args){
        try{
            basicCall();
            //listTask();
        }catch(ApiException|NoApiKeyException e){
            System.out.println(e.getMessage());
        }
    }
}
Contoh respons
URL berlaku selama 24 jam. Unduh citra segera.
{
    "request_id": "22f9c744-206c-9a78-899a-xxxxxx",
    "output": {
        "task_id": "4a0f8fc6-03fb-4c44-a13a-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [{
           "orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
            "actual_prompt": "A flower shop with exquisitely carved windows and a beautiful dark wooden door that is slightly ajar. A variety of fresh flowers, including roses, lilies, and sunflowers, are displayed in vibrant colors and are fragrant. The background is a warm indoor scene with soft light shining on the flowers through the window. High-definition realistic photography, medium shot composition.",
            "url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/1.png"
        }],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Asinkron

Contoh permintaan
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.HashMap;
import java.util.Map;

public class Main {
    static {
        // URL berikut untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey="sk-xxx"
    // Kunci API untuk wilayah Singapura dan Beijing berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");
    
    public void asyncCall() {
        System.out.println("---create task----");
        String taskId = this.createAsyncTask();
        System.out.println("---wait task done then return image url----");
        this.waitAsyncTask(taskId);
    }


    /**
     * Buat tugas asinkron
     * @return taskId
     */
    public String createAsyncTask() {
        // Atur parameter
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        ImageSynthesisParam param =
                ImageSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.5-t2i-preview")
                        .prompt("A flower shop with exquisite windows, a beautiful wooden door, and flowers on display")
                        .n(1)
                        .size("1024*1024")
                        .negativePrompt("")
                        .parameters(parameters)
                        .build();

        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            result = imageSynthesis.asyncCall(param);
        } catch (Exception e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
        String taskId = result.getOutput().getTaskId();
        System.out.println("taskId=" + taskId);
        return taskId;
    }


    /**
     * Tunggu hingga tugas asinkron selesai
     * @param taskId ID tugas
     * */
    public void waitAsyncTask(String taskId) {
        ImageSynthesis imageSynthesis = new ImageSynthesis();
        ImageSynthesisResult result = null;
        try {
            // Jika Anda telah mengonfigurasi variabel lingkungan, Anda dapat mengatur apiKey menjadi null di sini.
            result = imageSynthesis.wait(taskId, apiKey);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
        System.out.println(JsonUtils.toJson(result.getOutput()));
    }


    public static void main(String[] args){
        Main main = new Main();
        main.asyncCall();
    }

}
Contoh respons

1. Contoh respons untuk membuat tugas

{
	"request_id": "5dbf9dc5-4f4c-9605-85ea-542f97709ba8",
	"output": {
		"task_id": "7277e20e-aa01-4709-xxxxxxxx",
		"task_status": "PENDING"
	}
}

2. Contoh respons untuk menanyakan hasil tugas

{
    "request_id": "22f9c744-206c-9a78-899a-xxxxxx",
    "output": {
        "task_id": "4a0f8fc6-03fb-4c44-a13a-xxxxxx",
        "task_status": "SUCCEEDED",
        "results": [{
           "orig_prompt": "A flower shop with exquisite windows, a beautiful wooden door, and flowers on display",
            "actual_prompt": "A flower shop with exquisitely carved windows and a beautiful dark wooden door that is slightly ajar. A variety of fresh flowers, including roses, lilies, and sunflowers, are displayed in vibrant colors and are fragrant. The background is a warm indoor scene with soft light shining on the flowers through the window. High-definition realistic photography, medium shot composition.",
            "url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/1.png"
        }],
        "task_metrics": {
            "TOTAL": 1,
            "SUCCEEDED": 1,
            "FAILED": 0
        }
    },
    "usage": {
        "image_count": 1
    }
}

Batasan

  • Validitas data: `task_id` dan URL citra hanya disimpan selama 24 jam. Setelah periode ini, data tersebut tidak dapat ditanyakan atau diunduh.

  • Moderasi konten: Prompt masukan dan citra keluaran keduanya dikenai moderasi konten. Permintaan dengan konten yang tidak sesuai menghasilkan kesalahan "IPInfringementSuspect" atau "DataInspectionFailed". Untuk informasi lebih lanjut, lihat Pesan kesalahan.

  • Konfigurasi akses jaringan: Tautan citra disimpan di Alibaba Cloud OSS. Jika sistem bisnis Anda tidak dapat mengakses tautan OSS eksternal karena kebijakan keamanan, tambahkan nama domain OSS berikut ke daftar putih akses jaringan Anda.

    # Daftar nama domain OSS
    dashscope-result-bj.oss-cn-beijing.aliyuncs.com
    dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com
    dashscope-result-sh.oss-cn-shanghai.aliyuncs.com
    dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com
    dashscope-result-zjk.oss-cn-zhangjiakou.aliyuncs.com
    dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com
    dashscope-result-hy.oss-cn-heyuan.aliyuncs.com
    dashscope-result-cd.oss-cn-chengdu.aliyuncs.com
    dashscope-result-gz.oss-cn-guangzhou.aliyuncs.com
    dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com

Penagihan dan pembatasan laju

  • Untuk informasi tentang kuota gratis dan harga satuan model, lihat Model.

  • Untuk informasi lebih lanjut tentang pembatasan laju model, lihat Wan.

  • Deskripsi penagihan:

    • Penagihan didasarkan pada jumlah citra yang berhasil dihasilkan. Anda hanya dikenai biaya ketika API hasil kueri mengembalikan task_status SUCCEEDED dan citra berhasil dihasilkan.

    • Panggilan model yang gagal atau kesalahan pemrosesan tidak dikenai biaya apa pun dan tidak mengurangi kuota gratis Anda.

Kode kesalahan

Jika panggilan gagal, lihat Pesan kesalahan untuk pemecahan masalah.

FAQ

T: Bagaimana cara melihat jumlah panggilan model?

J: Satu jam setelah panggilan model selesai, Anda dapat membuka halaman Observasi Model (Singapura) atau Observasi Model (Beijing) untuk melihat metrik seperti jumlah panggilan dan tingkat keberhasilan. Untuk informasi lebih lanjut, lihat Bagaimana cara melihat catatan panggilan model?