Model Qwen-VL menjawab pertanyaan berdasarkan citra atau video yang Anda berikan. Model ini mendukung input citra tunggal maupun ganda, serta cocok untuk berbagai tugas seperti pembuatan keterangan gambar (image captioning), menjawab pertanyaan visual (visual question answering), dan deteksi objek.
Coba secara online: Model vision (Singapura atau China (Beijing))
Mulai
Prasyarat
Jika Anda menggunakan SDK untuk melakukan panggilan, Anda harus menginstal SDK. DashScope Python SDK harus versi 1.24.6 atau lebih baru, dan DashScope Java SDK harus versi 2.21.10 atau lebih baru.
Contoh berikut menunjukkan cara memanggil model untuk mendeskripsikan konten citra. Untuk informasi lebih lanjut tentang file lokal dan batasan citra, lihat Cara meneruskan file lokal dan Batasan citra.
Kompatibel dengan OpenAI
Python
from openai import OpenAI
import os
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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"),
# base_url berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
completion = client.chat.completions.create(
model="qwen3-vl-plus", # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
},
},
{"type": "text", "text": "Apa yang digambarkan dalam citra ini?"},
],
},
],
)
print(completion.choices[0].message.content)Respons
Ini adalah foto yang diambil di pantai. Dalam foto tersebut, seseorang dan seekor anjing duduk di atas pasir, dengan laut dan langit di latar belakang. Orang dan anjing tampak sedang berinteraksi, dengan kaki depan anjing bertumpu pada tangan orang tersebut. Sinar matahari datang dari sisi kanan bingkai, menambah suasana hangat pada adegan ini.Node.js
import OpenAI from "openai";
const openai = new OpenAI({
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3-vl-plus", // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{
role: "user",
content: [{
type: "image_url",
image_url: {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
}
},
{
type: "text",
text: "Apa yang digambarkan dalam citra ini?"
}
]
}
]
});
console.log(response.choices[0].message.content);
}
main()Respons
Ini adalah foto yang diambil di pantai. Dalam foto tersebut, seseorang dan seekor anjing duduk di atas pasir, dengan laut dan langit di latar belakang. Orang dan anjing tampak sedang berinteraksi, dengan kaki depan anjing bertumpu pada tangan orang tersebut. Sinar matahari datang dari sisi kanan bingkai, menambah suasana hangat pada adegan ini.curl
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3-vl-plus",
"messages": [
{"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"}},
{"type": "text", "text": "Apa yang digambarkan dalam citra ini?"}
]
}]
}'Respons
{
"choices": [
{
"message": {
"content": "Ini adalah foto yang diambil di pantai. Dalam foto tersebut, seseorang dan seekor anjing duduk di atas pasir, dengan laut dan langit di latar belakang. Orang dan anjing tampak sedang berinteraksi, dengan kaki depan anjing bertumpu pada tangan orang tersebut. Sinar matahari datang dari sisi kanan bingkai, menambah suasana hangat pada adegan ini.",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 1270,
"completion_tokens": 54,
"total_tokens": 1324
},
"created": 1725948561,
"system_fingerprint": null,
"model": "qwen3-vl-plus",
"id": "chatcmpl-0fd66f46-b09e-9164-a84f-3ebbbedbac15"
}DashScope
Python
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"text": "Apa yang digambarkan dalam citra ini?"}]
}]
response = dashscope.MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-vl-plus', # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])Respons
Ini adalah foto yang diambil di pantai. Dalam foto tersebut, terdapat seorang wanita dan seekor anjing. Wanita tersebut duduk di atas pasir sambil tersenyum dan berinteraksi dengan anjing tersebut. Anjing tersebut mengenakan kalung dan tampak sedang bersalaman dengan wanita tersebut. Latar belakangnya adalah laut dan langit, serta sinar matahari yang menyinari mereka menciptakan suasana hangat.Java
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.Constants;
public class Main {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
static {
Constants.baseHttpApiUrl="https://dashscope-intl.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://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"),
Collections.singletonMap("text", "Apa yang digambarkan dalam citra ini?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus") // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Respons
Ini adalah foto yang diambil di pantai. Dalam foto tersebut, terdapat seseorang yang mengenakan kemeja kotak-kotak dan seekor anjing yang mengenakan kalung. Orang dan anjing tersebut duduk saling berhadapan, tampak sedang berinteraksi. Latar belakangnya adalah laut dan langit, serta sinar matahari yang menyinari mereka menciptakan suasana hangat.curl
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"text": "Apa yang digambarkan dalam citra ini?"}
]
}
]
}
}'Respons
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "Ini adalah foto yang diambil di pantai. Dalam foto tersebut, terdapat seseorang yang mengenakan kemeja kotak-kotak dan seekor anjing yang mengenakan kalung. Mereka duduk di atas pasir, dengan laut dan langit di latar belakang. Sinar matahari datang dari sisi kanan bingkai, menambah suasana hangat pada adegan ini."
}
]
}
}
]
},
"usage": {
"output_tokens": 55,
"input_tokens": 1271,
"image_tokens": 1247
},
"request_id": "ccf845a3-dc33-9cda-b581-20fe7dc23f70"
}Pemilihan model
Untuk tugas-tugas seperti pengenalan dan lokalisasi objek berpresisi tinggi (termasuk lokalisasi 3D), pemanggilan alat agen, penguraian dokumen dan halaman web, pemecahan masalah kompleks, serta pemahaman video panjang, Qwen3-VL adalah pilihan utama. Perbandingan model dalam seri ini adalah sebagai berikut:
qwen3-vl-plus: Model paling kuat.qwen3-vl-flash: Model ini lebih cepat dan hemat biaya. Ini merupakan opsi bernilai tinggi yang menyeimbangkan performa dan biaya, serta cocok untuk skenario yang sensitif terhadap kecepatan respons.
Untuk tugas sederhana seperti pembuatan keterangan gambar dan ekstraksi ringkasan video pendek, Anda dapat memilih Qwen2.5-VL. Perbandingan model dalam seri ini adalah sebagai berikut:
qwen-vl-max: Model dengan performa terbaik dalam seri Qwen2.5-VL.qwen-vl-plus: Model ini lebih cepat dan memberikan keseimbangan yang baik antara performa dan biaya.
Untuk informasi lebih lanjut tentang nama model, konteks, harga, dan versi snapshot, lihat Daftar model. Untuk informasi lebih lanjut tentang batas permintaan konkuren, lihat Batas laju.
Ikhtisar performa
Menjawab pertanyaan visual
Jelaskan konten citra atau klasifikasikan dan beri label, seperti mengidentifikasi orang, tempat, hewan, dan tumbuhan.
Jika matahari menyilaukan, barang apa dari gambar ini yang harus saya gunakan? | Saat matahari menyilaukan, Anda harus menggunakan kacamata hitam merah muda dari gambar tersebut. Kacamata hitam dapat secara efektif menghalangi cahaya terang, mengurangi kerusakan UV pada mata Anda, serta membantu melindungi penglihatan dan meningkatkan kenyamanan visual dalam sinar matahari yang terang. |
Penulisan kreatif
Hasilkan deskripsi teks yang hidup berdasarkan konten citra atau video. Ini cocok untuk skenario kreatif seperti penulisan cerita, copywriting, dan naskah video pendek.
Tolong bantu saya menulis postingan media sosial yang menarik berdasarkan konten gambar ini. | Tentu, gambar ini penuh dengan suasana Festival Pertengahan Musim Gugur yang kaya, dengan kombinasi cerdas antara elemen klasik dan modern. Berdasarkan elemen utama dalam gambar, saya telah menyiapkan beberapa postingan media sosial dalam gaya berbeda untuk Anda pilih. Gaya puitis dan indah Malam ini bulan bersinar terang dan semua orang menonton, bertanya-tanya ke mana pikiran musim gugur akan jatuh. Chang'e terbang ke bulan, dan Kelinci Giok menumbuk obat—romansa para leluhur menyala malam ini. Semoga bulan yang terang ini menerangi jalan pulang Anda dan membawa kerinduan terdalam saya. Selamat Festival Pertengahan Musim Gugur! Gaya hangat dan penuh berkah Bulan purnama, dan orang-orang berkumpul; malam Pertengahan Musim Gugur adalah yang paling lembut. Menonton kembang api mekar, mengagumi bulan purnama di langit, mengambil sepotong kue bulan, dan berharap damai dan sehat. Semoga semua yang Anda dan saya inginkan dalam hati menjadi kenyataan. Selamat Festival Pertengahan Musim Gugur dan semoga keluarga bahagia! |
OCR dan ekstraksi informasi
Kenali teks dan rumus dalam citra atau ekstrak informasi dari kwitansi, sertifikat, dan formulir, dengan dukungan output teks terformat. Model Qwen3-VL telah memperluas dukungan bahasanya hingga 33 bahasa. Untuk daftar bahasa yang didukung, lihat Perbandingan fitur model.
Ekstrak dari citra berikut: ['Kode Faktur', 'Nomor Faktur', 'Tujuan', 'Biaya Bahan Bakar', 'Tarif', 'Tanggal Perjalanan', 'Waktu Keberangkatan', 'Nomor Kereta', 'Nomor Kursi']. Harap keluarkan dalam format JSON. | { "Kode Faktur": "221021325353", "Nomor Faktur": "10283819", "Tujuan": "Zona Pengembangan", "Biaya Bahan Bakar": "2.0", "Tarif": "8.00<Full>", "Tanggal Perjalanan": "2013-06-29", "Waktu Keberangkatan": "Serial", "Nomor Kereta": "040", "Nomor Kursi": "371" } |
Pemecahan masalah multidisiplin
Selesaikan masalah dalam citra, seperti masalah matematika, fisika, dan kimia. Fitur ini cocok untuk pendidikan dasar, menengah, universitas, dan dewasa.
Harap selesaikan soal matematika dalam citra ini langkah demi langkah. |
|
Pengkodean visual
Hasilkan kode dari citra atau video. Ini dapat digunakan untuk membuat kode HTML, CSS, dan JS dari rancangan desain, tangkapan layar situs web, dan lainnya.
Rancang halaman web menggunakan HTML dan CSS berdasarkan sketsa saya, dengan warna hitam sebagai warna utama. |
Pratinjau halaman web |
Deteksi objek
Model mendukung lokalisasi 2D dan 3D, yang dapat digunakan untuk menentukan orientasi objek, perubahan perspektif, dan hubungan oklusi. Lokalisasi 3D adalah fitur baru dari model Qwen3-VL.
Untuk model Qwen2.5-VL, deteksi objek kuat dalam rentang resolusi 480×480 hingga 2560×2560. Di luar rentang ini, akurasi deteksi dapat menurun, dengan sesekali terjadi deviasi kotak pembatas.
Untuk informasi lebih lanjut tentang cara menggambar hasil lokalisasi pada citra asli, lihat FAQ.
Lokalisasi 2D
| Visualisasi hasil lokalisasi 2D
|
Penguraian dokumen
Uraikan dokumen berbasis citra, seperti pindaian atau PDF citra, ke dalam format HTML QwenVL atau Markdown QwenVL. Format ini tidak hanya mengenali teks secara akurat tetapi juga mendapatkan informasi posisi elemen seperti citra dan tabel. Model Qwen3-VL menambahkan kemampuan untuk mengurai dokumen ke dalam format Markdown.
Prompt yang direkomendasikan adalah:qwenvl html(untuk mengurai ke format HTML) atauqwenvl markdown(untuk mengurai ke format Markdown)
qwenvl markdown. |
Visualisasi hasil |
Pemahaman video
Analisis konten video, seperti menemukan peristiwa spesifik dan mendapatkan stempel waktu, atau menghasilkan ringkasan periode waktu kunci.
Harap jelaskan rangkaian tindakan orang dalam video ini. Keluarkan dalam format JSON dengan start_time, end_time, dan event. Gunakan HH:mm:ss untuk stempel waktu. | { "events": [ { "start_time": "00:00:00", "end_time": "00:00:05", "event": "Orang tersebut berjalan menuju meja sambil memegang kotak kardus dan meletakkannya di atas meja." }, { "start_time": "00:00:05", "end_time": "00:00:15", "event": "Orang tersebut mengambil pemindai dan memindai label pada kotak kardus." }, { "start_time": "00:00:15", "end_time": "00:00:21", "event": "Orang tersebut meletakkan kembali pemindai ke tempatnya lalu mengambil pena untuk menulis informasi di buku catatan."}] } |
Fitur inti
Aktifkan atau nonaktifkan mode pemikiran
Model seri qwen3-vl-plus dan qwen3-vl-flash adalah model pemikiran hibrida. Mereka dapat merespons setelah berpikir atau merespons langsung. Gunakan parameter
enable_thinkinguntuk mengontrol apakah mode pemikiran diaktifkan:truefalse(default)
Model dengan akhiran `thinking`, seperti qwen3-vl-235b-a22b-thinking, adalah model pemikiran saja. Mereka selalu berpikir sebelum merespons, dan Anda tidak dapat menonaktifkan fitur ini.
Konfigurasi model: Dalam skenario percakapan umum yang tidak melibatkan pemanggilan alat agen, kami merekomendasikan agar Anda tidak mengatur
System Messageuntuk mempertahankan performa optimal. Anda dapat meneruskan instruksi seperti pengaturan peran model dan persyaratan format output melaluiUser Message.Utamakan keluaran streaming: Saat mode pemikiran diaktifkan, keluaran streaming dan non-streaming didukung. Untuk menghindari timeout karena konten respons yang panjang, kami merekomendasikan agar Anda mengutamakan penggunaan keluaran streaming.
Batasi panjang pemikiran: Model pemikiran mendalam terkadang menghasilkan proses penalaran yang panjang. Anda dapat menggunakan parameter
thinking_budgetuntuk membatasi panjang proses pemikiran. Jika jumlah token yang dihasilkan selama proses pemikiran model melebihithinking_budget, konten penalaran dipotong, dan model segera mulai menghasilkan respons akhir. Nilai defaultthinking_budgetadalah panjang maksimum rantai-pikiran model. Untuk informasi lebih lanjut, lihat Daftar model.
Kompatibel dengan OpenAI
Parameter enable_thinking bukan parameter standar OpenAI. Jika Anda menggunakan OpenAI Python SDK, Anda dapat meneruskannya melalui extra_body.
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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"),
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # Definisikan proses pemikiran lengkap
answer_content = "" # Definisikan respons lengkap
is_answering = False # Tentukan apakah akan mengakhiri proses pemikiran dan mulai merespons
enable_thinking = True
# Buat permintaan penyelesaian chat
completion = client.chat.completions.create(
model="qwen3-vl-plus",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
},
},
{"type": "text", "text": "Bagaimana cara menyelesaikan masalah ini?"},
],
},
],
stream=True,
# Parameter enable_thinking mengaktifkan proses pemikiran, dan parameter thinking_budget menetapkan jumlah maksimum token untuk proses penalaran.
# Untuk qwen3-vl-plus dan qwen3-vl-flash, pemikiran dapat diaktifkan atau dinonaktifkan dengan enable_thinking. Untuk model dengan akhiran 'thinking', seperti qwen3-vl-235b-a22b-thinking, enable_thinking hanya dapat diatur ke true. Ini tidak berlaku untuk model Qwen-VL lainnya.
extra_body={
'enable_thinking': enable_thinking,
"thinking_budget": 81920},
# Hapus komentar pada baris berikut untuk mengembalikan penggunaan token dalam chunk terakhir
# stream_options={
# "include_usage": True
# }
)
if enable_thinking:
print("\n" + "=" * 20 + "Proses Pemikiran" + "=" * 20 + "\n")
for chunk in completion:
# Jika chunk.choices kosong, cetak penggunaan
if not chunk.choices:
print("\nPenggunaan:")
print(chunk.usage)
else:
delta = chunk.choices[0].delta
# Cetak proses pemikiran
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
# Mulai merespons
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "Respons Lengkap" + "=" * 20 + "\n")
is_answering = True
# Cetak proses respons
print(delta.content, end='', flush=True)
answer_content += delta.content
# print("=" * 20 + "Proses Pemikiran Lengkap" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "Respons Lengkap" + "=" * 20 + "\n")
# print(answer_content)import OpenAI from "openai";
// Inisialisasi klien OpenAI
const openai = new OpenAI({
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
let reasoningContent = '';
let answerContent = '';
let isAnswering = false;
let enableThinking = true;
let messages = [
{
role: "user",
content: [
{ type: "image_url", image_url: { "url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg" } },
{ type: "text", text: "Selesaikan masalah ini" },
]
}]
async function main() {
try {
const stream = await openai.chat.completions.create({
model: 'qwen3-vl-plus',
messages: messages,
stream: true,
// Catatan: Di Node.js SDK, parameter non-standar seperti enableThinking diteruskan sebagai properti tingkat atas dan tidak perlu berada di extra_body.
enable_thinking: enableThinking,
thinking_budget: 81920
});
if (enableThinking){console.log('\n' + '='.repeat(20) + 'Proses Pemikiran' + '='.repeat(20) + '\n');}
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\nPenggunaan:');
console.log(chunk.usage);
continue;
}
const delta = chunk.choices[0].delta;
// Proses pemikiran
if (delta.reasoning_content) {
process.stdout.write(delta.reasoning_content);
reasoningContent += delta.reasoning_content;
}
// Proses respons formal
else if (delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + 'Respons Lengkap' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('Error:', error);
}
}
main();# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3-vl-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
}
},
{
"type": "text",
"text": "Tolong selesaikan masalah ini"
}
]
}
],
"stream":true,
"stream_options":{"include_usage":true},
"enable_thinking": true,
"thinking_budget": 81920
}'DashScope
import os
import dashscope
from dashscope import MultiModalConversation
# Jika Anda menggunakan model di wilayah Singapura, hapus komentar pada baris berikut.
# dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
enable_thinking=True
messages = [
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "Selesaikan masalah ini?"}
]
}
]
response = MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx",
# Kunci API untuk wilayah Singapura dan China (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-vl-plus",
messages=messages,
stream=True,
# Parameter enable_thinking mengaktifkan proses pemikiran.
# Untuk qwen3-vl-plus dan qwen3-vl-flash, pemikiran dapat diaktifkan atau dinonaktifkan dengan enable_thinking. Untuk model dengan akhiran 'thinking', seperti qwen3-vl-235b-a22b-thinking, enable_thinking hanya dapat diatur ke true. Ini tidak berlaku untuk model Qwen-VL lainnya.
enable_thinking=enable_thinking,
# Parameter thinking_budget menetapkan jumlah maksimum token untuk proses penalaran.
thinking_budget=81920,
)
# Definisikan proses pemikiran lengkap
reasoning_content = ""
# Definisikan respons lengkap
answer_content = ""
# Tentukan apakah akan mengakhiri proses pemikiran dan mulai merespons
is_answering = False
if enable_thinking:
print("=" * 20 + "Proses Pemikiran" + "=" * 20)
for chunk in response:
# Jika proses pemikiran dan respons keduanya kosong, abaikan
message = chunk.output.choices[0].message
reasoning_content_chunk = message.get("reasoning_content", None)
if (chunk.output.choices[0].message.content == [] and
reasoning_content_chunk == ""):
pass
else:
# Jika saat ini dalam proses pemikiran
if reasoning_content_chunk != None and chunk.output.choices[0].message.content == []:
print(chunk.output.choices[0].message.reasoning_content, end="")
reasoning_content += chunk.output.choices[0].message.reasoning_content
# Jika saat ini merespons
elif chunk.output.choices[0].message.content != []:
if not is_answering:
print("\n" + "=" * 20 + "Respons Lengkap" + "=" * 20)
is_answering = True
print(chunk.output.choices[0].message.content[0]["text"], end="")
answer_content += chunk.output.choices[0].message.content[0]["text"]
# Untuk mencetak proses pemikiran lengkap dan respons lengkap, hapus komentar dan jalankan kode berikut
# print("=" * 20 + "Proses Pemikiran Lengkap" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "Respons Lengkap" + "=" * 20 + "\n")
# print(f"{answer_content}")// Versi DashScope SDK >= 2.21.10
import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
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.exception.UploadFileException;
import com.alibaba.dashscope.exception.InputRequiredException;
import java.lang.System;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";}
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static StringBuilder reasoningContent = new StringBuilder();
private static StringBuilder finalContent = new StringBuilder();
private static boolean isFirstPrint = true;
private static void handleGenerationResult(MultiModalConversationResult message) {
String re = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
String reasoning = Objects.isNull(re)?"":re; // Nilai default
List<Map<String, Object>> content = message.getOutput().getChoices().get(0).getMessage().getContent();
if (!reasoning.isEmpty()) {
reasoningContent.append(reasoning);
if (isFirstPrint) {
System.out.println("====================Proses Pemikiran====================");
isFirstPrint = false;
}
System.out.print(reasoning);
}
if (Objects.nonNull(content) && !content.isEmpty()) {
Object text = content.get(0).get("text");
finalContent.append(content.get(0).get("text"));
if (!isFirstPrint) {
System.out.println("\n====================Respons Lengkap====================");
isFirstPrint = true;
}
System.out.print(text);
}
}
public static MultiModalConversationParam buildMultiModalConversationParam(MultiModalMessage Msg) {
return MultiModalConversationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
// Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.messages(Arrays.asList(Msg))
.enableThinking(true)
.thinkingBudget(81920)
.incrementalOutput(true)
.build();
}
public static void streamCallWithMessage(MultiModalConversation conv, MultiModalMessage Msg)
throws NoApiKeyException, ApiException, InputRequiredException, UploadFileException {
MultiModalConversationParam param = buildMultiModalConversationParam(Msg);
Flowable<MultiModalConversationResult> result = conv.streamCall(param);
result.blockingForEach(message -> {
handleGenerationResult(message);
});
}
public static void main(String[] args) {
try {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMsg = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(Collections.singletonMap("image", "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"),
Collections.singletonMap("text", "Tolong selesaikan masalah ini")))
.build();
streamCallWithMessage(conv, userMsg);
// Cetak hasil akhir
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================Respons Lengkap====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | UploadFileException | InputRequiredException e) {
logger.error("Terjadi pengecualian: {}", e.getMessage());
}
System.exit(0);
}
}# ======= Penting =======
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# URL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti URL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "Tolong selesaikan masalah ini"}
]
}
]
},
"parameters":{
"enable_thinking": true,
"incremental_output": true,
"thinking_budget": 81920
}
}'Input citra ganda
Model Qwen-VL mendukung meneruskan beberapa citra dalam satu permintaan, yang dapat digunakan untuk tugas seperti perbandingan produk dan pemrosesan dokumen multi-halaman. Untuk melakukan ini, Anda dapat menyertakan beberapa objek citra dalam larik content dari pesan pengguna.
Jumlah citra dibatasi oleh batas token total model untuk teks dan citra. Jumlah total token untuk semua citra dan teks harus kurang dari input maksimum model.
Kompatibel dengan OpenAI
Python
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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"),
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope-intl.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-vl-plus", # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=[
{"role": "user","content": [
{"type": "image_url","image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},},
{"type": "image_url","image_url": {"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},},
{"type": "text", "text": "Apa yang digambarkan dalam citra-citra ini?"},
],
}
],
)
print(completion.choices[0].message.content)Respons
Citra 1 menunjukkan adegan seorang wanita dan seekor Labrador retriever yang berinteraksi di pantai. Wanita tersebut mengenakan kemeja kotak-kotak dan duduk di atas pasir, bersalaman dengan anjing tersebut. Latar belakangnya adalah ombak laut dan langit, serta keseluruhan gambar dipenuhi suasana hangat dan menyenangkan.
Citra 2 menunjukkan adegan seekor harimau yang berjalan di hutan. Bulu harimau tersebut berwarna oranye dengan garis-garis hitam, dan ia sedang melangkah maju. Sekelilingnya adalah pepohonan dan vegetasi yang lebat, serta tanah ditutupi daun-daun yang gugur. Keseluruhan gambar memberikan perasaan alam liar yang alami.Node.js
import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3-vl-plus", // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{role: "user",content: [
{type: "image_url",image_url: {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"}},
{type: "image_url",image_url: {"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"}},
{type: "text", text: "Apa yang digambarkan dalam citra-citra ini?" },
]}]
});
console.log(response.choices[0].message.content);
}
main()Respons
Pada citra pertama, seseorang dan seekor anjing berinteraksi di pantai. Orang tersebut mengenakan kemeja kotak-kotak, dan anjing tersebut mengenakan kalung. Mereka tampak sedang bersalaman atau tos.
Pada citra kedua, seekor harimau sedang berjalan di hutan. Bulu harimau tersebut berwarna oranye dengan garis-garis hitam, dan latar belakangnya adalah pepohonan dan vegetasi hijau.curl
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"
}
},
{
"type": "text",
"text": "Apa yang digambarkan dalam citra-citra ini?"
}
]
}
]
}'Respons
{
"choices": [
{
"message": {
"content": "Citra 1 menunjukkan adegan seorang wanita dan seekor Labrador retriever yang berinteraksi di pantai. Wanita tersebut mengenakan kemeja kotak-kotak dan duduk di atas pasir, bersalaman dengan anjing tersebut. Latar belakangnya adalah pemandangan laut dan langit senja, serta keseluruhan gambar terlihat sangat hangat dan harmonis.\n\nCitra 2 menunjukkan adegan seekor harimau yang berjalan di hutan. Bulu harimau tersebut berwarna oranye dengan garis-garis hitam, dan ia sedang melangkah maju. Sekelilingnya adalah pepohonan dan vegetasi yang lebat, serta tanah ditutupi daun-daun yang gugur. Keseluruhan gambar penuh dengan kehidupan dan vitalitas alam liar.",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 2497,
"completion_tokens": 109,
"total_tokens": 2606
},
"created": 1725948561,
"system_fingerprint": null,
"model": "qwen3-vl-plus",
"id": "chatcmpl-0fd66f46-b09e-9164-a84f-3ebbbedbac15"
}DashScope
Python
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},
{"text": "Apa yang digambarkan dalam citra-citra ini?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-vl-plus', # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])Respons
Citra-citra ini menunjukkan beberapa hewan dan pemandangan alam. Pada citra pertama, seseorang dan seekor anjing berinteraksi di pantai. Citra kedua adalah seekor harimau yang berjalan di hutan.Java
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.Constants;
public class Main {
static {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.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://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"),
Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"),
Collections.singletonMap("text", "Apa yang digambarkan dalam citra-citra ini?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus") // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text")); }
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Respons
Citra-citra ini menunjukkan beberapa hewan dan pemandangan alam.
1. Citra pertama: Seorang wanita dan seekor anjing berinteraksi di pantai. Wanita tersebut mengenakan kemeja kotak-kotak dan duduk di atas pasir, sedangkan anjing tersebut mengenakan kalung dan mengulurkan kakinya untuk bersalaman dengan wanita tersebut.
2. Citra kedua: Seekor harimau berjalan di hutan. Bulu harimau tersebut berwarna oranye dengan garis-garis hitam, dan latar belakangnya adalah pepohonan dan daun-daun.curl
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},
{"text": "Apa yang ditunjukkan citra-citra ini?"}
]
}
]
}
}'Respons
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "Citra-citra ini menunjukkan beberapa hewan dan pemandangan alam. Pada citra pertama, seseorang dan seekor anjing berinteraksi di pantai. Citra kedua adalah seekor harimau yang berjalan di hutan."
}
]
}
}
]
},
"usage": {
"output_tokens": 81,
"input_tokens": 1277,
"image_tokens": 2497
},
"request_id": "ccf845a3-dc33-9cda-b581-20fe7dc23f70"
}Pemahaman video
Model Qwen-VL mendukung pemahaman konten video. Anda dapat menyediakan file dalam bentuk daftar citra (frame video) atau file video.
Kami merekomendasikan agar Anda menggunakan versi snapshot terbaru atau terkini dari model untuk performa yang lebih baik dalam memahami file video.
File video
Ekstraksi frame video
Model Qwen-VL menganalisis konten dengan mengekstraksi rangkaian frame dari video. Frekuensi ekstraksi frame menentukan tingkat detail dalam analisis model. SDK yang berbeda memiliki frekuensi ekstraksi frame yang berbeda:
Menggunakan
DashScope SDK:Anda dapat mengontrol interval ekstraksi frame (satu frame diekstraksi setiap
detik) menggunakan parameter fps. Rentang untuk parameter ini adalah (0.1, 10), dengan nilai default2.0. Kami merekomendasikan agar Anda mengaturfpsyang lebih tinggi untuk adegan gerakan cepat danfpsyang lebih rendah untuk video statis atau panjang.
Menggunakan
OpenAIkompatibelSDK: Frame diekstraksi pada frekuensi tetap1frame per0,5detik, dan kustomisasi tidak didukung.
Berikut adalah contoh kode untuk memahami video online yang ditentukan oleh URL. Untuk informasi lebih lanjut, lihat Cara meneruskan file lokal.
Kompatibel dengan OpenAI
Saat Anda langsung memasukkan file video ke model Qwen-VL menggunakan SDK OpenAI atau metode HTTP, Anda harus mengatur parameter"type"dalam pesan pengguna ke"video_url".
Python
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-vl-plus",
messages=[
{"role": "user","content": [{
# Saat meneruskan file video langsung, atur nilai type ke video_url
# Saat menggunakan SDK OpenAI, file video diambil sampelnya pada laju default satu frame setiap 0.5 detik, yang tidak dapat dimodifikasi. Untuk menyesuaikan laju frame, gunakan DashScope SDK.
"type": "video_url",
"video_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"}},
{"type": "text","text": "Apa isi video ini?"}]
}]
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3-vl-plus",
messages: [
{role: "user",content: [
// Saat meneruskan file video langsung, atur nilai type ke video_url
// Saat menggunakan SDK OpenAI, file video diambil sampelnya pada laju default satu frame setiap 0.5 detik, yang tidak dapat dimodifikasi. Untuk menyesuaikan laju frame, gunakan DashScope SDK.
{type: "video_url", video_url: {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"}},
{type: "text", text: "Apa isi video ini?" },
]}]
});
console.log(response.choices[0].message.content);
}
main()curl
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"messages": [
{"role": "user","content": [{"type": "video_url","video_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"}},
{"type": "text","text": "Apa isi video ini?"}]}]
}'DashScope
Python
import dashscope
import os
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{"role": "user",
"content": [
# Parameter fps dapat mengontrol frekuensi ekstraksi frame video, artinya satu frame diekstraksi setiap 1/fps detik. Untuk penggunaan lengkap, lihat https://www.alibabacloud.com/help/en/model-studio/use-qwen-by-calling-api?#2ed5ee7377fum
{"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4","fps":2},
{"text": "Apa isi video ini?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key ="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-vl-plus',
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])Java
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
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 {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// Parameter fps mengontrol frekuensi ekstraksi frame video, artinya satu frame diekstraksi setiap 1/fps detik. Untuk penggunaan lengkap, lihat https://www.alibabacloud.com/help/en/model-studio/use-qwen-by-calling-api?#2ed5ee7377fum
Map<String, Object> params = new HashMap<>();
params.put("video", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4");
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
params,
Collections.singletonMap("text", "Apa isi video ini?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Jika Anda menggunakan model di wilayah China (Beijing), Anda perlu menggunakan kunci API dari wilayah China (Beijing). Dapatkan tautan: https://bailian.console.alibabacloud.com/?tab=model#/api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{"role": "user","content": [{"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4","fps":2},
{"text": "Apa isi video ini?"}]}]}
}'Daftar citra
Batas jumlah daftar citra
Seri qwen3-vl-plus: Minimum 4 citra dan maksimum 2.000 citra.Seri qwen3-vl-flash, modelQwen2.5-VL, dan seriQVQ: Minimum 4 citra dan maksimum 512 citra.Model lainnya: Minimum 4 citra dan maksimum 80 citra.
Ekstraksi frame video
Saat video diteruskan sebagai daftar citra (frame video yang telah diekstraksi sebelumnya), Anda dapat menggunakan parameter fps untuk memberi tahu model tentang interval waktu antar frame video. Ini membantu model memahami urutan, durasi, dan perubahan dinamis peristiwa dengan lebih baik.
DashScope SDK:
SDK ini mendukung menentukan laju frame video asli menggunakan parameter
fps, yang menunjukkan bahwa frame video diekstraksi dari video asli setiapdetik. Parameter ini didukung oleh model Qwen2.5-VL dan Qwen3-VL. SDK kompatibel OpenAI:
SDK ini tidak mendukung parameter
fps. Model mengasumsikan bahwa frame video diekstraksi pada frekuensi default satu frame setiap 0,5 detik.
Berikut adalah contoh kode untuk memahami frame video online yang ditentukan oleh URL. Untuk informasi lebih lanjut, lihat Cara meneruskan file lokal.
Kompatibel dengan OpenAI
Saat Anda memasukkan video sebagai daftar citra ke model Qwen-VL menggunakan SDK OpenAI atau metode HTTP, Anda harus mengatur parameter"type"dalam pesan pengguna ke"video".
Python
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope-intl.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-vl-plus", # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=[{"role": "user","content": [
# Saat meneruskan daftar citra, parameter "type" dalam pesan pengguna adalah "video".
# Saat menggunakan SDK OpenAI, daftar citra diasumsikan diekstraksi dari video pada interval default 0.5 detik, yang tidak dapat dimodifikasi. Untuk menyesuaikan laju frame, gunakan DashScope SDK.
{"type": "video","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"]},
{"type": "text","text": "Jelaskan proses spesifik video ini"},
]}]
)
print(completion.choices[0].message.content)Node.js
// Pastikan Anda telah menentukan "type": "module" di package.json sebelumnya.
import OpenAI from "openai";
const openai = new OpenAI({
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope-intl.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3-vl-plus", // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [{
role: "user",
content: [
{
// Saat meneruskan daftar citra, parameter "type" dalam pesan pengguna adalah "video".
// Saat menggunakan SDK OpenAI, daftar citra diasumsikan diekstraksi dari video pada interval default 0.5 detik, yang tidak dapat dimodifikasi. Untuk menyesuaikan laju frame, gunakan DashScope SDK.
type: "video",
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"
]
},
{
type: "text",
text: "Jelaskan proses spesifik video ini"
}
]
}]
});
console.log(response.choices[0].message.content);
}
main();curl
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"messages": [{"role": "user",
"content": [{"type": "video",
"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"]},
{"type": "text",
"text": "Jelaskan proses spesifik video ini"}]}]
}'DashScope
Python
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{"role": "user",
"content": [
# Jika model termasuk seri Qwen2.5-VL atau Qwen3-VL dan daftar citra diteruskan, Anda dapat mengatur parameter fps untuk menunjukkan bahwa daftar citra 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": "Jelaskan proses spesifik video ini"}]}]
response = dashscope.MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen3-vl-plus', # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/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 {
// base_url berikut adalah untuk Wilayah Singapura. Jika Anda menggunakan model di Wilayah China (Beijing), ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static final String MODEL_NAME = "qwen3-vl-plus"; // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
public static void videoImageListSample() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// Jika model termasuk dalam seri Qwen2.5-VL atau Qwen3-VL dan daftar citra diteruskan, Anda dapat mengatur parameter fps untuk menunjukkan bahwa daftar citra diekstrak dari video asli setiap 1/fps detik.
Map<String, Object> params = new HashMap<>();
params.put("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"));
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(
params,
Collections.singletonMap("text", "Describe the specific process of this video")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk Wilayah Singapura dan China (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(MODEL_NAME)
.messages(Arrays.asList(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
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"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": "Jelaskan proses spesifik video ini"
}
]
}
]
}
}'Meneruskan file lokal (encoding Base64 atau jalur file)
Qwen-VL menyediakan dua cara untuk mengunggah file lokal: encoding Base64 dan unggahan jalur file langsung. Anda dapat memilih metode unggah berdasarkan ukuran file dan jenis SDK. Untuk rekomendasi spesifik, lihat Cara memilih metode unggah file. Kedua metode harus memenuhi persyaratan file yang dijelaskan dalam Batasan citra.
Unggahan encoding Base64
Anda dapat mengonversi file menjadi string terenkripsi Base64 lalu meneruskannya ke model. Ini berlaku untuk SDK OpenAI dan DashScope serta metode HTTP.
Unggahan jalur file
Anda dapat langsung meneruskan jalur file lokal ke model. Metode ini hanya didukung oleh DashScope Python dan Java SDK, tidak didukung oleh DashScope HTTP atau metode kompatibel OpenAI.
Anda dapat merujuk pada tabel berikut untuk menentukan jalur file berdasarkan bahasa pemrograman dan sistem operasi Anda.
Citra
Diteruskan melalui jalur file
Python
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Ganti xxx/eagle.png dengan jalur mutlak citra lokal Anda
local_path = "xxx/eagle.png"
image_path = f"file://{local_path}"
messages = [
{'role':'user',
'content': [{'image': image_path},
{'text': 'Apa yang digambarkan dalam citra ini?'}]}]
response = dashscope.MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-vl-plus', # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
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 {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void callWithLocalFile(String localPath)
throws ApiException, NoApiKeyException, UploadFileException {
String filePath = "file://"+localPath;
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>(){{put("image", filePath);}},
new HashMap<String, Object>(){{put("text", "Apa yang digambarkan dalam citra ini?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus") // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));}
public static void main(String[] args) {
try {
// Ganti xxx/eagle.png dengan jalur mutlak citra lokal Anda
callWithLocalFile("xxx/eagle.png");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Diteruskan melalui encoding Base64
Kompatibel dengan OpenAI
Python
from openai import OpenAI
import os
import base64
# Fungsi enkripsi: Mengonversi file lokal menjadi string terenkripsi Base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Ganti xxxx/eagle.png dengan jalur mutlak citra lokal Anda
base64_image = encode_image("xxx/eagle.png")
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-vl-plus", # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
# Teruskan data citra Base64. Perhatikan bahwa format citra (yaitu image/{format}) harus sesuai dengan Jenis Konten dalam daftar citra yang didukung. "f" adalah metode pemformatan string.
# Citra PNG: f"data:image/png;base64,{base64_image}"
# Citra JPEG: f"data:image/jpeg;base64,{base64_image}"
# Citra WEBP: f"data:image/webp;base64,{base64_image}"
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
},
{"type": "text", "text": "Apa yang digambarkan dalam citra ini?"},
],
}
],
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
// Ganti xxx/eagle.png dengan jalur mutlak citra lokal Anda
const base64Image = encodeImage("xxx/eagle.png")
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen3-vl-plus", // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{"role": "user",
"content": [{"type": "image_url",
// Perhatikan bahwa saat meneruskan Base64, format citra (yaitu image/{format}) harus sesuai dengan Jenis Konten dalam daftar citra yang didukung.
// Citra PNG: data:image/png;base64,${base64Image}
// Citra JPEG: data:image/jpeg;base64,${base64Image}
// Citra WEBP: data:image/webp;base64,${base64Image}
"image_url": {"url": `data:image/png;base64,${base64Image}`},},
{"type": "text", "text": "Apa yang digambarkan dalam citra ini?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();curl
Untuk informasi lebih lanjut tentang metode mengonversi file menjadi string terenkripsi Base64, lihat Kode contoh.
Untuk tujuan tampilan, string terenkripsi Base64
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, Anda harus meneruskan string terenkripsi lengkap.
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3-vl-plus",
"messages": [
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA"}},
{"type": "text", "text": "Apa yang digambarkan dalam citra ini?"}
]
}]
}'DashScope
Python
import base64
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Fungsi enkripsi: Mengonversi file lokal menjadi string terenkripsi Base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Ganti xxxx/eagle.png dengan jalur mutlak citra lokal Anda
base64_image = encode_image("xxxx/eagle.png")
messages = [
{
"role": "user",
"content": [
# Perhatikan bahwa saat meneruskan Base64, format citra (yaitu image/{format}) harus sesuai dengan Jenis Konten dalam daftar citra yang didukung. "f" adalah metode pemformatan string.
# Citra PNG: f"data:image/png;base64,{base64_image}"
# Citra JPEG: f"data:image/jpeg;base64,{base64_image}"
# Citra WEBP: f"data:image/webp;base64,{base64_image}"
{"image": f"data:image/png;base64,{base64_image}"},
{"text": "Apa yang digambarkan dalam citra ini?"},
],
},
]
response = dashscope.MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen3-vl-plus", # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages,
)
print(response.output.choices[0].message.content[0]["text"])Java
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Base64;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.alibaba.dashscope.aigc.multimodalconversation.*;
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 {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static String encodeImageToBase64(String imagePath) throws IOException {
Path path = Paths.get(imagePath);
byte[] imageBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(imageBytes);
}
public static void callWithLocalFile(String localPath) throws ApiException, NoApiKeyException, UploadFileException, IOException {
String base64Image = encodeImageToBase64(localPath); // Enkripsi Base64
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
new HashMap<String, Object>() {{ put("image", "data:image/png;base64," + base64Image); }},
new HashMap<String, Object>() {{ put("text", "Apa yang digambarkan dalam citra ini?"); }}
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// Ganti xxx/eagle.png dengan jalur mutlak citra lokal Anda
callWithLocalFile("xxx/eagle.png");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
Untuk informasi lebih lanjut tentang metode mengonversi file menjadi string terenkripsi Base64, lihat Kode contoh.
Untuk tujuan tampilan, string terenkripsi Base64
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, Anda harus meneruskan string terenkripsi lengkap.
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},
{"text": "Apa yang digambarkan dalam citra ini?"}
]
}
]
}
}'File video
Contoh ini menggunakan file test.mp4 yang disimpan secara lokal.
Diteruskan melalui jalur file
Python
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Ganti xxxx/test.mp4 dengan jalur mutlak video lokal Anda
local_path = "xxx/test.mp4"
video_path = f"file://{local_path}"
messages = [
{'role':'user',
# Parameter fps mengontrol jumlah frame yang diekstraksi dari video, artinya satu frame diekstraksi setiap 1/fps detik.
'content': [{'video': video_path,"fps":2},
{'text': 'Adegan apa yang digambarkan video ini?'}]}]
response = MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-vl-plus',
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
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 {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void callWithLocalFile(String localPath)
throws ApiException, NoApiKeyException, UploadFileException {
String filePath = "file://"+localPath;
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>()
{{
put("video", filePath);// Parameter fps mengontrol jumlah frame yang diekstraksi dari video, artinya satu frame diekstraksi setiap 1/fps detik.
put("fps", 2);
}},
new HashMap<String, Object>(){{put("text", "Adegan apa yang digambarkan video ini?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));}
public static void main(String[] args) {
try {
// Ganti xxxx/test.mp4 dengan jalur mutlak video lokal Anda
callWithLocalFile("xxx/test.mp4");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Diteruskan melalui encoding Base64
Kompatibel dengan OpenAI
Python
from openai import OpenAI
import os
import base64
# Fungsi enkripsi: Mengonversi file lokal menjadi string terenkripsi Base64
def encode_video(video_path):
with open(video_path, "rb") as video_file:
return base64.b64encode(video_file.read()).decode("utf-8")
# Ganti xxxx/test.mp4 dengan jalur mutlak video lokal Anda
base64_video = encode_video("xxx/test.mp4")
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-vl-plus",
messages=[
{
"role": "user",
"content": [
{
# Saat meneruskan file video langsung, atur nilai type ke video_url
"type": "video_url",
"video_url": {"url": f"data:video/mp4;base64,{base64_video}"},
},
{"type": "text", "text": "Adegan apa yang digambarkan video ini?"},
],
}
],
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeVideo = (videoPath) => {
const videoFile = readFileSync(videoPath);
return videoFile.toString('base64');
};
// Ganti xxxx/test.mp4 dengan jalur mutlak video lokal Anda
const base64Video = encodeVideo("xxx/test.mp4")
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen3-vl-plus",
messages: [
{"role": "user",
"content": [{
// Saat meneruskan file video langsung, atur nilai type ke video_url
"type": "video_url",
"video_url": {"url": `data:video/mp4;base64,${base64Video}`}},
{"type": "text", "text": "Adegan apa yang digambarkan video ini?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();
curl
Untuk informasi lebih lanjut tentang metode mengonversi file menjadi string terenkripsi Base64, lihat Kode contoh.
Untuk tujuan tampilan, string terenkripsi Base64
"data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, Anda harus meneruskan string terenkripsi lengkap.
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3-vl-plus",
"messages": [
{
"role": "user",
"content": [
{"type": "video_url", "video_url": {"url": "data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."}},
{"type": "text", "text": "Apa yang digambarkan dalam citra ini?"}
]
}]
}'DashScope
Python
import base64
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Fungsi enkripsi: Mengonversi file lokal menjadi string terenkripsi Base64
def encode_video(video_path):
with open(video_path, "rb") as video_file:
return base64.b64encode(video_file.read()).decode("utf-8")
# Ganti xxxx/test.mp4 dengan jalur mutlak video lokal Anda
base64_video = encode_video("xxxx/test.mp4")
messages = [{'role':'user',
# Parameter fps mengontrol jumlah frame yang diekstraksi dari video, artinya satu frame diekstraksi setiap 1/fps detik.
'content': [{'video': f"data:video/mp4;base64,{base64_video}","fps":2},
{'text': 'Adegan apa yang digambarkan video ini?'}]}]
response = MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-vl-plus',
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
import java.io.IOException;
import java.util.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.alibaba.dashscope.aigc.multimodalconversation.*;
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 {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static String encodeVideoToBase64(String videoPath) throws IOException {
Path path = Paths.get(videoPath);
byte[] videoBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(videoBytes);
}
public static void callWithLocalFile(String localPath)
throws ApiException, NoApiKeyException, UploadFileException, IOException {
String base64Video = encodeVideoToBase64(localPath); // Enkripsi Base64
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>()
{{
put("video", "data:video/mp4;base64," + base64Video);// Parameter fps mengontrol jumlah frame yang diekstraksi dari video, artinya satu frame diekstraksi setiap 1/fps detik.
put("fps", 2);
}},
new HashMap<String, Object>(){{put("text", "Adegan apa yang digambarkan video ini?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// Ganti xxx/test.mp4 dengan jalur mutlak citra lokal Anda
callWithLocalFile("xxx/test.mp4");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
Untuk informasi lebih lanjut tentang metode mengonversi file menjadi string terenkripsi Base64, lihat Kode contoh.
Untuk tujuan tampilan, string terenkripsi Base64
"f"data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, Anda harus meneruskan string terenkripsi lengkap.
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"video": "data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},
{"text": "Apa yang digambarkan dalam citra ini?"}
]
}
]
}
}'Daftar citra
Contoh ini menggunakan file yang disimpan secara lokal: football1.jpg, football2.jpg, football3.jpg, dan football4.jpg.
Diteruskan melalui jalur file
Python
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
local_path1 = "football1.jpg"
local_path2 = "football2.jpg"
local_path3 = "football3.jpg"
local_path4 = "football4.jpg"
image_path1 = f"file://{local_path1}"
image_path2 = f"file://{local_path2}"
image_path3 = f"file://{local_path3}"
image_path4 = f"file://{local_path4}"
messages = [{'role':'user',
# Jika model termasuk seri Qwen2.5-VL dan daftar citra diteruskan, Anda dapat mengatur parameter fps untuk menunjukkan bahwa daftar citra diekstraksi dari video asli setiap 1/fps detik. Pengaturan ini tidak efektif untuk model lain.
'content': [{'video': [image_path1,image_path2,image_path3,image_path4],"fps":2},
{'text': 'Adegan apa yang digambarkan video ini?'}]}]
response = MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-vl-plus', # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
// Versi DashScope SDK harus 2.18.3 atau lebih baru.
import java.util.Arrays;
import java.util.Map;
import java.util.Collections;
importcom.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 {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1.
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static final String MODEL_NAME = "qwen3-vl-plus"; // Dalam contoh ini, qwen3-vl-plus digunakan. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
public static void videoImageListSample(String localPath1, String localPath2, String localPath3, String localPath4)
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
String filePath1 = "file://" + localPath1;
String filePath2 = "file://" + localPath2;
String filePath3 = "file://" + localPath3;
String filePath4 = "file://" + localPath4;
Map<String, Object> params = new HashMap<>();
params.put("video", Arrays.asList(filePath1,filePath2,filePath3,filePath4));
// Untuk model dalam seri Qwen2.5-VL, jika Anda memberikan daftar citra, Anda dapat mengatur parameter fps. Parameter ini menunjukkan bahwa citra diekstraksi dari video asli pada interval 1/fps detik. Pengaturan ini tidak berpengaruh pada model lain.
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(params,
Collections.singletonMap("text", "Jelaskan proses yang ditunjukkan dalam video ini")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API berbeda untuk wilayah Singapura dan Beijing. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(MODEL_NAME)
.messages(Arrays.asList(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(
"xxx/football1.jpg",
"xxx/football2.jpg",
"xxx/football3.jpg",
"xxx/football4.jpg");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Diteruskan melalui encoding Base64
Kompatibel dengan OpenAI
Python
import os
from openai import OpenAI
import base64
# Fungsi enkripsi: Mengonversi file lokal menjadi string terenkripsi Base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
base64_image1 = encode_image("football1.jpg")
base64_image2 = encode_image("football2.jpg")
base64_image3 = encode_image("football3.jpg")
base64_image4 = encode_image("football4.jpg")
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope-intl.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-vl-plus", # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=[
{"role": "user","content": [
{"type": "video","video": [
f"data:image/jpeg;base64,{base64_image1}",
f"data:image/jpeg;base64,{base64_image2}",
f"data:image/jpeg;base64,{base64_image3}",
f"data:image/jpeg;base64,{base64_image4}",]},
{"type": "text","text": "Jelaskan proses spesifik video ini"},
]}]
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope-intl.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
const base64Image1 = encodeImage("football1.jpg")
const base64Image2 = encodeImage("football2.jpg")
const base64Image3 = encodeImage("football3.jpg")
const base64Image4 = encodeImage("football4.jpg")
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen3-vl-plus", // Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{"role": "user",
"content": [{"type": "video",
// Perhatikan bahwa saat meneruskan Base64, format citra (yaitu image/{format}) harus sesuai dengan Jenis Konten dalam daftar citra yang didukung.
// Citra PNG: data:image/png;base64,${base64Image}
// Citra JPEG: data:image/jpeg;base64,${base64Image}
// Citra WEBP: data:image/webp;base64,${base64Image}
"video": [
`data:image/jpeg;base64,${base64Image1}`,
`data:image/jpeg;base64,${base64Image2}`,
`data:image/jpeg;base64,${base64Image3}`,
`data:image/jpeg;base64,${base64Image4}`]},
{"type": "text", "text": "Adegan apa yang digambarkan video ini?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();curl
Untuk informasi lebih lanjut tentang metode mengonversi file menjadi string terenkripsi Base64, lihat Kode contoh.
Untuk tujuan tampilan, string terenkripsi Base64
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, Anda harus meneruskan string terenkripsi lengkap.
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"messages": [{"role": "user",
"content": [{"type": "video",
"video": [
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA...",
"data:image/jpeg;base64,nEpp6jpnP57MoWSyOWwrkXMJhHRCWYeFYb...",
"data:image/jpeg;base64,JHWQnJPc40GwQ7zERAtRMK6iIhnWw4080s...",
"data:image/jpeg;base64,adB6QOU5HP7dAYBBOg/Fb7KIptlbyEOu58..."
]},
{"type": "text",
"text": "Jelaskan proses spesifik video ini"}]}]
}'DashScope
Python
import base64
import os
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Fungsi enkripsi: Mengonversi file lokal menjadi string terenkripsi Base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
base64_image1 = encode_image("football1.jpg")
base64_image2 = encode_image("football2.jpg")
base64_image3 = encode_image("football3.jpg")
base64_image4 = encode_image("football4.jpg")
messages = [{'role':'user',
'content': [
{'video':
[f"data:image/png;base64,{base64_image1}",
f"data:image/png;base64,{base64_image2}",
f"data:image/png;base64,{base64_image3}",
f"data:image/png;base64,{base64_image4}"
]
},
{'text': 'Tolong jelaskan proses spesifik video ini?'}]}]
response = MultiModalConversation.call(
# Kunci API untuk wilayah Singapura dan China (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-vl-plus', # Contoh ini menggunakan qwen3-vl-plus. Anda dapat mengganti nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
import java.io.IOException;
import java.util.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.alibaba.dashscope.aigc.multimodalconversation.*;
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 {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static String encodeImageToBase64(String imagePath) throws IOException {
Path path = Paths.get(imagePath);
byte[] imageBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(imageBytes);
}
public static void videoImageListSample(String localPath1,String localPath2,String localPath3,String localPath4)
throws ApiException, NoApiKeyException, UploadFileException, IOException {
String base64Image1 = encodeImageToBase64(localPath1); // Enkripsi Base64
String base64Image2 = encodeImageToBase64(localPath2);
String base64Image3 = encodeImageToBase64(localPath3);
String base64Image4 = encodeImageToBase64(localPath4);
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> params = new HashMap<>();
params.put("video", Arrays.asList(
"data:image/jpeg;base64," + base64Image1,
"data:image/jpeg;base64," + base64Image2,
"data:image/jpeg;base64," + base64Image3,
"data:image/jpeg;base64," + base64Image4));
// Jika model termasuk seri Qwen2.5-VL dan daftar citra diteruskan, Anda dapat mengatur parameter fps untuk menunjukkan bahwa daftar citra diekstraksi dari video asli setiap 1/fps detik. Pengaturan ini tidak efektif untuk model lain.
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(params,
Collections.singletonMap("text", "Jelaskan proses spesifik video ini")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// Ganti xxx/football1.png dan lainnya dengan jalur mutlak citra lokal Anda
videoImageListSample(
"xxx/football1.jpg",
"xxx/football2.jpg",
"xxx/football3.jpg",
"xxx/football4.jpg"
);
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
Untuk informasi lebih lanjut tentang metode mengonversi file menjadi string terenkripsi Base64, lihat Kode contoh.
Untuk tujuan tampilan, string terenkripsi Base64
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, Anda harus meneruskan string terenkripsi lengkap.
# ======= Penting =======
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"video": [
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA...",
"data:image/jpeg;base64,nEpp6jpnP57MoWSyOWwrkXMJhHRCWYeFYb...",
"data:image/jpeg;base64,JHWQnJPc40GwQ7zERAtRMK6iIhnWw4080s...",
"data:image/jpeg;base64,adB6QOU5HP7dAYBBOg/Fb7KIptlbyEOu58..."
],
"fps":2
},
{
"text": "Jelaskan proses spesifik video ini"
}
]
}
]
}
}'Proses citra resolusi tinggi
API Qwen-VL memiliki batasan jumlah token visual untuk satu citra setelah pengkodean. Dengan konfigurasi default, citra resolusi tinggi dikompresi, yang dapat menyebabkan hilangnya detail dan memengaruhi akurasi pemahaman. Anda dapat mengaktifkan vl_high_resolution_images atau menyesuaikan max_pixels untuk meningkatkan jumlah token visual, yang mempertahankan lebih banyak detail citra dan meningkatkan pemahaman.
Model yang berbeda memiliki piksel per token visual, batas token, dan batas piksel yang berbeda. Parameter spesifiknya adalah sebagai berikut:
Model | Piksel per token | vl_high_resolution_images | max_pixels | Batas token | Batas piksel Jika batas piksel dilampaui, total piksel citra akan diskalakan turun ke batas ini. |
|
|
|
|
|
|
| Dapat disesuaikan, dengan nilai maksimum | Maksimum antara |
| ||
|
|
|
|
|
|
| Dapat disesuaikan, dengan nilai maksimum | Maksimum antara |
| ||
|
|
|
|
|
|
| Dapat disesuaikan, dengan nilai maksimum | Maksimum antara |
|
Saat
vl_high_resolution_images=true, API menggunakan strategi resolusi tetap dan mengabaikan pengaturanmax_pixels. Ini cocok untuk mengenali teks halus, objek kecil, atau detail kaya dalam citra.Saat
vl_high_resolution_images=false, resolusi aktual ditentukan olehmax_pixelsdan batas default. Model menggunakan maksimum dari dua hasil perhitungan tersebut.Untuk kecepatan pemrosesan tinggi atau skenario sensitif biaya, Anda dapat menggunakan nilai default
max_pixelsatau mengaturnya ke nilai yang lebih kecil.Saat beberapa detail penting dan kecepatan pemrosesan yang lebih rendah dapat diterima, Anda dapat meningkatkan nilai
max_pixelssecara tepat.
Kompatibel dengan OpenAI
vl_high_resolution_images bukan parameter standar OpenAI. Jika Anda menggunakan OpenAI Python SDK, Anda dapat meneruskannya melalui extra_body.
Python
import os
import time
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan China (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"),
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-vl-plus",
messages=[
{"role": "user","content": [
{"type": "image_url","image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
# max_pixels merepresentasikan ambang batas piksel maksimum untuk citra input. Tidak valid saat vl_high_resolution_images=True, tetapi dapat disesuaikan saat vl_high_resolution_images=False. Nilai maksimum bervariasi berdasarkan model.
# "max_pixels": 16384 * 32 * 32
},
{"type": "text", "text": "Suasana festival apa yang ditunjukkan gambar ini?"},
],
}
],
extra_body={"vl_high_resolution_images":True}
)
print(f"Output model: {completion.choices[0].message.content}")
print(f"Total token input: {completion.usage.prompt_tokens}")Node.js
import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan China (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 Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const response = await openai.chat.completions.create({
model: "qwen3-vl-plus",
messages: [
{role: "user",content: [
{type: "image_url",
image_url: {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
// max_pixels merepresentasikan ambang batas piksel maksimum untuk citra input. Tidak efektif saat vl_high_resolution_images=True, tetapi dapat disesuaikan saat vl_high_resolution_images=False. Nilai maksimum bervariasi berdasarkan model.
// "max_pixels": 2560 * 32 * 32
},
{type: "text", text: "Suasana festival apa yang ditunjukkan gambar ini?" },
]}],
vl_high_resolution_images:true
})
console.log("Output model:",response.choices[0].message.content);
console.log("Total token input",response.usage.prompt_tokens);
curl
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"
}
},
{
"type": "text",
"text": "Suasana festival apa yang ditunjukkan gambar ini?"
}
]
}
],
"vl_high_resolution_images":true
}'DashScope
Python
import os
import time
import dashscope
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg",
# max_pixels merepresentasikan ambang batas piksel maksimum untuk citra input. Tidak valid saat vl_high_resolution_images=True, tetapi dapat disesuaikan saat vl_high_resolution_images=False. Nilai maksimum bervariasi berdasarkan model.
# "max_pixels": 16384 * 32 * 32
},
{"text": "Suasana festival apa yang ditunjukkan gambar ini?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx"
# Kunci API untuk wilayah Singapura dan China (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-vl-plus',
messages=messages,
vl_high_resolution_images=True
)
print("Output model",response.output.choices[0].message.content[0]["text"])
print("Total token input:",response.usage.input_tokens)Java
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
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 {
// baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg");
// max_pixels merepresentasikan ambang batas piksel maksimum untuk citra input. Tidak valid saat vl_high_resolution_images=True, tetapi dapat disesuaikan saat vl_high_resolution_images=False. Nilai maksimum bervariasi berdasarkan model.
// map.put("min_pixels", 2621440);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
Collections.singletonMap("text", "Suasana festival apa yang ditunjukkan gambar ini?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.message(userMessage)
.vlHighResolutionImages(true)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
System.out.println(result.getUsage().getInputTokens());
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
# ======= Penting =======
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# baseURL berikut digunakan untuk wilayah Singapura. Jika Anda menggunakan model di wilayah China (Beijing), ganti baseURL dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
{"text": "Suasana festival apa yang ditunjukkan gambar ini?"}
]
}
]
},
"parameters": {
"vl_high_resolution_images": true
}
}'Penggunaan lainnya
Batasan
Batasan file input
Batasan citra
Resolusi citra:
Ukuran minimum: Lebar dan tinggi citra harus keduanya lebih besar dari
10piksel.Rasio aspek: Rasio sisi panjang terhadap sisi pendek citra tidak boleh melebihi
200:1.Batasan piksel:
Kami merekomendasikan agar Anda menjaga resolusi citra dalam
8K (7680×4320). Citra yang melebihi resolusi ini dapat menyebabkan timeout panggilan API karena ukuran file yang besar dan waktu transmisi jaringan yang lama.Mekanisme penskalaan otomatis: Model secara otomatis menskalakan citra input sebelum diproses. Oleh karena itu, menyediakan citra resolusi sangat tinggi tidak meningkatkan akurasi pengenalan tetapi meningkatkan risiko kegagalan panggilan. Kami merekomendasikan agar Anda menskalakan citra ke ukuran yang wajar di sisi klien terlebih dahulu.
Format citra yang didukung
Untuk resolusi di bawah 4K
(3840×2160), format citra yang didukung adalah sebagai berikut:Format citra
Ekstensi umum
Jenis MIME
BMP
.bmp
image/bmp
JPEG
.jpe, .jpeg, .jpg
image/jpeg
PNG
.png
image/png
TIFF
.tif, .tiff
image/tiff
WEBP
.webp
image/webp
HEIC
.heic
image/heic
Untuk resolusi antara
4K (3840×2160)dan8K (7680×4320), hanya format JPEG, JPG, dan PNG yang didukung.
Ukuran citra:
Saat diteruskan sebagai URL publik atau jalur lokal: Ukuran satu citra tidak boleh melebihi
10 MB.Saat diteruskan sebagai encoding Base64: String terenkripsi tidak boleh melebihi
10 MB.
Untuk informasi lebih lanjut tentang cara mengompresi ukuran file, lihat Cara mengompresi citra atau video ke ukuran yang diperlukan.
Jumlah citra yang didukung: Saat Anda meneruskan beberapa citra, jumlah citra dibatasi oleh input maksimum model. Jumlah total token untuk semua citra dan teks harus kurang dari input maksimum model.
Misalnya, jika Anda menggunakan model
qwen3-vl-plusdalam mode pemikiran, input maksimum adalah258.048token. Jika teks input dikonversi menjadi100token dan citra dikonversi menjadi2.560token (untuk informasi lebih lanjut tentang cara menghitung token citra, lihat Penagihan dan pembatasan laju), Anda dapat meneruskan maksimal(258048 - 100) / 2560 = 100citra.
Batasan video
Ukuran video:
Saat diteruskan sebagai URL publik:
Seri Qwen3-VL,qwen-vl-max(termasukqwen-vl-max-latest,qwen-vl-max-2025-04-08, dan semua versi selanjutnya): Tidak boleh melebihi 2 GB.Seri qwen-vl-plus, modelqwen-vl-maxlainnya, seri open sourceQwen2.5-VL, dan model seriQVQ: Tidak boleh melebihi 1 GB.Model lain tidak boleh melebihi 150 MB.
Saat diteruskan sebagai encoding Base64: String terenkripsi harus kurang dari 10 MB.
Saat diteruskan sebagai jalur file lokal: Video itu sendiri tidak boleh melebihi 100 MB.
Untuk informasi lebih lanjut tentang cara mengompresi ukuran file, lihat Cara mengompresi citra atau video ke ukuran yang diperlukan.
Durasi video:
Seri qwen3-vl-plus: 2 detik hingga 1 jam.Seri qwen3-vl-flash, seri open sourceQwen3-VL,qwen-vl-max(termasukqwen-vl-max-latest,qwen-vl-max-2025-04-08, dan semua versi selanjutnya): 2 detik hingga 20 menit.Seri qwen-vl-plus, modelqwen-vl-maxlainnya, seri open sourceQwen2.5-VL, dan model seriQVQ: 2 detik hingga 10 menit.Model lain: 2 detik hingga 40 detik.
Format video: MP4, AVI, MKV, MOV, FLV, WMV, dan lainnya.
Dimensi video: Tidak ada batasan spesifik. Model menyesuaikan video menjadi sekitar 600.000 piksel sebelum diproses. File video yang lebih besar tidak menghasilkan pemahaman yang lebih baik.
Pemahaman audio: Model tidak mendukung pemahaman audio dari file video.
Metode penerusan file
URL publik: Anda dapat menyediakan alamat file yang dapat diakses publik yang mendukung protokol HTTP atau HTTPS. Untuk stabilitas dan performa optimal, Anda dapat mengunggah file ke OSS dan mendapatkan URL publik.
PentingUntuk memastikan bahwa model dapat berhasil mengunduh file, header permintaan dari URL publik yang disediakan harus menyertakan Content-Length (ukuran file) dan Content-Type (jenis media, seperti image/jpeg). Kolom yang hilang atau salah menyebabkan kegagalan pengunduhan file.
Diteruskan melalui encoding Base64: Anda dapat mengonversi file menjadi string terenkripsi Base64 lalu meneruskannya.
Diteruskan melalui jalur file lokal (hanya DashScope SDK): Anda dapat meneruskan jalur file lokal.
Untuk rekomendasi tentang metode penerusan file, lihat Bagaimana memilih metode unggah file?
Mulai produksi
Pra-pemrosesan citra/video: Qwen-VL memiliki batasan ukuran untuk file input. Untuk informasi lebih lanjut tentang cara mengompresi file, lihat Metode kompresi citra atau video.
Proses file teks: Qwen-VL mendukung pemrosesan file hanya dalam format citra dan tidak dapat langsung memproses file teks. Namun, Anda dapat menggunakan solusi alternatif berikut:
Konversi file teks ke format citra. Kami merekomendasikan agar Anda menggunakan pustaka pemrosesan citra, seperti
Python'spdf2image, untuk mengonversi file halaman demi halaman menjadi beberapa citra berkualitas tinggi, lalu meneruskannya ke model menggunakan metode input citra ganda.Qwen-Long mendukung pemrosesan file teks dan dapat digunakan untuk mengurai konten file.
Toleransi kesalahan dan stabilitas
Penanganan timeout: Dalam panggilan non-streaming, jika model tidak menyelesaikan output dalam 180 detik, biasanya terjadi error timeout. Untuk meningkatkan pengalaman pengguna, konten yang dihasilkan dikembalikan dalam badan respons setelah timeout. Jika header respons berisi
x-dashscope-partialresponse: true, ini menunjukkan bahwa respons ini memicu timeout. Anda dapat menggunakan fitur mode sebagian, yang didukung oleh beberapa model, untuk menambahkan konten yang dihasilkan ke larik pesan dan mengirim permintaan lagi. Ini memungkinkan model besar untuk terus menghasilkan konten. Untuk informasi lebih lanjut, lihat Lanjutkan menulis berdasarkan output yang tidak lengkap.Mekanisme pengulangan: Anda dapat merancang logika pengulangan panggilan API yang masuk akal, seperti exponential backoff, untuk menangani fluktuasi jaringan atau ketidaktersediaan layanan sementara.
Penagihan dan pembatasan laju
Penagihan: Total biaya dihitung berdasarkan jumlah total token input dan output. Untuk informasi lebih lanjut tentang harga input dan output, lihat Daftar model.
Komposisi token: Token input terdiri dari token teks dan token yang dikonversi dari citra atau video. Token output adalah teks yang dihasilkan oleh model. Dalam mode pemikiran, proses pemikiran model juga dihitung sebagai token output. Jika proses pemikiran tidak dioutput dalam mode pemikiran, penagihan berdasarkan harga mode non-pemikiran.
Hitung token citra dan video: Anda dapat menggunakan kode berikut untuk menghitung konsumsi token citra atau video. Hasil perkiraan hanya untuk referensi. Penggunaan aktual mengikuti respons API.
Lihat tagihan: Anda dapat melihat tagihan atau mengisi ulang akun Anda di konsol Biaya dan Pengeluaran.
Pembatasan laju: Untuk informasi lebih lanjut tentang kondisi throttling model Qwen-VL, lihat Batas laju.
Kuota gratis (hanya wilayah Singapura): Kuota gratis 1 juta token disediakan untuk model Qwen-VL, berlaku selama 90 hari sejak tanggal aktivasi Studio Model atau persetujuan aplikasi model.
Referensi API
Untuk informasi lebih lanjut tentang parameter input dan output model Qwen-VL, lihat Qwen.
FAQ
Bagaimana memilih metode unggah file?
Bagaimana cara mengompresi citra atau video ke ukuran yang diperlukan?
Setelah model mengeluarkan hasil deteksi objek, bagaimana cara menggambar kotak deteksi pada citra asli?
Kode error
Jika panggilan gagal, lihat Pesan error untuk pemecahan masalah.












