All Products
Search
Document Center

Alibaba Cloud Model Studio:Code interpreter

Last Updated:Mar 17, 2026

Code interpreter memungkinkan model menulis dan menjalankan kode Python dalam lingkungan sandbox untuk menyelesaikan masalah kompleks seperti perhitungan matematis dan analisis data.

Penggunaan

Aktifkan code interpreter menggunakan salah satu konfigurasi parameter berikut:

OpenAI compatible - Responses API

Tambahkan parameter tools dan sertakan tool code_interpreter.

Untuk hasil optimal, kami merekomendasikan mengaktifkan tool code_interpreter, web_search, dan web_extractor secara bersamaan.
# Impor dependensi dan buat klien...
response = client.responses.create(
    model="qwen3-max-2026-01-23",
    input="Berapa 123 pangkat 21?",
    tools=[
        {"type": "code_interpreter"},
        {"type": "web_search"},
        {"type": "web_extractor"},
    ],
    extra_body={
        "enable_thinking": True
    }
)

print(response.output_text)

OpenAI compatible - Chat Completions API

Atur enable_code_interpreter: true dalam permintaan API Anda.

# Impor dependensi dan buat klien...
completion = client.chat.completions.create(
    # Gunakan model yang mendukung code interpreter
    model="qwen3-max-2026-01-23",
    messages=[{"role": "user", "content": "Berapa 123 pangkat 21?"}],
    # Karena enable_code_interpreter bukan parameter standar OpenAI, lewatkan melalui extra_body saat menggunakan Python SDK (lewatkan sebagai parameter tingkat atas saat menggunakan Node.js SDK)
    extra_body={
        "enable_code_interpreter": True,
        # Code interpreter memerlukan thinking mode
        "enable_thinking": True,
    },
    # Hanya untuk streaming output
    stream=True
)
API yang kompatibel dengan OpenAI tidak mengembalikan kode yang dieksekusi oleh interpreter.

DashScope

Atur enable_code_interpreter ke true.

# Impor dependensi...
response = dashscope.Generation.call(
    # 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-max-2026-01-23",
    messages=[{"role": "user", "content": "Berapa 123 pangkat 21?"}],
    # Aktifkan code interpreter
    enable_code_interpreter=True,
    # Code interpreter memerlukan thinking mode
    enable_thinking=True,
    result_format="message",
    # Hanya untuk streaming output
    stream=True
)

Kode yang dieksekusi oleh interpreter dikembalikan dalam bidang tool_info.

Setelah diaktifkan, model memproses permintaan dalam beberapa tahap:

  1. Thinking: Model menganalisis permintaan dan menentukan pendekatan solusi.

  2. Code execution: Model menghasilkan dan menjalankan kode Python.

  3. Result integration: Model memproses hasil eksekusi dan menentukan langkah selanjutnya.

  4. Response: Model menghasilkan tanggapan dalam bahasa alami.

Tahap 2 dan 3 dapat diulang beberapa kali.

Setiap API mengembalikan bidang yang berbeda:

  • Responses API: Konten thinking dikembalikan dalam item output dengan type="reasoning", detail eksekusi kode dalam type="code_interpreter_call", dan tanggapan akhir dalam type="message".

  • Chat Completions API dan DashScope: Konten thinking dikembalikan dalam bidang reasoning_content dan tanggapan dalam bidang content. DashScope juga mengembalikan detail kode dalam bidang tool_info.

Cakupan Penggunaan

Internasional

  • Qwen-Max: qwen3-max dan qwen3-max-2026-01-23 dalam thinking mode

  • Qwen-Plus: qwen3.5-plus, qwen3.5-plus-2026-02-15

  • Qwen-Flash: qwen3.5-flash, qwen3.5-flash-2026-02-23

  • Open source Qwen: qwen3.5-397b-a17b, qwen3.5-122b-a10b, qwen3.5-27b, qwen3.5-35b-a3b

Global

  • Qwen-Plus: qwen3.5-plus, qwen3.5-plus-2026-02-15

  • Qwen-Flash: qwen3.5-flash, qwen3.5-flash-2026-02-23

  • Open source Qwen: qwen3.5-397b-a17b, qwen3.5-122b-a10b, qwen3.5-27b, qwen3.5-35b-a3b

