All Products
Search
Document Center

Alibaba Cloud Model Studio:API Responses yang Kompatibel dengan OpenAI

Last Updated:Mar 03, 2026

Model Qwen di Alibaba Cloud Model Studio mendukung API Responses yang kompatibel dengan OpenAI. Sebagai evolusi dari API Chat Completions, API Responses menyediakan kemampuan agen bawaan dalam antarmuka yang lebih ringkas.

Keunggulan dibandingkan API OpenAI Chat Completions:

  • Alat bawaan: Menyertakan alat bawaan seperti web search, web scraping, dan code interpreter. Alat-alat ini menghasilkan output yang lebih baik untuk tugas-tugas kompleks. Untuk informasi selengkapnya, lihat Panggil alat bawaan.

  • Input fleksibel: Mendukung input berupa string langsung maupun array message dalam format Chat.

  • Manajemen konteks yang disederhanakan: Teruskan previous_response_id dari tanggapan sebelumnya untuk menghindari pembuatan manual array riwayat pesan lengkap.

Untuk deskripsi parameter, lihat Referensi API OpenAI Responses.

Prasyarat

Sebelum memulai, dapatkan Kunci API dan konfigurasikan Kunci API sebagai variabel lingkungan (akan ditinggalkan dan digabung ke Konfigurasi Kunci API). Jika Anda menggunakan kit pengembangan perangkat lunak (SDK) OpenAI untuk melakukan panggilan, Anda juga harus menginstal SDK.

Model yang didukung

Model berikut saat ini didukung: qwen3-max, qwen3-max-2026-01-23, 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, qwen-plus, qwen-flash, qwen3-coder-plus, qwen3-coder-flash, dan .

Titik akhir layanan

Singapore

base_url untuk panggilan SDK adalah https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1.

Alamat permintaan HTTP: POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses

China (Beijing)

base_url untuk panggilan SDK adalah https://dashscope.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1.

Alamat permintaan HTTP: POST https://dashscope.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses

Contoh kode

Panggilan dasar

Cara paling sederhana untuk memanggil API adalah dengan mengirimkan pesan dan mengambil respons dari model.

Python

import os
from openai import OpenAI

client = OpenAI(
    # Jika variabel lingkungan belum diatur, ganti baris berikut dengan: api_key="sk-xxx"
    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.5-plus",
    input="What can you do?"
)

# Dapatkan respons model
# print(response.model_dump_json())
print(response.output_text)

Node.js

import OpenAI from "openai";

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

async function main() {
    const response = await openai.responses.create({
        model: "qwen3.5-plus",
        input: "What can you do?"
    });

    // Dapatkan respons model
    console.log(response.output_text);
}

main();

curl

curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "input": "What can you do?"
}'

Contoh respons

Kode berikut menunjukkan respons API lengkap.
{
    "created_at": 1771226624,
    "id": "bf0d5c2e-f14b-9ad7-bc0d-ee0c8c9ee2d8",
    "model": "qwen3-max-2026-01-23",
    "object": "response",
    "output": [
        {
            "content": [
                {
                    "annotations": [],
                    "text": "Hi there!  I'm actually quite ......",
                    "type": "output_text"
                }
            ],
            "id": "msg_1e17fdb2-5fc3-4c78-a9e9-cbd78eb043f0",
            "role": "assistant",
            "status": "completed",
            "type": "message"
        }
    ],
    "parallel_tool_calls": false,
    "status": "completed",
    "tool_choice": "auto",
    "tools": [],
    "usage": {
        "input_tokens": 37,
        "input_tokens_details": {
            "cached_tokens": 0
        },
        "output_tokens": 220,
        "output_tokens_details": {
            "reasoning_tokens": 0
        },
        "total_tokens": 257,
        "x_details": [
            {
                "input_tokens": 37,
                "output_tokens": 220,
                "total_tokens": 257,
                "x_billing_type": "response_api"
            }
        ]
    }
}

Multi-turn conversation

Gunakan parameter previous_response_id untuk menghubungkan konteks secara otomatis tanpa membuat riwayat pesan secara manual. ID tanggapan saat ini id berlaku selama 7 hari.

previous_response_id memerlukan id tingkat atas dari respons sebelumnya (misalnya, f0dbb153-117f-9bbf-8176-5284b47f3xxx, dalam format UUID), bukan id pesan yang terdapat di dalam array output (misalnya, msg_56c860c4-3ad8-4a96-8553-d2f94c259xxx).

