全部产品
Search
文档中心

Alibaba Cloud Model Studio:Referensi API Responses OpenAI

更新时间:Feb 05, 2026

Topik ini menjelaskan cara memanggil Qwen menggunakan API Responses yang kompatibel dengan OpenAI, termasuk parameter input dan output serta contoh kode.

Keunggulan dibandingkan API OpenAI Chat Completions:

  • Alat bawaan: Termasuk web search, web extractor, dan code interpreter. Gunakan alat-alat ini secara bersamaan (tools=[{"type": "web_search"}, {"type": "web_extractor"}, {"type": "code_interpreter"}]) untuk performa terbaik dalam menangani tugas kompleks. Lihat Panggil alat bawaan.

  • Input lebih fleksibel: Mendukung pengiriman string langsung sebagai input model dan kompatibel dengan array pesan dalam format Chat.

  • Manajemen konteks yang disederhanakan: Kirim previous_response_id dari respons sebelumnya, bukan membangun manual seluruh riwayat pesan.

Catatan kompatibilitas dan keterbatasan

API ini dirancang agar kompatibel dengan OpenAI guna mengurangi biaya migrasi. Namun, terdapat perbedaan pada parameter, fitur, dan perilaku spesifik.

Prinsip utama: Permintaan hanya memproses parameter yang secara eksplisit tercantum dalam dokumen ini. Parameter OpenAI apa pun yang tidak disebutkan akan diabaikan.

Perbedaan utama:

  • Input multimodal tidak didukung: Parameter input hanya mendukung teks, bukan gambar atau jenis file lainnya.

  • Parameter tidak didukung: Beberapa parameter API Responses OpenAI tidak didukung, seperti instructions dan background. Saat ini, hanya panggilan sinkron yang didukung.

  • Parameter tambahan: API ini juga mendukung parameter tambahan, seperti enable_thinking. Untuk penggunaan spesifik, lihat deskripsi parameter terkait.

Saat ini hanya didukung di wilayah Singapore.

Singapore

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

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

Badan permintaan

Pemanggilan dasar

Python

import os
from openai import OpenAI

client = OpenAI(
    # Jika variabel lingkungan belum diatur, ganti baris berikut dengan Kunci API Model Studio Anda: 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-max-2026-01-23",
    input="Hello, please introduce yourself in one sentence."
)

# Dapatkan respons model
print(response.output_text)

Node.js

import OpenAI from "openai";

const openai = new OpenAI({
    // Jika variabel lingkungan belum diatur, ganti baris berikut dengan Kunci API Model Studio Anda: 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-max-2026-01-23",
        input: "Hello, please introduce yourself in one sentence."
    });

    // 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-max-2026-01-23",
    "input": "Hello, please introduce yourself in one sentence."
}'

Keluaran streaming

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-max-2026-01-23",
    input="Please briefly introduce artificial intelligence.",
    stream=True
)