Tiongkok daratan

  • Qwen-Max: qwen3-max, qwen3-max-2026-01-23, dan qwen3-max-preview dalam thinking mode

  • Qwen-Plus: qwen3.5-plus, qwen3.5-plus-2026-02-15

  • Qwen-Flash: qwen3.5-flash, qwen3.5-flash-2026-02-23

  • Open source Qwen: qwen3.5-397b-a17b, qwen3.5-122b-a10b, qwen3.5-27b, qwen3.5-35b-a3b

Memulai

Contoh berikut menunjukkan cara code interpreter menangani perhitungan matematis.

OpenAI compatible - Responses API

Untuk hasil optimal, kami merekomendasikan mengaktifkan tool code_interpreter, web_search, dan web_extractor secara bersamaan.
import os
from openai import OpenAI

client = OpenAI(
    # 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"),
    base_url="https://dashscope.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
)

response = client.responses.create(
    model="qwen3-max-2026-01-23",
    input="Berapa 12 pangkat 3?",
    tools=[
        {
            "type": "code_interpreter"
        },
        {
            "type": "web_search"
        },
        {
            "type": "web_extractor"
        }
    ],
    extra_body = {
        "enable_thinking": True
    }
)
# Hapus komentar baris berikut untuk melihat output antara
# print(response.output)
print("="*20+"Response"+"="*20)
print(response.output_text)
print("="*20+"Penggunaan token dan pemanggilan tool"+"="*20)
print(response.usage)
import OpenAI from "openai";
import process from 'process';

const openai = new OpenAI({
    // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx",
    apiKey: process.env.DASHSCOPE_API_KEY,
    baseURL: "https://dashscope.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
});

async function main() {
    const response = await openai.responses.create({
        model: "qwen3-max-2026-01-23",
        input: "Berapa 12 pangkat 3?",
        tools: [
            { type: "code_interpreter" },
            { type: "web_search" },
            { type: "web_extractor" }
        ],
        enable_thinking: true
    });

    console.log("====================Response====================");
    console.log(response.output_text);

    // Cetak jumlah pemanggilan tool
    console.log("====================Penggunaan token dan pemanggilan tool====================");
    if (response.usage && response.usage.x_tools) {
        console.log(`Jumlah eksekusi code interpreter: ${response.usage.x_tools.code_interpreter?.count || 0}`);
    }
    // Hapus komentar baris berikut untuk melihat output antara
    // console.log(JSON.stringify(response.output[0], null, 2));
}

main();
curl -X POST https://dashscope.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3-max-2026-01-23",
    "input": "Berapa 12 pangkat 3?",
    "tools": [
        {"type": "code_interpreter"},
        {"type": "web_search"},
        {"type": "web_extractor"}
    ],
    "enable_thinking": true
}'
Contoh respons
====================Response====================
12 pangkat 3 sama dengan **1728**.

Perhitungan:
12³ = 12 × 12 × 12 = 144 × 12 = 1728
====================Penggunaan token dan pemanggilan tool====================
ResponseUsage(input_tokens=1160, input_tokens_details=InputTokensDetails(cached_tokens=0), output_tokens=195, output_tokens_details=OutputTokensDetails(reasoning_tokens=105), total_tokens=1355, x_tools={'code_interpreter': {'count': 1}})

OpenAI compatible - Chat Completions API

Python
from openai import OpenAI
import os