Python

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",
)

# Putaran pertama
response1 = client.responses.create(
    model="qwen3.5-plus",
    input="My name is John, please remember it."
)
print(f"First response: {response1.output_text}")

# Putaran kedua - gunakan previous_response_id untuk menghubungkan konteks
# ID respons kedaluwarsa dalam 7 hari
response2 = client.responses.create(
    model="qwen3.5-plus",
    input="Do you remember my name?",
    previous_response_id=response1.id
)
print(f"Second response: {response2.output_text}")

Node.js

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    baseURL: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
});

async function main() {
    // Putaran pertama
    const response1 = await openai.responses.create({
        model: "qwen3.5-plus",
        input: "My name is John, please remember it."
    });
    console.log(`First response: ${response1.output_text}`);

    // Putaran kedua - gunakan previous_response_id untuk menghubungkan konteks
    // ID respons kedaluwarsa dalam 7 hari
    const response2 = await openai.responses.create({
        model: "qwen3.5-plus",
        input: "Do you remember my name?",
        previous_response_id: response1.id
    });
    console.log(`Second response: ${response2.output_text}`);
}

main();

curl

# Putaran pertama
curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "input": "My name is John, please remember it."
}'

# Putaran kedua - gunakan id dari respons pertama sebagai previous_response_id
curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "input": "Do you remember my name?",
    "previous_response_id": "response_id_from_first_round"
}'

Contoh respons putaran kedua

{
  "id": "f0dbb153-117f-9bbf-8176-5284b47f3xxx",
  "created_at": 1769173209.0,
  "model": "qwen3.5-plus",
  "object": "response",
  "status": "completed",
  "output": [
    {
      "id": "msg_56c860c4-3ad8-4a96-8553-d2f94c259xxx",
      "type": "message",
      "role": "assistant",
      "status": "completed",
      "content": [
        {
          "type": "output_text",
          "text": "Yes, John! I remember your name. How can I assist you today?",
          "annotations": []
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 78,
    "output_tokens": 16,
    "total_tokens": 94,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens_details": {
      "reasoning_tokens": 0
    }
  }
}

Catatan: input_tokens untuk putaran kedua adalah 78, yang mencakup konteks dari putaran pertama. Model berhasil mengingat nama "John".

Streaming output

Terima konten yang dihasilkan model secara real time melalui streaming output. Ini cocok untuk skenario generasi teks panjang.

Python

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",
)

stream = client.responses.create(
    model="qwen3.5-plus",
    input="Please briefly introduce artificial intelligence.",
    stream=True
)

print("Receiving stream output:")
for event in stream:
    # print(event.model_dump_json())  # Hapus komentar untuk melihat respons event mentah
    if event.type == 'response.output_text.delta':
        print(event.delta, end='', flush=True)
    elif event.type == 'response.completed':
        print("\nStream completed")
        print(f"Total tokens: {event.response.usage.total_tokens}")

Node.js

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    baseURL: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
});

async function main() {
    const stream = await openai.responses.create({
        model: "qwen3.5-plus",
        input: "Please briefly introduce artificial intelligence.",
        stream: true
    });

    console.log("Receiving stream output:");
    for await (const event of stream) {
        // console.log(JSON.stringify(event));  // Hapus komentar untuk melihat respons event mentah
        if (event.type === 'response.output_text.delta') {
            process.stdout.write(event.delta);
        } else if (event.type === 'response.completed') {
            console.log("\nStream completed");
            console.log(`Total tokens: ${event.response.usage.total_tokens}`);
        }
    }
}

main();

curl

curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "input": "Please briefly introduce artificial intelligence.",
    "stream": true
}'

Contoh respons