print("Menerima keluaran streaming:")
for event in stream:
    if event.type == 'response.output_text.delta':
        print(event.delta, end='', flush=True)
    elif event.type == 'response.completed':
        print("\nStreaming selesai")
        print(f"Total token: {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-max-2026-01-23",
        input: "Please briefly introduce artificial intelligence.",
        stream: true
    });

    console.log("Menerima keluaran streaming:");
    for await (const event of stream) {
        if (event.type === 'response.output_text.delta') {
            process.stdout.write(event.delta);
        } else if (event.type === 'response.completed') {
            console.log("\nStreaming selesai");
            console.log(`Total token: ${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" \
--no-buffer \
-d '{
    "model": "qwen3-max-2026-01-23",
    "input": "Please briefly introduce artificial intelligence.",
    "stream": true
}'

Percakapan multi-putaran

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-max-2026-01-23",
    input="My name is John, please remember it."
)
print(f"Respons pertama: {response1.output_text}")

# Putaran kedua - gunakan previous_response_id untuk menghubungkan konteks
# ID respons berlaku selama 7 hari
response2 = client.responses.create(
    model="qwen3-max-2026-01-23",
    input="Do you remember my name?",
    previous_response_id=response1.id
)
print(f"Respons kedua: {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-max-2026-01-23",
        input: "My name is John, please remember it."
    });
    console.log(`Respons pertama: ${response1.output_text}`);

    // Putaran kedua - gunakan previous_response_id untuk menghubungkan konteks
    // ID respons berlaku selama 7 hari
    const response2 = await openai.responses.create({
        model: "qwen3-max-2026-01-23",
        input: "Do you remember my name?",
        previous_response_id: response1.id
    });
    console.log(`Respons kedua: ${response2.output_text}`);
}

main();

Panggil alat bawaan

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

# Hapus komentar pada baris di bawah untuk melihat keluaran 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-max-2026-01-23",
        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 sedang berpikir...");
        } else if (item.type === "web_search_call") {
            console.log(`Kueri pencarian: ${item.action.query}`);
        } else if (item.type === "web_extractor_call") {
            console.log("Mengekstraksi konten web...");
        } else if (item.type === "message") {
            console.log(`Respons: ${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-max-2026-01-23",
    "input": "Find the Alibaba Cloud website and extract key information",
    "tools": [
        {
            "type": "web_search"
        },
        {
            "type": "code_interpreter"
        },
        {
            "type": "web_extractor"
        }
    ],
    "enable_thinking": true
}'

model string (Wajib)

Nama model. Saat ini mendukung qwen3-max dan qwen3-max-2026-01-23.

input string atau array (Wajib)

Input model. Format berikut didukung:

  • string: Input teks biasa, seperti "Hello".

  • array: Array pesan yang disusun dalam urutan percakapan.

Jenis pesan dalam array

Pesan Sistem objek (Opsional)

Pesan sistem. Menetapkan peran, nada, tujuan tugas, atau batasan model. Jika digunakan, pesan sistem harus menjadi elemen pertama dalam array pesan.

Properti

role string (Wajib)

Peran pesan. Nilainya harus system.

content string (Wajib)

Konten instruksi sistem. Mendefinisikan peran, perilaku, gaya respons, dan batasan tugas model.

Pesan Pengguna objek (Wajib)

Pesan pengguna. Mengirimkan pertanyaan, instruksi, atau konteks ke model.

Properti

role string (Wajib)

Peran pesan. Nilainya harus user.

content string (Wajib)

Konten teks yang dimasukkan oleh pengguna.

Pesan Asisten objek (Opsional)

Pesan asisten. Berisi respons model sebelumnya dan digunakan untuk menyediakan konteks dalam percakapan multi-putaran.

Properti

role string (Wajib)

Peran pesan. Nilainya harus assistant.

content string (Wajib)

Konten teks balasan asisten.

previous_response_id string (Opsional)

ID unik dari respons sebelumnya. Respons saat ini id berlaku selama 7 hari. Anda dapat menggunakan parameter ini untuk membuat percakapan multi-putaran. Server secara otomatis mengambil dan menggabungkan input serta output putaran tersebut sebagai konteks. Jika array pesan input dan previous_response_id keduanya diberikan, pesan baru dalam input akan ditambahkan ke konteks historis.

stream boolean (Opsional) Nilai default: false

Menentukan apakah akan mengaktifkan keluaran streaming. Jika parameter ini diatur ke true, data respons model akan dikirimkan kembali ke klien secara real-time.

tools array (Opsional)

Array alat yang dapat dipanggil model saat menghasilkan respons. Mendukung kombinasi alat bawaan dan alat fungsi yang ditentukan pengguna.

Untuk respons terbaik, kami merekomendasikan mengaktifkan alat code_interpreter, web_search, dan web_extractor secara bersamaan.

Properti

web_search

Alat pencarian web yang memungkinkan model mencari informasi terbaru di Internet. Untuk informasi lebih lanjut, lihat Web search.

Properti

type string (Wajib)

Nilainya harus web_search.

Contoh: [{"type": "web_search"}]

web_extractor

Alat ekstraksi halaman web yang memungkinkan model mengakses dan mengekstraksi konten halaman web. Harus digunakan bersama alat web_search. Untuk informasi lebih lanjut, lihat Web scraping.

Properti

type string (Wajib)

Nilainya harus web_extractor.

Contoh: [{"type": "web_search"}, {"type": "web_extractor"}]

code_interpreter

Alat interpreter kode yang memungkinkan model mengeksekusi kode dan mengembalikan hasil untuk analitik data. Untuk informasi lebih lanjut, lihat Code interpreter.

Properti

type string (Wajib)

Nilainya harus code_interpreter.

Contoh: [{"type": "code_interpreter"}]

Alat kustom function

Alat fungsi yang ditentukan pengguna yang memungkinkan model memanggil fungsi yang Anda definisikan. Ketika model memutuskan untuk memanggil alat, respons akan mengembalikan keluaran bertipe function_call. Untuk informasi lebih lanjut, lihat Function calling.

Properti

type string (Wajib)

Nilainya harus function.

name string (Wajib)

Nama alat. Nama hanya boleh berisi huruf, angka, garis bawah (_), dan tanda hubung (-). Panjang maksimum adalah 64 token.

description string (Wajib)

Deskripsi alat yang membantu model memutuskan kapan dan bagaimana memanggil alat tersebut.

parameters objek (Opsional)

Deskripsi parameter alat. Deskripsi harus berupa JSON Schema yang valid. Jika parameter parameters kosong, alat tersebut tidak memiliki parameter input, seperti alat kueri waktu.

Untuk meningkatkan akurasi pemanggilan alat, kami merekomendasikan Anda mengirimkan parameter parameters.

Contoh:

[{
  "type": "function",
  "name": "get_weather",
  "description": "Get weather information for a specified city",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {
        "type": "string",
        "description": "The name of the city"
      }
    },
    "required": ["city"]
  }
}]

tool_choice string atau objek (Opsional) Nilai default: auto

Mengontrol cara model memilih dan memanggil alat. Parameter ini mendukung dua format: string dan objek.

Format string

  • auto: Model secara otomatis memutuskan apakah akan memanggil alat.

  • none: Mencegah model memanggil alat apa pun.

  • required: Memaksa model memanggil alat. Ini tersedia hanya jika terdapat satu alat dalam daftar tools.

Pola Objek

Menetapkan rentang alat yang tersedia bagi model. Model hanya dapat memilih dan memanggil alat dari daftar alat yang telah ditentukan.

Properti

mode string (Wajib)

  • auto: Model secara otomatis memutuskan apakah akan memanggil alat.

  • required: Memaksa model memanggil alat. Ini tersedia hanya jika terdapat satu alat dalam daftar tools.

tools array(Wajib)

Daftar definisi alat yang boleh dipanggil model.

[
  { "type": "function", "name": "get_weather" }
]

type string (Wajib)

Jenis konfigurasi alat yang diizinkan. Nilainya harus allowed_tools.

temperature float (Opsional)

Suhu pengambilan sampel. Parameter ini mengontrol keragaman teks yang dihasilkan.

Suhu yang lebih tinggi menghasilkan teks yang lebih beragam. Suhu yang lebih rendah menghasilkan teks yang lebih deterministik.

Rentang nilai: [0, 2)

Baik temperature maupun top_p mengontrol keragaman teks yang dihasilkan. Kami merekomendasikan Anda hanya mengatur salah satunya. Untuk informasi lebih lanjut, lihat Ikhtisar model generasi teks.

top_p float (Opsional)

Ambang batas probabilitas untuk pengambilan sampel inti. Parameter ini mengontrol keragaman teks yang dihasilkan.

Nilai top_p yang lebih tinggi menghasilkan teks yang lebih beragam. Nilai top_p yang lebih rendah menghasilkan teks yang lebih deterministik.

Rentang nilai: (0, 1.0]

Baik temperature maupun top_p mengontrol keragaman teks yang dihasilkan. Kami merekomendasikan Anda hanya mengatur salah satunya. Untuk informasi lebih lanjut, lihat Ikhtisar model generasi teks.

enable_thinking boolean (Opsional) Nilai default: false

Menentukan apakah akan mengaktifkan mode berpikir. Jika parameter ini diaktifkan, model akan berpikir sebelum membalas. Proses berpikir dikembalikan melalui item keluaran bertipe reasoning.

Jika mode berpikir diaktifkan, kami merekomendasikan Anda mengaktifkan alat bawaan untuk mencapai performa model terbaik pada tugas kompleks.

Nilai yang valid:

  • true: Mengaktifkan mode berpikir. Ini harus diaktifkan saat Anda menggunakan alat code_interpreter atau web_extractor.

  • false: Menonaktifkan mode berpikir.

Parameter ini bukan parameter standar OpenAI. SDK Python mengirimkannya menggunakan extra_body={"enable_thinking": True}. SDK Node.js dan curl menggunakan enable_thinking: true langsung sebagai parameter tingkat atas.

Objek respons (keluaran non-streaming)

{
    "created_at": 1769408284,
    "id": "351e34cc-5f75-483b-b948-35be954dbxxx",
    "model": "qwen3-max-2026-01-23",
    "object": "response",
    "output": [
        {
            "content": [
                {
                    "annotations": [],
                    "text": "Hello! I am Qwen, a large-scale language model developed by Tongyi Lab. I can answer questions, create text, write code, and express opinions. I am committed to providing you with accurate, useful, and friendly help.",
                    "type": "output_text"
                }
            ],
            "id": "msg_59a7339e-77d0-4451-8f51-75fb8dbefxxx",
            "role": "assistant",
            "status": "completed",
            "type": "message"
        }
    ],
    "parallel_tool_calls": false,
    "status": "completed",
    "tool_choice": "auto",
    "tools": [],
    "usage": {
        "input_tokens": 39,
        "input_tokens_details": {
            "cached_tokens": 0
        },
        "output_tokens": 46,
        "output_tokens_details": {
            "reasoning_tokens": 0
        },
        "total_tokens": 85
    }
}

id string

Pengidentifikasi unik untuk respons ini. Ini adalah string UUID dan berlaku selama 7 hari. Anda dapat menggunakan pengidentifikasi ini dalam parameter previous_response_id untuk membuat percakapan multi-putaran.

created_at integer

Timestamp Unix dalam detik untuk permintaan ini.

object string

Jenis objek. Nilainya adalah response.

status string

Status pembuatan respons. Nilai yang valid:

  • completed

  • failed

  • in_progress

  • cancelled

  • queued

  • incomplete

model string

ID model yang digunakan untuk menghasilkan respons.

output array

Array item keluaran yang dihasilkan model. Jenis dan urutan elemen dalam array bergantung pada respons model.

Properti elemen array

type string

Jenis item keluaran. Nilai yang valid:

  • message: Jenis pesan. Berisi konten balasan akhir yang dihasilkan model.

  • reasoning: Jenis penalaran. Jenis ini dikembalikan ketika mode berpikir (enable_thinking: true) diaktifkan. Token penalaran dihitung dalam output_tokens_details.reasoning_tokens dan ditagih sebagai token penalaran.

  • function_call: Jenis pemanggilan fungsi. Jenis ini dikembalikan ketika alat function yang ditentukan pengguna digunakan. Anda perlu menangani pemanggilan fungsi dan mengembalikan hasilnya.

  • web_search_call: Jenis pemanggilan pencarian. Jenis ini dikembalikan ketika alat web_search digunakan.

  • code_interpreter_call: Jenis eksekusi kode. Jenis ini dikembalikan ketika alat code_interpreter digunakan. Harus digunakan dengan enable_thinking: true.

  • web_extractor_call: Jenis ekstraksi halaman web. Jenis ini dikembalikan ketika alat web_extractor digunakan. Harus digunakan bersama alat web_search.

id string

Pengidentifikasi unik untuk item keluaran. Bidang ini termasuk dalam semua jenis item keluaran.

role string

Peran pesan. Nilainya adalah assistant. Bidang ini hanya ada ketika type adalah message.

status string

Status item keluaran. Nilai yang valid adalah completed dan in_progress. Bidang ini ada ketika type adalah message, function_call, web_search_call, code_interpreter_call, atau web_extractor_call.

name string

Nama fungsi. Bidang ini hanya ada ketika type adalah function_call.

arguments string

Argumen untuk pemanggilan fungsi, dalam format string JSON. Bidang ini hanya ada ketika type adalah function_call. Anda perlu menguraikannya menggunakan JSON.parse() sebelum digunakan.

call_id string

Pengidentifikasi unik untuk pemanggilan fungsi. Bidang ini hanya ada ketika type adalah function_call. Saat Anda mengembalikan hasil pemanggilan fungsi, Anda harus menggunakan ID ini untuk mengaitkan permintaan dengan respons.

content array

Array konten pesan. Bidang ini hanya ada ketika type adalah message.

Properti elemen array

type string

Jenis konten. Nilainya adalah output_text.

text string

Konten teks yang dihasilkan model.

annotations array

Array anotasi teks. Biasanya berupa array kosong.

summary array

Array ringkasan penalaran. Bidang ini hanya ada ketika type adalah reasoning. Setiap elemen berisi bidang type dengan nilai summary_text dan bidang text yang berisi teks ringkasan.

action objek

Informasi aksi pencarian. Bidang ini hanya ada ketika type adalah web_search_call.

Properti

query string

Kata kunci kueri pencarian.

type string

Jenis pencarian. Nilainya adalah search.

sources array

Daftar sumber pencarian. Setiap elemen berisi bidang type dengan nilai url dan bidang url yang berisi URL halaman web.

code string

Kode yang dihasilkan dan dieksekusi model. Bidang ini hanya ada ketika type adalah code_interpreter_call.

outputs array

Array keluaran eksekusi kode. Bidang ini hanya ada ketika type adalah code_interpreter_call. Setiap elemen berisi bidang type dengan nilai logs dan bidang logs yang berisi log eksekusi kode.

container_id string

Pengidentifikasi untuk kontainer interpreter kode. Bidang ini hanya ada ketika type adalah code_interpreter_call. Digunakan untuk mengaitkan beberapa eksekusi kode dalam sesi yang sama.

goal string

Deskripsi tujuan ekstraksi yang menjelaskan informasi apa yang perlu diekstraksi dari halaman web. Bidang ini hanya ada ketika type adalah web_extractor_call.

output string

Ringkasan konten yang diekstraksi dari halaman web. Bidang ini hanya ada ketika type adalah web_extractor_call.

urls array

Daftar URL halaman web yang diekstraksi. Bidang ini hanya ada ketika type adalah web_extractor_call.

usage objek

Informasi konsumsi token untuk permintaan ini.

Properti

input_tokens integer

Jumlah token input.

output_tokens integer

Jumlah token yang dikeluarkan model.

total_tokens integer

Total token yang dikonsumsi. Ini adalah jumlah dari input_tokens dan output_tokens.

input_tokens_details objek

Kategorisasi detail halus token input.

Properti

cached_tokens integer

Jumlah token yang mengenai cache. Untuk informasi lebih lanjut, lihat Context cache.

output_tokens_details objek

Kategorisasi detail halus token output.

Properti

reasoning_tokens integer

Jumlah token dalam proses berpikir.

x_tools objek

Informasi statistik tentang penggunaan alat. Jika alat bawaan digunakan, bidang ini mencakup jumlah pemanggilan untuk setiap alat.

Contoh:

  • alat web_search: {"web_search": {"count": 1}}

  • alat code_interpreter: {"code_interpreter": {"count": 1}}

  • alat web_extractor: {"web_extractor": {"count": 1}}

error objek

Objek error yang dikembalikan ketika model gagal menghasilkan respons. Bidang ini bernilai null jika berhasil.

tools array

Konten lengkap parameter tools dari permintaan echo. Strukturnya sama dengan parameter tools dalam badan permintaan.

tool_choice string

Nilai parameter tool_choice dari permintaan echo. Nilai yang valid adalah auto, none, dan required.

Objek chunk respons (keluaran streaming)

Pemanggilan dasar

// response.created - Respons dibuat
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","created_at":1769082930,"object":"response","status":"queued",...},"sequence_number":0,"type":"response.created"}

// response.in_progress - Respons sedang diproses
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","status":"in_progress",...},"sequence_number":1,"type":"response.in_progress"}

// response.output_item.added - Item keluaran baru ditambahkan
{"item":{"id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","content":[],"role":"assistant","status":"in_progress","type":"message"},"output_index":0,"sequence_number":2,"type":"response.output_item.added"}

// response.content_part.added - Blok konten baru ditambahkan
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","output_index":0,"part":{"annotations":[],"text":"","type":"output_text","logprobs":null},"sequence_number":3,"type":"response.content_part.added"}

// response.output_text.delta - Teks inkremental (dipicu beberapa kali)
{"content_index":0,"delta":"Artificial intelligence","item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":4,"type":"response.output_text.delta"}
{"content_index":0,"delta":"(AI) refers to the technology and science","item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":6,"type":"response.output_text.delta"}

// response.output_text.done - Teks selesai
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","logprobs":[],"output_index":0,"sequence_number":53,"text":"Artificial intelligence (AI) refers to the technology and science that simulates human intelligent behavior by computer systems...","type":"response.output_text.done"}

// response.content_part.done - Blok konten selesai
{"content_index":0,"item_id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","output_index":0,"part":{"annotations":[],"text":"...full text...","type":"output_text","logprobs":null},"sequence_number":54,"type":"response.content_part.done"}

// response.output_item.done - Item keluaran selesai
{"item":{"id":"msg_bcb45d66-fc34-46a2-bb56-714a51e8exxx","content":[{"annotations":[],"text":"...full text...","type":"output_text","logprobs":null}],"role":"assistant","status":"completed","type":"message"},"output_index":0,"sequence_number":55,"type":"response.output_item.done"}

// response.completed - Respons selesai (termasuk respons lengkap dan penggunaan)
{"response":{"id":"428c90e9-9cd6-90a6-9726-c02b08ebexxx","created_at":1769082930,"model":"qwen3-max-2026-01-23","object":"response","output":[...],"status":"completed","usage":{"input_tokens":37,"output_tokens":243,"total_tokens":280,...}},"sequence_number":56,"type":"response.completed"}

Panggil alat bawaan

id:1
event:response.created
:HTTP_STATUS/200
data:{"sequence_number":0,"type":"response.created","response":{"output":[],"parallel_tool_calls":false,"created_at":1769435906,"tool_choice":"auto","model":"","id":"863df8d9-cb29-4239-a54f-3e15a2427xxx","tools":[],"object":"response","status":"queued"}}

id:2
event:response.in_progress
:HTTP_STATUS/200
data:{"sequence_number":1,"type":"response.in_progress","response":{"output":[],"parallel_tool_calls":false,"created_at":1769435906,"tool_choice":"auto","model":"","id":"863df8d9-cb29-4239-a54f-3e15a2427xxx","tools":[],"object":"response","status":"in_progress"}}

id:3
event:response.output_item.added
:HTTP_STATUS/200
data:{"sequence_number":2,"item":{"summary":[],"type":"reasoning","id":"msg_5bd0c6df-19b8-4a04-bc00-8042a224exxx"},"output_index":0,"type":"response.output_item.added"}

id:4
event:response.reasoning_summary_text.delta
:HTTP_STATUS/200
data:{"delta":"The user wants me to:\n1. Search for the Alibaba Cloud official website.\n2. Extract key information from the home page.\n\nI need to first search for the URL of the Alibaba Cloud website, then use the web_extractor tool to access the site and extract key information.","sequence_number":3,"output_index":0,"type":"response.reasoning_summary_text.delta","item_id":"msg_5bd0c6df-19b8-4a04-bc00-8042a224exxx","summary_index":0}

id:14
event:response.reasoning_summary_text.done
:HTTP_STATUS/200
data:{"sequence_number":13,"text":"The user wants me to:\n1. Search for the Alibaba Cloud official website.\n2. Extract key information from the home page.\n\nI need to first search for the URL of the Alibaba Cloud website, then use the web_extractor tool to access the site and extract key information.","output_index":0,"type":"response.reasoning_summary_text.done","item_id":"msg_5bd0c6df-19b8-4a04-bc00-8042a224exxx","summary_index":0}

id:15
event:response.output_item.done
:HTTP_STATUS/200
data:{"sequence_number":14,"item":{"summary":[{"type":"summary_text","text":"The user wants me to:\n1. Search for the Alibaba Cloud official website.\n2. Extract key information from the home page.\n\nI need to first search for the URL of the Alibaba Cloud website, then use the web_extractor tool to access the site and extract key information."}],"type":"reasoning","id":"msg_5bd0c6df-19b8-4a04-bc00-8042a224exxx"},"output_index":1,"type":"response.output_item.done"}

id:16
event:response.output_item.added
:HTTP_STATUS/200
data:{"sequence_number":15,"item":{"action":{"type":"search","query":"Web search"},"id":"msg_a8a686b1-0a57-40e1-bb55-049a89cd4xxx","type":"web_search_call","status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

id:17
event:response.web_search_call.in_progress
:HTTP_STATUS/200
data:{"sequence_number":16,"output_index":1,"type":"response.web_search_call.in_progress","item_id":"msg_a8a686b1-0a57-40e1-bb55-049a89cd4xxx"}

id:19
event:response.web_search_call.completed
:HTTP_STATUS/200
data:{"sequence_number":18,"output_index":1,"type":"response.web_search_call.completed","item_id":"msg_a8a686b1-0a57-40e1-bb55-049a89cd4xxx"}

id:20
event:response.output_item.done
:HTTP_STATUS/200
data:{"sequence_number":19,"item":{"action":{"sources":[{"type":"url","url":"https://cn.aliyun.com/"},{"type":"url","url":"https://www.aliyun.com/"}],"type":"search","query":"Web search"},"id":"msg_a8a686b1-0a57-40e1-bb55-049a89cd4xxx","type":"web_search_call","status":"completed"},"output_index":1,"type":"response.output_item.done"}

id:33
event:response.output_item.added
:HTTP_STATUS/200
data:{"sequence_number":32,"item":{"urls":["https://cn.aliyun.com/"],"goal":"Extract key information from the Alibaba Cloud home page, including the following: company positioning/profile, core products and services, main business sections, special features/solutions, latest news/events, free trial/promotional information, navigation menu structure, etc.","id":"msg_8c2cf651-48a5-460c-aa7a-bea5b09b4xxx","type":"web_extractor_call","status":"in_progress"},"output_index":3,"type":"response.output_item.added"}

id:34
event:response.output_item.done
:HTTP_STATUS/200
data:{"sequence_number":33,"item":{"output":"The useful information in https://cn.aliyun.com/ for user goal Extract key information from the Alibaba Cloud home page, including the following: company positioning/profile, core products and services, main business sections, special features/solutions, latest news/events, free trial/promotional information, navigation menu structure, etc. as follows: \n\nEvidence in page: \n## Tongyi large model, the first choice for enterprises to embrace the AI era\n\n## A complete product system to create a cloud of technological innovation for enterprises\n\nAll cloud products## Relying on the coordinated development of large models and cloud computing to make AI within reach\n\nAll AI solutions\n\nSummary: \nAlibaba Cloud positions itself as a leading enterprise AI solution provider centered around the Tongyi large model...","urls":["https://cn.aliyun.com/"],"goal":"Extract key information from the Alibaba Cloud home page, including the following: company positioning/profile, core products and services, main business sections, special features/solutions, latest news/events, free trial/promotional information, navigation menu structure, etc.","id":"msg_8c2cf651-48a5-460c-aa7a-bea5b09b4xxx","type":"web_extractor_call","status":"completed"},"output_index":3,"type":"response.output_item.done"}

id:50
event:response.output_item.added
:HTTP_STATUS/200
data:{"sequence_number":50,"item":{"content":[{"type":"text","text":""}],"type":"message","id":"msg_final","role":"assistant"},"output_index":5,"type":"response.output_item.added"}

id:51
event:response.output_text.delta
:HTTP_STATUS/200
data:{"delta":"I have found the Alibaba Cloud official website and extracted the key information from the home page:\n\n","sequence_number":51,"output_index":5,"type":"response.output_text.delta"}

id:60
event:response.completed
:HTTP_STATUS/200
data:{"type":"response.completed","response":{"id":"863df8d9-cb29-4239-a54f-3e15a2427xxx","status":"completed","usage":{"input_tokens":45,"output_tokens":320,"total_tokens":365}}}

Keluaran streaming mengembalikan serangkaian objek JSON. Setiap objek mencakup bidang type untuk mengidentifikasi jenis event dan bidang sequence_number untuk menunjukkan urutan event. Event response.completed menandai akhir stream.

type string

Pengidentifikasi jenis event. Nilai yang valid:

  • response.created: Dipicu saat respons dibuat. Statusnya adalah queued.

  • response.in_progress: Dipicu saat pemrosesan respons dimulai. Status berubah menjadi in_progress.

  • response.output_item.added: Dipicu saat item keluaran baru, seperti pesan atau web_extractor_call, ditambahkan ke array output. Jika item.type adalah web_extractor_call, ini menunjukkan bahwa pemanggilan alat web extractor telah dimulai.

  • response.content_part.added: Dipicu saat blok konten baru ditambahkan ke array konten item keluaran.

  • response.output_text.delta: Dipicu untuk generasi teks inkremental. Event ini dipicu beberapa kali, dan bidang delta berisi fragmen teks baru.

  • response.output_text.done: Dipicu saat generasi teks selesai. Bidang text berisi teks lengkap.

  • response.content_part.done: Dipicu saat blok konten selesai. Objek part berisi blok konten lengkap.

  • response.output_item.done: Dipicu saat item keluaran sepenuhnya dihasilkan. Objek item berisi item keluaran lengkap. Jika item.type adalah web_extractor_call, ini menunjukkan bahwa pemanggilan alat web extractor selesai.

  • response.reasoning_summary_text.delta: (Jika mode berpikir diaktifkan) Teks inkremental untuk ringkasan penalaran. Bidang delta berisi fragmen ringkasan baru.

  • response.reasoning_summary_text.done: (Jika mode berpikir diaktifkan) Ringkasan penalaran selesai. Bidang text berisi ringkasan lengkap.

  • response.web_search_call.in_progress / searching / completed: (Jika Anda menggunakan alat web_search) Event perubahan status pencarian.

  • response.code_interpreter_call.in_progress / interpreting / completed: (Jika Anda menggunakan alat code_interpreter) Event perubahan status eksekusi kode.

  • Catatan: Jika Anda menggunakan alat web_extractor, tidak ada pengidentifikasi jenis event khusus. Pemanggilan alat web extractor dikomunikasikan melalui event umum response.output_item.added dan response.output_item.done. Ini diidentifikasi oleh bidang item.type, yang nilainya adalah web_extractor_call.

  • response.completed: Dipicu saat pembuatan respons selesai. Objek response berisi respons lengkap, termasuk informasi penggunaan. Event ini menandai akhir stream.

sequence_number integer

Nomor seri event. Dimulai dari 0 dan bertambah. Anda dapat menggunakannya untuk memastikan klien memproses event dalam urutan yang benar.

response objek

Objek respons. Muncul dalam event response.created, response.in_progress, dan response.completed. Dalam event response.completed, objek ini berisi data respons lengkap, termasuk output dan usage. Strukturnya konsisten dengan objek respons keluaran non-streaming.

item objek

Objek item keluaran. Muncul dalam event response.output_item.added dan response.output_item.done. Dalam event added, objek ini berupa kerangka awal dengan konten berupa array kosong. Dalam event done, objek ini lengkap.

Properti

id string

Pengidentifikasi unik untuk item keluaran, seperti msg_xxx.

type string

Jenis item keluaran. Nilai yang valid: message, reasoning, dll.

role string

Peran pesan. Nilainya adalah assistant. Bidang ini hanya ada ketika jenisnya adalah message.

status string

Status generasi. Dalam event added, statusnya adalah in_progress. Dalam event done, statusnya adalah completed.

content array

Array konten pesan. Dalam event added, berupa array kosong []. Dalam event done, berisi objek blok konten lengkap yang strukturnya sama dengan objek part.

part objek

Objek blok konten. Muncul dalam event response.content_part.added dan response.content_part.done.

Properti

type string

Jenis blok konten. Nilainya adalah output_text.

text string

Konten teks. Dalam event added, berupa string kosong. Dalam event done, berupa teks lengkap.

annotations array

Array anotasi teks. Biasanya berupa array kosong.

logprobs objek | null

Informasi probabilitas log untuk token. Saat ini, nilainya adalah null.

delta string

Konten teks inkremental. Muncul dalam event response.output_text.delta dan berisi fragmen teks baru. Klien harus menggabungkan semua fragmen delta untuk mendapatkan teks lengkap.

text string

Konten teks lengkap. Muncul dalam event response.output_text.done dan berisi teks lengkap blok konten. Anda dapat menggunakannya untuk memverifikasi hasil penggabungan fragmen delta.

item_id string

Pengidentifikasi unik untuk item keluaran. Digunakan untuk mengaitkan event terkait untuk item keluaran yang sama.

output_index integer

Posisi indeks item keluaran dalam array output.

content_index integer

Posisi indeks blok konten dalam array content.

summary_index integer

Indeks array ringkasan. Muncul dalam event response.reasoning_summary_text.delta dan response.reasoning_summary_text.done.

FAQ

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

J: Untuk memulai putaran baru dalam percakapan, cukup kirimkan id dari respons sebelumnya sebagai previous_response_id.

T: Mengapa beberapa bidang dalam contoh tanggapan tidak dijelaskan dalam dokumen ini?

J: Jika Anda menggunakan SDK OpenAI resmi, SDK tersebut mungkin mengeluarkan bidang tambahan, biasanya null, berdasarkan struktur modelnya sendiri. Bidang-bidang ini didefinisikan oleh protokol OpenAI tetapi saat ini tidak didukung oleh layanan kami. Anda hanya perlu fokus pada bidang yang dijelaskan dalam dokumen ini.