# Inisialisasi klien OpenAI
client = OpenAI(
    # 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"),
    # Untuk wilayah internasional, gunakan "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

messages = [{"role": "user", "content": "Berapa 123 pangkat 21?"}]

completion = client.chat.completions.create(
    model="qwen3-max-2026-01-23",
    messages=messages,
    extra_body={"enable_thinking": True, "enable_code_interpreter": True},
    stream=True,
    stream_options={
        "include_usage": True
    },
)

reasoning_content = ""  # Proses thinking lengkap
answer_content = ""  # Tanggapan lengkap
is_answering = False  # Penanda untuk memeriksa apakah tahap respons telah dimulai
print("\n" + "=" * 20 + "Proses thinking" + "=" * 20 + "\n")

for chunk in completion:
    if not chunk.choices:
        print("\nPenggunaan:")
        print(chunk.usage)
        continue

    delta = chunk.choices[0].delta

    # Kumpulkan hanya konten thinking
    if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
        if not is_answering:
            print(delta.reasoning_content, end="", flush=True)
        reasoning_content += delta.reasoning_content

    # Saat konten diterima, mulai tanggapan
    if hasattr(delta, "content") and delta.content:
        if not is_answering:
            print("\n" + "=" * 20 + "Tanggapan lengkap" + "=" * 20 + "\n")
            is_answering = True
        print(delta.content, end="", flush=True)
        answer_content += delta.content
Contoh respons
====================Proses thinking====================

Pengguna menanyakan 123 pangkat 21. Ini adalah masalah perhitungan matematis. Saya perlu menghitung 123^21.

Saya dapat menggunakan code interpreter untuk menghitung nilai ini. Saya perlu memanggil fungsi code_interpreter dan meneruskan kode Python untuk menghitung 123**21.

Mari saya susun pemanggilan fungsi ini.
Pengguna menanyakan 123 pangkat 21, dan saya menggunakan kode Python untuk menghitung hasilnya. Hasilnya menunjukkan bahwa 123 pangkat 21 sama dengan 77269364466549865653073473388030061522211723. Ini adalah angka yang sangat besar. Saya harus memberikan ini secara langsung
====================Tanggapan lengkap====================

123 pangkat 21 adalah: 77269364466549865653073473388030061522211723
Penggunaan:
CompletionUsage(completion_tokens=245, prompt_tokens=719, total_tokens=964, completion_tokens_details=CompletionTokensDetails(accepted_prediction_tokens=None, audio_tokens=None, reasoning_tokens=153, rejected_prediction_tokens=None), prompt_tokens_details=None)
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
    // Untuk wilayah internasional, gunakan https://dashscope-intl.aliyuncs.com/compatible-mode/v1
    baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1'
});

let reasoningContent = '';
let answerContent = '';
let isAnswering = false;

async function main() {
    try {
        const messages = [{ role: 'user', content: 'Berapa 123 pangkat 21?' }];
        const stream = await openai.chat.completions.create({
            model: 'qwen3-max-2026-01-23',
            messages,
            stream: true,
            enable_thinking: true,
            enable_code_interpreter: true
        });
        console.log('\n' + '='.repeat(20) + 'Proses thinking' + '='.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;

            // Kumpulkan hanya konten thinking
            if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
                if (!isAnswering) {
                    process.stdout.write(delta.reasoning_content);
                }
                reasoningContent += delta.reasoning_content;
            }

            // Saat konten diterima, mulai tanggapan
            if (delta.content !== undefined && delta.content) {
                if (!isAnswering) {
                    console.log('\n' + '='.repeat(20) + 'Tanggapan lengkap' + '='.repeat(20) + '\n');
                    isAnswering = true;
                }
                process.stdout.write(delta.content);
                answerContent += delta.content;
            }
        }
    } catch (error) {
        console.error('Error:', error);
    }
}

main();
Contoh respons
====================Proses thinking====================

  Pengguna menanyakan nilai 123 dipangkatkan 21. Ini adalah perhitungan matematis yang dapat saya lakukan menggunakan code interpreter Python. Saya akan menggunakan operator eksponensial ** untuk menghitung ini.

  Mari saya tulis kode untuk menghitung 123**21.Hasil perhitungan telah selesai dengan sukses. Hasil dari 123 dipangkatkan 21 adalah angka yang sangat besar: 77269364466549865653073473388030061522211723.

  Saya harus menyajikan hasil ini dengan jelas kepada pengguna.

  ====================Tanggapan lengkap====================

  123 pangkat 21 adalah: 77269364466549865653073473388030061522211723
curl
# Untuk wilayah internasional, gunakan https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3-max-2026-01-23",
    "messages": [
        {
            "role": "user",
            "content": "Berapa 123 pangkat 21?"
        }
    ],
    "enable_code_interpreter": true,
    "enable_thinking": true,
    "stream": true
}'

Contoh respons

