Model penalaran visual terlebih dahulu menghasilkan proses pemikirannya, lalu memberikan jawaban. Pendekatan ini menjadikannya cocok untuk tugas analisis visual kompleks, seperti menyelesaikan soal matematika, menganalisis data grafik, atau memahami video yang rumit.
Showcase
Komponen di atas hanya untuk keperluan demonstrasi dan tidak mengirim permintaan nyata.
Ketersediaan
Wilayah yang didukung
Model yang didukung
Global
Dalam mode penyebaran global, titik akhir dan penyimpanan data berlokasi di wilayah AS (Virginia), serta sumber daya komputasi inferensi model dijadwalkan secara dinamis di seluruh dunia.
Model hybrid-thinking: qwen3-vl-plus, qwen3-vl-plus-2025-09-23, qwen3-vl-flash, qwen3-vl-flash-2025-10-15
Model thinking-only: qwen3-vl-235b-a22b-thinking, qwen3-vl-32b-thinking, qwen3-vl-30b-a3b-thinking, qwen3-vl-8b-thinking
Internasional
Dalam mode penyebaran internasional, titik akhir dan penyimpanan data berlokasi di wilayah Singapura, serta sumber daya komputasi inferensi model dijadwalkan secara dinamis di seluruh dunia, tidak termasuk Tiongkok Daratan.
Qwen3-VL
Model hybrid-thinking: qwen3-vl-plus, qwen3-vl-plus-2025-12-19, qwen3-vl-plus-2025-09-23, qwen3-vl-flash, qwen3-vl-flash-2025-10-15
Model thinking-only: qwen3-vl-235b-a22b-thinking, qwen3-vl-32b-thinking, qwen3-vl-30b-a3b-thinking, qwen3-vl-8b-thinking
QVQ
Model thinking-only: seri qvq-max, seri qvq-plus
AS
Dalam mode penyebaran AS, titik akhir dan penyimpanan data berlokasi di wilayah AS (Virginia), serta sumber daya komputasi inferensi model terbatas hanya di Amerika Serikat.
Model hybrid-thinking: qwen3-vl-flash-us, qwen3-vl-flash-2025-10-15-us
Tiongkok Daratan
Dalam mode penyebaran Tiongkok Daratan, titik akhir dan penyimpanan data berlokasi di wilayah Beijing, serta sumber daya komputasi inferensi model terbatas hanya di Tiongkok Daratan.
Qwen3-VL
Model hybrid-thinking: qwen3-vl-plus, qwen3-vl-plus-2025-12-19, qwen3-vl-plus-2025-09-23, qwen3-vl-flash, qwen3-vl-flash-2025-10-15
Model thinking-only: qwen3-vl-235b-a22b-thinking, qwen3-vl-32b-thinking, qwen3-vl-30b-a3b-thinking, qwen3-vl-8b-thinking
QVQ
Model thinking-only: seri qvq-max, seri qvq-plus
Kimi
Model hybrid-thinking: kimi-k2.5
Panduan penggunaan
Proses berpikir: Studio Model menyediakan dua jenis model penalaran visual: hybrid-thinking dan thinking-only.
Model hybrid-thinking: Anda dapat mengontrol perilaku berpikirnya menggunakan parameter
enable_thinking:Atur ke
trueuntuk mengaktifkan proses berpikir. Model akan terlebih dahulu menghasilkan proses berpikirnya, lalu memberikan respons akhir.Atur ke
falseuntuk menonaktifkan proses berpikir. Model akan langsung menghasilkan respons.
Model thinking-only: Model ini selalu menghasilkan proses berpikir sebelum memberikan respons, dan perilaku ini tidak dapat dinonaktifkan.
Metode output: Karena model penalaran visual mencakup proses berpikir yang detail, kami merekomendasikan menggunakan keluaran streaming untuk mencegah timeout akibat respons yang panjang.
Qwen3-VL dan kimi-k2.5 mendukung metode streaming maupun non-streaming.
Seri QVQ hanya mendukung keluaran streaming.
Rekomendasi prompt sistem:
Untuk percakapan satu giliran atau sederhana: Untuk hasil inferensi terbaik, jangan atur
System Message. Sampaikan instruksi, seperti pengaturan peran model dan persyaratan format output, melaluiUser Message.Untuk aplikasi kompleks seperti membangun agen atau mengimplementasikan pemanggilan tool: Gunakan
System Messageuntuk menentukan peran, kemampuan, dan kerangka perilaku model guna memastikan stabilitas dan keandalannya.
Mulai
Prasyarat
Anda telah membuat API key dan mengekspor API key sebagai variabel lingkungan.
Jika Anda memanggil model menggunakan SDK, instal versi terbaru 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 qvq-max untuk menyelesaikan soal matematika dari gambar. Contoh ini menggunakan keluaran streaming untuk mencetak proses berpikir dan respons akhir secara terpisah.
Kompatibel dengan OpenAI
Python
from openai import OpenAI
import os
# Inisialisasi klien OpenAI
client = OpenAI(
# Kunci API berbeda tiap wilayah. Untuk mendapatkannya, kunjungi https://bailian.console.alibabacloud.com/?tab=model#/api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY"),
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # Menyimpan seluruh proses berpikir
answer_content = "" # Menyimpan seluruh respons
is_answering = False # Memeriksa apakah proses berpikir telah selesai dan respons telah dimulai
# Buat permintaan chat completion
completion = client.chat.completions.create(
model="qvq-max", # Contoh ini menggunakan qvq-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan.
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": "How do I solve this problem?"},
],
},
],
stream=True,
# Hapus komentar berikut untuk mengembalikan penggunaan token pada chunk terakhir
# stream_options={
# "include_usage": True
# }
)
print("\n" + "=" * 20 + "Thinking process" + "=" * 20 + "\n")
for chunk in completion:
# Jika chunk.choices kosong, cetak penggunaan
if not chunk.choices:
print("\nUsage:")
print(chunk.usage)
else:
delta = chunk.choices[0].delta
# Cetak proses berpikir
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
# Mulai merespons
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "Full response" + "=" * 20 + "\n")
is_answering = True
# Cetak proses respons
print(delta.content, end='', flush=True)
answer_content += delta.content
# print("=" * 20 + "Full thinking process" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "Full response" + "=" * 20 + "\n")
# print(answer_content)Node.js
import OpenAI from "openai";
import process from 'process';
// Inisialisasi klien OpenAI
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY, // Baca dari variabel lingkungan. Kunci API berbeda tiap wilayah. Untuk mendapatkannya, kunjungi https://bailian.console.alibabacloud.com/?tab=model#/api-key
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1'
});
let reasoningContent = '';
let answerContent = '';
let isAnswering = false;
let 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: "Solve this problem" },
]
}]
async function main() {
try {
const stream = await openai.chat.completions.create({
model: 'qvq-max',
messages: messages,
stream: true
});
console.log('\n' + '='.repeat(20) + 'Thinking process' + '='.repeat(20) + '\n');
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\nUsage:');
console.log(chunk.usage);
continue;
}
const delta = chunk.choices[0].delta;
// Tangani proses berpikir
if (delta.reasoning_content) {
process.stdout.write(delta.reasoning_content);
reasoningContent += delta.reasoning_content;
}
// Tangani respons formal
else if (delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + 'Full response' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('Error:', error);
}
}
main();HTTP
# ======= IMPORTANT =======
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# Kunci API berbeda tiap wilayah. Untuk mendapatkannya, kunjungi https://bailian.console.alibabacloud.com/?tab=model#/api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qvq-max",
"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": "Solve this problem"
}
]
}
],
"stream":true,
"stream_options":{"include_usage":true}
}'DashScope
Saat memanggil model QVQ menggunakan DashScope:
Parameter
incremental_outputsecara default bernilaitruedan tidak dapat diatur kefalse. Hanya keluaran streaming inkremental yang didukung.Parameter
result_formatsecara default bernilai"message"dan tidak dapat diatur ke"text".
Python
import os
import dashscope
from dashscope import MultiModalConversation
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "How do I solve this problem?"}
]
}
]
response = MultiModalConversation.call(
# Kunci API berbeda tiap wilayah. Untuk mendapatkannya, kunjungi https://bailian.console.alibabacloud.com/?tab=model#/api-key
# Jika variabel lingkungan belum dikonfigurasi, ganti baris berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qvq-max", # Contoh ini menggunakan qvq-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan.
messages=messages,
stream=True,
)
# Menyimpan seluruh proses berpikir
reasoning_content = ""
# Menyimpan seluruh respons
answer_content = ""
# Memeriksa apakah proses berpikir telah selesai dan respons telah dimulai
is_answering = False
print("=" * 20 + "Thinking process" + "=" * 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 sedang dalam proses berpikir
if reasoning_content_chunk != None and chunk.output.choices[0].message.content == []:
print(chunk.output.choices[0].message.reasoning_content, end="")
reasoning_content += chunk.output.choices[0].message.reasoning_content
# Jika saat ini sedang dalam proses respons
elif chunk.output.choices[0].message.content != []:
if not is_answering:
print("\n" + "=" * 20 + "Full response" + "=" * 20)
is_answering = True
print(chunk.output.choices[0].message.content[0]["text"], end="")
answer_content += chunk.output.choices[0].message.content[0]["text"]
# Untuk mencetak seluruh proses berpikir dan respons, hapus komentar dan jalankan kode berikut
# print("=" * 20 + "Full thinking process" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "Full response" + "=" * 20 + "\n")
# print(f"{answer_content}")Java
// Versi SDK DashScope >= 2.19.0
import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.exception.InputRequiredException;
import java.lang.System;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static StringBuilder reasoningContent = new StringBuilder();
private static StringBuilder finalContent = new StringBuilder();
private static boolean isFirstPrint = true;
private static void handleGenerationResult(MultiModalConversationResult message) {
String re = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
String reasoning = Objects.isNull(re)?"":re; // Nilai default
List<Map<String, Object>> content = message.getOutput().getChoices().get(0).getMessage().getContent();
if (!reasoning.isEmpty()) {
reasoningContent.append(reasoning);
if (isFirstPrint) {
System.out.println("====================Thinking process====================");
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====================Full response====================");
isFirstPrint = true;
}
System.out.print(text);
}
}
public static MultiModalConversationParam buildMultiModalConversationParam(MultiModalMessage Msg) {
return MultiModalConversationParam.builder()
// Kunci API berbeda tiap wilayah. Untuk mendapatkannya, kunjungi https://bailian.console.alibabacloud.com/?tab=model#/api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// Contoh ini menggunakan qvq-max. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan.
.model("qvq-max")
.messages(Arrays.asList(Msg))
.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", "Solve this problem")))
.build();
streamCallWithMessage(conv, userMsg);
// Cetak hasil akhir
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================Full response====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | UploadFileException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}HTTP
curl
# ======= IMPORTANT =======
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Kunci API berbeda tiap wilayah. Untuk mendapatkannya, kunjungi https://bailian.console.alibabacloud.com/?tab=model#/api-key
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
"model": "qvq-max",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "Solve this problem"}
]
}
]
}
}'Kemampuan inti
Mengaktifkan atau menonaktifkan proses berpikir
Untuk skenario yang memerlukan proses berpikir detail, seperti menyelesaikan soal atau menganalisis laporan, Anda dapat mengaktifkan mode berpikir menggunakan parameter enable_thinking. Contoh berikut menunjukkan cara melakukannya.
Parameter enable_thinking hanya didukung oleh seri qwen3-vl-plus, qwen3-vl-flash, dan kimi-k2.5.
Kompatibel dengan OpenAI
Parameter enable_thinking dan thinking_budget bukanlah parameter standar OpenAI. Cara meneruskan parameter ini berbeda-beda tergantung bahasa pemrograman:
SDK Python: Anda harus meneruskannya melalui dictionary
extra_body.SDK Node.js: Anda dapat meneruskannya langsung sebagai parameter tingkat atas.
import os
from openai import OpenAI
client = OpenAI(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1
# Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # Menyimpan seluruh proses berpikir
answer_content = "" # Menyimpan seluruh respons
is_answering = False # Memeriksa apakah proses berpikir telah selesai dan respons telah dimulai
enable_thinking = True
# Buat permintaan chat completion
completion = client.chat.completions.create(
model="qwen3-vl-plus",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
},
},
{"type": "text", "text": "How do I solve this problem?"},
],
},
],
stream=True,
# Parameter enable_thinking mengaktifkan proses berpikir. Parameter thinking_budget menetapkan jumlah maksimum token untuk proses penalaran.
# Untuk qwen3-vl-plus dan qwen3-vl-flash, Anda dapat menggunakan enable_thinking untuk mengaktifkan atau menonaktifkan proses berpikir. Untuk model dengan akhiran 'thinking', seperti qwen3-vl-235b-a22b-thinking, enable_thinking hanya dapat diatur ke true. Parameter ini tidak berlaku untuk model Qwen-VL lainnya.
extra_body={
'enable_thinking': enable_thinking
},
# Hapus komentar berikut untuk mengembalikan penggunaan token pada chunk terakhir
# stream_options={
# "include_usage": True
# }
)
if enable_thinking:
print("\n" + "=" * 20 + "Thinking process" + "=" * 20 + "\n")
for chunk in completion:
# Jika chunk.choices kosong, cetak penggunaan
if not chunk.choices:
print("\nUsage:")
print(chunk.usage)
else:
delta = chunk.choices[0].delta
# Cetak proses berpikir
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
# Mulai merespons
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "Full response" + "=" * 20 + "\n")
is_answering = True
# Cetak proses respons
print(delta.content, end='', flush=True)
answer_content += delta.content
# print("=" * 20 + "Full thinking process" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "Full response" + "=" * 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, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1
// Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
let reasoningContent = '';
let answerContent = '';
let isAnswering = false;
let enableThinking = true;
let messages = [
{
role: "user",
content: [
{ type: "image_url", image_url: { "url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg" } },
{ type: "text", text: "Solve this problem" },
]
}]
async function main() {
try {
const stream = await openai.chat.completions.create({
model: 'qwen3-vl-plus',
messages: messages,
stream: true,
// Catatan: Di SDK Node.js, parameter non-standar seperti enableThinking diteruskan sebagai properti tingkat atas dan tidak perlu dimasukkan ke extra_body.
enable_thinking: enableThinking
});
if (enableThinking){console.log('\n' + '='.repeat(20) + 'Thinking process' + '='.repeat(20) + '\n');}
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\nUsage:');
console.log(chunk.usage);
continue;
}
const delta = chunk.choices[0].delta;
// Tangani proses berpikir
if (delta.reasoning_content) {
process.stdout.write(delta.reasoning_content);
reasoningContent += delta.reasoning_content;
}
// Tangani respons formal
else if (delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + 'Full response' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('Error:', error);
}
}
main();# ======= IMPORTANT =======
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
# Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3-vl-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
}
},
{
"type": "text",
"text": "Solve this problem"
}
]
}
],
"stream":true,
"stream_options":{"include_usage":true},
"enable_thinking": true
}'DashScope
import os
import dashscope
from dashscope import MultiModalConversation
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1
# Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
enable_thinking = True
messages = [
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "How do I solve this problem?"}
]
}
]
response = MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx",
# Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen3-vl-plus",
messages=messages,
stream=True,
# Parameter enable_thinking mengaktifkan proses berpikir.
# Untuk qwen3-vl-plus dan qwen3-vl-flash, Anda dapat menggunakan enable_thinking untuk mengaktifkan atau menonaktifkan proses berpikir. Untuk model dengan akhiran 'thinking', seperti qwen3-vl-235b-a22b-thinking, enable_thinking hanya dapat diatur ke true. Parameter ini tidak berlaku untuk model Qwen-VL lainnya.
enable_thinking=enable_thinking
)
# Menyimpan seluruh proses berpikir
reasoning_content = ""
# Menyimpan seluruh respons
answer_content = ""
# Memeriksa apakah proses berpikir telah selesai dan respons telah dimulai
is_answering = False
if enable_thinking:
print("=" * 20 + "Thinking process" + "=" * 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 sedang dalam proses berpikir
if reasoning_content_chunk != None and chunk.output.choices[0].message.content == []:
print(chunk.output.choices[0].message.reasoning_content, end="")
reasoning_content += chunk.output.choices[0].message.reasoning_content
# Jika saat ini sedang dalam proses respons
elif chunk.output.choices[0].message.content != []:
if not is_answering:
print("\n" + "=" * 20 + "Full response" + "=" * 20)
is_answering = True
print(chunk.output.choices[0].message.content[0]["text"], end="")
answer_content += chunk.output.choices[0].message.content[0]["text"]
# Untuk mencetak seluruh proses berpikir dan respons, hapus komentar dan jalankan kode berikut
# print("=" * 20 + "Full thinking process" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "Full response" + "=" * 20 + "\n")
# print(f"{answer_content}")// Versi SDK DashScope >= 2.21.10
import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.exception.InputRequiredException;
import java.lang.System;
import com.alibaba.dashscope.utils.Constants;
public class Main {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1
// Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
static {Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";}
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static StringBuilder reasoningContent = new StringBuilder();
private static StringBuilder finalContent = new StringBuilder();
private static boolean isFirstPrint = true;
private static void handleGenerationResult(MultiModalConversationResult message) {
String re = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
String reasoning = Objects.isNull(re)?"":re; // Nilai default
List<Map<String, Object>> content = message.getOutput().getChoices().get(0).getMessage().getContent();
if (!reasoning.isEmpty()) {
reasoningContent.append(reasoning);
if (isFirstPrint) {
System.out.println("====================Thinking process====================");
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====================Full response====================");
isFirstPrint = true;
}
System.out.print(text);
}
}
public static MultiModalConversationParam buildMultiModalConversationParam(MultiModalMessage Msg) {
return MultiModalConversationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
// Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.messages(Arrays.asList(Msg))
.enableThinking(true)
.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", "Solve this problem")))
.build();
streamCallWithMessage(conv, userMsg);
// Cetak hasil akhir
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================Full response====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | UploadFileException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}# ======= IMPORTANT =======
# Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "Solve this problem"}
]
}
]
},
"parameters":{
"enable_thinking": true,
"incremental_output": true
}
}'Batasi panjang proses berpikir
Untuk mencegah model menghasilkan proses berpikir yang terlalu panjang, gunakan parameter thinking_budget untuk membatasi jumlah maksimum token yang dihasilkan untuk proses berpikir. Jika proses berpikir melebihi batas ini, kontennya dipotong, dan model segera mulai menghasilkan jawaban akhir. Nilai default thinking_budget adalah panjang maksimum rantai-pikiran model tersebut. Lihat Daftar model.
Parameter thinking_budget hanya didukung oleh Qwen3-VL (mode berpikir) dan kimi-k2.5 (mode berpikir).
Kompatibel dengan OpenAI
Parameter thinking_budget bukanlah parameter standar OpenAI. Jika Anda menggunakan SDK Python OpenAI, Anda harus meneruskannya melalui extra_body.
import os
from openai import OpenAI
client = OpenAI(
# Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1
# Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # Menyimpan seluruh proses berpikir
answer_content = "" # Menyimpan seluruh respons
is_answering = False # Memeriksa apakah proses berpikir telah selesai dan respons telah dimulai
enable_thinking = True
# Buat permintaan chat completion
completion = client.chat.completions.create(
model="qwen3-vl-plus",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
},
},
{"type": "text", "text": "How do I solve this problem?"},
],
},
],
stream=True,
# Parameter enable_thinking mengaktifkan proses berpikir. Parameter thinking_budget menetapkan jumlah maksimum token untuk proses penalaran.
# Untuk qwen3-vl-plus dan qwen3-vl-flash, Anda dapat menggunakan enable_thinking untuk mengaktifkan atau menonaktifkan proses berpikir. Untuk model dengan akhiran 'thinking', seperti qwen3-vl-235b-a22b-thinking, enable_thinking hanya dapat diatur ke true. Parameter ini tidak berlaku untuk model Qwen-VL lainnya.
extra_body={
'enable_thinking': enable_thinking,
"thinking_budget": 81920},
# Hapus komentar berikut untuk mengembalikan penggunaan token pada chunk terakhir
# stream_options={
# "include_usage": True
# }
)
if enable_thinking:
print("\n" + "=" * 20 + "Thinking process" + "=" * 20 + "\n")
for chunk in completion:
# Jika chunk.choices kosong, cetak penggunaan
if not chunk.choices:
print("\nUsage:")
print(chunk.usage)
else:
delta = chunk.choices[0].delta
# Cetak proses berpikir
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
# Mulai merespons
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "Full response" + "=" * 20 + "\n")
is_answering = True
# Cetak proses respons
print(delta.content, end='', flush=True)
answer_content += delta.content
# print("=" * 20 + "Full thinking process" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "Full response" + "=" * 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, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1
// Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
let reasoningContent = '';
let answerContent = '';
let isAnswering = false;
let enableThinking = true;
let messages = [
{
role: "user",
content: [
{ type: "image_url", image_url: { "url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg" } },
{ type: "text", text: "Solve this problem" },
]
}]
async function main() {
try {
const stream = await openai.chat.completions.create({
model: 'qwen3-vl-plus',
messages: messages,
stream: true,
// Catatan: Di SDK Node.js, parameter non-standar seperti enableThinking diteruskan sebagai properti tingkat atas dan tidak perlu dimasukkan ke extra_body.
enable_thinking: enableThinking,
thinking_budget: 81920
});
if (enableThinking){console.log('\n' + '='.repeat(20) + 'Thinking process' + '='.repeat(20) + '\n');}
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\nUsage:');
console.log(chunk.usage);
continue;
}
const delta = chunk.choices[0].delta;
// Tangani proses berpikir
if (delta.reasoning_content) {
process.stdout.write(delta.reasoning_content);
reasoningContent += delta.reasoning_content;
}
// Tangani respons formal
else if (delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + 'Full response' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('Error:', error);
}
}
main();# ======= IMPORTANT =======
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
# Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === Hapus komentar ini sebelum eksekusi ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3-vl-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
}
},
{
"type": "text",
"text": "Solve this problem"
}
]
}
],
"stream":true,
"stream_options":{"include_usage":true},
"enable_thinking": true,
"thinking_budget": 81920
}'DashScope
import os
import dashscope
from dashscope import MultiModalConversation
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1
# Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
enable_thinking = True
messages = [
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "How do I solve this problem?"}
]
}
]
response = MultiModalConversation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: api_key="sk-xxx",
# Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen3-vl-plus",
messages=messages,
stream=True,
# Parameter enable_thinking mengaktifkan proses berpikir.
# Untuk qwen3-vl-plus dan qwen3-vl-flash, Anda dapat menggunakan enable_thinking untuk mengaktifkan atau menonaktifkan proses berpikir. Untuk model dengan akhiran 'thinking', seperti qwen3-vl-235b-a22b-thinking, enable_thinking hanya dapat diatur ke true. Parameter ini tidak berlaku untuk model Qwen-VL lainnya.
enable_thinking=enable_thinking,
# Parameter thinking_budget menetapkan jumlah maksimum token untuk proses penalaran.
thinking_budget=81920,
)
# Menyimpan seluruh proses berpikir
reasoning_content = ""
# Menyimpan seluruh respons
answer_content = ""
# Memeriksa apakah proses berpikir telah selesai dan respons telah dimulai
is_answering = False
if enable_thinking:
print("=" * 20 + "Thinking process" + "=" * 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 sedang dalam proses berpikir
if reasoning_content_chunk != None and chunk.output.choices[0].message.content == []:
print(chunk.output.choices[0].message.reasoning_content, end="")
reasoning_content += chunk.output.choices[0].message.reasoning_content
# Jika saat ini sedang dalam proses respons
elif chunk.output.choices[0].message.content != []:
if not is_answering:
print("\n" + "=" * 20 + "Full response" + "=" * 20)
is_answering = True
print(chunk.output.choices[0].message.content[0]["text"], end="")
answer_content += chunk.output.choices[0].message.content[0]["text"]
# Untuk mencetak seluruh proses berpikir dan respons, hapus komentar dan jalankan kode berikut
# print("=" * 20 + "Full thinking process" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "Full response" + "=" * 20 + "\n")
# print(f"{answer_content}")// Versi SDK DashScope >= 2.21.10
import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.exception.InputRequiredException;
import java.lang.System;
import com.alibaba.dashscope.utils.Constants;
public class Main {
// Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1
// Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1
static {Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";}
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static StringBuilder reasoningContent = new StringBuilder();
private static StringBuilder finalContent = new StringBuilder();
private static boolean isFirstPrint = true;
private static void handleGenerationResult(MultiModalConversationResult message) {
String re = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
String reasoning = Objects.isNull(re)?"":re; // Nilai default
List<Map<String, Object>> content = message.getOutput().getChoices().get(0).getMessage().getContent();
if (!reasoning.isEmpty()) {
reasoningContent.append(reasoning);
if (isFirstPrint) {
System.out.println("====================Thinking process====================");
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====================Full response====================");
isFirstPrint = true;
}
System.out.print(text);
}
}
public static MultiModalConversationParam buildMultiModalConversationParam(MultiModalMessage Msg) {
return MultiModalConversationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
// Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3-vl-plus")
.messages(Arrays.asList(Msg))
.enableThinking(true)
.thinkingBudget(81920)
.incrementalOutput(true)
.build();
}
public static void streamCallWithMessage(MultiModalConversation conv, MultiModalMessage Msg)
throws NoApiKeyException, ApiException, InputRequiredException, UploadFileException {
MultiModalConversationParam param = buildMultiModalConversationParam(Msg);
Flowable<MultiModalConversationResult> result = conv.streamCall(param);
result.blockingForEach(message -> {
handleGenerationResult(message);
});
}
public static void main(String[] args) {
try {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMsg = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(Collections.singletonMap("image", "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"),
Collections.singletonMap("text", "Solve this problem")))
.build();
streamCallWithMessage(conv, userMsg);
// Cetak hasil akhir
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================Full response====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | UploadFileException | InputRequiredException e) {
logger.error("An exception occurred: {}", e.getMessage());
}
System.exit(0);
}
}# ======= IMPORTANT =======
# Kunci API berbeda tiap wilayah. Untuk mendapatkan kunci API, kunjungi https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut adalah URL dasar untuk wilayah Singapura. Jika Anda menggunakan model di wilayah AS (Virginia), ganti base_url dengan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
# === Hapus komentar ini sebelum eksekusi ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
"model": "qwen3-vl-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "Solve this problem"}
]
}
]
},
"parameters":{
"enable_thinking": true,
"incremental_output": true,
"thinking_budget": 81920
}
}'Contoh lainnya
Selain kemampuan penalarannya, model penalaran visual memiliki semua fitur model pemahaman visual. Anda dapat menggabungkan fitur-fitur ini untuk menangani skenario yang lebih kompleks:
Penagihan
Total biaya = (Token input × Harga per token input) + (Token output × Harga per token output).
Proses berpikir (
reasoning_content) merupakan bagian dari konten output dan ditagih sebagai token output. Jika model dalam mode berpikir tidak menghasilkan proses berpikir, maka akan ditagih dengan harga mode non-berpikir.Untuk informasi tentang cara menghitung token untuk gambar atau video, lihat Pemahaman visual.
Referensi API
Untuk parameter input dan output, lihat Qwen.
Kode error
Jika panggilan gagal, lihat Pesan error untuk troubleshooting.