{"response":{"id":"47a71e7d-868c-4204-9693-ef8ff9058xxx","created_at":1769417481.0,"error":null,"incomplete_details":null,"instructions":null,"metadata":null,"model":"","object":"response","output":[],"parallel_tool_calls":false,"temperature":null,"tool_choice":"auto","tools":[],"top_p":null,"background":null,"completed_at":null,"conversation":null,"max_output_tokens":null,"max_tool_calls":null,"previous_response_id":null,"prompt":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":null,"safety_identifier":null,"service_tier":null,"status":"queued","text":null,"top_logprobs":null,"truncation":null,"usage":null,"user":null},"sequence_number":0,"type":"response.created"}
{"response":{"id":"47a71e7d-868c-4204-9693-ef8ff9058xxx","created_at":1769417481.0,"error":null,"incomplete_details":null,"instructions":null,"metadata":null,"model":"","object":"response","output":[],"parallel_tool_calls":false,"temperature":null,"tool_choice":"auto","tools":[],"top_p":null,"background":null,"completed_at":null,"conversation":null,"max_output_tokens":null,"max_tool_calls":null,"previous_response_id":null,"prompt":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":null,"safety_identifier":null,"service_tier":null,"status":"in_progress","text":null,"top_logprobs":null,"truncation":null,"usage":null,"user":null},"sequence_number":1,"type":"response.in_progress"}
{"item":{"id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","content":[],"role":"assistant","status":"in_progress","type":"message"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"}
{"content_index":0,"item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","output_index":0,"part":{"annotations":[],"text":"","type":"output_text","logprobs":null},"sequence_number":3,"type":"response.content_part.added"}
{"content_index":0,"delta":"Artificial","item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","logprobs":[],"output_index":0,"sequence_number":4,"type":"response.output_text.delta"}
{"content_index":0,"delta":" intelligence","item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","logprobs":[],"output_index":0,"sequence_number":5,"type":"response.output_text.delta"}
{"content_index":0,"delta":" (AI","item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","logprobs":[],"output_index":0,"sequence_number":6,"type":"response.output_text.delta"}
{"content_index":0,"delta":")","item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","logprobs":[],"output_index":0,"sequence_number":7,"type":"response.output_text.delta"}
... (intermediate events omitted) ...
{"content_index":0,"delta":" fields, and is profoundly changing the way we","item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","logprobs":[],"output_index":0,"sequence_number":38,"type":"response.output_text.delta"}
{"content_index":0,"delta":" live and work","item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","logprobs":[],"output_index":0,"sequence_number":39,"type":"response.output_text.delta"}
{"content_index":0,"delta":".","item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","logprobs":[],"output_index":0,"sequence_number":40,"type":"response.output_text.delta"}
{"content_index":0,"item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","logprobs":[],"output_index":0,"sequence_number":41,"text":"Artificial intelligence (AI) is the technology and science of computer systems that simulate human intelligent behavior. xxxx","type":"response.output_text.done"}
{"content_index":0,"item_id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","output_index":0,"part":{"annotations":[],"text":"Artificial intelligence (AI) is the technology and science of computer systems that simulate human intelligent behavior. xxx","type":"output_text","logprobs":null},"sequence_number":42,"type":"response.content_part.done"}
{"item":{"id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","content":[{"annotations":[],"text":"Artificial intelligence (AI) is the technology and science of computer systems that simulate human intelligent behavior. It aims to enable machines to perform tasks that typically require human intelligence, such as:\n\n- **Learning** (for example, training models with data)\n- **Reasoning** (for example, logical judgment and problem-solving)\n- **Perception** (for example, recognizing images, speech, or text)\n- **Understanding language** (for example, natural language processing)\n- **Decision-making** (for example, making optimal choices in complex environments)\n\nArtificial intelligence can be divided into **weak AI** (focused on specific tasks, such as voice assistants and recommendation systems) and **strong AI** (possessing general human-like intelligence, which has not yet been achieved).\n\nCurrently, AI is widely used in many fields, such as healthcare, finance, transportation, education, and entertainment, and is profoundly changing the way we live and work.","type":"output_text","logprobs":null}],"role":"assistant","status":"completed","type":"message"},"output_index":0,"sequence_number":43,"type":"response.output_item.done"}
{"response":{"id":"47a71e7d-868c-4204-9693-ef8ff9058xxx","created_at":1769417481.0,"error":null,"incomplete_details":null,"instructions":null,"metadata":null,"model":"qwen3.5-plus","object":"response","output":[{"id":"msg_16db29d6-c1d3-47d7-9177-0fba81964xxx","content":[{"annotations":[],"text":"Artificial intelligence (AI) is xxxxxx","type":"output_text","logprobs":null}],"role":"assistant","status":"completed","type":"message"}],"parallel_tool_calls":false,"temperature":null,"tool_choice":"auto","tools":[],"top_p":null,"background":null,"completed_at":null,"conversation":null,"max_output_tokens":null,"max_tool_calls":null,"previous_response_id":null,"prompt":null,"prompt_cache_key":null,"prompt_cache_retention":null,"reasoning":null,"safety_identifier":null,"service_tier":null,"status":"completed","text":null,"top_logprobs":null,"truncation":null,"usage":{"input_tokens":37,"input_tokens_details":{"cached_tokens":0},"output_tokens":166,"output_tokens_details":{"reasoning_tokens":0},"total_tokens":203},"user":null},"sequence_number":44,"type":"response.completed"}

Panggil tool bawaan

Mengaktifkan tool bawaan dapat menghasilkan hasil yang lebih baik saat menangani tugas kompleks. Tool web scraping dan code interpreter saat ini gratis untuk waktu terbatas. Untuk daftar tool yang didukung, lihat Tool calling.

Python

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.5-plus",
    input="Find the Alibaba Cloud website and extract key information",
    # Untuk hasil terbaik, aktifkan semua tool bawaan
    tools=[
        {"type": "web_search"},
        {"type": "code_interpreter"},
        {"type": "web_extractor"}
    ],
    extra_body={"enable_thinking": True}
)

# Hapus komentar baris di bawah ini untuk melihat output antara
# print(response.output)
print(response.output_text)

Node.js

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    baseURL: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
});

async function main() {
    const response = await openai.responses.create({
        model: "qwen3.5-plus",
        input: "Find the Alibaba Cloud website and extract key information",
        tools: [
            { type: "web_search" },
            { type: "code_interpreter" },
            { type: "web_extractor" }
        ],
        enable_thinking: true
    });

    for (const item of response.output) {
        if (item.type === "reasoning") {
            console.log("Model is thinking...");
        } else if (item.type === "web_search_call") {
            console.log(`Search query: ${item.action.query}`);
        } else if (item.type === "web_extractor_call") {
            console.log("Extracting web content...");
        } else if (item.type === "message") {
            console.log(`Response: ${item.content[0].text}`);
        }
    }
}

main();

curl

curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "input": "Find the Alibaba Cloud website and extract key information",
    "tools": [
        {
            "type": "web_search"
        },
        {
            "type": "code_interpreter"
        },
        {
            "type": "web_extractor"
        }
    ],
    "enable_thinking": true
}'

Contoh respons

{
    "id": "69258b21-5099-9d09-92e8-8492b1955xxx",
    "object": "response",
    "status": "completed",
    "output": [
        {
            "type": "reasoning",
            "summary": [
                {
                    "type": "summary_text",
                    "text": "User requested to find the Alibaba Cloud website and extract information..."
                }
            ]
        },
        {
            "type": "web_search_call",
            "status": "completed",
            "action": {
                "query": "Alibaba Cloud official website",
                "type": "search",
                "sources": [
                    {
                        "type": "url",
                        "url": "https://cn.aliyun.com/"
                    },
                    {
                        "type": "url",
                        "url": "https://www.alibabacloud.com/zh"
                    }
                ]
            }
        },
        {
            "type": "reasoning",
            "summary": [
                {
                    "type": "summary_text",
                    "text": "Search results show the Alibaba Cloud official website URL..."
                }
            ]
        },
        {
            "type": "web_extractor_call",
            "status": "completed",
            "goal": "Extract key information from the Alibaba Cloud homepage",
            "output": "Qwen LLM, complete product system, AI solutions...",
            "urls": [
                "https://cn.aliyun.com/"
            ]
        },
        {
            "type": "message",
            "role": "assistant",
            "status": "completed",
            "content": [
                {
                    "type": "output_text",
                    "text": "Key information from the Alibaba Cloud website: Qwen LLM, cloud computing services..."
                }
            ]
        }
    ],
    "usage": {
        "input_tokens": 40836,
        "output_tokens": 2106,
        "total_tokens": 42942,
        "output_tokens_details": {
            "reasoning_tokens": 677
        },
        "x_tools": {
            "web_extractor": {
                "count": 1
            },
            "web_search": {
                "count": 1
            }
        }
    }
}

Cache sesi

Dalam skenario percakapan multi-putaran, mengaktifkan cache sesi memungkinkan server menyimpan konteks percakapan secara otomatis ke dalam cache. Hal ini mengurangi latensi inferensi dan biaya penggunaan tanpa perlu mengelola cache secara manual—cukup lakukan panggilan seperti pada percakapan multi-putaran biasa.

Penggunaan: Untuk mengaktifkan cache sesi, tambahkan x-dashscope-session-cache: enable ke header permintaan. Untuk menonaktifkannya, atur nilainya menjadi disable.

Model yang didukung: qwen3-max, qwen3.5-plus, qwen3.5-flash, qwen-plus, qwen-flash, qwen3-coder-plus, dan qwen3-coder-flash

Panjang prompt minimum untuk session cache adalah 1.024 token, dan periode validitas cache adalah 5 menit. Batasan ini sama dengan batasan untuk explicit caching.

Python

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",
    # Aktifkan session cache melalui default_headers
    default_headers={"x-dashscope-session-cache": "enable"}
)

# Buat teks panjang lebih dari 1.024 token untuk memastikan pembuatan cache.
# Jika teks kurang dari 1.024 token, cache akan dibuat ketika konteks percakapan terakumulasi melebihi 1.024 token.
long_context = "Artificial intelligence is an important branch of computer science, dedicated to researching and developing theories, methods, technologies, and application systems that can simulate, extend, and expand human intelligence." * 50

# Putaran pertama
response1 = client.responses.create(
    model="qwen3.5-plus",
    input=long_context + "\n\nBased on the background knowledge above, please briefly introduce the random forest algorithm in machine learning.",
)
print(f"First response: {response1.output_text}")

# Putaran kedua: Hubungkan konteks menggunakan previous_response_id. Cache ditangani secara otomatis oleh server.
response2 = client.responses.create(
    model="qwen3.5-plus",
    input="What are the main differences between it and GBDT?",
    previous_response_id=response1.id,
)
print(f"Second response: {response2.output_text}")

# Periksa status cache hit
usage = response2.usage
print(f"Input Tokens: {usage.input_tokens}")
print(f"Cached Tokens: {usage.input_tokens_details.cached_tokens}")

Node.js

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    baseURL: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1",
    // Aktifkan session cache melalui defaultHeaders
    defaultHeaders: {"x-dashscope-session-cache": "enable"}
});

