Model penalaran visual menghasilkan proses pemikirannya sebelum memberikan jawaban akhir. Model ini cocok untuk tugas analisis visual kompleks, seperti menyelesaikan soal matematika, menganalisis data grafik, atau memahami video yang rumit.
Contoh
Komponen di atas hanya untuk tujuan demonstrasi dan tidak mengirim permintaan nyata.
Penerapan
Wilayah yang didukung
Model yang didukung
-
Qwen3.5
-
Model hybrid-thinking: qwen3.5-plus, qwen3.5-plus-2026-02-15, qwen3.5-flash, qwen3.5-flash-2026-02-23, qwen3.5-397b-a17b, qwen3.5-122b-a10b, qwen3.5-27b, qwen3.5-35b-a3b
-
-
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 pemikiran: Alibaba Cloud Model Studio menyediakan model penalaran visual, termasuk tipe hybrid dan reasoning-only.
-
Model hybrid-thinking: Anda dapat mengontrol perilaku pemikiran menggunakan parameter
enable_thinking:-
Atur parameter ini ke
trueuntuk mengaktifkan pemikiran. Model pertama kali mengeluarkan proses pemikirannya lalu respons akhir. Nilai default untuk seriqwen3.5-plusadalahtrue. -
Atur parameter ini ke
falseuntuk menonaktifkan pemikiran. Model langsung menghasilkan respons. Nilai default untuk seriqwen3-vl-plusdanqwen3-vl-flashadalahfalse.
-
-
Model thinking-only: Model ini selalu menghasilkan proses pemikiran sebelum merespons, dan perilaku ini tidak dapat dinonaktifkan.
-
-
Metode output: Model penalaran visual mencakup proses pemikiran yang detail. Untuk menghindari timeout akibat respons panjang, Anda dapat menggunakan keluaran streaming.
-
Qwen3.5, Qwen3-VL, dan kimi-k2.5 mendukung metode streaming dan non-streaming.
-
Seri QVQ hanya mendukung keluaran streaming.
-
-
Rekomendasi prompt sistem:
-
Untuk percakapan single-turn atau sederhana: Jangan atur
System Message. Untuk hasil inferensi optimal, Anda dapat memberikan instruksi—seperti definisi peran dan format output—melaluiUser Message. -
Untuk aplikasi kompleks seperti membangun agen atau tool calling: Anda dapat menggunakan
System Messageuntuk mendefinisikan peran, kemampuan, dan kerangka perilaku model guna memastikan stabilitas dan keandalan.
-
Mulai cepat
Prasyarat
-
Dapatkan API key dan konfigurasikan sebagai variabel lingkungan.
-
Jika Anda menggunakan SDK, instal versi SDK terbaru. DashScope Python SDK harus versi 1.24.6 atau lebih baru, dan DashScope Java SDK harus versi 2.21.10 atau lebih baru.
Contoh berikut menunjukkan cara memanggil model qvq-max untuk menyelesaikan soal matematika dari gambar. Contoh menggunakan keluaran streaming untuk mencetak proses pemikiran dan respons akhir secara terpisah.
Kompatibel dengan OpenAI
Python
from openai import OpenAI
import os
# Inisialisasi klien OpenAI
client = OpenAI(
# API key berbeda tiap wilayah. Dapatkan di https://bailian.console.alibabacloud.com/?tab=model#/api-key
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY"),
# URL dasar Singapura. Untuk model Beijing, gunakan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # Definisikan proses pemikiran lengkap
answer_content = "" # Definisikan respons lengkap
is_answering = False # Periksa apakah proses pemikiran telah berakhir dan respons telah dimulai
# Buat permintaan chat completion
completion = client.chat.completions.create(
model="qvq-max", # Contoh menggunakan qvq-max. Ganti 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 pemikiran
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
# Mulai merespons
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "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. API key berbeda tiap wilayah. Dapatkan di https://bailian.console.alibabacloud.com/?tab=model#/api-key
// URL dasar Singapura. Untuk model Beijing, gunakan 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 pemikiran
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
# API key berbeda tiap wilayah. Dapatkan di 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
Memanggil model QVQ melalui DashScope:
-
Parameter
incremental_outputsecara default bernilaitruedan tidak dapat diatur kefalse. Hanya 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(
# API key berbeda tiap wilayah. Dapatkan di https://bailian.console.alibabacloud.com/?tab=model#/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="qvq-max", # Contoh menggunakan qvq-max. Ganti dengan nama model lain sesuai kebutuhan.
messages=messages,
stream=True,
)
# Definisikan proses pemikiran lengkap
reasoning_content = ""
# Definisikan respons lengkap
answer_content = ""
# Periksa apakah proses pemikiran telah berakhir dan respons telah dimulai
is_answering = False
print("=" * 20 + "Thinking process" + "=" * 20)
for chunk in response:
# Jika proses pemikiran dan respons keduanya kosong, abaikan
message = chunk.output.choices[0].message
reasoning_content_chunk = message.get("reasoning_content", None)
if (chunk.output.choices[0].message.content == [] and
reasoning_content_chunk == ""):
pass
else:
# Jika sedang dalam proses pemikiran
if reasoning_content_chunk != None and chunk.output.choices[0].message.content == []:
print(chunk.output.choices[0].message.reasoning_content, end="")
reasoning_content += chunk.output.choices[0].message.reasoning_content
# Jika sedang dalam 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 proses pemikiran dan respons lengkap, 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
// DashScope SDK version >= 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; // Default value
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()
// API key berbeda tiap wilayah. Dapatkan di https://bailian.console.alibabacloud.com/?tab=model#/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"))
// Contoh menggunakan qvq-max. Ganti 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
# API key berbeda tiap wilayah. Dapatkan di 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
Aktifkan atau nonaktifkan proses pemikiran
Untuk skenario yang memerlukan penalaran detail, seperti pemecahan masalah atau analisis laporan, Anda dapat mengaktifkan mode pemikiran menggunakan parameter enable_thinking. Contoh berikut menunjukkan cara mengaktifkan pemikiran.
Parameter enable_thinking didukung oleh seri qwen3.5-plus, qwen3-vl-plus, qwen3-vl-flash, dan kimi-k2.5. Seri qwen3.5-plus secara default mengaktifkan pemikiran, di mana enable_thinking diatur ke true.
Kompatibel dengan OpenAI
Parameter enable_thinking dan thinking_budget merupakan parameter non-standar OpenAI. Metode pengirimannya berbeda tergantung bahasa SDK:
-
Python SDK: Anda dapat mengirimkannya melalui dictionary
extra_body. -
Node.js SDK: Anda dapat mengirimkannya langsung sebagai parameter tingkat atas.
import os
from openai import OpenAI
client = OpenAI(
# Kunci API berbeda-beda berdasarkan wilayah. Dapatkan kunci API di https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/compatible-mode/v1
# Untuk model Beijing, gunakan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # Definisikan proses berpikir lengkap
answer_content = "" # Definisikan tanggapan lengkap
is_answering = False # Periksa apakah proses berpikir telah berakhir dan tanggapan telah dimulai
enable_thinking = True
# Buat permintaan penyelesaian obrolan
completion = client.chat.completions.create(
model="qwen3.5-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. Parameter thinking_budget menetapkan jumlah maksimum token untuk proses penalaran.
# Untuk qwen3.5-plus, qwen3-vl-plus, dan qwen3-vl-flash, Anda dapat menggunakan enable_thinking untuk mengaktifkan atau menonaktifkan proses berpikir (qwen3.5-plus diaktifkan secara default). 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
},
# Batalkan komentar berikut untuk mengembalikan penggunaan token dalam 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 != None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
# Mulai memberikan tanggapan
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "Tanggapan lengkap" + "=" * 20 + "\n")
is_answering = True
# Cetak proses tanggapan
print(delta.content, end='', flush=True)
answer_content += delta.content
# print("=" * 20 + "Proses berpikir lengkap" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "Tanggapan lengkap" + "=" * 20 + "\n")
# print(answer_content)import OpenAI from "openai";
// Inisialisasi klien OpenAI
const openai = new OpenAI({
// API key berbeda tiap wilayah. Dapatkan Kunci API di 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 dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/compatible-mode/v1
// Untuk model Beijing, gunakan 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.5-plus',
messages: messages,
stream: true,
// Catatan: Di Node.js SDK, parameter non-standar seperti enableThinking dikirim sebagai properti tingkat atas, bukan di 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 pemikiran
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 =======
# URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
# Untuk model Beijing, gunakan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
# API key berbeda tiap wilayah. Dapatkan Kunci API di https://www.alibabacloud.com/help/zh/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.5-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
// URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/api/v1
// Untuk model Beijing, gunakan 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 Model Studio Anda: api_key="sk-xxx",
// API key berbeda tiap wilayah. Dapatkan Kunci API di https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen3.5-plus",
messages=messages,
stream=True,
// Parameter enable_thinking mengaktifkan proses pemikiran.
// Untuk qwen3.5-plus, qwen3-vl-plus, dan qwen3-vl-flash, Anda dapat menggunakan enable_thinking untuk mengaktifkan atau menonaktifkan pemikiran (qwen3.5-plus diaktifkan secara default). 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
)
// Definisikan proses pemikiran lengkap
reasoning_content = ""
// Definisikan respons lengkap
answer_content = ""
// Periksa apakah proses pemikiran telah berakhir dan respons telah dimulai
is_answering = False
if enable_thinking:
print("=" * 20 + "Thinking process" + "=" * 20)
for chunk in response:
// Jika proses pemikiran dan respons keduanya kosong, abaikan
message = chunk.output.choices[0].message
reasoning_content_chunk = message.get("reasoning_content", None)
if (chunk.output.choices[0].message.content == [] and
reasoning_content_chunk == ""):
pass
else:
// Jika sedang dalam proses pemikiran
if reasoning_content_chunk != None and chunk.output.choices[0].message.content == []:
print(chunk.output.choices[0].message.reasoning_content, end="")
reasoning_content += chunk.output.choices[0].message.reasoning_content
// Jika sedang dalam 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 proses pemikiran dan respons lengkap, 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}")// DashScope SDK version >= 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 {
// URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/api/v1
// Untuk model Beijing, gunakan 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; // Default value
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 Model Studio Anda: .apiKey("sk-xxx")
// API key berbeda tiap wilayah. Dapatkan Kunci API di https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-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 =======
// API key berbeda tiap wilayah. Dapatkan Kunci API di https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
// Untuk model Beijing, gunakan 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.5-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 pemikiran
Untuk mencegah model penalaran visual menghasilkan proses penalaran yang terlalu panjang, Anda dapat menggunakan parameter thinking_budget untuk membatasi jumlah maksimum token yang dihasilkan dalam proses penalaran. Ketika proses penalaran melebihi batas ini, kontennya dipotong dan model segera mulai menghasilkan jawaban akhir. Nilai default thinking_budget adalah panjang maksimum rantai-pikiran model. Untuk informasi lebih lanjut, lihat Daftar Model.
Parameter thinking_budget didukung oleh Qwen3-VL (mode penalaran) dan kimi-k2.5 (mode penalaran).
Kompatibel dengan OpenAI
Parameter thinking_budget merupakan parameter non-standar OpenAI. Saat Anda menggunakan OpenAI Python SDK, Anda dapat mengirimkannya melalui dictionary extra_body.
import os
from openai import OpenAI
client = OpenAI(
// API key berbeda tiap wilayah. Dapatkan Kunci API di https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
// URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/compatible-mode/v1
// Untuk model Beijing, gunakan https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" // Definisikan proses pemikiran lengkap
answer_content = "" // Definisikan respons lengkap
is_answering = False // Periksa apakah proses pemikiran telah berakhir dan respons telah dimulai
enable_thinking = True
// Buat permintaan chat completion
completion = client.chat.completions.create(
model="qwen3.5-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 pemikiran. Parameter thinking_budget mengatur jumlah maksimum token untuk proses penalaran.
// Untuk qwen3.5-plus, qwen3-vl-plus, dan qwen3-vl-flash, Anda dapat menggunakan enable_thinking untuk mengaktifkan atau menonaktifkan pemikiran (qwen3.5-plus diaktifkan secara default). 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 pemikiran
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
// Mulai merespons
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "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({
// API key berbeda tiap wilayah. Dapatkan Kunci API di 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 dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/compatible-mode/v1
// Untuk model Beijing, gunakan 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.5-plus',
messages: messages,
stream: true,
// Catatan: Di Node.js SDK, parameter non-standar seperti enableThinking dikirim sebagai properti tingkat atas, bukan di 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 pemikiran
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 =======
// URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
// Untuk model Beijing, gunakan https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
// API key berbeda tiap wilayah. Dapatkan Kunci API di https://www.alibabacloud.com/help/zh/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.5-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
# URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/api/v1
# Untuk model Beijing, gunakan 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 Model Studio Anda: api_key="sk-xxx",
# Kunci API berbeda menurut Wilayah. Dapatkan kunci API di https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen3.5-plus",
messages=messages,
stream=True,
# Parameter enable_thinking mengaktifkan proses berpikir.
# Untuk qwen3.5-plus, qwen3-vl-plus, dan qwen3-vl-flash, Anda dapat menggunakan enable_thinking untuk mengaktifkan atau menonaktifkan proses berpikir (qwen3.5-plus diaktifkan secara default). 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 token maksimum untuk proses penalaran.
thinking_budget=81920,
)
# Tentukan proses berpikir lengkap
reasoning_content = ""
# Tentukan tanggapan lengkap
answer_content = ""
# Periksa apakah proses berpikir telah berakhir dan tanggapan telah dimulai
is_answering = False
if enable_thinking:
print("=" * 20 + "Thinking process" + "=" * 20)
for chunk in response:
# Jika proses berpikir dan tanggapan 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 adalah 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 adalah tanggapan
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 proses berpikir dan tanggapan lengkap, hapus tanda 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}")// DashScope SDK version >= 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 {
// URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/api/v1
// Untuk model Beijing, gunakan 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; // Default value
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 Model Studio Anda: .apiKey("sk-xxx")
// API key berbeda tiap wilayah. Dapatkan Kunci API di https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-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 =======
// API key berbeda tiap wilayah. Dapatkan Kunci API di https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// URL dasar Singapura. Untuk model AS (Virginia), gunakan https://dashscope-us.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
// Untuk model Beijing, gunakan 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.5-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 berpikir, model penalaran visual mendukung semua fitur pemahaman visual untuk skenario kompleks seperti:
Penagihan
Total biaya = (Token input × Harga per token input) + (Token output × Harga per token output).
-
Proses pemikiran (
reasoning_content) ditagih sebagai bagian dari token output. Jika model tidak menghasilkan proses pemikiran dalam mode berpikir, maka akan ditagih dengan tarif mode non-berpikir. -
Untuk metode perhitungan token gambar atau video, lihat Pemahaman gambar dan video.
Referensi API
Untuk informasi lebih lanjut tentang parameter input dan output model penalaran visual, lihat Qwen.
Kode error
Jika pemanggilan model gagal dan mengembalikan pesan error, lihat Pesan error untuk penyelesaian.