All Products
Search
Document Center

Alibaba Cloud Model Studio:Kompatibel dengan OpenAI - Chat

Last Updated:Sep 09, 2026

Model Qwen di Model Studio mendukung antarmuka yang kompatibel dengan OpenAI. Anda dapat memigrasikan kode OpenAI yang sudah ada ke Model Studio hanya dengan mengubah Kunci API, URL dasar, dan nama model.

Informasi kompatibilitas

BASE_URL

BASE_URL adalah titik akhir jaringan untuk mengakses layanan model. Saat menggunakan antarmuka kompatibel OpenAI dengan Model Studio, konfigurasikan BASE_URL sebagai berikut.

Saat melakukan panggilan melalui SDK OpenAI atau SDK kompatibel OpenAI lainnya, gunakan BASE_URL berikut:

Singapura: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
Virginia: https://dashscope-us.aliyuncs.com/compatible-mode/v1
Beijing: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
Hong Kong (Tiongkok): https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1
Jepang (Tokyo): https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1

Saat melakukan panggilan melalui HTTP, gunakan titik akhir lengkap berikut:

Singapura: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Virginia: POST https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
Beijing: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Hong Kong (Tiongkok): POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Jepang (Tokyo): POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions

PentingModel Studio telah memperkenalkan nama domain spesifik ruang kerja untuk wilayah Beijing, Singapura, dan Hong Kong (Tiongkok) yang memberikan performa lebih baik dan stabilitas lebih tinggi. Migrasikan ke nama domain baru:

  • Wilayah Beijing: Migrasikan dari https://dashscope.aliyuncs.com ke https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Wilayah Singapura: Migrasikan dari https://dashscope-intl.aliyuncs.com ke https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
  • Wilayah Hong Kong (Tiongkok): Migrasikan dari https://cn-hongkong.dashscope.aliyuncs.com ke https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com

Ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya.

Pemecahan masalah panggilan gagal: Jika panggilan melalui antarmuka kompatibel OpenAI gagal dengan error 404, 401, 403, atau error koneksi, periksa konfigurasi berikut:

Panggilan cross-region

Kunci API Model Studio terikat pada wilayah tempat kunci tersebut dibuat. Saat memanggil URL dasar suatu wilayah, Anda harus menggunakan Kunci API yang dibuat di wilayah yang sama. Kunci API dari wilayah lain akan ditolak dengan error autentikasi.

Aturan ini berlaku untuk setiap wilayah yang menyediakan titik akhir, termasuk Tiongkok (Beijing), AS (Virginia), Singapura, dan Jepang (Tokyo), serta Tiongkok (Hong Kong). Buat Kunci API di Konsol wilayah yang titik akhirnya Anda panggil.

Sebagai contoh, jika Anda menggunakan Kunci API yang dibuat di wilayah Tiongkok (Beijing) untuk memanggil titik akhir AS (Virginia), permintaan akan mengembalikan HTTP 401 dengan pesan error Incorrect API key provided dan kode error invalid_api_key. Error ini menunjukkan bahwa Kunci API dan titik akhir berasal dari wilayah yang berbeda, bukan berarti Kunci API tidak valid atau tidak memiliki izin.

Model yang didukung

Model yang didukung: model bahasa besar Qwen (edisi komersial dan open-source), Qwen-VL, Qwen-Coder, Qwen-Omni, Qwen-Math, DeepSeek, Kimi, GLM, MiniMax.

Qwen-Audio tidak mendukung protokol kompatibel OpenAI. Gunakan protokol DashScope sebagai gantinya.

Panggilan melalui SDK OpenAI

Prasyarat

  • Python telah diinstal di mesin Anda.
  • Versi terbaru SDK OpenAI telah diinstal.
# Jika perintah berikut gagal, ganti pip dengan pip3
pip install -U openai
  • Anda telah mengaktifkan Model Studio dan memperoleh Kunci API. Untuk petunjuknya, lihat Dapatkan Kunci API.
  • (Disarankan) Konfigurasikan Kunci API sebagai variabel lingkungan untuk mengurangi risiko eksposur kunci. Anda juga dapat mengonfigurasikannya langsung dalam kode, tetapi hal ini meningkatkan risiko eksposur.
  • Pilih model yang ingin Anda gunakan dari daftar model yang didukung.

Penggunaan

Contoh berikut menunjukkan cara menggunakan SDK OpenAI untuk mengakses model Qwen di Model Studio.