// Buat teks panjang lebih dari 1.024 token untuk memastikan pembuatan cache.
// Jika teks kurang dari 1.024 token, cache akan dibuat ketika konteks percakapan terakumulasi melebihi 1.024 token.
const longContext = "Artificial intelligence is an important branch of computer science, dedicated to researching and developing theories, methods, technologies, and application systems that can simulate, extend, and expand human intelligence.".repeat(50);

async function main() {
    // Putaran pertama
    const response1 = await openai.responses.create({
        model: "qwen3.5-plus",
        input: longContext + "\n\nBased on the background knowledge above, please briefly introduce the random forest algorithm in machine learning, including its basic principles and application scenarios."
    });
    console.log(`First response: ${response1.output_text}`);

    // Putaran kedua: Hubungkan konteks menggunakan previous_response_id. Cache ditangani secara otomatis oleh server.
    const response2 = await openai.responses.create({
        model: "qwen3.5-plus",
        input: "What are the main differences between it and GBDT?",
        previous_response_id: response1.id
    });
    console.log(`Second response: ${response2.output_text}`);

    // Periksa status cache hit
    console.log(`Input Tokens: ${response2.usage.input_tokens}`);
    console.log(`Cached Tokens: ${response2.usage.input_tokens_details.cached_tokens}`);
}

