Alibaba Cloud Model Studio:Referensi API DashScope
Last Updated:Sep 02, 2026
Anda dapat memanggil model Qwen menggunakan API DashScope. Topik ini menjelaskan parameter input dan output serta menyediakan contoh pemanggilan.
Singapura
Alamat permintaan HTTP:
Model teks biasa, seperti qwen-plus: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
Model multimodal, seperti qwen3.7-plus atau qwen3-vl-plus: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
base_url untuk konfigurasi pemanggilan SDK adalah sebagai berikut:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1");
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1");
Model teks biasa, seperti qwen-plus: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
Model multimodal, seperti qwen3.7-plus atau qwen3-vl-plus: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
base_url untuk konfigurasi pemanggilan SDK adalah sebagai berikut:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1");
Model teks biasa, seperti qwen-plus: POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
Model multimodal, seperti qwen3.7-plus atau qwen3-vl-plus: POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
base_url untuk konfigurasi pemanggilan SDK adalah sebagai berikut:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1");
Model teks biasa, seperti qwen-plus: POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
Model multimodal, seperti qwen3.7-plus atau qwen3-vl-plus: POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
base_url untuk konfigurasi pemanggilan SDK adalah sebagai berikut:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1");
Model teks biasa, seperti qwen-plus: POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation
Model multimodal, seperti qwen3.7-plus atau qwen3-vl-plus: POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
base_url untuk konfigurasi pemanggilan SDK adalah sebagai berikut:
import com.alibaba.dashscope.protocol.Protocol;
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1");
Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Anda harus mendapatkan Kunci API dan mengonfigurasinya sebagai variabel lingkungan. Jika Anda menggunakan SDK DashScope untuk melakukan pemanggilan, Anda juga harus menginstal SDK DashScope.
PentingAlibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah Tiongkok (Beijing), Singapura, dan Tiongkok (Hong Kong). Domain khusus baru ini memberikan kinerja unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru:
Tiongkok (Beijing): dari https://dashscope.aliyuncs.com ke https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
Singapura: dari https://dashscope-intl.aliyuncs.com ke https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Tiongkok (Hong Kong): dari https://cn-hongkong.dashscope.aliyuncs.com ke https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com
{WorkspaceId} adalah ID ruang kerja Anda, yang dapat ditemukan pada halaman Workspace Details di konsol Alibaba Cloud Model Studio. Domain yang ada tetap berfungsi penuh.
Isi permintaan
modelstring(Wajib)
Nama model yang akan digunakan.
Model yang didukung meliputi model bahasa besar Qwen (edisi komersial dan sumber terbuka), Qwen-VL, Qwen-Coder, model matematika, DeepSeek, Kimi, GLM, dan MiniMax.
Untuk nama model spesifik dan detail penagihan, lihatMemilih model.
messagesarray(Wajib)
Konteks yang diteruskan ke model bahasa besar (LLM), diatur dalam urutan percakapan.
Saat Anda memanggil melalui HTTP, letakkan messages dalam objek input.
Jenis pesan
Pesan Sistemobjek (Opsional)
Pesan sistem yang digunakan untuk mengatur peran, nada, tujuan tugas, atau batasan untuk LLM. Biasanya ditempatkan pertama dalam array messages.
Kami tidak merekomendasikan Anda mengatur pesan sistem untuk model QwQ. Pesan sistem tidak berlaku untuk model QVQ.
Properti
contentstring(Wajib)
Konten pesan.
rolestring(Wajib)
Peran untuk pesan sistem. Nilainya tetap system.
Pesan Penggunaobjek(Wajib)
Pesan pengguna yang digunakan untuk meneruskan pertanyaan, instruksi, atau konteks ke model.
Properti
contentstring atau array(Wajib)
Konten pesan. Jika input hanya berupa teks, parameter ini adalah string. Jika input mencakup data multimodal, seperti gambar, atau jika caching eksplisit diaktifkan, parameter ini adalah array.
Properti
textstring(Wajib)
Teks input.
imagestring (Opsional)
File gambar untuk pemahaman gambar. Anda dapat meneruskan gambar dengan salah satu dari tiga cara berikut:
URL publik: Tautan gambar yang dapat diakses publik.
Encoding Base64 gambar, dalam format data:image/<format>;base64,<data>.
Ini menginformasikan model tentang interval waktu antara frame yang berdekatan, yang membantu model memahami dinamika temporal video dengan lebih baik. Ini berlaku untuk input file video maupun daftar gambar. Fitur ini cocok untuk skenario seperti lokalisasi waktu peristiwa atau meringkas konten berdasarkan segmen.
Ini didukung oleh Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL, Qwen2.5-VL, dan model QVQ.
Nilai fps yang lebih besar cocok untuk skenario gerakan cepat, seperti acara olahraga dan film aksi. Nilai fps yang lebih kecil cocok untuk video panjang atau skenario dengan konten yang relatif statis.
Contoh
Meneruskan daftar gambar: {"video":["https://xx1.jpg",...,"https://xxn.jpg"],"fps":2}
Jumlah maksimum frame yang dapat diekstraksi dari video. Jika jumlah frame yang dihitung berdasarkan fps melebihi max_frames, sistem secara otomatis menyesuaikan untuk mengekstraksi frame secara seragam dalam batas max_frames. Ini memastikan bahwa jumlah total frame tidak melebihi batas.
Rentang nilai
seri qwen3.7, seri qwen3.6, seri qwen3.5: Nilai maksimum dan default adalah 8000.
seri qwen3-vl-plus, seri qwen3-vl-flash, qwen3-vl-235b-a22b-thinking, qwen3-vl-235b-a22b-instruct: Nilai maksimum dan default adalah 2000.
qwen-vl-max, qwen-vl-max-0813, qwen-vl-plus, qwen-vl-plus-0815: Nilai maksimum dan default adalah 512.
Saat Anda memanggil dengan API yang kompatibel OpenAI, Anda tidak dapat menyesuaikan parameter max_frames. API secara otomatis menggunakan nilai default untuk setiap model.
min_pixelsinteger(Opsional)
Mengatur ambang batas piksel minimum untuk input gambar atau frame video. Jika total piksel gambar input atau frame video kurang dari min_pixels, gambar atau frame tersebut diperbesar hingga total pikselnya lebih tinggi dari min_pixels.
Rentang nilai
Input gambar:
Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL: Nilai default dan minimum adalah 65536.
qwen-vl-max, qwen-vl-max-0813, qwen-vl-plus, qwen-vl-plus-0815: Nilai default dan minimum adalah 4096.
Model qwen-vl-plus lainnya, model qwen-vl-max lainnya, seri sumber terbuka Qwen2.5-VL, dan model seri QVQ: Nilai default dan minimum adalah 3136.
Input file video atau daftar gambar:
Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL (edisi komersial dan sumber terbuka), qwen-vl-max, qwen-vl-max-0813, qwen-vl-plus, qwen-vl-plus-0815: Nilai default adalah 65536, dan nilai minimum adalah 4096.
Model qwen-vl-plus lainnya, model qwen-vl-max lainnya, seri sumber terbuka Qwen2.5-VL, dan model seri QVQ: Nilai default adalah 50176, dan nilai minimum adalah 3136.
Input daftar gambar: {"type": "video","video": ["https://xx1.jpg",...,"https://xxn.jpg"],"min_pixels": 65536}
max_pixelsinteger(Opsional)
Mengatur ambang batas piksel maksimum untuk input gambar atau frame video. Jika total piksel gambar input atau video berada dalam rentang [min_pixels, max_pixels], model mengenali gambar aslinya. Jika total piksel gambar input lebih besar dari max_pixels, gambar tersebut diperkecil hingga total pikselnya di bawah max_pixels.
Rentang nilai
Input gambar:
Nilai max_pixels tergantung pada apakah parameter vl_high_resolution_images diaktifkan.
Jika vl_high_resolution_images adalah False:
Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL: Nilai default adalah 2621440, dan nilai maksimum adalah 16777216.
qwen-vl-max, qwen-vl-max-0813, qwen-vl-plus, qwen-vl-plus-0815: Nilai default adalah 1310720, dan nilai maksimum adalah 16777216.
Model qwen-vl-plus lainnya, model qwen-vl-max lainnya, seri sumber terbuka Qwen2.5-VL, dan model seri QVQ: Nilai default adalah 1003520, dan nilai maksimum adalah 12845056.
Jika vl_high_resolution_images adalah True:
Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL, qwen-vl-max, qwen-vl-max-0813, qwen-vl-plus, qwen-vl-plus-0815: max_pixels tidak berlaku. Piksel maksimum untuk gambar input ditetapkan pada 16777216.
Model qwen-vl-plus lainnya, model qwen-vl-max lainnya, seri sumber terbuka Qwen2.5-VL, dan model seri QVQ: max_pixels tidak berlaku. Piksel maksimum untuk gambar input ditetapkan pada 12845056.
Input file video atau daftar gambar:
seri qwen3.7, seri qwen3.6, seri qwen3.5, seri qwen3-vl-plus, seri qwen3-vl-flash, qwen3-vl-235b-a22b-thinking, qwen3-vl-235b-a22b-instruct: Nilai default adalah 655360, dan nilai maksimum adalah 2048000.
Model sumber terbuka Qwen3-VL lainnya, qwen-vl-max, qwen-vl-max-0813, qwen-vl-plus, qwen-vl-plus-0815: Nilai default adalah 655360, dan nilai maksimum adalah 786432.
Model qwen-vl-plus lainnya, model qwen-vl-max lainnya, seri sumber terbuka Qwen2.5-VL, dan model seri QVQ: Nilai default adalah 501760, dan nilai maksimum adalah 602112.
Input daftar gambar: {"type": "video","video": ["https://xx1.jpg",...,"https://xxn.jpg"],"max_pixels": 655360}
total_pixelsinteger(Opsional)
Membatasi total piksel semua frame yang diekstraksi dari video (piksel satu frame × jumlah total frame). Jika total piksel video melebihi batas ini, sistem memperkecil frame video tetapi tetap memastikan bahwa nilai piksel satu frame berada dalam rentang [min_pixels, max_pixels]. Ini berlaku untuk model Qwen-VL dan QVQ.
Untuk video panjang dengan banyak frame yang diekstraksi, Anda dapat menurunkan nilai ini secara tepat untuk mengurangi konsumsi token dan waktu pemrosesan, tetapi ini dapat menyebabkan hilangnya detail gambar.
Rentang nilai
seri qwen3.7, seri qwen3.6, seri qwen3.5: Nilai default dan maksimum adalah 819200000. Nilai ini sesuai dengan token gambar 800000 (1 token gambar per 32×32 piksel).
seri qwen3-vl-plus, seri qwen3-vl-flash, qwen3-vl-235b-a22b-thinking, qwen3-vl-235b-a22b-instruct: Nilai default dan maksimum adalah 134217728. Nilai ini sesuai dengan token gambar 131072 (1 token gambar per 32×32 piksel).
Model sumber terbuka Qwen3-VL lainnya, qwen-vl-max, qwen-vl-max-0813, qwen-vl-plus, qwen-vl-plus-0815: Nilai default dan minimum adalah 67108864. Nilai ini sesuai dengan token gambar 65536 (1 token gambar per 32×32 piksel).
Model qwen-vl-plus lainnya, model qwen-vl-max lainnya, seri sumber terbuka Qwen2.5-VL, dan model seri QVQ: Nilai default dan minimum adalah 51380224. Nilai ini sesuai dengan token gambar 65536 (1 token gambar per 28×28 piksel).
Input daftar gambar: {"type": "video","video": ["https://xx1.jpg",...,"https://xxn.jpg"],"total_pixels": 134217728}
cache_controlobjek(Opsional)
Ini hanya didukung oleh model yang mendukung caching eksplisit. Ini digunakan untuk mengaktifkan caching eksplisit.
Properti
typestring(Wajib)
Nilainya harus ephemeral.
rolestring(Wajib)
Peran untuk pesan pengguna. Nilainya harus user.
Pesan Asisten objek(Opsional)
Balasan model terhadap pesan pengguna.
Properti
contentstring(Opsional)
Konten pesan. Ini opsional hanya jika parameter tool_calls ditentukan dalam pesan asisten.
rolestring(Wajib)
Nilainya harus assistant.
partialboolean(Opsional)
Menentukan apakah akan mengaktifkan mode sebagian. Untuk informasi selengkapnya dan daftar model yang didukung, lihat Mode sebagian.
tool_callsarray(Opsional)
Informasi alat dan parameter input yang dikembalikan setelah Anda memulai pemanggilan fungsi. Ini berisi satu atau beberapa objek. Ini diperoleh dari bidang tool_calls dari respons model sebelumnya.
Properti
idstring
ID respons alat.
typestring
Jenis alat. Saat ini, hanya function yang didukung.
functionobjek
Informasi alat dan parameter input.
Properti
namestring
Nama alat.
argumentsstring
Informasi parameter input, dalam format string JSON.
indexinteger
Indeks informasi alat saat ini dalam array tool_calls.
Pesan Alatobjek (Opsional)
Informasi keluaran alat.
Properti
contentstring(Wajib)
Konten keluaran fungsi alat. Harus dalam format string.
rolestring(Wajib)
Nilainya harus tool.
tool_call_idstring(Opsional)
ID yang dikembalikan setelah Anda memulai pemanggilan fungsi. Anda dapat mengambilnya menggunakan response.output.choices[0].message.tool_calls[$index]["id"]. Ini digunakan untuk menandai alat yang sesuai dengan pesan alat.
suhufloat(Opsional)
Suhu pengambilan sampel, yang mengontrol keragaman teks yang dihasilkan oleh model.
Suhu yang lebih tinggi menghasilkan teks yang lebih beragam, dan suhu yang lebih rendah menghasilkan teks yang lebih deterministik.
Rentang nilai: [0, 2)
Saat Anda memanggil melalui HTTP, letakkan suhu dalam objek parameters.
Kami tidak merekomendasikan Anda mengubah nilai suhu default untuk model QVQ.
top_pfloat(Opsional)
Ambang batas probabilitas untuk pengambilan sampel inti, yang mengontrol keragaman teks yang dihasilkan oleh model.
Nilai top_p yang lebih tinggi menghasilkan teks yang lebih beragam, dan nilai top_p yang lebih rendah menghasilkan teks yang lebih deterministik.
Rentang nilai: (0, 1,0].
Dalam SDK Java, parameter ini adalah topP. Saat Anda memanggil melalui HTTP, letakkan top_p dalam objek parameters.
Kami tidak merekomendasikan Anda mengubah nilai top_p default untuk model QVQ.
top_kinteger(Opsional)
Ukuran set kandidat untuk pengambilan sampel selama generasi. Misalnya, jika Anda mengatur parameter ini ke 50, hanya 50 token dengan skor tertinggi dalam satu generasi yang digunakan untuk membentuk set kandidat untuk pengambilan sampel acak. Nilai yang lebih besar meningkatkan keacakan, dan nilai yang lebih kecil meningkatkan determinisme. Nilai None atau nilai lebih besar dari 100 menunjukkan bahwa strategi top_k tidak diaktifkan dan hanya strategi top_p yang berlaku.
Nilai harus lebih besar dari atau sama dengan 0.
Nilai top_k default
Seri QVQ: 10
Seri QwQ: 40
model sebelum seri qwen-vl-plus lainnya, : 1
Semua model lainnya: 20
Seri GLM (disediakan oleh Alibaba Cloud): 20
Seri DeepSeek, Kimi, dan MiniMax tidak mendukung parameter top_k.
Dalam SDK Java, parameter ini adalah topK. Saat Anda memanggil melalui HTTP, letakkan top_k dalam objek parameters.
Kami tidak merekomendasikan Anda mengubah nilai top_k default untuk model QVQ.
enable_thinkingboolean (Opsional)
Menentukan apakah akan mengaktifkan mode pemikiran untuk model pemikiran hibrida. Ini berlaku untuk model Qwen3.7, Qwen3.6, Qwen3.5, Qwen3, dan Qwen3-VL, bersama dengan seri DeepSeek-V4-Pro/V4-Flash, seri DeepSeek-V3.2/V3.2-exp/V3.1, seri Kimi-K2.6/K2.5, dan seri GLM. Seri DeepSeek-V4 memiliki mode pemikiran yang diaktifkan secara default. Anda dapat menyesuaikan upaya inferensi dengan parameter reasoning_effort.
Nilai valid:
true: Fitur diaktifkan.
Jika diaktifkan, konten pemikiran dikembalikan dalam bidang reasoning_content.
Dalam SDK Java, parameter ini adalah enableThinking. Saat Anda memanggil melalui HTTP, letakkan enable_thinking dalam objek parameters.
preserve_thinkingboolean (Opsional) Nilai default adalah false. (Nilai default untuk qwen3.8-max/qwen3.8-flash:true)
Menentukan apakah akan menambahkan reasoning_content dari pesan asisten dalam riwayat percakapan ke input model. Ini cocok untuk skenario di mana model perlu merujuk ke proses pemikiran historis.
Saat ini didukung oleh qwen3.7-max, qwen3.7-max-2026-05-20 dan snapshot berikutnya, qwen3.6-max-preview, qwen3.7-plus, qwen3.7-plus-2026-05-26, qwen3.6-plus, qwen3.6-plus-2026-04-02, qwen3.7-flash, qwen3.7-flash-2026-07-15, qwen3.6-flash, qwen3.6-flash-2026-04-16, qwen3.8-max (diaktifkan secara default), qwen3.8-flash (diaktifkan secara default), kimi-k2.6 (dideploy di Alibaba Cloud Model Studio), kimi-k2.7-code (dideploy di Alibaba Cloud Model Studio, diaktifkan secara default), kimi/kimi-k2.7-code-highspeed (disediakan oleh Moonshot AI, diaktifkan secara default), dan kimi/kimi-k2.7-code (disediakan oleh Moonshot AI, diaktifkan secara default).
Penting (qwen3.8-max/qwen3.8-flash): Saat menggunakan qwen3.8-max/qwen3.8-flash, preserve_thinking defaultnya true. Anda harus mengirim kembali semua reasoning_content historis dalam bidang reasoning_content. JANGAN menggabungkan reasoning_content ke dalam bidang content. Melakukan hal tersebut dapat menurunkan kinerja model.
Jika pesan historis tidak mengandung reasoning_content, mengaktifkan parameter ini tidak menyebabkan kesalahan.
Saat diaktifkan, reasoning_content dari percakapan historis termasuk dalam hitungan token input dan ditagih.
Saat Anda memanggil melalui HTTP, letakkan preserve_thinking dalam objek parameters. SDK Java tidak didukung.
thinking_budgetinteger (Opsional)
Panjang maksimum proses pemikiran. Ini berlaku untuk model Qwen3.8, Qwen3.7, Qwen3.6, Qwen3.5, Qwen3-VL, Qwen3, GLM dan Kimi. Untuk informasi selengkapnya, lihat Batasi panjang pemikiran.
Nilai default adalah panjang rantai-pikiran maksimum untuk model. Untuk informasi selengkapnya, lihat Memilih model.
Dalam SDK Java, parameter ini adalah thinkingBudget. Saat Anda memanggil melalui HTTP, letakkan thinking_budget dalam objek parameters.
Nilai default adalah panjang rantai-pikiran maksimum untuk model.
reasoning_effortstring (Opsional)
Mengontrol intensitas inferensi model. Nilai valid dan nilai default bervariasi berdasarkan model.
Seri DeepSeek-V4 dan GLM (Nilai default: high)
Nilai valid: high (inferensi intensitas tinggi) dan max (inferensi intensitas maksimum). low dan medium dipetakan ke high, dan xhigh dipetakan ke max.
Ini berlaku untuk glm-5.2, glm-5.1, glm-5, deepseek-v4-pro, dan deepseek-v4-flash.
qwen3.8-max/qwen3.8-flash: Nilai default:xhigh
Nilai valid:
xhigh (default): Inferensi intensitas maksimum
medium: Inferensi standar
low: Inferensi intensitas rendah
Pemetaan nilai standar OpenAI: max dipetakan ke xhigh, high dipetakan ke xhigh, minimal dipetakan ke low, dan none dipetakan ke enable_thinking=False.
Mengatur nilai selain nilai valid dan nilai yang dipetakan di atas akan menyebabkan kesalahan.
Untuk seri qwen3.8, reasoning_effort dan thinking_budget tidak dapat diatur secara bersamaan. Mengatur keduanya akan menyebabkan kesalahan. Namun, keduanya mendukung konversi timbal balik:
Saat thinking_budget tidak diatur, level reasoning_effort secara otomatis dipetakan ke thinking_budget: low sesuai dengan 4096, medium sesuai dengan 16384, dan xhigh sesuai dengan 262144.
Saat reasoning_effort tidak diatur, thinking_budget secara otomatis dipetakan kembali ke reasoning_effort: 0–4096 sesuai dengan low, 4097–16384 sesuai dengan medium, dan 16385–262144 sesuai dengan xhigh.
Saat keduanya tidak diatur, thinking_budget default (131072) dan reasoning_effort default (xhigh) digunakan.
Saat Anda memanggil melalui HTTP, letakkan reasoning_effort dalam objek parameters.
tool_streamboolean (Opsional) Nilai default adalah false.
Parameter ini hanya memengaruhi perilaku keluaran streaming parameter alat kompleks dan hanya berlaku dalam pemanggilan streaming. Parameter alat sederhana, di mana semua jenis parameter adalah string, dapat dialirkan selama pemanggilan streaming diaktifkan. tool_stream tidak berpengaruh pada mereka. Alat kompleks adalah alat di mana beberapa jenis parameter dalam definisi alat adalah array atau objek. Saat ini, hanya seri Qwen dan GLM yang mendukung ini.
Daftar dukungan seri Qwen:
seri qwen-max: Modalitas teks dari seri qwen3.8-max dan qwen3.7-max
seri qwen-plus: Modalitas teks dari seri qwen3.7-plus dan qwen3.6-plus, dan semua modalitas dari seri qwen3.5-plus
seri qwen-flash: Semua modalitas dari seri qwen3.8-flash, qwen3.7-flash, qwen3.6-flash dan qwen3.5-flash
Referensi penggunaan seri Qwen:
tool_stream=false: Parameter alat kompleks dikeluarkan sekaligus. Ini adalah perilaku default, dan format kompleks lebih akurat.
tool_stream=true: Parameter alat kompleks dialirkan. Ini menghindari risiko timeout untuk format kompleks.
Alat kompleks adalah alat di mana beberapa jenis parameter dalam definisi alat adalah array atau objek.
Daftar dukungan seri GLM: glm-4.6, glm-4.7, glm-5, dan glm-5.1.
Referensi penggunaan seri GLM:
tool_stream=false: Parameter alat dikeluarkan sekaligus. Ini adalah perilaku default, dan format kompleks lebih akurat.
tool_stream=true: Parameter alat dialirkan. Ini menghindari risiko timeout untuk format kompleks.
Saat Anda memanggil melalui HTTP, letakkan tool_stream dalam objek parameters.
enable_code_interpreterboolean (Opsional) Nilai default adalah false.
Menentukan apakah akan mengaktifkan fitur interpreter kode. Untuk informasi selengkapnya, lihat Interpreter kode.
Nilai valid:
true: Mengaktifkan fitur.
false: Menonaktifkan fitur.
SDK Java tidak didukung. Saat Anda memanggil melalui HTTP, letakkan enable_code_interpreter dalam objek parameters.
clear_thinkingboolean(Opsional) Nilai default adalah false.
Mengontrol apakah akan menggunakan reasoning_content (proses pemikiran) dari putaran sebelumnya sebagai input konteks untuk model dalam percakapan multi-putaran. Ini hanya didukung oleh model seri GLM glm-5.2, glm-5.1, glm-5, dan glm-4.7.
true: Mengaktifkan fitur. Ini mengabaikan reasoning_content dari putaran sebelumnya dan hanya menggunakan teks yang terlihat, pemanggilan alat, dan hasil sebagai input konteks. Ini dapat mengurangi panjang konteks dan biaya.
false (default): Menonaktifkan fitur. Ini mempertahankan reasoning_content dari putaran sebelumnya dan menyediakannya ke model bersama dengan konteks. Jika Anda ingin mengaktifkan pemikiran yang dipertahankan, Anda harus meneruskan reasoning_content historis secara lengkap, tidak diubah, dan dalam urutan aslinya dalam pesan. Menghilangkan, memangkas, menulis ulang, atau mengubah urutan akan menurunkan kinerja atau mencegah fitur ini berlaku.
repetition_penaltyfloat(Opsional)
Hukuman untuk mengulangi urutan berturut-turut selama generasi model. Nilai repetition_penalty yang lebih tinggi dapat mengurangi pengulangan dalam keluaran model. Nilai 1,0 menunjukkan tidak ada hukuman. Nilai harus lebih besar dari 0.
Dalam SDK Java, parameter ini adalah repetitionPenalty. Saat Anda memanggil melalui HTTP, letakkan repetition_penalty dalam objek parameters.
Saat Anda menggunakan model qwen-vl-plus_2025-01-25 untuk ekstraksi teks, kami merekomendasikan agar Anda mengatur repetition_penalty ke 1,0.
Kami tidak merekomendasikan Anda mengubah nilai repetition_penalty default untuk model QVQ.
presence_penaltyfloat(Opsional)
Mengontrol pengulangan konten saat model menghasilkan teks.
Rentang nilai: [-2,0, 2,0]. Nilai positif mengurangi pengulangan, sedangkan nilai negatif meningkatkannya.
Dalam skenario yang membutuhkan keragaman, kesenangan, atau kreativitas, seperti penulisan kreatif atau curah pendapat, Anda dapat meningkatkan nilai ini. Dalam skenario yang menekankan konsistensi dan akurasi istilah, seperti dokumen teknis atau teks formal, Anda dapat menurunkan nilai ini.
Nilai presence_penalty default
Qwen3.8 (mode non-pemikiran), Qwen3.7 (mode non-pemikiran), Qwen3.6 (mode non-pemikiran), Qwen3.5-Omni, Qwen3.5 (mode non-pemikiran), qwen3-max-preview (mode pemikiran), Qwen3 (mode non-pemikiran), seri Qwen3-Instruct/1.7b/4b (mode pemikiran), seri QVQ, qwen-max, seri qwen2.5-vl, seri qwen-vl-max, qwen-vl-plus, Qwen3-VL (non-pemikiran): 1,5;
Seri DeepSeek (disediakan oleh Alibaba Cloud): deepseek-r1, deepseek-r1-0528, versi disuling deepseek-r1-distill-qwen: 1;
Seri Kimi (disediakan oleh Alibaba Cloud): kimi-k2.7-code, kimi-k2.6, kimi-k2.5: 0,0;
Seri Kimi (disediakan oleh Moonshot AI): 0,0;
Seri MiniMax (disediakan oleh Alibaba Cloud): MiniMax-M2.5, MiniMax-M2.1: 0,0;
Model DeepSeek, Kimi, GLM, dan MiniMax lainnya tidak memiliki nilai default.
Cara kerjanya
Jika nilai parameter positif, model memberikan hukuman pada token yang sudah ada dalam teks. Hukuman ini tidak terkait dengan jumlah kali token tersebut muncul. Ini mengurangi kemungkinan token tersebut muncul kembali, sehingga mengurangi pengulangan konten dan meningkatkan keragaman kata.
Contoh
Prompt: Terjemahkan kalimat ini ke dalam Bahasa Indonesia: "Film ini bagus. Alurnya bagus, aktingnya bagus, musiknya bagus, dan secara keseluruhan, seluruh film ini benar-benar bagus. Memang sangat bagus, sebenarnya. Alurnya sangat bagus, aktingnya sangat bagus, dan musiknya sangat bagus."
Nilai parameter 2,0: Film ini luar biasa. Alurnya fantastis, aktingnya luar biasa, dan musiknya juga sangat indah. Secara keseluruhan, seluruh film ini benar-benar luar biasa. Sebenarnya, film ini benar-benar luar biasa. Alurnya sangat menarik, aktingnya sangat hebat, dan soundtrack-nya sangat mengharukan.
Nilai parameter 0,0: Film ini bagus. Alurnya bagus, aktingnya bagus, dan musiknya bagus. Secara keseluruhan, seluruh film ini sangat bagus. Sebenarnya, film ini benar-benar luar biasa. Alurnya sangat bagus, aktingnya juga sangat luar biasa, dan musiknya sama luar biasanya.
Nilai parameter -2,0: Film ini bagus. Alurnya bagus, aktingnya bagus, dan musiknya bagus. Secara keseluruhan, seluruh film ini bagus. Sebenarnya, film ini benar-benar bagus. Alurnya sangat bagus, aktingnya sangat bagus, dan musiknya sangat bagus.
Saat Anda menggunakan model qwen-vl-plus untuk ekstraksi teks, atur presence_penalty ke 1,5.
Jangan ubah nilai presence_penalty default untuk model QVQ.
SDK Java tidak mendukung pengaturan parameter ini*.* Saat Anda memanggil melalui HTTP, letakkan presence_penalty dalam objek parameters.
vl_high_resolution_imagesboolean(Opsional) Nilai default: false
Menentukan apakah akan meningkatkan batas piksel untuk gambar input ke jumlah piksel yang sesuai dengan 16384 token. Untuk informasi selengkapnya, lihat Memproses gambar resolusi tinggi.
vl_high_resolution_images: true menggunakan strategi resolusi tetap dan mengabaikan pengaturan max_pixels. Jika resolusi terlampaui, jumlah total piksel gambar diperkecil agar tetap dalam batas ini.
Klik untuk melihat batas piksel untuk setiap model
Saat vl_high_resolution_images adalah True, batas piksel bervariasi berdasarkan model:
Untuk seri Qwen3.8, seri Qwen3.7, seri Qwen3.6, seri Qwen3.5, seri Qwen3-VL, qwen-vl-max, qwen-vl-max-0813, qwen-vl-plus, qwen-vl-plus-0815, dan model , nilainya adalah 16777216. (Setiap Token sesuai dengan 32*32 piksel. Nilai total dihitung sebagai 16384*32*32.)
Seri QVQ, model seri Qwen2.5-VL lainnya: 12845056 (1 token sesuai dengan 28*28 piksel, yaitu 16384*28*28)
vl_high_resolution_images adalah false, batas piksel ditentukan oleh max_pixels. Jika jumlah piksel gambar input melebihi max_pixels, gambar diperkecil agar berada dalam batas max_pixels. Batas piksel default untuk setiap model adalah nilai default max_pixels.
Dalam SDK Java, parameter ini adalah vlHighResolutionImages (memerlukan V2.20.8 atau yang lebih baru). Saat Anda memanggil melalui HTTP, letakkan vl_high_resolution_images dalam objek parameters.
vl_enable_image_hw_outputboolean(Opsional) Nilai default adalah false.
Menentukan apakah akan mengembalikan dimensi gambar yang diskalakan. Model menskalakan gambar input. Jika Anda mengatur parameter ini ke True, ia mengembalikan tinggi dan lebar gambar yang diskalakan. Jika keluaran streaming diaktifkan, informasi ini dikembalikan dalam chunk terakhir. Ini didukung oleh model Qwen-VL.
Dalam SDK Java, parameter ini adalah vlEnableImageHwOutput. Versi SDK Java minimum yang diperlukan adalah 2.20.8*.* Saat Anda memanggil melalui HTTP, letakkan vl_enable_image_hw_output dalam objek parameters.
max_tokensinteger(Opsional, akan ditinggalkan)
Parameter ini akan ditinggalkan. Untuk integrasi baru, gunakan max_completion_tokens.
Makna parameter ini bervariasi berdasarkan model:
deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash, deepseek-v4-flash-0731: Jumlah maksimum token untuk jumlah jawaban model dan konten rantai-pikiran. Jika keluaran model melebihi nilai ini, generasi dihentikan lebih awal, dan finish_reason yang dikembalikan adalah length.
glm-5.2: Saat parameter thinking_budget tidak diteruskan, max_tokens adalah jumlah maksimum token untuk jumlah jawaban model dan konten rantai-pikiran, dan jika keluaran model melebihi nilai ini, generasi dihentikan lebih awal dengan finish_reason yang dikembalikan adalah length. Saat parameter thinking_budget diteruskan, max_tokens adalah jumlah maksimum token hanya untuk jawaban model, dan jumlah token untuk bagian rantai-pikiran dikontrol secara terpisah oleh thinking_budget.
Model lainnya: Jumlah maksimum token untuk jawaban model. Jika konten yang dihasilkan melebihi nilai ini, generasi dihentikan lebih awal, dan finish_reason yang dikembalikan adalah length.
Nilai default dan maksimum keduanya adalah panjang keluaran maksimum model.
Dalam SDK Java, parameter ini adalah maxTokens. Untuk model Qwen-VL, dalam SDK Java adalah maxLength, tetapi versi yang lebih baru dari 2.18.4 juga mendukung pengaturannya sebagai maxTokens. Saat Anda memanggil melalui HTTP, letakkan max_tokens dalam objek parameters.
max_completion_tokensinteger(Opsional)
Panjang maksimum keluaran model, termasuk konten rantai-pikiran dan jawaban model. Jika keluaran model melebihi nilai ini, generasi dihentikan lebih awal, dan finish_reason yang dikembalikan adalah length.
Nilai default dan maksimum keduanya adalah panjang keluaran maksimum model.
Perbedaan dari max_tokens: max_completion_tokens membatasi keluaran model lengkap (rantai-pikiran + jawaban), sedangkan max_tokens hanya membatasi bagian jawaban. Untuk model pemikiran, kami merekomendasikan Anda menggunakan max_completion_tokens.
Model yang didukung:
Qwen Max: Model Qwen3.7-Max dan yang lebih baru
Qwen Plus: Model Qwen3.5-Plus dan yang lebih baru
Qwen Flash: Model Qwen3.5-Flash dan yang lebih baru
Kimi: Model kimi-k2.5 dan yang lebih baru
GLM: Model glm-5 dan yang lebih baru
MiniMax: Model MiniMax-M2.5 dan yang lebih baru
DeepSeek: deepseek-v3, deepseek-r1, deepseek-r1-0528, deepseek-v3.1, deepseek-v3.2, deepseek-v3.2-exp, deepseek-v4-pro, deepseek-v4-flash, dan model yang lebih baru
Model yang tercantum di atas tidak mencakup model yang disediakan langsung oleh pihak ketiga.
Mungkin terdapat perbedaan hingga 10 token antara jumlah token keluaran aktual dan nilai max_completion_tokens yang ditentukan.
SDK Java saat ini tidak mendukung parameter ini. Saat Anda memanggil melalui HTTP, letakkan max_completion_tokens dalam objek parameters.
seedinteger(Opsional)
Bilangan acak seed. Parameter ini digunakan untuk memastikan hasil yang dapat direproduksi dengan input dan parameter yang sama. Jika Anda meneruskan nilai seed yang sama dalam pemanggilan dan parameter lainnya tetap tidak berubah, model mengembalikan hasil yang sama sebanyak mungkin.
Rentang nilai: [0,2<sup>31</sup>−1].
Saat Anda memanggil melalui HTTP, letakkan seed dalam objek parameters.
streamboolean(Opsional)Nilai default adalah false.
Menentukan apakah akan mengalirkan balasan. Nilai valid adalah:
false: Model menghasilkan semua konten dan kemudian mengembalikan hasil sekaligus.
true: Model menghasilkan dan mengeluarkan konten secara langsung. Ini berarti bahwa model segera mengeluarkan potongan konten begitu dihasilkan.
Parameter ini hanya didukung oleh SDK Python. Untuk mengimplementasikan keluaran streaming dengan SDK Java, panggil antarmuka streamCall. Untuk mengimplementasikan keluaran streaming melalui HTTP, tentukan X-DashScope-SSE sebagai enable dalam header.
Edisi komersial Qwen3 (mode pemikiran), edisi sumber terbuka Qwen3, QwQ, dan QVQ hanya mendukung keluaran streaming.
incremental_outputboolean(Opsional) Default adalah false. Untuk model Qwen3-Max, Qwen3-VL, edisi sumber terbuka Qwen3, QwQ, dan QVQ, default adalah true.
Menentukan apakah akan mengaktifkan keluaran inkremental dalam mode keluaran streaming. Kami merekomendasikan Anda mengatur parameter ini ke true.
Nilai:
false: Setiap keluaran berisi seluruh urutan yang dihasilkan sejauh ini. Keluaran terakhir adalah hasil lengkap yang dihasilkan.
I
I like
I like apple
I like apple.
true (direkomendasikan): Keluarannya inkremental. Keluaran berikutnya tidak menyertakan konten yang telah dikeluarkan sebelumnya. Anda harus membaca potongan-potongan ini satu per satu secara real-time untuk mendapatkan hasil lengkap.
I
like
apple
.
Dalam SDK Java, parameter ini adalah incrementalOutput. Saat Anda memanggil melalui HTTP, letakkan incremental_output dalam objek parameters.
Model QwQ dan model Qwen3 dalam mode pemikiran hanya mendukung pengaturan parameter ini ke true. Karena nilai default untuk model edisi komersial Qwen3 adalah false, Anda harus mengaturnya secara manual ke true dalam mode pemikiran.
Model edisi sumber terbuka Qwen3 tidak mendukung pengaturan parameter ini ke false.
response_formatobjek (Opsional) Nilai default adalah {"type": "text"}.
Format konten yang dikembalikan. Nilai valid adalah:
{"type": "text"}: Mengeluarkan balasan teks.
{"type": "json_object"}: Mengeluarkan string JSON dalam format standar.
Jika Anda menentukan {"type": "json_object"}, Anda harus secara eksplisit menginstruksikan model untuk mengeluarkan JSON dalam prompt, seperti "Silakan keluarkan dalam format JSON". Jika tidak, akan terjadi kesalahan.
Dalam SDK Java, parameter ini adalah responseFormat. Saat Anda memanggil melalui HTTP, letakkan response_format dalam objek parameters.
Properti
typestring(Wajib)
Format konten yang dikembalikan. Nilai valid adalah:
text: Mengeluarkan balasan teks.
json_object: Mengeluarkan string JSON dalam format standar.
result_formatstring(Opsional)Default adalah text. Untuk model Qwen3-Max, Qwen3-VL, QwQ, model sumber terbuka Qwen3 (kecuali qwen3-next-80b-a3b-instruct), default adalah message.
Format data yang dikembalikan. Kami merekomendasikan Anda mengatur parameter ini ke message untuk memfasilitasi percakapan multi-putaran.
Platform nanti akan menyatukan nilai default ke message.
Dalam SDK Java, parameter ini adalah resultFormat. Saat Anda memanggil melalui HTTP, letakkan result_format dalam objek parameters.
Jika modelnya Qwen-VL, QVQ, mengatur nilainya ke text tidak berpengaruh.
Qwen3-Max, Qwen3-VL, dan model Qwen3 dalam mode pemikiran hanya dapat diatur ke message. Karena nilai default untuk model edisi komersial Qwen3 adalah text, Anda perlu mengaturnya ke message.
Jika Anda menggunakan SDK Java untuk memanggil model sumber terbuka Qwen3 dan meneruskan text, respons tetap dikembalikan dalam format message.
logprobsboolean (Opsional) Nilai default adalah false.
Menentukan apakah akan mengembalikan log probabilitas token keluaran. Nilai valid adalah:
true
Kembali
false
Tidak dapat mengembalikan.
Model yang didukung:
Model snapshot seri qwen-plus (tidak termasuk model edisi stabil)
Model snapshot seri qwen-turbo (tidak termasuk model edisi stabil)
seri qwen3-vl-plus (termasuk model edisi stabil)
seri qwen3-vl-flash (termasuk model edisi stabil)
Model sumber terbuka Qwen3
Saat Anda memanggil melalui HTTP, letakkan logprobs dalam objek parameters.
top_logprobsinteger (Opsional) Nilai default adalah 0.
Menentukan jumlah token kandidat paling mungkin yang akan dikembalikan pada setiap langkah generasi.
Rentang nilai: [0, 5]
Parameter ini hanya berlaku jika logprobs adalah true.
Dalam SDK Java, parameter ini adalah topLogprobs. Saat Anda memanggil melalui HTTP, letakkan top_logprobs dalam objek parameters.
ninteger(Opsional) Nilai default adalah 1.
Jumlah respons yang akan dihasilkan. Rentang nilai adalah 1-4. Untuk skenario yang memerlukan beberapa respons untuk dihasilkan, seperti penulisan kreatif atau iklan, Anda dapat mengatur nilai n yang lebih besar.
Saat ini, hanya Qwen3 (mode non-pemikiran) yang didukung. Nilainya tetap 1 jika parameter tools diteruskan.
Mengatur nilai n yang lebih besar tidak meningkatkan konsumsi token input tetapi meningkatkan konsumsi token output.
Saat Anda memanggil melalui HTTP, letakkan n dalam objek parameters.
stopstring atau array(Opsional)
Digunakan untuk menentukan kata berhenti. Saat string atau token_id yang ditentukan dalam stop muncul dalam teks yang dihasilkan, generasi segera berhenti.
Anda dapat meneruskan kata sensitif untuk mengontrol keluaran model.
Saat stop adalah array, Anda tidak dapat memasukkan token_id dan string sebagai elemen. Misalnya, Anda tidak dapat menentukan ["Hello",104307].
Saat Anda memanggil melalui HTTP, letakkan stop dalam objek parameters.
toolsarray(Opsional)
Array yang berisi satu atau beberapa objek alat untuk dipanggil model selama pemanggilan fungsi. Untuk informasi selengkapnya, lihat Pemanggilan fungsi.
Saat Anda menggunakan tools, Anda harus mengatur result_format ke message.
Saat Anda memulai pemanggilan fungsi atau mengirimkan hasil eksekusi alat, Anda harus mengatur parameter tools.
Properti
typestring(Wajib)
Jenis alat. Saat ini, hanya function yang didukung.
functionobjek(Wajib)
Properti
namestring(Wajib)
Nama fungsi alat. Harus terdiri dari huruf dan angka, dan dapat berisi garis bawah dan tanda hubung. Panjang maksimum adalah 64 karakter.
descriptionstring(Wajib)
Deskripsi fungsi alat, yang membantu model memilih kapan dan bagaimana memanggil fungsi alat.
parametersobjek(Opsional) Nilai default adalah {}.
Deskripsi parameter alat, yang perlu berupa JSON Schema yang valid. Untuk deskripsi JSON Schema, lihat tautan ini. Jika parameter parameters kosong, artinya alat tidak memiliki parameter input, seperti alat kueri waktu.
Untuk meningkatkan akurasi pemanggilan alat, kami merekomendasikan Anda meneruskan parameters.
Saat Anda memanggil melalui HTTP, letakkan tools dalam objek parameters. Ini sementara tidak didukung untuk model seri qwen-vl.
tool_choicestring atau objek(Opsional) Nilai default adalah auto.
Strategi pemilihan alat. Anda dapat mengatur parameter ini untuk memaksa metode pemanggilan alat untuk jenis masalah tertentu, seperti selalu menggunakan alat tertentu atau menonaktifkan semua alat.
auto
LLM memilih strategi alat secara otonom.
none
Jika Anda ingin sementara menonaktifkan pemanggilan alat dalam permintaan tertentu, Anda dapat mengatur parameter tool_choice ke none.
Jika Anda ingin memaksa pemanggilan alat tertentu, Anda dapat mengatur parameter tool_choice ke {"type": "function", "function": {"name": "the_function_to_call"}}, di mana the_function_to_call adalah nama fungsi alat yang ditentukan.
Model dalam mode pemikiran tidak mendukung pemaksaan pemanggilan alat tertentu.
Dalam SDK Java, parameter ini adalah toolChoice. Saat Anda memanggil melalui HTTP, letakkan tool_choice dalam objek parameters.
parallel_tool_callsboolean (Opsional) Nilai default adalah false.
Menentukan apakah akan mengaktifkan pemanggilan alat paralel.
Dalam SDK Java, parameter ini adalah parallelToolCalls. Saat Anda memanggil melalui HTTP, letakkan parallel_tool_calls dalam objek parameters.
Input teks
Python
import os
from dashscope import MultiModalConversation
import dashscope
# Berikut adalah base_url untuk wilayah Singapura. Saat melakukan pemanggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya. URL untuk wilayah berbeda bervariasi.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [
{'role': 'system', 'content': [{'text': 'You are a helpful assistant.'}]},
{'role': 'user', 'content': [{'text': 'Who are you?'}]}
]
response = MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen3.8-max", # Contoh ini menggunakan qwen3.8-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
messages=messages,
)
print(response)
Java
// Kami merekomendasikan agar Anda menggunakan SDK DashScope V2.12.0 atau yang lebih baru.
import java.util.Arrays;
import java.util.Collections;
import java.lang.System;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.protocol.Protocol;
public class Main {
public static MultiModalConversationResult callWithMessage() throws ApiException, NoApiKeyException, UploadFileException {
// Berikut adalah base_url untuk wilayah Singapura. Saat melakukan pemanggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya. URL untuk wilayah berbeda bervariasi.
MultiModalConversation conv = new MultiModalConversation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1");
MultiModalMessage systemMsg = MultiModalMessage.builder()
.role(Role.SYSTEM.getValue())
.content(Arrays.asList(Collections.singletonMap("text", "You are a helpful assistant.")))
.build();
MultiModalMessage userMsg = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(Collections.singletonMap("text", "Who are you?")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
// Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// Contoh ini menggunakan qwen3.8-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
.model("qwen3.8-max")
.messages(Arrays.asList(systemMsg, userMsg))
.build();
return conv.call(param);
}
public static void main(String[] args) {
try {
MultiModalConversationResult result = callWithMessage();
System.out.println(JsonUtils.toJson(result));
} catch (ApiException | NoApiKeyException | UploadFileException e) {
// Gunakan framework logging untuk mencatat informasi pengecualian.
System.err.println("Terjadi kesalahan saat memanggil layanan generasi: " + e.getMessage());
}
System.exit(0);
}
}
PHP (HTTP)
<?php
$url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation";
// Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
$apiKey = getenv('DASHSCOPE_API_KEY');
$data = [
// Contoh ini menggunakan qwen3.8-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
"model" => "qwen3.8-max",
"input" => [
"messages" => [
[
"role" => "system",
"content" => [["text" => "You are a helpful assistant."]]
],
[
"role" => "user",
"content" => [["text" => "Who are you?"]]
]
]
],
"parameters" => [
"result_format" => "message"
]
];
$jsonData = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $apiKey",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode == 200) {
echo "Respons: " . $response;
} else {
echo "Kesalahan: " . $httpCode . " - " . $response;
}
curl_close($ch);
?>
Node.js (HTTP)
DashScope tidak menyediakan SDK untuk lingkungan Node.js. Untuk melakukan pemanggilan menggunakan SDK OpenAI Node.js, lihat bagian OpenAI dalam topik ini.
import fetch from 'node-fetch';
// Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
const apiKey = process.env.DASHSCOPE_API_KEY;
const data = {
model: "qwen3.8-max", // Contoh ini menggunakan qwen3.8-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
input: {
messages: [
{
role: "system",
content: [{"text": "You are a helpful assistant."}]
},
{
role: "user",
content: [{"text": "Who are you?"}]
}
]
},
parameters: {
result_format: "message"
}
};
fetch('https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => {
console.log(JSON.stringify(data));
})
.catch(error => {
console.error('Kesalahan:', error);
});
C# (HTTP)
using System.Net.Http.Headers;
using System.Text;
class Program
{
private static readonly HttpClient httpClient = new HttpClient();
static async Task Main(string[] args)
{
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: string? apiKey = "sk-xxx";
// Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
string? apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY");
if (string.IsNullOrEmpty(apiKey))
{
Console.WriteLine("Kunci API belum diatur. Pastikan variabel lingkungan 'DASHSCOPE_API_KEY' telah diatur.");
return;
}
// Atur URL permintaan dan konten.
string url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation";
// Contoh ini menggunakan qwen3.8-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
string jsonContent = @"{
""model"": ""qwen3.8-max"",
""input"": {
""messages"": [
{
""role"": ""system"",
""content"": [{""text"": ""You are a helpful assistant.""}]
},
{
""role"": ""user"",
""content"": [{""text"": ""Who are you?""}]
}
]
},
""parameters"": {
""result_format"": ""message""
}
}";
// Kirim permintaan dan dapatkan respons.
string result = await SendPostRequestAsync(url, jsonContent, apiKey);
// Cetak hasilnya.
Console.WriteLine(result);
}
private static async Task<string> SendPostRequestAsync(string url, string jsonContent, string apiKey)
{
using (var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"))
{
// Atur header permintaan.
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// Kirim permintaan dan dapatkan respons.
HttpResponseMessage response = await httpClient.PostAsync(url, content);
// Proses respons.
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
return $"Permintaan gagal: {response.StatusCode}";
}
}
}
}
Go (HTTP)
DashScope tidak menyediakan SDK untuk Go. Untuk melakukan pemanggilan menggunakan SDK OpenAI Go, lihat bagian OpenAI-Go dalam topik ini.
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
)
type ContentItem struct {
Text string `json:"text"`
}
type Message struct {
Role string `json:"role"`
Content []ContentItem `json:"content"`
}
type Input struct {
Messages []Message `json:"messages"`
}
type Parameters struct {
ResultFormat string `json:"result_format"`
}
type RequestBody struct {
Model string `json:"model"`
Input Input `json:"input"`
Parameters Parameters `json:"parameters"`
}
func main() {
// Buat klien HTTP.
client := &http.Client{}
// Bangun badan permintaan.
requestBody := RequestBody{
// Contoh ini menggunakan qwen3.8-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
Model: "qwen3.8-max",
Input: Input{
Messages: []Message{
{
Role: "system",
Content: []ContentItem{{Text: "You are a helpful assistant."}},
},
{
Role: "user",
Content: []ContentItem{{Text: "Who are you?"}},
},
},
},
Parameters: Parameters{
ResultFormat: "message",
},
}
jsonData, err := json.Marshal(requestBody)
if err != nil {
log.Fatal(err)
}
// Buat permintaan POST.
req, err := http.NewRequest("POST", "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation", bytes.NewBuffer(jsonData))
if err != nil {
log.Fatal(err)
}
// Atur header permintaan.
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey := "sk-xxx"
// Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
apiKey := os.Getenv("DASHSCOPE_API_KEY")
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
// Kirim permintaan.
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// Baca badan respons.
bodyText, err := io.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
// Cetak konten respons.
fmt.Printf("%s\n", bodyText)
}
curl
Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Kunci API untuk wilayah Singapura, AS (Virginia), dan Tiongkok (Beijing) berbeda. Untuk informasi selengkapnya, lihat Mendapatkan Kunci API
import os
import dashscope
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [
{'role':'system','content':'you are a helpful assistant'},
{'role': 'user','content': 'Who are you?'}
]
responses = dashscope.Generation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
# Contoh ini menggunakan qwen-plus; ganti dengan model generasi teks lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
model="qwen-plus",
messages=messages,
result_format='message',
stream=True,
incremental_output=True
)
for response in responses:
print(response)
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import io.reactivex.Flowable;
import java.lang.System;
import com.alibaba.dashscope.protocol.Protocol;
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static void handleGenerationResult(GenerationResult message) {
System.out.println(JsonUtils.toJson(message));
}
public static void streamCallWithMessage(Generation gen, Message userMsg)
throws NoApiKeyException, ApiException, InputRequiredException {
GenerationParam param = buildGenerationParam(userMsg);
Flowable<GenerationResult> result = gen.streamCall(param);
result.blockingForEach(message -> handleGenerationResult(message));
}
private static GenerationParam buildGenerationParam(Message userMsg) {
return GenerationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
// Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// Contoh ini menggunakan qwen-plus; ganti dengan model generasi teks lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
.model("qwen-plus")
.messages(Arrays.asList(userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.incrementalOutput(true)
.build();
}
public static void main(String[] args) {
try {
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1");
Message userMsg = Message.builder().role(Role.USER.getValue()).content("Who are you?").build();
streamCallWithMessage(gen, userMsg);
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
logger.error("Terjadi pengecualian: {}", e.getMessage());
}
System.exit(0);
}
}
import os
from dashscope import MultiModalConversation
import dashscope
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"},
{"text": "What is depicted in the image?"}
]
}
]
responses = MultiModalConversation.call(
# Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen3-vl-plus', # Anda dapat menggantinya dengan model multimodal lain dan menyesuaikan pesan sesuai kebutuhan.
messages=messages,
stream=True,
incremental_output=True)
full_content = ""
print("Konten keluaran streaming:")
for response in responses:
if response["output"]["choices"][0]["message"].content:
print(response.output.choices[0].message.content[0]['text'])
full_content += response.output.choices[0].message.content[0]['text']
print(f"Konten lengkap: {full_content}")
import java.util.Arrays;
import java.util.Collections;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
public static void streamCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// must create mutable map.
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"),
Collections.singletonMap("text", "What is depicted in the image?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura/AS (Virginia) dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus") // Anda dapat menggantinya dengan model multimodal lain dan menyesuaikan pesan sesuai kebutuhan.
.messages(Arrays.asList(userMessage))
.incrementalOutput(true)
.build();
Flowable<MultiModalConversationResult> result = conv.streamCall(param);
result.blockingForEach(item -> {
try {
var content = item.getOutput().getChoices().get(0).getMessage().getContent();
// Periksa apakah konten ada dan tidak kosong.
if (content != null && !content.isEmpty()) {
System.out.println(content.get(0).get("text"));
}
} catch (Exception e){
System.exit(0);
}
});
}
public static void main(String[] args) {
try {
streamCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
Untuk informasi selengkapnya tentang cara menggunakan model bahasa besar (LLM) untuk menganalisis gambar, lihat Pemahaman Gambar dan Video.
Python
import os
import dashscope
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/rabbit.png"},
{"text": "What are these?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# Kunci API untuk wilayah Singapura, Virginia, dan Beijing berbeda. Untuk mendapatkan Kunci API, kunjungi https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
# Contoh ini menggunakan qwen-vl-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, kunjungi https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
model='qwen-vl-max',
messages=messages
)
print(response)
Java
// Hak cipta (c) Alibaba, Inc. dan afiliasinya.
import java.util.Arrays;
import java.util.Collections;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"),
Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"),
Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/rabbit.png"),
Collections.singletonMap("text", "What are these?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan .apiKey("sk-xxx") dan gunakan Kunci API Model Studio Anda.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// Contoh ini menggunakan qwen-vl-plus. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, kunjungi https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
.model("qwen-vl-plus")
.message(userMessage)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curl
Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Kunci API untuk wilayah Singapura, AS (Virginia), dan Tiongkok (Beijing) berbeda. Untuk mendapatkan Kunci API, lihat Dapatkan Kunci API
Contoh berikut menunjukkan cara memasukkan frame video. Untuk informasi selengkapnya tentang metode lain, seperti memasukkan file video, lihat Pemahaman Visual.
Python
import os
# Versi SDK DashScope harus 1.20.10 atau yang lebih baru.
import dashscope
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [{"role": "user",
"content": [
# Jika Anda menggunakan model dari seri Qwen2.5-VL dan memasukkan daftar gambar, Anda dapat mengatur parameter fps. Parameter ini menentukan bahwa gambar diekstraksi dari video asli setiap 1/fps detik.
{"video":["https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"],
"fps":2},
{"text": "Describe the events in this video"}]}]
response = dashscope.MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API berbeda untuk wilayah Singapura/Virginia dan Beijing. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen-vl-max', # Contoh ini menggunakan qwen-vl-max. Ganti dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/zh/model-studio/models
messages=messages
)
print(response["output"]["choices"][0]["message"].content[0]["text"])
Java
// Versi SDK DashScope harus 2.18.3 atau yang lebih baru.
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
private static final String MODEL_NAME = "qwen-vl-max"; // Contoh ini menggunakan qwen-vl-max. Ganti dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/zh/model-studio/models
public static void videoImageListSample() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage systemMessage = MultiModalMessage.builder()
.role(Role.SYSTEM.getValue())
.content(Arrays.asList(Collections.singletonMap("text", "You are a helpful assistant.")))
.build();
// Jika Anda menggunakan model dari seri Qwen2.5-VL dan memasukkan daftar gambar, Anda dapat mengatur parameter fps. Parameter ini menentukan bahwa gambar diekstraksi dari video asli setiap 1/fps detik.
Map<String, Object> params = Map.of(
"video", Arrays.asList("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"),
"fps",2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(
params,
Collections.singletonMap("text", "Describe the events in this video")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
// Kunci API berbeda untuk wilayah Singapura/Virginia dan Beijing. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(MODEL_NAME)
.messages(Arrays.asList(systemMessage, userMessage)).build();
MultiModalConversationResult result = conv.call(param);
System.out.print(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
videoImageListSample();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curl
Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Kunci API berbeda untuk wilayah Singapura, AS (Virginia), dan Tiongkok (Beijing). Untuk informasi selengkapnya, lihat Dapatkan Kunci API
Untuk kode lengkap alur pemanggilan fungsi, lihat Ikhtisar.
Python
import os
import dashscope
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
tools = [
{
"type": "function",
"function": {
"name": "get_current_time",
"description": "Useful for getting the current time.",
"parameters": {}
}
},
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Useful for getting the weather in a specific city.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city or district, such as Beijing, Hangzhou, or Yuhang District."
}
}
},
"required": [
"location"
]
}
}
]
messages = [{"role": "user", "content": [{"text": "What is the weather like in Hangzhou?"}]}]
response = dashscope.MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API untuk wilayah Singapura, Virginia, dan Beijing berbeda. Untuk mendapatkan Kunci API, kunjungi: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
# Contoh ini menggunakan qwen3.8-max. Anda dapat menggantinya dengan model lain sesuai kebutuhan. Untuk daftar model, kunjungi: https://www.alibabacloud.com/help/en/model-studio/getting-started/models
model='qwen3.8-max',
messages=messages,
tools=tools,
)
print(response)
Java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.alibaba.dashscope.aigc.conversation.ConversationParam.ResultFormat;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import java.util.Collections;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.tools.FunctionDefinition;
import com.alibaba.dashscope.tools.ToolFunction;
import com.alibaba.dashscope.utils.JsonUtils;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.victools.jsonschema.generator.Option;
import com.github.victools.jsonschema.generator.OptionPreset;
import com.github.victools.jsonschema.generator.SchemaGenerator;
import com.github.victools.jsonschema.generator.SchemaGeneratorConfig;
import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder;
import com.github.victools.jsonschema.generator.SchemaVersion;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import com.alibaba.dashscope.utils.Constants;
public class Main {
// Berikut adalah URL dasar untuk wilayah Singapura. Saat melakukan pemanggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya. URL bervariasi berdasarkan wilayah.
static {Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";}
public class GetWeatherTool {
private String location;
public GetWeatherTool(String location) {
this.location = location;
}
public String call() {
return location + " is sunny today.";
}
}
public class GetTimeTool {
public GetTimeTool() {
}
public String call() {
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String currentTime = "Current time: " + now.format(formatter) + ".";
return currentTime;
}
}
public static void SelectTool()
throws NoApiKeyException, ApiException, InputRequiredException {
SchemaGeneratorConfigBuilder configBuilder =
new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_2020_12, OptionPreset.PLAIN_JSON);
SchemaGeneratorConfig config = configBuilder.with(Option.EXTRA_OPEN_API_FORMAT_VALUES)
.without(Option.FLATTENED_ENUMS_FROM_TOSTRING).build();
SchemaGenerator generator = new SchemaGenerator(config);
ObjectNode jsonSchema_weather = generator.generateSchema(GetWeatherTool.class);
ObjectNode jsonSchema_time = generator.generateSchema(GetTimeTool.class);
FunctionDefinition fdWeather = FunctionDefinition.builder().name("get_current_weather").description("Gets the weather for a specified area")
.parameters(JsonUtils.parseString(jsonSchema_weather.toString()).getAsJsonObject()).build();
FunctionDefinition fdTime = FunctionDefinition.builder().name("get_current_time").description("Gets the current time")
.parameters(JsonUtils.parseString(jsonSchema_time.toString()).getAsJsonObject()).build();
MultiModalMessage systemMsg = MultiModalMessage.builder().role(Role.SYSTEM.getValue())
.content(Arrays.asList(Collections.singletonMap("text", "You are a helpful assistant. When asked a question, use tools wherever possible.")))
.build();
MultiModalMessage userMsg = MultiModalMessage.builder().role(Role.USER.getValue()).content(Arrays.asList(Collections.singletonMap("text", "Weather in Hangzhou"))).build();
List<MultiModalMessage> messages = new ArrayList<>();
messages.addAll(Arrays.asList(systemMsg, userMsg));
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura, Virginia, dan Beijing berbeda. Untuk mendapatkan Kunci API, kunjungi: https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// Contoh ini menggunakan qwen3.8-max. Anda dapat menggantinya dengan model lain sesuai kebutuhan. Untuk daftar model, kunjungi: https://www.alibabacloud.com/help/en/model-studio/getting-started/models
.model("qwen3.8-max")
.messages(messages)
.tools(Arrays.asList(
ToolFunction.builder().function(fdWeather).build(),
ToolFunction.builder().function(fdTime).build()))
.build();
MultiModalConversation conv = new MultiModalConversation();
MultiModalConversationResult result = conv.call(param);
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
SelectTool();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(String.format("Exception %s", e.getMessage()));
}
System.exit(0);
}
}
curl
Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.
Kunci API untuk wilayah Singapura, AS (Virginia), dan Tiongkok (Beijing) berbeda. Untuk informasi selengkapnya, lihat Dapatkan Kunci API
URL berikut adalah untuk wilayah Singapura.
curl --location "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen3.8-max",
"input": {
"messages": [{
"role": "user",
"content": [{"text": "What is the weather like in Hangzhou?"}]
}]
},
"parameters": {
"result_format": "message",
"tools": [{
"type": "function",
"function": {
"name": "get_current_time",
"description": "Useful for getting the current time.",
"parameters": {}
}
},{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Useful for getting the weather in a specific city.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city or district, such as Beijing, Hangzhou, or Yuhang District."
}
}
},
"required": ["location"]
}
}]
}
}'
Pemanggilan asinkron
# SDK Python Dashscope Anda harus versi 1.19.0 atau yang lebih baru.
import asyncio
import platform
import os
import dashscope
from dashscope.aigc.multimodal_conversation import AioMultiModalConversation
# Berikut adalah base_url untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
async def main():
response = await AioMultiModalConversation.call(
# Jika Anda tidak mengonfigurasi variabel lingkungan, ganti baris berikut dengan api_key="sk-xxx", di mana sk-xxx adalah Kunci API Model Studio Anda.
# Kunci API untuk wilayah Singapura, Virginia, dan Beijing berbeda. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
# Contoh ini menggunakan model qwen3.8-max. Anda dapat mengubah nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
model="qwen3.8-max",
messages=[{"role": "user", "content": [{"text": "Who are you?"}]}],
)
print(response)
if platform.system() == "Windows":
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
asyncio.run(main())
Pemahaman dokumen
Python
import os
import dashscope
# Saat ini, model qwen-long-latest hanya dapat dipanggil di wilayah Tiongkok (Beijing).
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [
{'role': 'system', 'content': 'you are a helpful assistant'},
# Ganti '{FILE_ID}' dengan file-id yang digunakan dalam skenario percakapan aktual Anda.
{'role':'system','content':f'fileid://{FILE_ID}'},
{'role': 'user', 'content': 'What is this article about?'}]
response = dashscope.Generation.call(
# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen-long-latest",
messages=messages,
result_format='message'
)
print(response)
Java
import os
import dashscope
# Saat ini, model qwen-long-latest hanya dapat dipanggil di wilayah Tiongkok (Beijing).
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [
{'role': 'system', 'content': 'you are a helpful assistant'},
# Ganti '{FILE_ID}' dengan file-id yang digunakan dalam skenario percakapan aktual Anda.
{'role':'system','content':f'fileid://{FILE_ID}'},
{'role': 'user', 'content': 'What is this article about?'}]
response = dashscope.Generation.call(
# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen-long-latest",
messages=messages,
result_format='message'
)
print(response)
curl
Saat ini, hanya wilayah Tiongkok (Beijing) yang mendukung pemanggilan model pemahaman dokumen.
Ganti {FILE_ID} dengan ID file yang digunakan dalam skenario percakapan aktual Anda.
Objek respons chat (format keluaran streaming dan non-streaming konsisten)
status_codestring
Kode status permintaan. Nilai 200 menunjukkan bahwa permintaan berhasil. Jika tidak, permintaan gagal.
SDK Java tidak mengembalikan parameter ini. Jika pemanggilan gagal, pengecualian dilemparkan. Pesan pengecualian berisi konten status_code dan message.
request_idstring
ID unik untuk pemanggilan ini.
SDK Java mengembalikan parameter sebagai requestId.
codestring
Kode kesalahan. Bidang ini kosong jika pemanggilan berhasil.
Hanya SDK Python yang mengembalikan parameter ini.
outputobjek
Informasi tentang hasil pemanggilan.
Properti
textstring
Balasan yang dihasilkan oleh model. Jika parameter input result_format diatur ke text, konten balasan dikembalikan dalam bidang ini.
finish_reasonstring
Parameter ini tidak kosong jika parameter input result_format diatur ke text.
Ini dapat terjadi dalam empat situasi berikut:
null saat menghasilkan
stop jika keluaran model berakhir secara alami atau memicu kondisi berhenti dalam parameter input
Proses dihentikan karena keluaran yang dihasilkan terlalu panjang.
Saat terjadi pemanggilan alat, nilainya adalah tool_calls.
choicesarray
Informasi keluaran model. Parameter choices dikembalikan jika result_format adalah message.
Properti
finish_reasonstring
Nilainya dapat salah satu dari berikut:
null saat menghasilkan
stop jika keluaran model berakhir secara alami atau memicu kondisi berhenti dalam parameter input
Generasi berhenti karena alasan length, yang berarti keluarannya terlalu panjang.
Alasan tool_calls menunjukkan bahwa terjadi pemanggilan alat.
messageobjek
Objek pesan yang dikeluarkan oleh model.
Properti
rolestring
Peran pesan keluaran, yang harus assistant.
contentstring atau array
Konten pesan keluaran. Ini adalah array jika Anda menggunakan model seri qwen-vl atau qwen-audio, dan string dalam kasus lain.
Jika pemanggilan fungsi dimulai, nilai ini kosong.
Properti
textstring
Konten pesan keluaran jika Anda menggunakan model seri qwen-vl atau qwen-audio.
image_hwarray
Jika parameter vl_enable_image_hw_output diaktifkan untuk model seri Qwen-VL, ada dua kasus:
Input gambar: Mengembalikan tinggi dan lebar gambar dalam piksel.
Input video: Mengembalikan array kosong.
reasoning_contentstring
Konten pemikiran mendalam model.
tool_callsarray
Jika model perlu memanggil alat, parameter tool_calls dihasilkan.
Properti
functionobjek
Nama alat yang dipanggil dan parameter inputnya.
Properti
namestring
Nama alat yang dipanggil.
argumentsstring
Parameter yang akan dimasukkan ke alat, sebagai string JSON.
Karena keacakan respons LLM, string JSON keluaran mungkin tidak selalu memenuhi fungsi Anda. Kami merekomendasikan Anda memvalidasi parameter sebelum memasukkannya ke fungsi.
indexinteger
Indeks objek tool_calls saat ini dalam array tool_calls.
idstring
ID respons alat ini.
typestring
Jenis alat, yang harus function.
logprobsobjek
Informasi probabilitas untuk objek choices saat ini.
Properti
contentarray
Array token dengan informasi log probabilitas.
Properti
tokenstring
Token saat ini.
bytesarray
Daftar byte UTF-8 mentah dari token saat ini. Ini berguna untuk merekonstruksi konten keluaran secara akurat, terutama saat Anda menangani emoji dan karakter Tionghoa.
logprobfloat
Log probabilitas token saat ini. Nilai null menunjukkan probabilitas yang sangat rendah.
top_logprobsarray
Token paling mungkin pada posisi token saat ini dan log probabilitasnya. Jumlah elemen konsisten dengan parameter input top_logprobs.
Properti
tokenstring
Token saat ini.
bytesarray
Daftar byte UTF-8 mentah dari token saat ini. Ini berguna untuk merekonstruksi konten keluaran secara akurat, terutama saat Anda menangani emoji dan karakter Tionghoa.
logprobfloat
Log probabilitas token saat ini. Nilai null menunjukkan probabilitas yang sangat rendah.
usagemap
Informasi token untuk permintaan chat ini.
Properti
input_tokensinteger
Panjang konten input pengguna setelah dikonversi ke token. Untuk informasi selengkapnya, lihat Informasi tambahan.
output_tokensinteger
Panjang konten keluaran model setelah dikonversi ke token.
input_tokens_detailsobjek (Opsional)
Rincian panjang konten input setelah dikonversi ke token.
Properti
text_tokensinteger (Opsional)
Panjang teks input setelah dikonversi ke token.
image_tokensinteger (Opsional)
Panjang gambar input setelah dikonversi ke token.
video_tokensinteger (Opsional)
Panjang file video atau daftar gambar input setelah dikonversi ke token.
total_tokensinteger
Bidang ini dikembalikan jika input berupa teks biasa. Ini adalah jumlah dari input_tokens dan output_tokens.
image_tokensinteger
Bidang ini dikembalikan jika konten input mencakup gambar. Ini adalah panjang konten gambar input pengguna setelah dikonversi ke token.
video_tokensinteger
Bidang ini dikembalikan jika konten input mencakup video. Ini adalah panjang konten video input pengguna setelah dikonversi ke token.
audio_tokensinteger
Bidang ini dikembalikan jika konten input mencakup audio. Ini adalah panjang konten audio input pengguna setelah dikonversi ke token.
output_tokens_detailsobjek (Opsional)
Rincian panjang konten keluaran setelah dikonversi ke token. Bidang ini hanya dikembalikan oleh beberapa model.
Properti
text_tokensinteger (Opsional)
Panjang teks keluaran setelah dikonversi ke token.
reasoning_tokensinteger (Opsional)
Panjang proses pemikiran setelah dikonversi ke token. Bidang ini hanya dikembalikan untuk model penalaran.
audio_tokensinteger (Opsional)
Panjang audio keluaran setelah dikonversi ke token. Bidang ini hanya dikembalikan untuk model keluaran audio.
prompt_tokens_detailsobjek
Klasifikasi detail token input.
Properti
cached_tokensinteger
Jumlah token yang mengenai cache. Untuk informasi selengkapnya tentang cache konteks, lihat Cache konteks.
Panjang token yang digunakan untuk membuat cache eksplisit dengan periode validitas 5 menit.
cache_creation_input_tokensinteger
Panjang token yang digunakan untuk membuat cache eksplisit.
cache_typestring
Jika Anda menggunakan caching eksplisit, nilai parameter adalah ephemeral. Jika tidak, parameter ini tidak ada.
{
"status_code": 200,
"request_id": "902fee3b-f7f0-9a8c-96a1-6b4ea25af114",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "I am a large-scale language model developed by Alibaba Cloud, and my name is Qwen."
}
}
]
},
"usage": {
"input_tokens": 22,
"output_tokens": 17,
"total_tokens": 39
}
}
Kode kesalahan
Jika pemanggilan model gagal dan pesan kesalahan dikembalikan, lihat Kode kesalahan untuk menyelesaikan masalah.