Contoh non-streaming

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请用阿里云百炼API Key将本行替换为:api_key="sk-xxx"
        # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': '你是谁?'}]
        )
    print(completion.model_dump_json())

if __name__ == '__main__':
    get_response()

Output berikut dikembalikan:

{
    "id": "chatcmpl-xxx",
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null,
            "message": {
                "content": "我是来自阿里云的超大规模预训练模型,我叫千问。",
                "role": "assistant",
                "function_call": null,
                "tool_calls": null
            }
        }
    ],
    "created": 1716430652,
    "model": "qwen3.8-max",
    "object": "chat.completion",
    "system_fingerprint": null,
    "usage": {
        "completion_tokens": 18,
        "prompt_tokens": 22,
        "total_tokens": 40
    }
}

Contoh streaming

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        # 如果您没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx"
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",

    )
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': '你是谁?'}],
        stream=True,
        # 通过以下设置,在流式输出的最后一行展示token使用信息
        stream_options={"include_usage": True}
        )
    for chunk in completion:
        print(chunk.model_dump_json())

if __name__ == '__main__':
    get_response()

Output berikut dikembalikan:

{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"","function_call":null,"role":"assistant","tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"我是","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"来自","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"阿里","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"云的大规模语言模型","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":",我叫千问。","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"","function_call":null,"role":null,"tool_calls":null},"finish_reason":"stop","index":0,"logprobs":null}],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[],"created":1719286190,"model":"qwen3.8-max","object":"chat.completion.chunk","system_fingerprint":null,"usage":{"completion_tokens":16,"prompt_tokens":22,"total_tokens":38}}

Contoh pemanggilan tool

Contoh berikut menunjukkan pemanggilan tool (pemanggilan fungsi) melalui antarmuka kompatibel OpenAI, menggunakan tool kueri cuaca dan tool kueri waktu. Kode contoh ini mendukung pemanggilan tool multi-turn.

from openai import OpenAI
from datetime import datetime
import json
import os

client = OpenAI(
    # Kunci API berbeda untuk setiap region. Untuk mendapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Alibaba Cloud Anda: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Berikut ini adalah base_url untuk region Singapura. Saat melakukan panggilan, ganti {WorkspaceId} dengan ID ruang kerja Anda yang sebenarnya. URL berbeda untuk setiap region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

# Tentukan daftar alat. Model akan merujuk pada nama dan deskripsi alat saat memilih alat mana yang akan digunakan.
tools = [
    # Alat 1: Dapatkan waktu saat ini
    {
        "type": "function",
        "function": {
            "name": "get_current_time",
            "description": "Sangat berguna ketika Anda ingin mengetahui waktu saat ini.",
            # Karena mendapatkan waktu saat ini tidak memerlukan parameter input, parameter adalah kamus kosong.
            "parameters": {}
        }
    },
    # Alat 2: Dapatkan cuaca untuk kota tertentu
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "Sangat berguna ketika Anda ingin menanyakan cuaca di kota tertentu.",
            "parameters": {
                "type": "object",
                "properties": {
                    # Saat menanyakan cuaca, Anda perlu memberikan lokasi, jadi parameter diatur ke lokasi.
                    "location": {
                        "type": "string",
                        "description": "Kota atau distrik, seperti Beijing, Hangzhou, Distrik Yuhang, dll."
                    }
                }
            },
            "required": [
                "location"
            ]
        }
    }
]

# Simulasikan alat kueri cuaca. Contoh hasil yang dikembalikan: "Hari ini hujan di Beijing."
def get_current_weather(location):
    return f"{location} hari ini hujan. "

# Alat untuk menanyakan waktu saat ini. Contoh hasil yang dikembalikan: "Waktu saat ini: 2024-04-15 17:15:18."
def get_current_time():
    # Dapatkan tanggal dan waktu saat ini
    current_datetime = datetime.now()
    # Format tanggal dan waktu saat ini
    formatted_time = current_datetime.strftime('%Y-%m-%d %H:%M:%S')
    # Kembalikan waktu saat ini yang telah diformat
    return f"Waktu saat ini: {formatted_time}."

# Enkapsulasi fungsi tanggapan model
def get_response(messages):
    completion = client.chat.completions.create(
        model="qwen3.8-max",  # Di sini, qwen-plus digunakan sebagai contoh. Anda dapat mengubah nama model sesuai kebutuhan. Daftar model: https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        messages=messages,
        tools=tools
        )
    return completion.model_dump()