main();

curl

# Putaran pertama
# Ganti input dengan teks panjang lebih dari 1.024 token untuk memastikan pembuatan cache.
curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "x-dashscope-session-cache: enable" \
-d '{
    "model": "qwen3.5-plus",
    "input": "Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia. Kecerdasan buatan adalah cabang penting dari ilmu komputer, yang didedikasikan untuk meneliti dan mengembangkan teori, metode, teknologi, dan sistem aplikasi yang dapat mensimulasikan, memperluas, dan mengembangkan kecerdasan manusia.\n\nBerdasarkan pengetahuan latar belakang di atas, tolong jelaskan secara singkat algoritma random forest dalam pembelajaran mesin, termasuk prinsip-prinsip dasar dan skenario aplikasinya."
}'

# Putaran kedua - gunakan ID dari tanggapan pertama sebagai previous_response_id
curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "x-dashscope-session-cache: enable" \
-d '{
    "model": "qwen3.5-plus",
    "input": "Apa perbedaan utama antara itu dan GBDT?",
    "previous_response_id": "id_tanggapan_dari_putaran_pertama"
}'

Migrasi dari Chat Completions API ke Responses API

Jika Anda menggunakan OpenAI Chat Completions API, Anda dapat bermigrasi ke Responses API dengan mengikuti langkah-langkah berikut. Responses API menawarkan antarmuka yang lebih ringkas dan fitur yang lebih canggih, sekaligus mempertahankan kompatibilitas dengan Chat Completions.

