Model pemahaman visual dapat menjawab pertanyaan berdasarkan gambar atau video yang Anda berikan. Model ini mendukung input gambar tunggal maupun ganda, serta cocok untuk berbagai tugas seperti pembuatan keterangan gambar (image captioning), menjawab pertanyaan visual (visual question answering), dan pelokalan objek.
Coba secara online: Buka Konsol Alibaba Cloud Model Studio. Di pojok kanan atas halaman, pilih Wilayah tujuan. Lalu, buka halaman Vision Models untuk mencoba model tersebut.
Mulai
Prasyarat
-
Dapatkan Kunci API dan konfigurasikan sebagai Variabel lingkungan.
-
Untuk melakukan panggilan menggunakan SDK, instal SDK. SDK Python DashScope harus versi 1.24.6 atau lebih baru, dan SDK Java DashScope harus versi 2.21.10 atau lebih baru.
Contoh berikut menunjukkan cara memanggil model untuk menggambarkan konten gambar. Untuk informasi lebih lanjut tentang file lokal dan batasan gambar, lihat Mengirimkan file lokal dan Batasan gambar.
Kompatibel dengan OpenAI
Python
from openai import OpenAI
import os
client = OpenAI(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
completion = client.chat.completions.create(
model="qwen3.7-plus", # Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan model lain 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": "Adegan apa yang digambarkan dalam gambar 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 sebagai latar belakang. Orang dan anjing tersebut tampak sedang berinteraksi, dengan kaki depan anjing berada di atas tangan orang tersebut. Sinar matahari bersinar dari sisi kanan bingkai, menambah suasana hangat pada adegan tersebut.
Node.js
import OpenAI from "openai";
const openai = new OpenAI({
// Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
// Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3.7-plus", // Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan model lain 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: "Adegan apa yang digambarkan dalam gambar 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 sebagai latar belakang. Orang dan anjing tersebut tampak sedang berinteraksi, dengan kaki depan anjing berada di atas tangan orang tersebut. Sinar matahari bersinar dari sisi kanan bingkai, menambah suasana hangat pada adegan tersebut.
curl
# ======= Catatan penting =======
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.7-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": "Adegan apa yang digambarkan dalam gambar 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 sebagai latar belakang. Orang dan anjing tersebut tampak sedang berinteraksi, dengan kaki depan anjing berada di atas tangan orang tersebut. Sinar matahari bersinar dari sisi kanan bingkai, menambah suasana hangat pada adegan tersebut.",
"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.7-plus",
"id": "chatcmpl-0fd66f46-b09e-9164-a84f-3ebbbedbac15"
}
DashScope
Python
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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": "Adegan apa yang digambarkan dalam gambar ini?"}]
}]
response = dashscope.MultiModalConversation.call(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.7-plus', # Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan model lain 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. Foto tersebut menunjukkan 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 berjabat tangan 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 {
// URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
static {
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"),
Collections.singletonMap("text", "Adegan apa yang digambarkan dalam gambar ini?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
// Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-plus") // Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan model lain 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. Foto tersebut menunjukkan seseorang 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
# ======= Catatan penting =======
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
# Kunci API berbeda tiap wilayah. 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://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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": "Adegan apa yang digambarkan dalam gambar ini?"}
]
}
]
}
}'Respons
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "Ini adalah foto yang diambil di pantai. Foto tersebut menunjukkan seseorang mengenakan kemeja kotak-kotak dan seekor anjing yang mengenakan kalung. Mereka duduk di atas pasir dengan laut dan langit sebagai latar belakang. Sinar matahari bersinar dari sisi kanan bingkai, menambah suasana hangat pada adegan tersebut."
}
]
}
}
]
},
"usage": {
"output_tokens": 55,
"input_tokens": 1271,
"image_tokens": 1247
},
"request_id": "ccf845a3-dc33-9cda-b581-20fe7dc23f70"
}
Kinerja model
Tanya jawab gambar
Jelaskan konten gambar atau klasifikasikan dan beri label, seperti mengidentifikasi orang, tempat, hewan, dan tumbuhan.
|
Item apa dalam gambar ini yang harus saya gunakan jika matahari terlalu terang? |
Jika matahari terlalu terang, Anda harus menggunakan kacamata hitam merah muda dalam 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 gambar atau video, cocok untuk skenario kreatif seperti penulisan cerita, copywriting, dan naskah video pendek.
|
Tulis postingan media sosial yang menarik berdasarkan konten gambar ini. |
Tentu. Gambar ini dipenuhi suasana Festival Pertengahan Musim Gugur yang kaya, menggabungkan elemen klasik dan modern secara cerdas. 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 untuk semua orang, tetapi siapa yang tahu ke mana pikiran musim gugur akan jatuh? Chang'e terbang ke bulan, dan Kelinci Giok menumbuk obat. Romantisme para leluhur dinyalakan malam ini. Semoga bulan yang terang ini menerangi jalan pulang Anda dan membawa kerinduan terdalam saya. Selamat Hari Raya Pertengahan Musim Gugur! Gaya harapan hangat Bulan purnama, dan keluarga berkumpul. Malam Pertengahan Musim Gugur adalah yang paling lembut. Saksikan kembang api mekar, kagumi bulan purnama di langit, ambil sepotong kue bulan, dan berharap kesehatan. Semoga semua yang Anda dan saya inginkan menjadi kenyataan. Selamat Hari Raya Pertengahan Musim Gugur untuk semua, dan semoga keluarga Anda bahagia! |
Pengenalan teks dan ekstraksi informasi
Kenali teks dan rumus dalam gambar, atau ekstrak informasi dari kwitansi, sertifikat, dan formulir. Mendukung output teks terformat.
|
Ekstrak hal berikut dari gambar: ['Kode Faktur', 'Nomor Faktur', 'Tujuan', 'Biaya Tambahan Bahan Bakar', 'Tarif', 'Tanggal', 'Waktu Keberangkatan', 'Nomor Kereta', 'Nomor Kursi']. Harap keluarkan dalam format JSON. |
{ "Kode Faktur": "221021325353", "Nomor Faktur": "10283819", "Tujuan": "Development Zone", "Biaya Tambahan Bahan Bakar": "2.0", "Tarif": "8.00<Full>", "Tanggal": "2013-06-29", "Waktu Keberangkatan": "Rolling", "Nomor Kereta": "040", "Nomor Kursi": "371" } |
Penyelesaian masalah multidisiplin
Selesaikan soal matematika, fisika, kimia, dan lainnya dalam gambar. Cocok untuk pendidikan SD-SMA, perguruan tinggi, dan dewasa.
|
Selesaikan soal matematika dalam grafik langkah demi langkah. |
|
Pemrograman visual
Hasilkan kode dari gambar atau video. Anda dapat menggunakan fitur ini untuk menghasilkan kode HTML, CSS, dan JS dari sketsa desain, tangkapan layar situs web, dan lainnya.
|
Buat halaman web menggunakan HTML dan CSS berdasarkan sketsa saya. Warna utamanya harus hitam. |
Pratinjau halaman web |
Pelokalan objek
Mendukung pelokalan 2D dan 3D. Anda dapat menggunakan fitur ini untuk menentukan orientasi objek, perubahan perspektif, dan hubungan oklusi. Pelokalan 3D adalah kemampuan baru yang ditambahkan pada model Qwen3-VL.
Kinerja pelokalan objek model Qwen2.5-VL kuat dalam rentang resolusi 480 × 480 hingga 2560 × 2560. Di luar rentang ini, akurasi deteksi dapat menurun, dengan sesekali terjadi deviasi bingkai deteksi.
Untuk informasi tentang cara menggambar hasil pelokalan pada gambar asli, lihat FAQ.
|
Lokalisasi 2D
|
Visualisasi hasil pelokalan 2D
|
|
|
|
Penguraian dokumen
Uraikan dokumen berbasis gambar (seperti salinan hasil pindaian atau PDF gambar) ke dalam format QwenVL HTML atau QwenVL Markdown. Format ini tidak hanya mengenali teks secara akurat tetapi juga mendapatkan informasi posisi elemen seperti gambar dan tabel. Model Qwen3-VL menambahkan kemampuan untuk mengurai ke dalam format Markdown.
Prompt yang direkomendasikan adalah sebagai berikut:qwenvl html(untuk mengurai ke format HTML) atauqwenvl markdown(untuk mengurai ke format Markdown).
|
qwenvl markdown. |
Visualisasi hasil |
Pemahaman video
Analisis konten video, seperti melokalisasi kejadian spesifik dan mendapatkan stempel waktu, atau menghasilkan ringkasan periode waktu utama.
|
Harap jelaskan rangkaian tindakan orang dalam video tersebut. Keluarkan Waktu mulai (start_time), Waktu selesai (end_time), dan event (event) dalam format JSON. 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 tersebut." }, { "start_time": "00:00:15", "end_time": "00:00:21", "event": "Orang tersebut meletakkan kembali pemindai ke tempatnya lalu mengambil pena untuk mencatat informasi dalam buku catatan."}] } |
Fitur inti
Aktifkan atau nonaktifkan mode berpikir
-
Model seri
qwen3.7,qwen3.6,qwen3.5,qwen3-vl-plus, danqwen3-vl-flashadalah model berpikir hibrida. Model ini dapat berpikir sebelum merespons atau langsung merespons. Gunakan parameterenable_thinkinguntuk mengontrol apakah mode berpikir diaktifkan:-
true: Mengaktifkan mode berpikir. Nilai default untuk model seriqwen3.7,qwen3.6, danqwen3.5adalahtrue. -
false: Menonaktifkan mode berpikir. Nilai default untuk model seriqwen3-vl-plusdanqwen3-vl-flashadalahfalse.
-
-
Model dengan akhiran
thinking, sepertiqwen3-vl-235b-a22b-thinking, adalah model berpikir saja. Model ini selalu berpikir sebelum merespons, dan fitur ini tidak dapat dinonaktifkan.
-
Konfigurasi model: Dalam skenario percakapan umum yang tidak melibatkan panggilan tool Agent, jangan atur
System Messageuntuk menjaga kinerja optimal. Anda dapat meneruskan instruksi seperti pengaturan peran model dan persyaratan format output melaluiUser Message. -
Utamakan keluaran streaming: Saat mode berpikir diaktifkan, baik keluaran streaming maupun non-streaming didukung. Untuk menghindari timeout akibat respons yang terlalu panjang, utamakan penggunaan keluaran streaming.
-
Batasi panjang proses berpikir: Model berpikir mendalam terkadang menghasilkan proses penalaran yang panjang. Anda dapat menggunakan parameter
thinking_budgetuntuk membatasi panjang proses berpikir. Jika jumlah token yang dihasilkan selama proses berpikir model melebihithinking_budget, konten inferensi 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 SDK Python OpenAI, teruskan melalui extra_body.
import os
from openai import OpenAI
client = OpenAI(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # Definisikan proses berpikir lengkap
answer_content = "" # Definisikan respons lengkap
is_answering = False # Tentukan apakah proses berpikir berakhir dan mulai merespons
enable_thinking = True
# Buat permintaan penyelesaian chat
completion = client.chat.completions.create(
model="qwen3.7-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 berpikir, dan parameter thinking_budget menetapkan jumlah maksimum token untuk proses inferensi.
# Gunakan parameter enable_thinking untuk mengalihkan mode berpikir.
extra_body={
'enable_thinking': enable_thinking,
"thinking_budget": 81920},
# Hapus komentar pada baris berikut untuk mengembalikan penggunaan token pada chunk terakhir.
# stream_options={
# "include_usage": True
# }
)
if enable_thinking:
print("\n" + "=" * 20 + "Proses berpikir" + "=" * 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 berpikir.
if hasattr(delta, 'reasoning_content') and delta.reasoning_content is not 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 berpikir 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 berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
// Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.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.7-plus',
messages: messages,
stream: true,
// Catatan: Pada SDK Node.js, parameter non-standar seperti enableThinking diteruskan sebagai properti tingkat atas dan tidak perlu ditempatkan di extra_body.
enable_thinking: enableThinking,
thinking_budget: 81920
});
if (enableThinking){console.log('\n' + '='.repeat(20) + 'Proses berpikir' + '='.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 proses berpikir.
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();# ======= Catatan penting =======
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.7-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
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.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 variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
# Kunci API berbeda tiap wilayah. 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.7-plus",
messages=messages,
stream=True,
# Parameter enable_thinking mengaktifkan proses berpikir.
# Gunakan parameter enable_thinking untuk mengalihkan mode berpikir.
enable_thinking=enable_thinking,
# Parameter thinking_budget menetapkan jumlah maksimum token untuk proses inferensi.
thinking_budget=81920,
)
# Definisikan proses berpikir lengkap
reasoning_content = ""
# Definisikan respons lengkap
answer_content = ""
# Tentukan apakah proses berpikir berakhir dan mulai merespons
is_answering = False
if enable_thinking:
print("=" * 20 + "Proses berpikir" + "=" * 20)
for chunk in response:
# Jika proses berpikir 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 berpikir
if reasoning_content_chunk is not 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"]
# Cetak proses berpikir dan respons lengkap.
# print("=" * 20 + "Proses berpikir lengkap" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "Respons lengkap" + "=" * 20 + "\n")
# print(f"{answer_content}")// Versi SDK DashScope harus 2.21.10 atau lebih baru.
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 {
// URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
static {Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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 berpikir====================");
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 variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
// Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-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);
}
}# ======= Catatan penting =======
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.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.7-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 beberapa gambar
Model pemahaman visual mendukung pengiriman beberapa gambar dalam satu permintaan, yang dapat digunakan untuk tugas seperti perbandingan produk dan pemrosesan dokumen multi-halaman. Untuk melakukannya, cukup sertakan beberapa objek gambar di dalam array content dari user message.
Jumlah gambar dibatasi oleh batas total token model untuk gambar dan teks. Total jumlah token untuk semua gambar dan teks tidak boleh melebihi input maksimum model.
Kompatibel dengan OpenAI
Python
import os
from openai import OpenAI
client = OpenAI(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-plus", # Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan model lain 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": "Konten apa yang digambarkan oleh gambar-gambar ini?"},
],
}
],
)
print(completion.choices[0].message.content)Respons
Gambar 1 menunjukkan adegan seorang wanita dan seekor Labrador retriever yang berinteraksi di pantai. Wanita tersebut mengenakan kemeja kotak-kotak dan duduk di atas pasir sambil berjabat tangan dengan anjing tersebut. Latar belakangnya adalah ombak laut dan langit, serta keseluruhan gambar dipenuhi kehangatan dan kegembiraan.
Gambar 2 menunjukkan adegan seekor harimau yang berjalan di hutan. Bulu harimau tersebut berwarna oranye dengan garis-garis hitam. Harimau tersebut melangkah maju, dikelilingi pepohonan dan vegetasi yang lebat, serta tanahnya ditutupi daun-daun yang gugur. Keseluruhan gambar memberikan kesan alam liar.
Node.js
import OpenAI from "openai";
const openai = new OpenAI(
{
// Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
// Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3.7-plus", // Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan model lain 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: "Konten apa yang digambarkan oleh gambar-gambar ini?" },
]}]
});
console.log(response.choices[0].message.content);
}
main()Respons
Pada gambar pertama, seseorang dan seekor anjing berinteraksi di pantai. Orang tersebut mengenakan kemeja kotak-kotak, dan anjing tersebut mengenakan kalung. Mereka tampak sedang berjabat tangan atau memberi salam tinggi-lima.
Pada gambar kedua, seekor harimau sedang berjalan di hutan. Bulu harimau tersebut berwarna oranye dengan garis-garis hitam, dan latar belakangnya adalah pepohonan hijau dan vegetasi.
curl
# ======= Catatan penting =======
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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": "Konten apa yang digambarkan oleh gambar-gambar ini?"
}
]
}
]
}'Respons
{
"choices": [
{
"message": {
"content": "Gambar 1 menunjukkan adegan seorang wanita dan seekor Labrador retriever yang berinteraksi di pantai. Wanita tersebut mengenakan kemeja kotak-kotak dan duduk di atas pasir sambil berjabat tangan dengan anjing tersebut. Latar belakangnya adalah pemandangan laut dan langit senja, membuat keseluruhan adegan terlihat sangat hangat dan harmonis.\n\nGambar 2 menunjukkan adegan seekor harimau yang berjalan di hutan. Bulu harimau tersebut berwarna oranye dengan garis-garis hitam. Harimau tersebut melangkah maju, dikelilingi pepohonan dan vegetasi yang lebat, serta tanahnya ditutupi daun-daun yang gugur. Keseluruhan gambar dipenuhi kealaman liar dan vitalitas.",
"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.7-plus",
"id": "chatcmpl-0fd66f46-b09e-9164-a84f-3ebbbedbac15"
}
DashScope
Python
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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": "Konten apa yang digambarkan oleh gambar-gambar ini?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.7-plus', # Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan model lain 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
Gambar-gambar ini menunjukkan beberapa hewan dan pemandangan alam. Pada gambar pertama, seseorang dan seekor anjing berinteraksi di pantai. Gambar 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 {
// URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://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", "Konten apa yang digambarkan oleh gambar-gambar ini?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-plus") // Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan model lain 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
Gambar-gambar ini menunjukkan beberapa hewan dan pemandangan alam.
1. Gambar 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 berjabat tangan dengan wanita tersebut.
2. Gambar kedua: Seekor harimau berjalan di hutan. Bulu harimau tersebut berwarna oranye dengan garis-garis hitam, dan latar belakangnya adalah pepohonan dan daun-daun.
curl
# ======= Catatan penting =======
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.7-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": "Konten apa yang ditunjukkan oleh gambar-gambar ini?"}
]
}
]
}
}'Respons
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "Gambar-gambar ini menunjukkan beberapa hewan dan pemandangan alam. Pada gambar pertama, seseorang dan seekor anjing berinteraksi di pantai. Gambar 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 pemahaman visual dapat memahami konten video yang disediakan sebagai daftar gambar (frame video) atau file video. Contoh berikut menunjukkan cara memahami video online atau daftar gambar yang ditentukan oleh URL. Untuk informasi lebih lanjut tentang batasan video atau jumlah gambar yang dapat dikirim dalam daftar gambar, lihat Batasan video.
Untuk kinerja lebih baik saat memahami file video, gunakan versi snapshot terbaru atau terkini dari model.
File video
Model pemahaman visual menganalisis konten video dengan mengekstraksi urutan frame dari video tersebut. Anda dapat mengontrol strategi ekstraksi frame dengan dua parameter berikut:
-
fps: Mengontrol frekuensi ekstraksi frame. Satu frame diekstraksi setiap
detik. Rentang nilai adalah [0.1, 10], dan nilai default adalah 2.0. -
Untuk adegan dengan gerakan cepat, atur nilai fps lebih tinggi untuk menangkap lebih banyak detail.
-
Untuk adegan statis atau video panjang, atur nilai fps lebih rendah untuk meningkatkan kinerja.
-
-
max_frames: Jumlah maksimum frame yang diekstraksi dari video. Sistem menghitung total frame berdasarkan fps video. Jika jumlah total frame melebihi batas ini, sistem secara otomatis mengambil sampel frame secara merata untuk memenuhi batas tersebut. Parameter ini hanya tersedia saat menggunakan SDK DashScope.
Kompatibel dengan OpenAI
Saat Anda mengirimkan file video langsung ke model pemahaman visual menggunakan SDK OpenAI atau HTTP, atur parameter"type"dalam pesan pengguna ke"video_url".
Python
import os
from openai import OpenAI
client = OpenAI(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda. URL berbeda tiap wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-plus",
messages=[
{
"role": "user",
"content": [
# Saat Anda mengirimkan file video langsung, atur nilai type ke video_url.
{
"type": "video_url",
"video_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
"fps": 2
},
{
"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 berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda. URL berbeda tiap wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3.7-plus",
messages: [
{
role: "user",
content: [
// Saat Anda mengirimkan file video langsung, atur nilai type ke video_url.
{
type: "video_url",
video_url: {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
"fps": 2
},
{
type: "text",
text: "Apa isi video ini?"
}
]
}
]
});
console.log(response.choices[0].message.content);
}
main();
curl
# ======= Penting =======
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda. URL berbeda tiap wilayah.
# === Hapus komentar ini sebelum eksekusi. ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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"
},
"fps":2
},
{
"type": "text",
"text": "Apa isi video ini?"
}
]
}
]
}'
DashScope
Python
import dashscope
import os
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda. URL berbeda tiap wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [
{"role": "user",
"content": [
# Parameter fps mengontrol frekuensi ekstraksi frame video. Ini menunjukkan bahwa satu frame diekstraksi setiap 1/fps detik. Untuk penggunaan lengkap, lihat: https://www.alibabacloud.com/help/zh/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 berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key ="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.7-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 {
// URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda. URL berbeda tiap wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// Parameter fps mengontrol frekuensi ekstraksi frame video. Ini menunjukkan bahwa satu frame diekstraksi setiap 1/fps detik. Untuk penggunaan lengkap, lihat: https://www.alibabacloud.com/help/zh/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 harus menggunakan Kunci API untuk wilayah tersebut. Untuk mendapatkan Kunci API, lihat: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-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 =======
# URL berikut untuk wilayah Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda. URL berbeda tiap wilayah.
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi. ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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 gambar
Saat Anda menyediakan video sebagai daftar frame yang telah diekstraksi sebelumnya, gunakan parameter fps untuk menentukan interval waktu antar frame. Hal ini membantu model memahami urutan, durasi, dan perubahan dinamis kejadian dengan lebih baik. Parameter fps menunjukkan bahwa frame diekstraksi dari video asli setiap
Kompatibel dengan OpenAI
Saat Anda menggunakan SDK OpenAI atau HTTP untuk memasukkan video sebagai daftar gambar ke model pemahaman visual, atur parameter"type"dalam pesan pengguna ke"video".
Python
import os
from openai import OpenAI
client = OpenAI(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-plus", # Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/zh/model-studio/models
messages=[{"role": "user","content": [
# Saat Anda memasukkan daftar gambar, parameter "type" dalam pesan pengguna adalah "video"
{"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"],
"fps":2},
{"type": "text","text": "Jelaskan proses spesifik dalam video ini"},
]}]
)
print(completion.choices[0].message.content)
Node.js
// Pastikan Anda telah menentukan "type": "module" dalam file package.json Anda.
import OpenAI from "openai";
const openai = new OpenAI({
// Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3.7-plus", // Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/zh/model-studio/models
messages: [{
role: "user",
content: [
{
// Saat Anda memasukkan daftar gambar, parameter "type" dalam pesan pengguna adalah "video"
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"],
"fps": 2
},
{
type: "text",
text: "Jelaskan proses spesifik dalam video ini"
}
]
}]
});
console.log(response.choices[0].message.content);
}
main();
curl
# ======= Penting =======
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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"],
"fps":2},
{"type": "text","text": "Jelaskan proses spesifik dalam video ini"}]}]
}'
DashScope
Python
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
messages = [{"role": "user",
"content": [
# Saat Anda memasukkan daftar gambar, parameter fps berlaku untuk model seri Qwen3.6, Qwen3-VL, dan Qwen2.5-VL.
{"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 dalam video ini"}]}]
response = dashscope.MultiModalConversation.call(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen3.7-plus', # Contoh ini menggunakan qwen3.7-plus. Anda dapat menggantinya dengan nama model lain 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.21.10 atau 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 {
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
private static final String MODEL_NAME = "qwen3.7-plus"; // Contoh ini menggunakan qwen3.7-plus. 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() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// Saat Anda memasukkan daftar gambar, parameter fps berlaku untuk model seri Qwen3.6, Qwen3-VL, dan Qwen2.5-VL.
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", "Jelaskan proses spesifik dalam video ini")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/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 =======
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda tiap wilayah.
# Kunci API berbeda tiap wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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 dalam video ini"
}
]
}
]
}
}'
Melewatkan file lokal (pengodean Base64 atau jalur file)
Model pemahaman visual mendukung dua metode untuk mengunggah file lokal: encoding Base64 dan unggah langsung melalui jalur file. Anda dapat memilih metode unggah berdasarkan ukuran file dan jenis SDK. Untuk rekomendasi, lihat Cara memilih metode unggah file. Kedua metode harus memenuhi persyaratan file yang dijelaskan dalam Batasan gambar.
Unggah menggunakan encoding Base64
Konversi file menjadi string terenkripsi Base64, lalu kirimkan ke model. Metode ini berlaku untuk SDK OpenAI dan DashScope, serta permintaan HTTP.
Unggah menggunakan jalur file
Kirimkan langsung jalur file lokal ke model. Metode ini hanya didukung oleh SDK Python dan Java DashScope. Metode ini tidak didukung untuk permintaan HTTP DashScope atau mode kompatibel OpenAI.
Lihat tabel berikut untuk menentukan jalur file berdasarkan bahasa pemrograman dan sistem operasi Anda.
Gambar
Lewatkan menggunakan jalur file
Python
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Ganti xxx/eagle.png dengan jalur mutlak gambar lokal Anda
local_path = "xxx/eagle.png"
image_path = f"file://{local_path}"
messages = [
{'role':'user',
'content': [{'image': image_path},
{'text': 'Adegan apa yang digambarkan dalam gambar ini?'}]}]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.7-plus', # Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di 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 {
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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", "Adegan apa yang digambarkan dalam gambar ini?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-plus") // Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di 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 gambar lokal Anda
callWithLocalFile("xxx/eagle.png");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
Masukan yang dienkode Base64
Kompatibel dengan OpenAI
Python
from openai import OpenAI
import os
import base64
# Fungsi enkode: 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 gambar lokal Anda
base64_image = encode_image("xxx/eagle.png")
client = OpenAI(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-plus", # Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
# Saat mengirimkan data gambar Base64, perhatikan bahwa format gambar (image/{format}) harus sesuai dengan Content Type dalam daftar gambar yang didukung. "f" adalah metode untuk pemformatan string.
# Gambar PNG: f"data:image/png;base64,{base64_image}"
# Gambar JPEG: f"data:image/jpeg;base64,{base64_image}"
# Gambar WEBP: f"data:image/webp;base64,{base64_image}"
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
},
{"type": "text", "text": "Adegan apa yang digambarkan dalam gambar ini?"},
],
}
],
)
print(completion.choices[0].message.content)
Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
}
);
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
// Ganti xxx/eagle.png dengan jalur mutlak gambar lokal Anda
const base64Image = encodeImage("xxx/eagle.png")
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen3.7-plus", // Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{"role": "user",
"content": [{"type": "image_url",
// Catatan: Saat mengirimkan data Base64, format gambar (image/{format}) harus sesuai dengan Content Type dalam daftar gambar yang didukung.
// Gambar PNG: data:image/png;base64,${base64Image}
// Gambar JPEG: data:image/jpeg;base64,${base64Image}
// Gambar WEBP: data:image/webp;base64,${base64Image}
"image_url": {"url": `data:image/png;base64,${base64Image}`},},
{"type": "text", "text": "Adegan apa yang digambarkan dalam gambar ini?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();
curl
-
Untuk informasi tentang cara mengonversi file menjadi string terenkripsi Base64, lihat kode contoh.
-
Untuk tujuan demonstrasi, string terenkripsi Base64
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, pastikan untuk mengirimkan string lengkap.
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.7-plus",
"messages": [
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA"}},
{"type": "text", "text": "Adegan apa yang digambarkan dalam gambar ini?"}
]
}]
}'
DashScope
Python
import base64
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Fungsi enkode: 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 gambar lokal Anda
base64_image = encode_image("xxxx/eagle.png")
messages = [
{
"role": "user",
"content": [
# Catatan: Saat mengirimkan data Base64, format gambar (image/{format}) harus sesuai dengan Content Type dalam daftar gambar yang didukung. "f" adalah metode untuk pemformatan string.
# Gambar PNG: f"data:image/png;base64,{base64_image}"
# Gambar JPEG: f"data:image/jpeg;base64,{base64_image}"
# Gambar WEBP: f"data:image/webp;base64,{base64_image}"
{"image": f"data:image/png;base64,{base64_image}"},
{"text": "Adegan apa yang digambarkan dalam gambar ini?"},
],
},
]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen3.7-plus", # Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di 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 {
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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); // Enkode 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", "Adegan apa yang digambarkan dalam gambar ini?"); }}
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-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 gambar lokal Anda
callWithLocalFile("xxx/eagle.png");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curl
-
Untuk informasi tentang cara mengonversi file menjadi string terenkripsi Base64, lihat kode contoh.
-
Untuk tujuan demonstrasi, string terenkripsi Base64
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, pastikan untuk mengirimkan string lengkap.
# ======= Penting =======
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},
{"text": "Adegan apa yang digambarkan dalam gambar ini?"}
]
}
]
}
}'
File video
Bagian ini menggunakan file test.mp4 yang disimpan secara lokal sebagai contoh.
Kirim menggunakan jalur file
Python
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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 dalam video ini?'}]}]
response = MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.7-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 {
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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 dalam video ini?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-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);
}
}
Input terenkode Base64
Kompatibel dengan OpenAI
Python
from openai import OpenAI
import os
import base64
# Fungsi enkode: 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 bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-plus",
messages=[
{
"role": "user",
"content": [
{
# Saat mengirimkan file video secara langsung, atur nilai type menjadi video_url
"type": "video_url",
"video_url": {"url": f"data:video/mp4;base64,{base64_video}"},
"fps":2
},
{"type": "text", "text": "Adegan apa yang digambarkan dalam video ini?"},
],
}
],
)
print(completion.choices[0].message.content)
Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.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.7-plus",
messages: [
{"role": "user",
"content": [{
// Saat mengirimkan file video secara langsung, atur nilai type menjadi video_url
"type": "video_url",
"video_url": {"url": `data:video/mp4;base64,${base64Video}`},
"fps":2},
{"type": "text", "text": "Adegan apa yang digambarkan dalam video ini?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();
curl
-
Untuk informasi tentang cara mengonversi file menjadi string terenkripsi Base64, lihat kode contoh.
-
Untuk tujuan demonstrasi, string terenkripsi Base64
"data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, pastikan untuk mengirimkan string lengkap.
# ======= Penting =======
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.7-plus",
"messages": [
{
"role": "user",
"content": [
{"type": "video_url", "video_url": {"url": "data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},"fps":2},
{"type": "text", "text": "Adegan apa yang digambarkan dalam gambar ini?"}
]
}]
}'
DashScope
Python
import base64
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Fungsi enkode: 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 dalam video ini?'}]}]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.7-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 {
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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); // Enkode 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 dalam video ini?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-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 video lokal Anda
callWithLocalFile("xxx/test.mp4");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curl
-
Untuk informasi tentang cara mengonversi file menjadi string terenkripsi Base64, lihat kode contoh.
-
Untuk tujuan demonstrasi, string terenkripsi Base64
"f"data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, pastikan untuk mengirimkan string lengkap.
# ======= Penting =======
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"video": "data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},
{"text": "Adegan apa yang digambarkan dalam video ini? "}
]
}
]
}
}'
Daftar gambar
Bagian ini menggunakan file-file yang disimpan secara lokal football1.jpg, football2.jpg, football3.jpg, dan football4.jpg sebagai contoh.
Mengirimkan jalur file
Python
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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',
# Saat Anda mengirimkan daftar gambar, parameter fps berlaku untuk model seri Qwen3.6, Qwen3-VL, dan Qwen2.5-VL.
'content': [{'video': [image_path1,image_path2,image_path3,image_path4],"fps":2},
{'text': 'Adegan apa yang digambarkan dalam video ini?'}]}]
response = MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.7-plus', # Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di 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.21.10 atau lebih baru.
import java.util.Arrays;
import java.util.Map;
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 {
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
private static final String MODEL_NAME = "qwen3.7-plus"; // Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di 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));
// Saat Anda mengirimkan daftar gambar, parameter fps berlaku untuk model seri Qwen3.6, Qwen3-VL, dan Qwen2.5-VL.
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(params,
Collections.singletonMap("text", "Jelaskan proses spesifik dalam video ini")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/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(
"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);
}
}
Kirim menggunakan encoding Base64
Kompatibel dengan OpenAI
Python
import os
from openai import OpenAI
import base64
# Fungsi enkode: 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 bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-plus", # Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di 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 dalam video ini"},
]}]
)
print(completion.choices[0].message.content)
Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.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.7-plus", // Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{"role": "user",
"content": [{"type": "video",
"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 dalam video ini?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();
curl
-
Untuk informasi tentang cara mengonversi file menjadi string terenkripsi Base64, lihat kode contoh.
-
Untuk tujuan demonstrasi, string terenkripsi Base64
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, pastikan untuk mengirimkan string lengkap.
# ======= Penting =======
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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 dalam video ini"}]}]
}'
DashScope
Python
import base64
import os
import dashscope
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Fungsi enkode: 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/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}"
]
},
{'text': 'Tolong jelaskan proses spesifik dari video ini?'}]}]
response = dashscope.MultiModalConversation.call(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen3.7-plus', # Contoh ini menggunakan qwen3.7-plus. Anda dapat mengganti nama model sesuai kebutuhan. Daftar model tersedia di 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 {
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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); // Enkode 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));
// Saat Anda mengirimkan daftar gambar, parameter fps berlaku untuk model seri Qwen3.6, Qwen3-VL, dan Qwen2.5-VL.
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(params,
Collections.singletonMap("text", "Jelaskan proses spesifik dalam video ini")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-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 file lainnya dengan jalur mutlak gambar 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 tentang cara mengonversi file menjadi string terenkripsi Base64, lihat kode contoh.
-
Untuk tujuan demonstrasi, string terenkripsi Base64
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."dalam kode dipotong. Dalam penggunaan aktual, pastikan untuk mengirimkan string lengkap.
# ======= Penting =======
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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 dalam video ini"
}
]
}
]
}
}'
Proses gambar resolusi tinggi
API model pemahaman visual memiliki batasan jumlah token visual untuk satu gambar terenkripsi. Dengan konfigurasi default, gambar resolusi tinggi dikompresi, yang dapat menyebabkan hilangnya detail dan memengaruhi akurasi pemahaman. Aktifkan vl_high_resolution_images atau sesuaikan max_pixels untuk meningkatkan jumlah token visual. Hal ini mempertahankan lebih banyak detail gambar dan meningkatkan pemahaman.
-
Saat
vl_high_resolution_images=true, API menggunakan kebijakan resolusi tetap dan mengabaikan pengaturanmax_pixels. Ini cocok untuk mengenali teks halus, objek kecil, atau detail kaya dalam gambar. -
Saat
vl_high_resolution_images=false, batas piksel akhir bergantung pada nilai parametermax_pixels.-
Untuk skenario kecepatan pemrosesan tinggi atau sensitif biaya: Gunakan nilai default
max_pixelsatau atur ke nilai yang lebih kecil. -
Jika Anda ingin fokus pada detail tertentu dan dapat menerima kecepatan pemrosesan yang lebih rendah, tingkatkan nilai
max_pixelssesuai kebutuhan.
-
Kompatibel dengan OpenAI
vl_high_resolution_images bukan parameter standar OpenAI. Metode pengirimannya berbeda-beda di berbagai SDK bahasa:
-
Python SDK: Harus dikirimkan melalui dictionary
extra_body. -
Node.js SDK: Dapat dikirimkan langsung sebagai parameter tingkat atas.
Python
import os
import time
from openai import OpenAI
client = OpenAI(
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-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 gambar input. Tidak valid saat vl_high_resolution_images=True. Saat vl_high_resolution_images=False, dapat dikustomisasi, dan nilai maksimum bervariasi berdasarkan model.
# "max_pixels": 16384 * 32 * 32
},
{"type": "text", "text": "Suasana festival apa yang disampaikan 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 bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
}
);
const response = await openai.chat.completions.create({
model: "qwen3.7-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 gambar input. Tidak berpengaruh saat vl_high_resolution_images=True. Saat vl_high_resolution_images=False, dapat dikustomisasi, dan nilai maksimum bervariasi berdasarkan model.
// "max_pixels": 2560 * 32 * 32
},
{type: "text", text: "Suasana festival apa yang disampaikan 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 bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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 disampaikan gambar ini?"
}
]
}
],
"vl_high_resolution_images":true
}'DashScope
Python
import os
import time
import dashscope
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.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 gambar input. Tidak valid saat vl_high_resolution_images=True. Saat vl_high_resolution_images=False, dapat dikustomisasi, dan nilai maksimum bervariasi berdasarkan model.
# "max_pixels": 16384 * 32 * 32
},
{"text": "Suasana festival apa yang disampaikan gambar ini?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.7-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 {
// URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.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 gambar input. Tidak valid saat vl_high_resolution_images=True. Saat vl_high_resolution_images=False, dapat dikustomisasi, dan nilai maksimum bervariasi berdasarkan model.
// map.put("max_pixels", 2621440);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
Collections.singletonMap("text", "Suasana festival apa yang disampaikan gambar ini?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.7-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 bervariasi berdasarkan wilayah. Untuk mendapatkan kunci API, lihat https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# URL berikut untuk wilayah Singapura. Saat memanggil API, ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.7-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 disampaikan gambar ini?"}
]
}
]
},
"parameters": {
"vl_high_resolution_images": true
}
}'
Penggunaan lainnya
Batasan
Batasan file input
Batasan gambar
-
Resolusi gambar:
-
Ukuran minimum: Lebar dan tinggi gambar harus keduanya lebih besar dari
10piksel. -
Rasio aspek: Rasio sisi panjang terhadap sisi pendek, baik untuk gambar asli maupun gambar yang telah diubah ukurannya, tidak boleh melebihi
200:1.Untuk informasi mengenai logika pengubahan ukuran gambar, lihat fungsi
smart_resizedalam Menghitung token gambar -
Piksel maksimum:
-
Pertahankan resolusi gambar dalam batas
8K (7680x4320). Gambar dengan resolusi lebih tinggi dapat menyebabkan timeout panggilan API karena ukuran file yang besar dan waktu transmisi jaringan yang lama. -
Pengubahan ukuran otomatis: Model dapat menyesuaikan ukuran gambar menggunakan parameter
max_pixelsdanmin_pixels. Memberikan gambar beresolusi tinggi tidak meningkatkan akurasi deteksi. Sebaliknya, hal ini meningkatkan risiko kegagalan panggilan. Ubah ukuran gambar ke ukuran yang wajar di sisi client sebelum mengunggah.
-
-
-
Format gambar yang didukung
-
Untuk resolusi di bawah 4K
(3840x2160), format gambar berikut didukung:Format gambar
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 (3840x2160)dan8K (7680x4320), hanya format JPEG, JPG, dan PNG yang didukung.
-
-
Ukuran gambar:
-
Saat dikirim sebagai URL publik: Satu gambar tidak boleh melebihi
20 MBuntuk model seri Qwen3.7, Qwen3.6, dan Qwen3.5. Untuk model lainnya, satu gambar tidak boleh melebihi10 MB. -
Saat dikirim sebagai path lokal: Satu gambar tidak boleh melebihi
10 MB. -
Saat dikirim sebagai string Base64: String yang dienkripsi tidak boleh melebihi
10 MB.
Untuk memampatkan file, lihat Cara memampatkan gambar atau video ke ukuran yang diperlukan.
-
-
Batas jumlah gambar: Jumlah maksimum gambar yang didukung untuk input multi-gambar bervariasi berdasarkan metode input:
-
Saat dikirim sebagai URL publik atau path lokal:
-
Seri Qwen3.7: Maksimal 2.048 gambar
-
Model lainnya: Maksimal 256 gambar
-
-
Saat dikirim sebagai string Base64: Maksimal 250 gambar
-
Jumlah total token untuk semua gambar juga dibatasi oleh batas maksimum token input model. Total jumlah token untuk semua gambar dan teks tidak boleh melebihi batas maksimum input model.
Batasan video
-
Saat dikirim sebagai daftar gambar, jumlah gambar dalam daftar dibatasi sebagai berikut:
-
Seri
qwen3.6dan seriqwen3.5: Minimal 4 gambar dan maksimal 8.000 gambar -
Seri
qwen3-vl-plus, seriqwen3-vl-flash,qwen3-vl-235b-a22b-thinking, danqwen3-vl-235b-a22b-instruct: Minimal 4 gambar dan maksimal 2.000 gambar -
Model seri open source lainnya seperti
Qwen3-VL,Qwen2.5-VL(termasuk versi komersial dan open source), serta seriQVQ: Minimal 4 gambar dan maksimal 512 gambar -
Model lainnya: Minimal 4 gambar dan maksimal 80 gambar
-
-
Saat dikirim sebagai file video:
-
Ukuran video:
-
Saat dikirim sebagai URL publik:
-
Seri
qwen3.6, seriqwen3.5, seriQwen3-VL, danqwen-vl-max(termasuk semua versi setelahdan): 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 lainnya: Tidak boleh melebihi 150 MB.
-
-
Saat dikirim sebagai string Base64: String yang dienkripsi harus kurang dari 10 MB.
-
Saat dikirim sebagai path file lokal: File video tidak boleh melebihi 100 MB.
Untuk memampatkan file, lihat Cara memampatkan gambar atau video ke ukuran yang diperlukan.
-
-
Durasi video:
-
Seri
qwen3.6dan seriqwen3.5: 2 detik hingga 2 jam. -
Seri
qwen3-vl-plus, seriqwen3-vl-flash,qwen3-vl-235b-a22b-thinking, danqwen3-vl-235b-a22b-instruct: 2 detik hingga 1 jam. -
Seri open source lainnya seperti
Qwen3-VLdanqwen-vl-max(termasuk semua versi yang diperbarui setelahdan): 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 lainnya: 2 detik hingga 40 detik.
-
-
Format video: MP4, AVI, MKV, MOV, FLV, WMV, dan lainnya.
-
Dimensi video: Tidak ada batasan khusus. Model dapat secara otomatis menyesuaikan dimensi video menggunakan parameter
max_pixelsdanmin_pixels. File video yang lebih besar tidak menghasilkan pemahaman yang lebih baik. -
Batas jumlah video: Maksimal 64 video dapat dikirim.
-
Pemahaman audio: Model tidak mendukung pemahaman track audio dari file video.
-
Metode input file
-
URL publik: Berikan alamat file yang dapat diakses publik dan mendukung protokol HTTP atau HTTPS. Untuk stabilitas dan performa optimal, unggah file ke OSS guna memperoleh URL publik.
PentingUntuk memastikan model dapat mengunduh file dengan sukses, header respons dari URL publik harus mencantumkan Content-Length (ukuran file) dan Content-Type (jenis media, seperti image/jpeg). Jika salah satu bidang tersebut tidak ada atau salah, pengunduhan file akan gagal.
-
Enkode Base64: Konversi file menjadi string Base64, lalu kirimkan.
-
Path file lokal (hanya untuk DashScope SDK): Kirimkan path file lokal.
Untuk rekomendasi cara memilih metode input file, lihat Bagaimana cara memilih metode unggah file?
Menggunakan di lingkungan produksi
-
Pra-pemrosesan gambar dan video: Model pemahaman visual memiliki batas ukuran untuk file input. Untuk mengompresi file, lihat Metode kompresi gambar atau video.
-
Pemrosesan file teks: Model pemahaman visual hanya mendukung file gambar dan tidak dapat memproses file teks secara langsung. Gunakan salah satu solusi berikut:
-
Konversi file teks ke format gambar. Gunakan library pemrosesan gambar, seperti pdf2image untuk Python, untuk mengonversi file per halaman menjadi beberapa gambar berkualitas tinggi. Kemudian, kirimkan gambar-gambar tersebut ke model menggunakan metode multi-image input.
-
Qwen-Long mendukung file teks dan dapat digunakan untuk mengurai konten file.
-
-
Toleransi kesalahan dan stabilitas
-
Penanganan timeout: Pada panggilan non-streaming, terjadi error timeout jika model tidak selesai menghasilkan output dalam waktu 300 detik. Saat terjadi timeout, konten yang telah dihasilkan dikembalikan dalam badan respons. Header respons yang berisi
x-dashscope-partialresponse: truemenunjukkan bahwa respons mengalami timeout. Gunakan fitur partial mode, yang didukung oleh beberapa model. Tambahkan konten yang telah dihasilkan ke dalam array `messages` dan kirim ulang permintaan tersebut. Hal ini memungkinkan Large Language Model (LLM) melanjutkan proses generasi konten. Untuk informasi lebih lanjut, lihat Lanjutkan generasi dari output yang belum lengkap. -
Mekanisme retry: Rancang logika retry panggilan API yang masuk akal, seperti exponential backoff, untuk menangani fluktuasi jaringan atau ketidaktersediaan layanan temporary.
-
Billing and rate limiting
-
Billing: Total biaya dihitung berdasarkan jumlah total token input dan output. Harga token input dan output tersedia di Konsol Model Studio.
-
Token composition: Token input terdiri dari token teks dan token yang dikonversi dari gambar atau video. Token output adalah teks yang dihasilkan oleh model. Dalam mode thinking, proses berpikir model juga dihitung sebagai token output. Jika proses berpikir tidak ditampilkan dalam mode thinking, penagihan mengikuti harga untuk mode non-thinking.
-
Calculate tokens for images and videos: Gunakan kode berikut untuk menghitung konsumsi token untuk gambar atau video. Hasil perkiraan hanya bersifat referensi. Penggunaan aktual didasarkan pada respons API.
-
-
View bills: Lihat tagihan atau isi ulang akun Anda di halaman Biaya dan Pengeluaran di Konsol Manajemen Alibaba Cloud.
-
Rate limiting: Untuk informasi lebih lanjut tentang kondisi pembatasan laju untuk model pemahaman visual, lihat Rate limiting.
-
Free quota(Hanya wilayah Singapura): Kuota gratis sebesar 1 juta token disediakan untuk model pemahaman visual. Periode validitas 90 hari dimulai sejak tanggal Anda mengaktifkan Model Studio atau permintaan model Anda disetujui.
Referensi API
Untuk informasi lebih lanjut mengenai parameter input dan output model pemahaman visual, lihat generasi teks.
FAQ
Bagaimana cara memilih metode unggah file?
Bagaimana cara memampatkan gambar atau video agar sesuai ukuran yang ditentukan?
Setelah model menghasilkan hasil lokasi objek, bagaimana cara menggambar bingkai deteksi pada gambar asli?
Kode error
Jika panggilan model gagal, pesan error akan dikembalikan. Untuk informasi tentang cara mengatasi error tersebut, lihat Kode error.