def call_with_messages():
    print('\n')
    messages = [
            {
                "content": input('Silakan masukkan: '),  # Contoh pertanyaan: "Jam berapa sekarang?" "Jam berapa satu jam dari sekarang?" "Bagaimana cuaca di Beijing?"
                "role": "user"
            }
    ]
    print("-"*60)
    # Panggilan putaran pertama ke model
    i = 1
    first_response = get_response(messages)
    assistant_output = first_response['choices'][0]['message']
    print(f"\nInformasi output model besar putaran ke-{i}: {first_response}\n")
    if  assistant_output['content'] is None:
        assistant_output['content'] = ""
    messages.append(assistant_output)
    # Jika tidak perlu memanggil alat, langsung kembalikan jawaban akhir.
    if assistant_output['tool_calls'] == None:  # Jika model menentukan bahwa tidak perlu memanggil alat, cetak tanggapan asisten secara langsung, tanpa perlu melakukan panggilan putaran kedua ke model.
        print(f"Tidak perlu memanggil alat, saya bisa langsung menjawab: {assistant_output['content']}")
        return
    # Jika perlu memanggil alat, lakukan beberapa putaran panggilan ke model hingga model menentukan bahwa tidak perlu lagi memanggil alat.
    while assistant_output['tool_calls'] != None:
        # Jika ditentukan bahwa alat kueri cuaca perlu dipanggil, jalankan alat kueri cuaca.
        if assistant_output['tool_calls'][0]['function']['name'] == 'get_current_weather':
            tool_info = {"name": "get_current_weather", "role":"tool"}
            # Ekstrak informasi parameter lokasi
            location = json.loads(assistant_output['tool_calls'][0]['function']['arguments'])['location']
            tool_info['content'] = get_current_weather(location)
        # Jika ditentukan bahwa alat kueri waktu perlu dipanggil, jalankan alat kueri waktu.
        elif assistant_output['tool_calls'][0]['function']['name'] == 'get_current_time':
            tool_info = {"name": "get_current_time", "role":"tool"}
            tool_info['content'] = get_current_time()
        print(f"Informasi output alat: {tool_info['content']}\n")
        print("-"*60)
        messages.append(tool_info)
        assistant_output = get_response(messages)['choices'][0]['message']
        if  assistant_output['content'] is None:
            assistant_output['content'] = ""
        messages.append(assistant_output)
        i += 1
        print(f"Informasi output model besar putaran ke-{i}: {assistant_output}\n")
    print(f"Jawaban akhir: {assistant_output['content']}")

if __name__ == '__main__':
    call_with_messages()

Parameter permintaan

Parameter permintaan diselaraskan dengan antarmuka OpenAI. Tabel berikut menjelaskan parameter yang saat ini didukung:

Parameter

Tipe

Bawaan

Deskripsi

model

string

-

Model yang digunakan. Untuk model yang tersedia, lihat Model yang didukung.

messages

array

-

Riwayat percakapan antara pengguna dan model. Setiap elemen array memiliki format {"role": role, "content": content}. Role yang valid: system, user, assistant. Hanya messages[0] yang mendukung role system. Secara umum, role user dan assistant bergantian, dan elemen terakhir harus memiliki role user.

top_p (opsional)

float

-

Ambang batas probabilitas pengambilan sampel inti. Misalnya, nilai 0,8 hanya menyimpan himpunan token terkecil yang probabilitas kumulatifnya minimal 0,8. Nilai yang valid: (0, 1,0). Nilai yang lebih tinggi meningkatkan keacakan; nilai yang lebih rendah meningkatkan determinisme.

temperature (opsional)

float

-

Mengontrol keacakan dan keragaman respons model. Nilai yang lebih tinggi meratakan distribusi probabilitas, memilih lebih banyak token berprobabilitas rendah untuk output yang lebih beragam. Nilai yang lebih rendah mempertajam distribusi, mengutamakan token berprobabilitas tinggi untuk output yang lebih deterministik. Nilai yang valid: [0, 2). Nilai 0 tidak disarankan.

presence_penalty (opsional)

float

-

Mengontrol pengulangan di seluruh urutan yang dihasilkan. Nilai yang lebih tinggi mengurangi pengulangan. Nilai yang valid: [-2,0, 2,0].

