All Products
Search
Document Center

Alibaba Cloud Model Studio:Referensi API Responses OpenAI

Last Updated:Mar 26, 2026

Panggil model Qwen menggunakan API Responses yang kompatibel dengan OpenAI.

Keunggulan dibandingkan API OpenAI Chat Completions:

  • Alat bawaan: Termasuk pencarian web, scraping web, interpreter kode, pencarian teks-ke-gambar, pencarian gambar-ke-gambar, dan pencarian basis pengetahuan — memberikan hasil lebih baik untuk tugas kompleks. Untuk informasi selengkapnya, lihat Pemanggilan fungsi.

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

  • Manajemen konteks yang disederhanakan: Kirim previous_response_id alih-alih menyusun manual array riwayat pesan.

Catatan dan batasan kompatibilitas

API ini kompatibel dengan OpenAI untuk mengurangi biaya migrasi, tetapi terdapat perbedaan dalam parameter, fitur, dan perilaku.

Prinsip inti: Hanya parameter yang didokumentasikan secara eksplisit yang diproses. Parameter OpenAI yang tidak tercantum diabaikan.

Berikut adalah perbedaan utama untuk membantu Anda beradaptasi dengan cepat:

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

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

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

China (Beijing)

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

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

AS (Virginia)

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

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

Badan permintaan

Panggilan dasar

Python

import os
from openai import OpenAI