data: {"choices":[{"delta":{"content":null,"role":"assistant","reasoning_content":""},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1761899724,"system_fingerprint":null,"model":"qwen3-max-2026-01-23","id":"chatcmpl-2f96ef0b-5924-4dfc-b768-4d53ec538b4e"}

data: {"choices":[{"finish_reason":null,"logprobs":null,"delta":{"content":null,"reasoning_content":"The user"},"index":0}],"object":"chat.completion.chunk","usage":null,"created":1761899724,"system_fingerprint":null,"model":"qwen3-max-2026-01-23","id":"chatcmpl-2f96ef0b-5924-4dfc-b768-4d53ec538b4e"}

data: {"choices":[{"delta":{"content":null,"reasoning_content":" is asking"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1761899724,"system_fingerprint":null,"model":"qwen3-max-2026-01-23","id":"chatcmpl-2f96ef0b-5924-4dfc-b768-4d53ec538b4e"}

data: {"choices":[{"delta":{"content":null,"reasoning_content":" for"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1761899724,"system_fingerprint":null,"model":"qwen3-max-2026-01-23","id":"chatcmpl-2f96ef0b-5924-4dfc-b768-4d53ec538b4e"}

...

data: {"choices":[{"delta":{"content":"a very large number, with a total","reasoning_content":null},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1761899724,"system_fingerprint":null,"model":"qwen3-max-2026-01-23","id":"chatcmpl-2f96ef0b-5924-4dfc-b768-4d53ec538b4e"}

data: {"choices":[{"delta":{"content":" of 43 digits","reasoning_content":null},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1761899724,"system_fingerprint":null,"model":"qwen3-max-2026-01-23","id":"chatcmpl-2f96ef0b-5924-4dfc-b768-4d53ec538b4e"}

data: {"choices":[{"delta":{"content":".","reasoning_content":null},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1761899724,"system_fingerprint":null,"model":"qwen3-max-2026-01-23","id":"chatcmpl-2f96ef0b-5924-4dfc-b768-4d53ec538b4e"}

data: {"choices":[{"finish_reason":"stop","delta":{"content":"","reasoning_content":null},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1761899724,"system_fingerprint":null,"model":"qwen3-max-2026-01-23","id":"chatcmpl-2f96ef0b-5924-4dfc-b768-4d53ec538b4e"}

data: [DONE]

DashScope

Java SDK tidak didukung.
Python
import os
import dashscope

# Untuk wilayah internasional, hapus komentar baris berikut
# dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [
    {"role": "user", "content": "Berapa 123 pangkat 21?"},
]

response = dashscope.Generation.call(
    # 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-max-2026-01-23",
    messages=messages,
    enable_code_interpreter=True,
    enable_thinking=True,
    result_format="message",
    # Hanya untuk streaming output
    stream=True
)

for chunk in response:
    output = chunk["output"]
    print(output)
Contoh respons
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": "The"}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " user is asking"}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " me"}}]}
...
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " I'll write a"}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " simple Python program to calculate"}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": ""}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": ""}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": ""}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": ""}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": ""}}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": "The"}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " user"}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " asked"}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
...
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " I should present this result"}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " to the user in"}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "", "reasoning_content": " a clear format."}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "123 to the power of ", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "21 is:\n\n", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "772693", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "644665", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "498656", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "530734", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "733880", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "300615", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "222117", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "null", "message": {"role": "assistant", "content": "23", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
{"text": null, "finish_reason": null, "choices": [{"finish_reason": "stop", "message": {"role": "assistant", "content": "", "reasoning_content": ""}}], "tool_info": [{"code_interpreter": {"code": "123**21"}, "type": "code_interpreter"}]}
curl
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-SSE: enable" \
-d '{
    "model": "qwen3-max-2026-01-23",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": "Berapa 123 pangkat 21?"
            }
        ]
    },
    "parameters": {
        "enable_code_interpreter": true,
        "enable_thinking": true,
        "result_format": "message"
    }
}'

Contoh respons

<...konten teks...> adalah komentar penjelasan yang mengidentifikasi tahap pemrosesan dan bukan bagian dari respons API aktual.
id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"The","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":290,"output_tokens":3,"input_tokens":287,"output_tokens_details":{"reasoning_tokens":1}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

id:2
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":" user is asking","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":293,"output_tokens":6,"input_tokens":287,"output_tokens_details":{"reasoning_tokens":4}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

...Tahap thinking...

id:21
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":388,"output_tokens":101,"input_tokens":287,"output_tokens_details":{"reasoning_tokens":68}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

...Thinking berakhir, code interpreter dimulai...

id:22
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":388,"output_tokens":101,"input_tokens":287,"output_tokens_details":{"reasoning_tokens":68},"plugins":{"code_interpreter":{"count":1}}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

...Thinking dimulai setelah code interpreter dijalankan...

id:23
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"The","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":838,"output_tokens":104,"input_tokens":734,"output_tokens_details":{"reasoning_tokens":69},"plugins":{"code_interpreter":{"count":1}}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

id:24
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":" user","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":839,"output_tokens":105,"input_tokens":734,"output_tokens_details":{"reasoning_tokens":70},"plugins":{"code_interpreter":{"count":1}}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

...Tahap thinking...

id:43
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":" a clear format.","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":942,"output_tokens":208,"input_tokens":734,"output_tokens_details":{"reasoning_tokens":171},"plugins":{"code_interpreter":{"count":1}}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

...Thinking berakhir, respons dimulai...

id:44
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"123 to the power of ","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":947,"output_tokens":213,"input_tokens":734,"output_tokens_details":{"reasoning_tokens":171},"plugins":{"code_interpreter":{"count":1}}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

...

id:53
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"23","reasoning_content":"","role":"assistant"},"finish_reason":"null"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":997,"output_tokens":263,"input_tokens":734,"output_tokens_details":{"reasoning_tokens":171},"plugins":{"code_interpreter":{"count":1}}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

id:54
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","reasoning_content":"","role":"assistant"},"finish_reason":"stop"}],"tool_info":[{"code_interpreter":{"code":"123**21"},"type":"code_interpreter"}]},"usage":{"total_tokens":997,"output_tokens":263,"input_tokens":734,"output_tokens_details":{"reasoning_tokens":171},"plugins":{"code_interpreter":{"count":1}}},"request_id":"a1959ad1-2637-4672-a21f-4d351371d254"}

Penguraian respons

API Respons yang Kompatibel dengan OpenAI

Contoh berikut menggunakan kit pengembangan perangkat lunak (SDK) Python OpenAI untuk menunjukkan cara mengurai data dari API dalam respons streaming.

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
)