Hanya didukung pada model komersial Qwen dan model open-source qwen1.5 ke atas.

n (opsional)

integer

1

Jumlah respons yang dihasilkan. Nilai yang valid: 1-4. Untuk skenario yang memerlukan beberapa respons (seperti penulisan kreatif atau salinan iklan), atur nilai n yang lebih besar. > Nilai n yang lebih besar tidak meningkatkan konsumsi token input tetapi meningkatkan konsumsi token output. > Saat ini hanya didukung pada qwen-plus. Ketika parameter tools diberikan, n tetap pada 1.

max_tokens (opsional)

integer

-

Jumlah maksimum token yang dapat dihasilkan model. Misalnya, jika model mendukung hingga 2k token output, Anda dapat mengatur ini menjadi 1k untuk mencegah respons yang terlalu panjang. Model yang berbeda memiliki batas output yang berbeda. Lihat daftar model untuk detailnya.

seed (opsional)

integer

-

Seed acak untuk generasi, digunakan untuk mengontrol keacakan output model. Mendukung bilangan bulat tak bertanda 64-bit.

stream (opsional)

boolean

False

Mengontrol apakah akan menggunakan output streaming. Saat streaming diaktifkan, antarmuka mengembalikan generator. Iterasi di atasnya untuk mendapatkan hasil, di mana setiap output adalah urutan inkremental yang dihasilkan.

stop (opsional)

string atau array

None

Mengontrol penghentian tepat pembuatan konten. Pembuatan berhenti secara otomatis ketika model akan menghasilkan string atau token_id yang ditentukan. Dapat berupa tipe string atau array. Saat tipe string: pembuatan berhenti ketika model akan menghasilkan kata berhenti yang ditentukan. Saat tipe array: elemen array dapat berupa token_ids, string, atau array token_ids. Pembuatan berhenti ketika token yang dihasilkan atau token_id-nya cocok dengan elemen dalam stop.

Saat stop bertipe array, Anda tidak dapat mencampur token_ids dan string sebagai elemen.

tools (opsional)

array

None

Pustaka tool yang tersedia untuk dipanggil model. Selama alur pemanggilan fungsi, model memilih satu tool dari pustaka ini. Setiap tool memiliki struktur berikut: type (string, saat ini hanya "function" yang didukung), function (objek dengan kunci: name, description, parameters). Bidang name adalah nama fungsi (huruf, angka, garis bawah, dan tanda hubung; maksimal 64 karakter). Bidang description menjelaskan kapan dan bagaimana model harus memanggil fungsi tersebut. Bidang parameters adalah Skema JSON yang valid yang menjelaskan parameter fungsi. Jika kosong, fungsi tidak mengambil input apa pun. Bidang type dalam parameters mendukung tipe Skema JSON umum: string, number, integer, boolean, array, dan object. Saat menggunakan tipe array, tentukan tipe elemen dengan items. Baik giliran inisiasi pemanggilan fungsi maupun giliran pengiriman hasil tool memerlukan parameter tools. Model yang didukung saat ini: qwen-turbo, qwen-plus, dan qwen-max.

Parameter tools tidak dapat digunakan bersamaan dengan stream=True.

stream_options (opsional)

object

None

Mengonfigurasi apakah akan menampilkan penggunaan token dalam output streaming. Hanya berlaku saat stream bernilai True. Untuk menghitung token dalam mode streaming, atur stream_options={"include_usage": True}.

Parameter respons

Parameter

Tipe

Deskripsi

Catatan

id

string

ID yang dihasilkan sistem untuk permintaan ini.

-

model

string

Nama model yang digunakan untuk permintaan ini.

-

system_fingerprint

string

Versi konfigurasi yang digunakan oleh waktu proses model. Saat ini tidak didukung; mengembalikan string kosong.

-

choices

array

Detail konten yang dihasilkan model.

-

choices[i].finish_reason

string

Alasan penghentian generasi. Nilai: null (masih menghasilkan), stop (berhenti karena kondisi berhenti), length (berhenti karena melebihi panjang maksimum).

-

choices[i].message

object

Pesan yang dikeluarkan oleh model.

-

choices[i].message.role

string

Peran model. Nilai tetap: assistant.

-

choices[i].message.content

string

Teks yang dihasilkan model.

-

choices[i].index

integer

Nomor urut hasil yang dihasilkan. Bawaan: 0.

-

created

integer

Timestamp (dalam detik) hasil yang dihasilkan.