1. Perbarui alamat endpoint dan base_url

Anda perlu memperbarui dua hal:

  • Path endpoint: Ubah dari /v1/chat/completions menjadi /v1/responses

  • base_url:

    • China (Beijing): Ubah dari https://dashscope.aliyuncs.com/compatible-mode/v1 menjadi https://dashscope.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1

    • Singapore: Ubah dari https://dashscope-intl.aliyuncs.com/compatible-mode/v1 menjadi https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1

Python

# Chat Completions API
completion = client.chat.completions.create(
    model="qwen3.5-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"}
    ]
)
print(completion.choices[0].message.content)

# Responses API - can use the same message format
response = client.responses.create(
    model="qwen3.5-plus",
    input=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"}
    ]
)
print(response.output_text)

# Responses API - or use a more concise format
response = client.responses.create(
    model="qwen3.5-plus",
    input="Hello!"
)
print(response.output_text)

Node.js

// Chat Completions API
const completion = await client.chat.completions.create({
    model: "qwen3.5-plus",
    messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "Hello!" }
    ]
});
console.log(completion.choices[0].message.content);

// Responses API - can use the same message format
const response = await client.responses.create({
    model: "qwen3.5-plus",
    input: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "Hello!" }
    ]
});
console.log(response.output_text);

// Responses API - or use a more concise format
const response2 = await client.responses.create({
    model: "qwen3.5-plus",
    input: "Hello!"
});
console.log(response2.output_text);

curl

# Chat Completions API
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello!"}
    ]
}'

# Responses API - use a more concise format
curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "input": "Hello!"
}'

2. Perbarui penanganan respons

Struktur respons Responses API berbeda. Gunakan metode pintasan output_text untuk mengambil output teks, atau akses informasi detail melalui array output.

Perbandingan respons