client = OpenAI(
    # Jika variabel lingkungan tidak diatur, ganti 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.output_text)

Node.js

import OpenAI from "openai";

const openai = new OpenAI({
    // Jika variabel lingkungan tidak diatur, ganti 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?"
}'

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.5-plus",
    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.5-plus",
        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.5-plus",
    "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.5-plus",
    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 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"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.5-plus",
        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 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(`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.5-plus",
    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 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.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 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.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
}'

Pemanggilan fungsi kustom

Python

from openai import OpenAI
import json
import os
import random

# Inisialisasi klien
client = OpenAI(
    # Jika variabel lingkungan tidak diatur, berikan kunci Anda langsung: 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",
)
# Simulasikan pertanyaan pengguna
USER_QUESTION = "What's the weather like in Beijing?"
# Definisikan daftar alat
tools = [
    {
        "type": "function",
        "name": "get_current_weather",
        "description": "Queries the weather for a specified city.",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "A city or district, such as Beijing, Hangzhou, or Yuhang District.",
                }
            },
            "required": ["location"],
        },
    }
]


# Simulasikan alat kueri cuaca
def get_current_weather(arguments):
    weather_conditions = ["sunny", "cloudy", "rainy"]
    random_weather = random.choice(weather_conditions)
    location = arguments["location"]
    return f"Today in {location}, the weather is {random_weather}."


# Definisikan fungsi untuk mendapatkan respons model
def get_response(input_data):
    response = client.responses.create(
        model="qwen3.5-plus",  # Opsi: qwen3.5-flash, qwen3.5-flash-2026-02-23
        input=input_data,
        tools=tools,
    )
    return response


# Pertahankan konteks percakapan
conversation = [{"role": "user", "content": USER_QUESTION}]

response = get_response(conversation)
function_calls = [item for item in response.output if item.type == "function_call"]
# Jika tidak diperlukan pemanggilan alat, keluarkan konten langsung
if not function_calls:
    print(f"Respons asisten akhir: {response.output_text}")
else:
    # Masuki loop pemanggilan alat
    while function_calls:
        for fc in function_calls:
            func_name = fc.name
            arguments = json.loads(fc.arguments)
            print(f"Memanggil alat [{func_name}], argumen: {arguments}")
            # Eksekusi alat
            tool_result = get_current_weather(arguments)
            print(f"Alat mengembalikan: {tool_result}")
            # Tambahkan pemanggilan alat dan hasilnya sebagai pasangan ke konteks
            conversation.append(
                {
                    "type": "function_call",
                    "name": fc.name,
                    "arguments": fc.arguments,
                    "call_id": fc.call_id,
                }
            )
            conversation.append(
                {
                    "type": "function_call_output",
                    "call_id": fc.call_id,
                    "output": tool_result,
                }
            )
        # Panggil model lagi dengan konteks lengkap
        response = get_response(conversation)
        function_calls = [
            item for item in response.output if item.type == "function_call"
        ]
    print(f"Respons asisten akhir: {response.output_text}")

Node.js

import OpenAI from "openai";

// Inisialisasi klien
const openai = new OpenAI({
  // Jika variabel lingkungan tidak diatur, berikan kunci Anda langsung: apiKey: "sk-xxx"
  apiKey: process.env.DASHSCOPE_API_KEY,
  baseURL:
    "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1",
});

// Definisikan daftar alat
const tools = [
  {
    type: "function",
    name: "get_current_weather",
    description: "Queries the weather for a specified city.",
    parameters: {
      type: "object",
      properties: {
        location: {
          type: "string",
          description: "A city or district, such as Beijing, Hangzhou, or Yuhang District.",
        },
      },
      required: ["location"],
    },
  },
];

// Simulasikan alat kueri cuaca
const getCurrentWeather = (args) => {
  const weatherConditions = ["sunny", "cloudy", "rainy"];
  const randomWeather =
    weatherConditions[Math.floor(Math.random() * weatherConditions.length)];
  const location = args.location;
  return `Today in ${location}, the weather is ${randomWeather}.`;
};

// Definisikan fungsi untuk mendapatkan respons model
const getResponse = async (inputData) => {
  const response = await openai.responses.create({
    model: "qwen3.5-plus",  // Opsi: qwen3.5-flash, qwen3.5-flash-2026-02-23
    input: inputData,
    tools: tools,
  });
  return response;
};

const main = async () => {
  const userQuestion = "What's the weather like in Beijing?";

  // Pertahankan konteks percakapan
  const conversation = [{ role: "user", content: userQuestion }];

  let response = await getResponse(conversation);
  let functionCalls = response.output.filter(
    (item) => item.type === "function_call"
  );
  // Jika tidak diperlukan pemanggilan alat, keluarkan konten langsung
  if (functionCalls.length === 0) {
    console.log(`Respons asisten akhir: ${response.output_text}`);
  } else {
    // Masuki loop pemanggilan alat
    while (functionCalls.length > 0) {
      for (const fc of functionCalls) {
        const funcName = fc.name;
        const args = JSON.parse(fc.arguments);
        console.log(`Memanggil alat [${funcName}], argumen:`, args);
        // Eksekusi alat
        const toolResult = getCurrentWeather(args);
        console.log(`Alat mengembalikan: ${toolResult}`);
        // Tambahkan pemanggilan alat dan hasilnya sebagai pasangan ke konteks
        conversation.push({
          type: "function_call",
          name: fc.name,
          arguments: fc.arguments,
          call_id: fc.call_id,
        });
        conversation.push({
          type: "function_call_output",
          call_id: fc.call_id,
          output: toolResult,
        });
      }
      // Panggil model lagi dengan konteks lengkap
      response = await getResponse(conversation);
      functionCalls = response.output.filter(
        (item) => item.type === "function_call"
      );
    }
    console.log(`Respons asisten akhir: ${response.output_text}`);
  }
};

// Jalankan program
main().catch(console.error);

model string (Wajib)

Model yang didukung

Internasional

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

Global

Wilayah AS (Virginia): qwen3-max, 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

Daratan Tiongkok

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

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 array

Pesan Sistem objek (Opsional)

Mengatur peran, nada, tujuan, atau batasan model.

Properti

role string (Wajib)

Peran pesan. Nilainya harus system.

content string (Wajib)

Instruksi sistem yang mendefinisikan peran, perilaku, gaya respons, dan batasan model.

Pesan Developer objek (Opsional)

Berfungsi sama seperti pesan sistem — mengatur peran dan perilaku model.

Properti

role string (Opsional)

Peran pesan. Nilainya harus developer.

content string (Opsional)

Instruksi developer yang mendefinisikan peran, perilaku, gaya respons, dan batasan model.

Pesan Pengguna objek (Wajib)

Mengirimkan pertanyaan, instruksi, atau konteks ke model.

Properti

role string (Wajib)

Peran pesan. Nilainya harus user.

content string atau array (Wajib)

Konten pesan. String untuk input teks saja; array untuk gambar atau caching eksplisit.

API Responses tidak mendukung input video atau audio. Gunakan API Chat Completions atau API DashScope sebagai gantinya.

Properti

type string (Wajib)

Nilai yang valid:

  • text

  • input_image

text string

Teks input. Wajib saat type adalah text.

image_url string

URL publik atau data Base64-encoded dari gambar input. Wajib saat type adalah image_url. Untuk mengunggah file lokal, lihat Pemahaman gambar dan video.

Pesan Asisten objek (Opsional)

Berisi respons model sebelumnya untuk konteks percakapan multi-putaran.

Properti

role string (Wajib)

Peran pesan. Nilainya harus assistant.

content string (Wajib)

Konten teks balasan asisten.

instructions string (Opsional)

Instruksi sistem yang dimasukkan di awal konteks. Saat menggunakan previous_response_id, instructions sebelumnya tidak dibawa.

previous_response_id string (Opsional)

ID unik respons sebelumnya (berlaku selama 7 hari). Gunakan ini untuk percakapan multi-putaran — server secara otomatis mengambil dan menggabungkan input dan output putaran tersebut sebagai konteks. Jika input array dan previous_response_id keduanya disediakan, pesan baru ditambahkan ke konteks historis. Tidak dapat digunakan bersama conversation.

conversation string (Opsional)

ID percakapan untuk respons saat ini. Item historis secara otomatis diteruskan sebagai konteks, dan input/output permintaan saat ini ditambahkan setelah selesai. Tidak dapat digunakan bersama previous_response_id.

stream boolean (Opsional) Default false

Aktifkan keluaran streaming. Jika true, respons model dikirimkan kembali secara real time.

tools array (Opsional)

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

Untuk hasil terbaik, aktifkan code_interpreter, web_search, dan web_extractor bersama-sama.

Properti

web_search

Memungkinkan model mencari informasi terbaru online. Untuk informasi selengkapnya, lihat Pencarian web.

Properti

type string (Wajib)

Nilainya harus web_search.

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

web_extractor

Memungkinkan model mengekstraksi konten halaman web. Harus digunakan bersama web_search. Model qwen3-max dan qwen3-max-2026-01-23 memerlukan mode berpikir. Untuk informasi selengkapnya, lihat Web extractor.

Properti

type string (Wajib)

Nilainya harus web_extractor.

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

code_interpreter

Memungkinkan model mengeksekusi kode dan mengembalikan hasil untuk analitik data. Model qwen3-max dan qwen3-max-2026-01-23 memerlukan mode berpikir. Untuk informasi selengkapnya, lihat Interpreter kode.

Properti

type string (Wajib)

Nilainya harus code_interpreter.

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

web_search_image

Mencari gambar berdasarkan deskripsi teks. Untuk informasi selengkapnya, lihat Pencarian teks-ke-gambar.

Properti

type string (Wajib)

Nilainya harus web_search_image.

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

image_search

Mencari gambar serupa atau terkait berdasarkan gambar. Input harus berisi URL gambar. Untuk informasi selengkapnya, lihat Pencarian gambar.

Properti

type string (Wajib)

Nilainya harus image_search.

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

file_search

Mencari dalam basis pengetahuan yang diunggah atau terkait. Untuk informasi selengkapnya, lihat Pengambilan basis pengetahuan.

Properti

type string (Wajib)

Nilainya harus file_search.

vector_store_ids array (Wajib)

ID basis pengetahuan untuk diambil. Saat ini, hanya satu ID basis pengetahuan yang didukung.

Contoh: [{"type": "file_search", "vector_store_ids": ["your_knowledge_base_id"]}]

MCP call

Memanggil layanan eksternal melalui Model Context Protocol (MCP). Untuk informasi selengkapnya, lihat MCP.

Properti

type string (Wajib)

Nilainya harus mcp.

server_protocol string (Wajib)

Protokol komunikasi dengan layanan MCP, seperti "sse".

server_label string (Wajib)

Label layanan yang mengidentifikasi layanan MCP.

server_description string (Opsional)

Deskripsi layanan yang membantu model memahami fungsinya dan skenario penggunaannya.

server_url string (Wajib)

URL titik akhir layanan MCP.

headers objek (Opsional)

Header permintaan yang digunakan untuk membawa informasi seperti verifikasi identitas, misalnya, Authorization.

Contoh:

mcp_tool = {
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "amap-maps",
    "server_description": "Server MCP AMAP kini mencakup 15 API inti, menyediakan layanan informasi geografis lengkap, termasuk menghasilkan peta eksklusif, navigasi ke tujuan, memesan taksi, geocoding, reverse geocoding, lokasi IP, kueri cuaca, serta perencanaan rute bersepeda, berjalan kaki, berkendara, dan transportasi umum, pengukuran jarak, pencarian kata kunci, pencarian terdekat, dan pencarian detail.",
    "server_url": "https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/sse",
    "headers": {
        "Authorization": "Bearer <your-mcp-server-token>"
    }
}

Alat Kustom Fungsi

Alat fungsi yang ditentukan pengguna yang memungkinkan model memanggil fungsi yang Anda definisikan. Saat model memutuskan untuk memanggil alat, respons mengembalikan keluaran jenis function_call. Untuk informasi selengkapnya, lihat Pemanggilan fungsi.

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 memanggilnya.

parameters objek (Opsional)

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

Untuk meningkatkan akurasi pemanggilan alat, kami merekomendasikan Anda mengirimkan 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) Default auto

Mengontrol cara model memilih dan memanggil alat. Mendukung format string atau objek.

Pola string

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

  • none: Mencegah model memanggil alat apa pun.

  • required: Memaksa model memanggil alat. Tersedia hanya ketika ada satu alat dalam daftar tools.

Format objek

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

Properti

mode string (Wajib)

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

  • required: Memaksa model memanggil alat. Tersedia hanya ketika ada 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.

suhu float (Opsional)

Suhu sampling yang mengontrol keragaman teks. Nilai lebih tinggi = lebih beragam; nilai lebih rendah = lebih deterministik. Rentang: [0, 2). Atur hanya suhu ATAU top_p, bukan keduanya. Untuk informasi selengkapnya, lihat Ikhtisar model generasi teks.

top_p float (Opsional)

Ambang batas probabilitas untuk pengambilan sampel inti yang mengontrol keragaman teks. Nilai lebih tinggi = lebih beragam; nilai lebih rendah = lebih deterministik. Rentang: (0, 1.0]. Atur hanya suhu ATAU top_p, bukan keduanya. Untuk informasi selengkapnya, lihat Ikhtisar model generasi teks.

enable_thinking boolean (Opsional)

Aktifkan mode berpikir. Jika true, model berpikir sebelum membalas (konten berpikir dikembalikan melalui item keluaran reasoning). Saat diaktifkan, kami merekomendasikan mengaktifkan alat bawaan untuk kinerja terbaik pada tugas kompleks.

Nilai yang valid:

  • true

  • false

Nilai default berdasarkan model: Model yang didukung

Bukan parameter standar OpenAI. SDK Python: gunakan extra_body={"enable_thinking": True}. SDK Node.js dan curl: gunakan enable_thinking: true sebagai parameter tingkat atas.

Objek respons (keluaran non-streaming)

{
    "created_at": 1771165900.0,
    "id": "f75c28fb-4064-48ed-90da-4d2cc4362xxx",
    "model": "qwen3.5-plus",
    "object": "response",
    "output": [
        {
            "content": [
                {
                    "annotations": [],
                    "text": "Hello! I am Qwen3.5, a large language model developed by Alibaba Cloud with knowledge up to 2026, designed to assist you with complex reasoning, creative tasks, and multilingual conversations.",
                    "type": "output_text"
                }
            ],
            "id": "msg_89ad23e6-f128-4d4c-b7a1-a786e7880xxx",
            "role": "assistant",
            "status": "completed",
            "type": "message"
        }
    ],
    "parallel_tool_calls": false,
    "status": "completed",
    "tool_choice": "auto",
    "tools": [],
    "usage": {
        "input_tokens": 57,
        "input_tokens_details": {
            "cached_tokens": 0
        },
        "output_tokens": 44,
        "output_tokens_details": {
            "reasoning_tokens": 0
        },
        "total_tokens": 101,
        "x_details": [
            {
                "input_tokens": 57,
                "output_tokens": 44,
                "total_tokens": 101,
                "x_billing_type": "response_api"
            }
        ]
    }
}

id string

ID respons unik (berlaku selama 7 hari). Gunakan dalam previous_response_id untuk 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

Item keluaran yang dihasilkan model. Jenis dan urutan tergantung 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: Dikembalikan saat mode berpikir (enable_thinking: true) diaktifkan. Token berpikir dihitung dalam output_tokens_details.reasoning_tokens dan ditagihkan sesuai.

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

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

  • code_interpreter_call: Jenis eksekusi kode. Jenis ini dikembalikan saat alat code_interpreter digunakan.

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

  • web_search_image_call: Jenis pemanggilan pencarian teks-ke-gambar. Jenis ini dikembalikan saat alat web_search_image digunakan. Berisi daftar gambar yang dicari.

  • image_search_call: Jenis pemanggilan pencarian gambar-ke-gambar. Jenis ini dikembalikan saat alat image_search digunakan. Berisi daftar gambar serupa.

  • mcp_call: Jenis pemanggilan MCP. Jenis ini dikembalikan saat alat mcp digunakan. Berisi hasil pemanggilan layanan MCP.

  • file_search_call: Jenis pemanggilan pencarian basis pengetahuan. Jenis ini dikembalikan saat alat file_search digunakan. Berisi kueri pencarian dan hasil dari basis pengetahuan.

id string

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

role string

Peran pesan (nilai: assistant). Hanya ada saat type adalah message.

status string

Status item keluaran. Nilai yang valid: completed, in_progress. Ada saat type adalah message.

name string

Nama alat atau fungsi. Bidang ini ada saat type adalah function_call, web_search_image_call, image_search_call, atau mcp_call.

Untuk web_search_image_call dan image_search_call, nilainya tetap "web_search_image" dan "image_search", masing-masing.

Untuk mcp_call, nilainya adalah nama fungsi spesifik yang dipanggil dalam layanan MCP, seperti amap-maps-maps_geo.

arguments string

Argumen pemanggilan alat (string JSON). Ada untuk function_call, web_search_image_call, image_search_call, atau mcp_call. Uraikan dengan JSON.parse() sebelum digunakan. Argumen berdasarkan jenis alat:

  • web_search_image_call: {"queries": ["search term 1", "search term 2"]}, di mana queries adalah daftar istilah pencarian yang dihasilkan otomatis oleh model berdasarkan input pengguna.

  • image_search_call: {"img_idx": 0, "bbox": [0, 0, 1000, 1000]}, di mana img_idx adalah indeks gambar input (dimulai dari 0), dan bbox adalah koordinat kotak pembatas [x1, y1, x2, y2] untuk area pencarian, dengan rentang 0–1000.

  • function_call: Objek argumen yang dihasilkan sesuai skema parameter fungsi yang ditentukan pengguna.

  • mcp_call: Objek argumen untuk fungsi yang dipanggil dalam layanan MCP.

call_id string

Pengidentifikasi unik pemanggilan fungsi. Hanya ada saat type adalah function_call. Gunakan ID ini untuk mengaitkan permintaan dan respons saat mengembalikan hasil.

content array

Array konten pesan. Bidang ini hanya ada saat 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 berpikir. Bidang ini hanya ada saat type adalah reasoning. Setiap elemen berisi bidang type dengan nilai summary_text dan bidang text yang berisi teks ringkasan.

action objek

Informasi tindakan pencarian. Bidang ini hanya ada saat 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 dan bidang url.

code string

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

outputs array

Array keluaran eksekusi kode. Bidang ini hanya ada saat 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 saat 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 saat type adalah web_extractor_call.

output string

Hasil keluaran pemanggilan alat, dalam format string.

  • Saat type adalah web_extractor_call, ini adalah ringkasan konten web yang diekstraksi.

  • Saat type adalah web_search_image_call atau image_search_call, ini adalah string JSON yang berisi array hasil pencarian gambar. Setiap elemen berisi bidang title (judul gambar), bidang url (URL gambar), dan bidang index (nomor urut).

  • Saat type adalah mcp_call, ini adalah string hasil JSON yang dikembalikan oleh layanan MCP.

urls array

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

server_label string

Label layanan MCP. Bidang ini hanya ada saat type adalah mcp_call. Mengidentifikasi layanan MCP yang digunakan untuk pemanggilan ini.

queries array

Daftar kueri yang digunakan untuk pengambilan basis pengetahuan. Bidang ini hanya ada saat type adalah file_search_call. Elemen array adalah string yang merepresentasikan kueri pencarian yang dihasilkan model.

results array

Array hasil pengambilan basis pengetahuan. Bidang ini hanya ada saat type adalah file_search_call.

Properti elemen array

file_id string

ID file dokumen yang cocok.

filename string

Nama file dokumen yang cocok.

score float

Skor relevansi kecocokan, berkisar antara 0 hingga 1. Nilai lebih tinggi menunjukkan relevansi lebih besar.

text string

Cuplikan konten dokumen yang cocok.

usage objek

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 (input_tokens + output_tokens).

input_tokens_details objek

Kategorisasi detail halus token input.

Properti

cached_tokens integer

Jumlah token yang mengenai cache. Untuk informasi selengkapnya, lihat Cache konteks.

output_tokens_details objek

Kategorisasi detail halus token output.

Properti

reasoning_tokens integer

Jumlah token dalam proses berpikir.

x_details objek

Properti

input_tokens integer

Jumlah token input.

output_tokens integer

Jumlah token yang dikeluarkan model.

total_tokens integer

Total token yang dikonsumsi (input_tokens + output_tokens).

x_billing_type string

Nilainya adalah response_api.

x_tools objek

Statistik penggunaan alat. Termasuk jumlah pemanggilan untuk alat bawaan.

Contoh: {"web_search": {"count": 1}}

error objek

Objek error yang dikembalikan saat gagal (null saat berhasil).

tools array

Menggemakan parameter tools dari permintaan (struktur sama dengan badan permintaan).

tool_choice string

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

Objek potongan respons (keluaran streaming)

Panggilan 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"}

Scraping web

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}}}

Pencarian teks-ke-gambar

// 1. response.created - Respons dibuat
id:1
event:response.created
data:{"sequence_number":0,"type":"response.created","response":{"output":[],"status":"queued",...}}

// 2. response.in_progress - Respons sedang diproses
id:2
event:response.in_progress
data:{"sequence_number":1,"type":"response.in_progress","response":{"status":"in_progress",...}}

// 3. response.output_item.added - Berpikir dimulai (reasoning)
id:3
event:response.output_item.added
data:{"sequence_number":2,"item":{"summary":[],"type":"reasoning","id":"msg_xxx"},"output_index":0,"type":"response.output_item.added"}

// 4. response.reasoning_summary_text.delta - Delta ringkasan berpikir
id:4
event:response.reasoning_summary_text.delta
data:{"delta":"The user wants to find a picture of a cat. I need to use the web_search_image tool to search...","sequence_number":3,"output_index":0,"type":"response.reasoning_summary_text.delta","item_id":"msg_xxx","summary_index":0}

// 5. response.reasoning_summary_text.done - Ringkasan berpikir selesai
id:10
event:response.reasoning_summary_text.done
data:{"sequence_number":9,"text":"The user wants to find a picture of a cat. I need to use the web_search_image tool to search for cat pictures.","output_index":0,"type":"response.reasoning_summary_text.done","item_id":"msg_xxx","summary_index":0}

// 6. response.output_item.done - Item berpikir selesai
id:11
event:response.output_item.done
data:{"sequence_number":10,"item":{"summary":[{"type":"summary_text","text":"..."}],"type":"reasoning","id":"msg_xxx"},"output_index":0,"type":"response.output_item.done"}

// 7. response.output_item.added - Pemanggilan alat pencarian teks-ke-gambar dimulai (status: in_progress, dengan nama dan argumen)
id:12
event:response.output_item.added
data:{"sequence_number":11,"item":{"name":"web_search_image","arguments":"{\"queries\": [\"cat picture\", \"cute cat\"]}","id":"msg_xxx","type":"web_search_image_call","status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

// 8. response.output_item.done - Pemanggilan alat pencarian teks-ke-gambar selesai (dengan hasil pencarian lengkap)
id:13
event:response.output_item.done
data:{"sequence_number":12,"item":{"name":"web_search_image","output":"[{\"title\": \"Cute kitten...\", \"url\": \"https://example.com/cat.jpg\", \"index\": 1}, ...]","arguments":"{\"queries\": [\"cat picture\", \"cute cat\"]}","id":"msg_xxx","type":"web_search_image_call","status":"completed"},"output_index":1,"type":"response.output_item.done"}

// 9-12. Putaran berpikir kedua + keluaran pesan akhir (sama seperti panggilan dasar)
// response.output_item.added (reasoning) → reasoning_summary_text.delta/done → response.output_item.done (reasoning)
// response.output_item.added (message) → response.content_part.added → response.output_text.delta → response.output_text.done → response.content_part.done → response.output_item.done (message)

// 13. response.completed - Respons selesai
id:118
event:response.completed
data:{"sequence_number":117,"type":"response.completed","response":{"output":[...],"status":"completed","usage":{"input_tokens":7895,"output_tokens":318,"total_tokens":8213,"x_tools":{"web_search_image":{"count":1}}}}}

Pencarian gambar

// 1-6. Fase berpikir (sama seperti pencarian teks-ke-gambar)

// 7. response.output_item.added - Pemanggilan alat pencarian gambar dimulai
// Catatan: argumen berisi img_idx (indeks gambar) dan bbox (kotak pembatas untuk area pencarian)
id:29
event:response.output_item.added
data:{"sequence_number":29,"item":{"name":"image_search","arguments":"{\"img_idx\": 0, \"bbox\": [0, 0, 1000, 1000]}","id":"msg_xxx","type":"image_search_call","status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

// 8. response.output_item.done - Pemanggilan alat pencarian gambar selesai
id:30
event:response.output_item.done
data:{"sequence_number":30,"item":{"name":"image_search","output":"[{\"title\": \"Landscape background...\", \"url\": \"https://example.com/landscape.jpg\", \"index\": 1}, ...]","arguments":"{\"img_idx\": 0, \"bbox\": [0, 0, 1000, 1000]}","id":"msg_xxx","type":"image_search_call","status":"completed"},"output_index":1,"type":"response.output_item.done"}

// 9-12. Putaran berpikir kedua + keluaran pesan akhir (sama seperti panggilan dasar)

// 13. response.completed
id:408
event:response.completed
data:{"sequence_number":407,"type":"response.completed","response":{"output":[...],"status":"completed","usage":{"input_tokens":8371,"output_tokens":417,"total_tokens":8788,"x_tools":{"image_search":{"count":1}}}}}

MCP

// 1-6. Fase berpikir (sama seperti alat lain)

// 7. response.mcp_call_arguments.delta - Delta argumen MCP (event khusus MCP)
id:27
event:response.mcp_call_arguments.delta
data:{"delta":"{\"city\": \"Beijing\"}","sequence_number":26,"output_index":1,"type":"response.mcp_call_arguments.delta","item_id":"msg_xxx"}

// 8. response.mcp_call_arguments.done - Argumen MCP selesai (event khusus MCP)
id:28
event:response.mcp_call_arguments.done
data:{"sequence_number":27,"arguments":"{\"city\": \"Beijing\"}","output_index":1,"type":"response.mcp_call_arguments.done","item_id":"msg_xxx"}

// 9. response.output_item.added - Pemanggilan alat MCP dimulai (dengan nama, server_label, argumen)
id:29
event:response.output_item.added
data:{"sequence_number":28,"item":{"name":"amap-maps-maps_weather","server_label":"MCP Server","arguments":"{\"city\": \"Beijing\"}","id":"msg_xxx","type":"mcp_call","status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

// 10. response.mcp_call.completed - Pemanggilan MCP selesai (event khusus MCP)
id:30
event:response.mcp_call.completed
data:{"sequence_number":29,"output_index":1,"type":"response.mcp_call.completed","item_id":"msg_xxx"}

// 11. response.output_item.done - Item keluaran MCP selesai (dengan keluaran lengkap)
id:31
event:response.output_item.done
data:{"sequence_number":30,"item":{"output":"{\"city\":\"Beijing\",\"forecasts\":[...]}","name":"amap-maps-maps_weather","server_label":"MCP Server","arguments":"{\"city\": \"Beijing\"}","id":"msg_xxx","type":"mcp_call","status":"completed"},"output_index":1,"type":"response.output_item.done"}

// 12-15. Putaran berpikir kedua + keluaran pesan akhir

// 16. response.completed
id:172
event:response.completed
data:{"sequence_number":171,"type":"response.completed","response":{"output":[...],"status":"completed","usage":{"input_tokens":5019,"output_tokens":539,"total_tokens":5558}}}

Pencarian basis pengetahuan

// 1-6. Fase berpikir (sama seperti alat lain)

// 7. response.output_item.added - Pencarian basis pengetahuan dimulai (dengan kueri, tanpa hasil)
id:19
event:response.output_item.added
data:{"sequence_number":18,"item":{"id":"msg_xxx","type":"file_search_call","queries":["Alibaba Cloud Bailian X1 phone","Alibaba Cloud Bailian X1 phone","Bailian X1"],"status":"in_progress"},"output_index":1,"type":"response.output_item.added"}

// 8. response.file_search_call.in_progress - Pencarian sedang berlangsung (event khusus file_search)
id:20
event:response.file_search_call.in_progress
data:{"sequence_number":19,"output_index":1,"type":"response.file_search_call.in_progress","item_id":"msg_xxx"}

// 9. response.file_search_call.searching - Sedang mencari (event khusus file_search)
id:21
event:response.file_search_call.searching
data:{"sequence_number":20,"output_index":1,"type":"response.file_search_call.searching","item_id":"msg_xxx"}

// 10. response.file_search_call.completed - Pencarian selesai (event khusus file_search)
id:22
event:response.file_search_call.completed
data:{"sequence_number":21,"output_index":1,"type":"response.file_search_call.completed","item_id":"msg_xxx"}

// 11. response.output_item.done - Item keluaran selesai (dengan kueri + hasil)
id:23
event:response.output_item.done
data:{"sequence_number":22,"item":{"id":"msg_xxx","type":"file_search_call","queries":["Alibaba Cloud Bailian X1 phone","Alibaba Cloud Bailian X1 phone","Bailian X1"],"results":[{"score":0.7519,"filename":"Introduction to Alibaba Cloud Bailian Series Phones","text":"Alibaba Cloud Bailian X1 — Enjoy an ultimate visual experience...","file_id":"file_xxx"}],"status":"completed"},"output_index":1,"type":"response.output_item.done"}

// 12-15. Putaran berpikir kedua + keluaran pesan akhir

// 16. response.completed
id:146
event:response.completed
data:{"sequence_number":145,"type":"response.completed","response":{"output":[...],"status":"completed","usage":{"input_tokens":1576,"output_tokens":722,"total_tokens":2298,"x_tools":{"file_search":{"count":1}}}}}

Streaming mengembalikan objek JSON dengan type (jenis event) dan sequence_number (urutan event). Event response.completed menandai akhir streaming.

type string

Pengidentifikasi jenis event. Nilai yang valid:

  • response.created: Respons dibuat (status: queued).

  • response.in_progress: Pemrosesan dimulai (status: in_progress).

  • response.output_item.added: Item keluaran baru ditambahkan (pesan, web_extractor_call, dll.). Jika item.type adalah web_extractor_call, pemanggilan alat telah dimulai.

  • response.content_part.added: Blok konten baru ditambahkan ke item keluaran.

  • response.output_text.delta: Generasi teks inkremental (dipicu beberapa kali). Bidang delta berisi fragmen teks baru.

  • response.output_text.done: Generasi teks selesai. Bidang text berisi teks lengkap.

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

  • response.output_item.done: Generasi item keluaran selesai. Objek item berisi item lengkap. Jika item.type adalah web_extractor_call, pemanggilan alat selesai.

  • response.reasoning_summary_text.delta: (Mode berpikir) Teks ringkasan berpikir inkremental. Bidang delta berisi fragmen baru.

  • response.reasoning_summary_text.done: (Mode berpikir) Ringkasan berpikir 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: Alat web_extractor tidak memiliki jenis event khusus. Pemanggilan alat menggunakan event response.output_item.added dan response.output_item.done (diidentifikasi oleh item.type = web_extractor_call).

  • response.mcp_call_arguments.delta / response.mcp_call_arguments.done: (Jika Anda menggunakan alat mcp) Event inkremental dan penyelesaian untuk argumen pemanggilan MCP.

  • response.mcp_call.completed: (Jika Anda menggunakan alat mcp) Pemanggilan layanan MCP selesai.

  • response.file_search_call.in_progress / searching / completed: (Jika Anda menggunakan alat file_search) Event perubahan status pencarian basis pengetahuan.

  • Catatan: Alat web_search_image dan image_search tidak memiliki event status antara. Pemanggilan alat menggunakan event response.output_item.added (mulai) dan response.output_item.done (penyelesaian).

  • response.completed: Generasi respons selesai. Objek response berisi respons lengkap dan informasi penggunaan. Menandai akhir streaming.

sequence_number integer

Nomor seri event (dimulai dari 0, bertambah). Gunakan untuk memastikan urutan pemrosesan event yang benar di sisi klien.

response objek

Objek respons (muncul di response.created, response.in_progress, response.completed). Di response.completed, berisi data lengkap (output, usage). Struktur sesuai dengan respons non-streaming.

item objek

Objek item keluaran (muncul di response.output_item.added, response.output_item.done). Di added: kerangka dengan array konten kosong. Di done: objek lengkap.

Properti

id string

Pengidentifikasi unik untuk item keluaran, seperti msg_xxx.

type string

Jenis item keluaran. Nilai yang valid: message, reasoning, web_search_call (pencarian), web_search_image_call (pencarian teks-ke-gambar), image_search_call (pencarian gambar-ke-gambar), mcp_call, dan file_search_call (pencarian basis pengetahuan).

role string

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

status string

Status generasi: in_progress di event added, completed di event done.

content array

Array konten pesan. Di added: [] kosong. Di done: blok konten lengkap (struktur sama dengan part).

part objek

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

Properti

type string

Jenis blok konten. Nilainya adalah output_text.

text string

Konten teks: string kosong di added, teks lengkap di done.

annotations array

Array anotasi teks. Biasanya berupa array kosong.

logprobs objek | null

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

delta string

Konten teks inkremental di event response.output_text.delta (berisi fragmen baru). Gabungkan semua fragmen delta untuk teks lengkap.

text string

Konten teks lengkap di event response.output_text.done. Gunakan 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 di event response.reasoning_summary_text.delta dan response.reasoning_summary_text.done.

FAQ

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

J: Kirim id respons sebelumnya sebagai parameter previous_response_id.

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

J: SDK OpenAI resmi mungkin mengeluarkan bidang tambahan (biasanya null) berdasarkan struktur modelnya. Ini didefinisikan oleh protokol OpenAI tetapi saat ini tidak didukung. Fokus hanya pada bidang yang didokumentasikan.