-

usage

object

Informasi metering yang menunjukkan konsumsi token untuk permintaan ini.

-

usage.prompt_tokens

integer

Jumlah token teks input pengguna.

-

usage.completion_tokens

integer

Jumlah token respons yang dihasilkan model.

-

usage.total_tokens

integer

Jumlah usage.prompt_tokens dan usage.completion_tokens.

-

Panggilan melalui SDK langchain_openai

Prasyarat

  • Python telah diinstal di mesin Anda.
  • SDK langchain_openai telah diinstal.
# Jika perintah berikut gagal, ganti pip dengan pip3
pip install -U langchain_openai
  • Anda telah mengaktifkan Model Studio dan memperoleh Kunci API. Untuk petunjuknya, lihat Dapatkan Kunci API.
  • (Disarankan) Konfigurasikan Kunci API sebagai variabel lingkungan untuk mengurangi risiko eksposur kunci. Anda juga dapat mengonfigurasikannya langsung dalam kode, tetapi hal ini meningkatkan risiko eksposur.
  • Pilih model yang ingin Anda gunakan dari daftar model yang didukung.

Penggunaan

Contoh berikut menunjukkan cara menggunakan SDK langchain_openai untuk mengakses model Qwen di Model Studio.

Output non-streaming

Output non-streaming menggunakan metode invoke:

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请用阿里云百炼API Key将本行替换为:api_key="sk-xxx"
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1", # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
        model="qwen3.8-max"  # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        )
    messages = [
        {"role":"system","content":"You are a helpful assistant."},
        {"role":"user","content":"你是谁?"}
    ]
    response = llm.invoke(messages)
    print(response.json())

if __name__ == "__main__":
    get_response()

Output berikut dikembalikan:

{
    "content": "我是来自阿里云的大规模语言模型,我叫千问。",
    "additional_kwargs": {},
    "response_metadata": {
        "token_usage": {
            "completion_tokens": 16,
            "prompt_tokens": 22,
            "total_tokens": 38
        },
        "model_name": "qwen-plus",
        "system_fingerprint": "",
        "finish_reason": "stop",
        "logprobs": null
    },
    "type": "ai",
    "name": null,
    "id": "run-xxx",
    "example": false,
    "tool_calls": [],
    "invalid_tool_calls": []
}

Output streaming

Output streaming menggunakan metode stream. Anda tidak perlu mengonfigurasi parameter stream secara terpisah.

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # 如果您没有配置环境变量,请用阿里云百炼API Key将本行替换为:api_key="sk-xxx"
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",   # 以下为新加坡地域base_url,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
        model="qwen3.8-max",   # 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
        stream_usage=True
        )
    messages = [
        {"role":"system","content":"You are a helpful assistant."},
        {"role":"user","content":"你是谁?"},
    ]
    response = llm.stream(messages)
    for chunk in response:
        print(chunk.model_dump_json())

if __name__ == "__main__":
    get_response()

Output berikut dikembalikan:

{"content": "", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "我是", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "来自", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "阿里", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "云", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "的大规模语言模型", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": ",我叫通", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "义千问。", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "", "additional_kwargs": {}, "response_metadata": {"finish_reason": "stop"}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": null, "tool_call_chunks": []}
{"content": "", "additional_kwargs": {}, "response_metadata": {}, "type": "AIMessageChunk", "name": null, "id": "run-xxx", "example": false, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": {"input_tokens": 22, "output_tokens": 16, "total_tokens": 38}, "tool_call_chunks": []}

Untuk detail konfigurasi parameter, lihat Parameter permintaan. Parameter didefinisikan dalam objek ChatOpenAI.

Panggilan melalui HTTP

Anda dapat memanggil Model Studio melalui permintaan HTTP dan menerima respons dengan struktur yang sama seperti respons HTTP OpenAI.

Prasyarat

  • Anda telah mengaktifkan Model Studio dan memperoleh Kunci API. Untuk petunjuknya, lihat Dapatkan Kunci API.
  • (Disarankan) Konfigurasikan Kunci API sebagai variabel lingkungan untuk mengurangi risiko eksposur kunci. Anda juga dapat mengonfigurasikannya langsung dalam kode, tetapi hal ini meningkatkan risiko eksposur.

Titik akhir

Singapura: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Virginia: POST https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
Beijing: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Hong Kong (Tiongkok): POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/chat/completions

Contoh permintaan

Contoh berikut menggunakan perintah cURL untuk memanggil API.

CatatanJika Anda belum mengonfigurasi Kunci API Anda sebagai variabel lingkungan, ganti $DASHSCOPE_API_KEY dengan Kunci API aktual Anda.

Output non-streaming

# 以下为新加坡地域URL,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你是谁?"
        }
    ]
}'