response = client.responses.create(
    model="qwen3-max-2026-01-23",
    input="12 to the power of 3",
    tools=[
        {"type": "code_interpreter"}
    ],
    extra_body={
        "enable_thinking": True
    },
    stream=True
)

def print_section(title):
    print(f"\n{'=' * 20}{title}{'=' * 20}")

current_section = None
final_response = None

for event in response:
    # Output inkremental untuk proses reasoning
    if event.type == "response.reasoning_summary_text.delta":
        if current_section != "reasoning":
            print_section("Reasoning Process")
            current_section = "reasoning"
        print(event.delta, end="", flush=True)

    # Pemanggilan code interpreter selesai
    elif event.type == "response.output_item.done" and hasattr(event.item, "code"):
        print_section("Code Execution")
        print(f"Code:\n{event.item.code}")
        if event.item.outputs:
            print(f"Result: {event.item.outputs[0].logs}")
        current_section = "code"

    # Output inkremental untuk balasan akhir
    elif event.type == "response.output_text.delta":
        if current_section != "answer":
            print_section("Full Reply")
            current_section = "answer"
        print(event.delta, end="", flush=True)

    # Respons selesai. Simpan hasil akhir untuk mendapatkan data penggunaan.
    elif event.type == "response.completed":
        final_response = event.response

# Tampilkan konsumsi token dan jumlah pemanggilan tool.
if final_response and final_response.usage:
    print_section("Token Consumption and Tool Calls")
    usage = final_response.usage
    print(f"Input Tokens: {usage.input_tokens}")
    print(f"Output Tokens: {usage.output_tokens}")
    print(f"Reasoning Tokens: {usage.output_tokens_details.reasoning_tokens}")
    print(f"Code interpreter calls: {usage.x_tools.get('code_interpreter', {}).get('count', 0)}")

DashScope

Contoh SDK Python DashScope ini menunjukkan cara melakukan dua perhitungan dalam satu permintaan dan mengembalikan kode serta jumlah total pemanggilan.

API OpenAI Chat Completions tidak mengembalikan data selama fase code execution. Hal ini menciptakan celah respons antara fase reasoning dan result integration. Karena kedua fase tersebut mengembalikan konten melalui bidang reasoning_content, Anda dapat memperlakukannya sebagai bagian dari fase reasoning. Untuk contoh penguraian respons, lihat kode di Getting Started.
import os  
from dashscope import Generation  
# Untuk menggunakan model di wilayah internasional, hapus komentar baris berikut.
# dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

messages = [{"role": "user", "content": "Run the code interpreter twice. First, calculate the value of 123 to the power of 23. Second, divide the result by 5."}]  