# Chat Completions Response
{
  "id": "chatcmpl-416b0ea5-e362-9fec-97c5-0a60b5d7xxx",
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null,
      "message": {
        "content": "Hello! I'm happy to see you~  How can I help you?",
        "refusal": null,
        "role": "assistant",
        "function_call": null,
        "tool_calls": null
      }
    }
  ],
  "created": 1769416269,
  "model": "qwen3.5-plus",
  "object": "chat.completion",
  "service_tier": null,
  "system_fingerprint": null,
  "usage": {
    "completion_tokens": 14,
    "prompt_tokens": 22,
    "total_tokens": 36,
    "prompt_tokens_details": {
      "cached_tokens": 0
    }
  }
}
# Responses API Response
{
  "id": "d69c735d-0f5e-4b6c-9c2a-8cab5eb14xxx",
  "created_at": 1769416269.0,
  "model": "qwen3.5-plus",
  "object": "response",
  "status": "completed",
  "output": [
    {
      "id": "msg_3426d3e5-8da7-4dd8-a6a5-7c2cd866xxx",
      "type": "message",
      "role": "assistant",
      "status": "completed",
      "content": [
        {
          "type": "output_text",
          "text": "Hello! Today is Monday, January 26, 2026. How can I help you? ",
          "annotations": []
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 34,
    "output_tokens": 25,
    "total_tokens": 59,
    "input_tokens_details": {
      "cached_tokens": 0
    },
    "output_tokens_details": {
      "reasoning_tokens": 0
    }
  }
}

3. Sederhanakan pengelolaan percakapan multi-putaran

Dengan Chat Completions, Anda perlu mengelola array riwayat pesan secara manual. Responses API menyediakan parameter previous_response_id untuk menghubungkan konteks secara otomatis. ID respons saat ini id berlaku selama 7 hari.

Python

# Chat Completions - manual message history management
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is the capital of France?"}
]
res1 = client.chat.completions.create(
    model="qwen3.5-plus",
    messages=messages
)

# Manually add response to history
messages.append(res1.choices[0].message)
messages.append({"role": "user", "content": "What is its population?"})

res2 = client.chat.completions.create(
    model="qwen3.5-plus",
    messages=messages
)
# Responses API - automatic linking with previous_response_id
res1 = client.responses.create(
    model="qwen3.5-plus",
    input="What is the capital of France?"
)

# Just pass the previous response ID
res2 = client.responses.create(
    model="qwen3.5-plus",
    input="What is its population?",
    previous_response_id=res1.id
)

Node.js

// Chat Completions - manual message history management
let messages = [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "What is the capital of France?" }
];
const res1 = await client.chat.completions.create({
    model: "qwen3.5-plus",
    messages
});

// Manually add response to history
messages = messages.concat([res1.choices[0].message]);
messages.push({ role: "user", content: "What is its population?" });

const res2 = await client.chat.completions.create({
    model: "qwen3.5-plus",
    messages
});
// Responses API - automatic linking with previous_response_id
const res1 = await client.responses.create({
    model: "qwen3.5-plus",
    input: "What is the capital of France?"
});

// Just pass the previous response ID
const res2 = await client.responses.create({
    model: "qwen3.5-plus",
    input: "What is its population?",
    previous_response_id: res1.id
});

4. Gunakan tool bawaan

Responses API memiliki beberapa tool bawaan, sehingga Anda tidak perlu mengimplementasikannya sendiri. Cukup tentukan tool tersebut dalam parameter tools. Tool interpreter kode dan web scraping saat ini gratis untuk waktu terbatas. Untuk informasi selengkapnya, lihat Tool calling.

Python

# Chat Completions - need to implement tool functions yourself
def web_search(query):
    # Need to implement web search logic yourself
    import requests
    r = requests.get(f"https://api.example.com/search?q={query}")
    return r.json().get("results", [])

completion = client.chat.completions.create(
    model="qwen3.5-plus",
    messages=[{"role": "user", "content": "Who is the current president of France?"}],
    functions=[{
        "name": "web_search",
        "description": "Search the web for information",
        "parameters": {
            "type": "object",
            "properties": {"query": {"type": "string"}},
            "required": ["query"]
        }
    }]
)
# Responses API - use built-in tools directly
response = client.responses.create(
    model="qwen3.5-plus",
    input="Who is the current president of France?",
    tools=[{"type": "web_search"}]  # Enable web search directly
)
print(response.output_text)

Node.js

// Chat Completions - need to implement tool functions yourself
async function web_search(query) {
    const fetch = (await import('node-fetch')).default;
    const res = await fetch(`https://api.example.com/search?q=${query}`);
    const data = await res.json();
    return data.results;
}

const completion = await client.chat.completions.create({
    model: "qwen3.5-plus",
    messages: [{ role: "user", content: "Who is the current president of France?" }],
    functions: [{
        name: "web_search",
        description: "Search the web for information",
        parameters: {
            type: "object",
            properties: { query: { type: "string" } },
            required: ["query"]
        }
    }]
});
// Responses API - use built-in tools directly
const response = await client.responses.create({
    model: "qwen3.5-plus",
    input: "Who is the current president of France?",
    tools: [{ type: "web_search" }]  // Enable web search directly
});
console.log(response.output_text);

curl

# Chat Completions - need to implement tools yourself
# Example of calling an external search API
curl https://api.example.com/search \
  -G \
  --data-urlencode "q=current president of France" \
  --data-urlencode "key=$SEARCH_API_KEY"
# Responses API - use built-in tools directly
curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "input": "Who is the current president of France?",
    "tools": [{"type": "web_search"}]
}'

FAQ

T: Bagaimana cara mengirimkan konteks untuk percakapan multi-putaran?

J: Saat Anda memulai putaran baru dalam percakapan, kirimkan id dari respons sukses putaran sebelumnya sebagai parameter previous_response_id.

T: Mengapa saya tidak bisa mencetak output_text?

J: Beberapa versi SDK Python OpenAI, seperti 1.99.2, secara salah menghapus properti ini. Perbarui SDK ke versi terbaru untuk menghindari error ini.