Output berikut dikembalikan:

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "我是来自阿里云的大规模语言模型,我叫千问。"
            },
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 11,
        "completion_tokens": 16,
        "total_tokens": 27
    },
    "created": 1715252778,
    "system_fingerprint": "",
    "model": "qwen3.8-max",
    "id": "chatcmpl-xxx"
}

Output streaming

Untuk menggunakan output streaming, atur parameter stream menjadi true dalam badan permintaan.

# 以下为新加坡地域URL,调用时请将{WorkspaceId}替换为真实的业务空间ID,各地域URL不同。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen3.8-max",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "你是谁?"
        }
    ],
    "stream":true
}'

Output berikut dikembalikan:

data: {"choices":[{"delta":{"content":"","role":"assistant"},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"finish_reason":null,"delta":{"content":"我是"},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"来自"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"阿里"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":"云的大规模语言模型"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":",我叫千问。"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":""},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen3.8-max","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: [DONE]

Untuk detail parameter, lihat Parameter permintaan.

Respons error

Saat permintaan gagal, respons mencakup bidang code dan message yang menunjukkan penyebabnya:

{
    "error": {
        "message": "Incorrect API key provided. ",
        "type": "invalid_request_error",
        "param": null,
        "code": "invalid_api_key"
    }
}

Konfigurasi klien pihak ketiga

Anda dapat memanggil model Model Studio dari klien pihak ketiga mana pun yang mendukung protokol kompatibel OpenAI. Langkah-langkah berikut menggunakan klien Zhipu sebagai contoh:

  1. Pada pengaturan penyedia klien, pilih Custom provider.

  2. Base URL: Masukkan URL dasar yang digunakan SDK OpenAI untuk wilayah Anda. Untuk URL dasar setiap wilayah, lihat BASE_URL. URL dasar diakhiri dengan /compatible-mode/v1 dan tidak mencakup /chat/completions. Karena URL dasar berbeda-beda menurut wilayah, gunakan yang sesuai dengan wilayah Kunci API Anda.

    Misalnya, untuk wilayah Singapura, masukkan https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1. Ganti {WorkspaceId} dengan ID ruang kerja Anda, yang dapat Anda temukan di halaman detail ruang kerja di Konsol Model Studio. Domain lama https://dashscope.aliyuncs.com masih tersedia, tetapi gunakan domain spesifik ruang kerja kapan pun memungkinkan.

  3. Kunci API: Masukkan Kunci API Model Studio untuk wilayah yang dituju oleh URL dasar. Anda dapat membuat dan memperoleh Kunci API di halaman manajemen Kunci API di Konsol Model Studio.

  4. Nama model: Masukkan nama model bahasa besar yang mendukung protokol kompatibel OpenAI. Untuk model yang dapat Anda pilih, lihat Model yang didukung. Misalnya, qwen3-vl-32b-thinking. Nama model ini hanya contoh dan tidak menunjukkan bahwa model tersebut menyediakan kuota gratis.

  5. Simpan konfigurasi dan mulai percakapan untuk memverifikasi bahwa klien pihak ketiga dapat memanggil model.

Panggilan dapat mengembalikan HTTP 400 dengan error.message diatur ke current user api does not support http call dan error.type diatur ke invalid_request_error. Error ini berarti model yang Anda masukkan tidak mendukung panggilan HTTP melalui antarmuka kompatibel OpenAI. Ganti dengan model dari Model yang didukung dan coba lagi. Misalnya, qvq-max tidak mendukung metode panggilan ini.

Kode kesalahan

Kode kesalahan

Deskripsi

400 - Invalid Request Error

Permintaan tidak valid. Lihat pesan error untuk detailnya.

401 - Incorrect API key provided

Kunci API salah.

429 - Rate limit reached for requests

Batas QPS atau QPM terlampaui.

429 - You exceeded your current quota, please check your plan and billing details

Kuota terlampaui atau akun menunggak.

500 - The server had an error while processing your request

Error server.

503 - The engine is currently overloaded, please try again later

Server kelebihan beban. Coba lagi nanti.