response = Generation.call(  
    api_key=os.getenv("DASHSCOPE_API_KEY"),  
    model="qwen3-max-2026-01-23",  
    messages=messages,  
    result_format="message",
    enable_thinking=True,
    enable_code_interpreter=True,
    stream=True,
    incremental_output=True,
)  

# Bendera status: lacak apakah informasi tool sudah dicetak, apakah fase menjawab telah dimulai, dan apakah proses berada dalam segmen reasoning.
is_answering = False  
in_reasoning_section = False  
cur_tools = []

# Cetak bagian dengan judul.
def print_section(title):  
    print(f"\n{'=' * 20}{title}{'=' * 20}")  

# Cetak judul "Reasoning Process" di awal.
print_section("Reasoning Process")  
in_reasoning_section = True  

# Proses setiap blok data yang dikembalikan oleh model dalam aliran.
for chunk in response:  
    try:  
        # Ekstrak bidang kunci dari respons: konten, teks reasoning, dan informasi pemanggilan tool.
        choice = chunk.output.choices[0]  
        msg = choice.message  
        content = msg.get("content", "")            # Konten jawaban akhir
        reasoning = msg.get("reasoning_content", "") # Teks proses reasoning
        tools = chunk.output.get("tool_info", None)  # Informasi pemanggilan tool
    except (IndexError, AttributeError, KeyError):
        # Lewati blok data dengan struktur tidak normal.
        continue  
    # Jika tidak ada konten valid, lewati blok saat ini.
    if not content and not reasoning and tools is None:  
        continue  
    # Tampilkan proses reasoning.
    if reasoning and not is_answering:  
        if not in_reasoning_section:  
            print_section("Reasoning Process")  
            in_reasoning_section = True  
        print(reasoning, end="", flush=True)  
    if tools is not None and tools != cur_tools:  
        print_section("Tool Information")  
        print(tools)  
        in_reasoning_section = False  
        cur_tools = tools
    # Tampilkan konten jawaban akhir.
    if content:  
        if not is_answering:  
            print_section("Full Reply")  
            is_answering = True  
            in_reasoning_section = False  
        print(content, end="", flush=True)  
# Cetak jumlah pemanggilan code interpreter.
print_section("Code Interpreter Runs")  
print(chunk.usage.plugins)

Contoh respons

====================Reasoning Process====================
The user requested to run the code interpreter twice:
1. First run: Calculate the value of 123 to the power of 23.
2. Second run: Divide the result of the first run by 5.

I need to first call the code interpreter to calculate 123**23. Then, I will use this result to call the code interpreter again to divide by 5.

Let me perform the first calculation.

====================Tool Information====================
[{'code_interpreter': {'code': '123**23'}, 'type': 'code_interpreter'}]

====================Reasoning Process====================
The first calculation yielded the value of 123 to the power of 23: 1169008215014432917465348578887506800769541157267

Now, for the second run, I need to divide this result by 5. I must use this exact value for the division.
====================Tool Information====================
[{'code_interpreter': {'code': '123**23'}, 'type': 'code_interpreter'}, {'code_interpreter': {'code': ''}, 'type': 'code_interpreter'}]

====================Tool Information====================
[{'code_interpreter': {'code': '123**23'}, 'type': 'code_interpreter'}, {'code_interpreter': {'code': '1169008215014432917465348578887506800769541157267 / 5'}, 'type': 'code_interpreter'}]

====================Reasoning Process====================
The user requested to run the code interpreter twice:
1. First, calculate 123 to the power of 23. The result is: 1169008215014432917465348578887506800769541157267
2. Second, divide this result by 5 to get: 2.338016430028866e+47

Now I need to report these two results to the user.
====================Full Reply====================
Result of the first run: 123 to the power of 23 = 1169008215014432917465348578887506800769541157267

Result of the second run: The above result divided by 5 = 2.338016430028866e+47
====================Code Interpreter Runs====================
{'code_interpreter': {'count': 2}}

Catatan

  • Code interpreter dan Function calling bersifat saling eksklusif dan tidak dapat diaktifkan secara bersamaan. Mengaktifkan keduanya akan menghasilkan error.

    Mengaktifkan keduanya secara simultan akan menyebabkan error.
  • Ketika code interpreter diaktifkan, satu permintaan memicu multiple inferensi model. Bidang usage mengagregasi konsumsi token dari seluruh inferensi tersebut.

Billing

Code interpreter bersifat gratis sementara tetapi meningkatkan konsumsi token.