All Products
Search
Document Center

Alibaba Cloud Model Studio:Kompatibilitas antarmuka Chat OpenAI

Last Updated:Mar 18, 2026

Model Qwen di Alibaba Cloud Model Studio mendukung antarmuka yang kompatibel dengan OpenAI. Untuk memigrasikan kode OpenAI yang sudah ada ke layanan Model Studio, sesuaikan Kunci API, BASE_URL, dan nama model.

Informasi untuk kompatibilitas OpenAI

BASE_URL

BASE_URL adalah titik akhir jaringan untuk layanan model. Anda dapat menggunakan alamat ini untuk mengakses fitur-fitur layanan tersebut. Saat menggunakan antarmuka kompatibel OpenAI untuk memanggil layanan Model Studio, Anda harus mengonfigurasi BASE_URL.

  • Saat melakukan panggilan menggunakan OpenAI SDK atau SDK kompatibel OpenAI lainnya, konfigurasikan BASE_URL sebagai berikut:

    Singapura: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
    US (Virginia): https://dashscope-us.aliyuncs.com/compatible-mode/v1
    China (Beijing): https://dashscope.aliyuncs.com/compatible-mode/v1
    Hong Kong (China): https://cn-hongkong.dashscope.aliyuncs.com/compatible-mode/v1
  • Saat melakukan panggilan menggunakan permintaan HTTP, konfigurasikan titik akhir akses lengkap sebagai berikut:

    Singapura: POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
    AS (Virginia): POST https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
    Tiongkok (Beijing): POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
    Hong Kong (Tiongkok): https://cn-hongkong.aliyuncs.com/compatible-mode/v1/chat/completions

Daftar model yang didukung

Tabel berikut mencantumkan model seri Qwen yang didukung oleh antarmuka kompatibel OpenAI.

Global

  • Komersial

    • Seri Qwen-Max: qwen3-max, qwen3-max-preview, qwen3-max-2025-09-23 dan versi snapshot selanjutnya

    • Seri Qwen-Plus: qwen-plus, qwen-plus-latest, qwen-plus-2025-01-25 dan versi snapshot selanjutnya

    • Seri Qwen-Flash: qwen-flash, qwen-flash-2025-07-28 dan versi snapshot selanjutnya

  • Sumber terbuka

    • qwen3-next-80b-a3b-thinking, qwen3-next-80b-a3b-instruct, qwen3-235b-a22b-thinking-2507, qwen3-235b-a22b-instruct-2507, qwen3-30b-a3b-thinking-2507, qwen3-30b-a3b-instruct-2507, qwen3-235b-a22b, qwen3-32b, qwen3-30b-a3b, qwen3-14b, qwen3-8b

Internasional

  • Edisi Komersial

    • Seri Qwen-Max: qwen3-max, qwen3-max-preview, qwen3-max-2025-09-23 dan versi snapshot selanjutnya, qwen-max, qwen-max-latest, qwen-max-2025-01-25 dan versi snapshot selanjutnya

    • Seri Qwen-Plus: qwen3.5-plus, qwen3.5-plus-2026-02-15 dan versi snapshot selanjutnya, qwen-plus, qwen-plus-latest, qwen-plus-2025-01-25 dan versi snapshot selanjutnya

    • Seri Qwen-Flash: qwen3.5-flash, qwen3.5-flash-2026-02-23 dan versi snapshot selanjutnya, qwen-flash, qwen-flash-2025-07-28

    • Seri Qwen-Turbo: qwen-turbo, qwen-turbo-latest, qwen-turbo-2024-11-01 dan versi snapshot selanjutnya

    • Seri Qwen-Coder: qwen3-coder-plus, qwen3-coder-plus-2025-07-22 dan versi snapshot selanjutnya, qwen3-coder-flash, qwen3-coder-flash-2025-07-28 dan versi snapshot selanjutnya

    • Seri QwQ: qwq-plus

  • Sumber terbuka

    • qwen3.5-397b-a17b, qwen3.5-120b-a10b, qwen3.5-27b, qwen3.5-35b-a3b

    • qwen3-next-80b-a3b-thinking, qwen3-next-80b-a3b-instruct, qwen3-235b-a22b-thinking-2507, qwen3-235b-a22b-instruct-2507, qwen3-30b-a3b-thinking-2507, qwen3-30b-a3b-instruct-2507, qwen3-235b-a22b, qwen3-32b, qwen3-30b-a3b, qwen3-14b, qwen3-8b, qwen3-4b, qwen3-1.7b, qwen3-0.6b

    • qwen2.5-14b-instruct-1m, qwen2.5-7b-instruct-1m, qwen2.5-72b-instruct, qwen2.5-32b-instruct, qwen2.5-14b-instruct, qwen2.5-7b-instruct

AS

  • Komersial

    • Seri Qwen-Plus: qwen-plus-us, qwen-plus-2025-12-01-us dan versi snapshot selanjutnya

    • Seri Qwen-Flash: qwen-flash-us, qwen-flash-2025-07-28-us

Daratan Tiongkok

  • Komersial

    • Seri Qwen-Max: qwen3-max, qwen3-max-preview, qwen3-max-2025-09-23 dan versi snapshot selanjutnya, qwen-max, qwen-max-latest, qwen-max-2024-09-19 dan versi snapshot selanjutnya

    • Seri Qwen-Plus: qwen3.5-plus, qwen3.5-plus-2026-02-15, qwen3.5-flash, qwen3.5-flash-2026-02-23 dan versi snapshot selanjutnya, qwen-plus, qwen-plus-latest, qwen-plus-2024-12-20 dan versi snapshot selanjutnya

    • Seri Qwen-Flash: qwen-flash, qwen-flash-2025-07-28 dan versi snapshot selanjutnya

    • Seri Qwen-Turbo: qwen-turbo, qwen-turbo-latest, qwen-turbo-2025-04-28 dan versi snapshot selanjutnya

    • Seri Qwen-Coder: qwen3-coder-plus, qwen3-coder-plus-2025-07-22 dan versi snapshot selanjutnya, qwen3-coder-flash, qwen3-coder-flash-2025-07-28 dan versi snapshot selanjutnya, qwen-coder-plus, qwen-coder-plus-latest, qwen-coder-plus-2024-11-06, qwen-coder-turbo, qwen-coder-turbo-latest, qwen-coder-turbo-2024-09-19

    • Seri QwQ: qwq-plus, qwq-plus-latest, qwq-plus-2025-03-05

    • Model Qwen-Math: qwen-math-plus, qwen-math-plus-latest, qwen-math-plus-2024-08-16 dan versi snapshot selanjutnya, qwen-math-turbo, qwen-math-turbo-latest, qwen-math-turbo-2024-09-19

  • Sumber terbuka

    • qwen3.5-397b-a17b, qwen3.5-120b-a10b, qwen3.5-27b, qwen3.5-35b-a3b

    • qwen3-next-80b-a3b-thinking, qwen3-next-80b-a3b-instruct, qwen3-235b-a22b-thinking-2507, qwen3-235b-a22b-instruct-2507, qwen3-30b-a3b-thinking-2507, qwen3-30b-a3b-instruct-2507, qwen3-235b-a22b, qwen3-32b, qwen3-30b-a3b, qwen3-14b, qwen3-8b, qwen3-4b, qwen3-1.7b, qwen3-0.6b

    • qwen2.5-14b-instruct-1m, qwen2.5-7b-instruct-1m, qwen2.5-72b-instruct, qwen2.5-32b-instruct, qwen2.5-14b-instruct, qwen2.5-7b-instruct, qwen2.5-3b-instruct, qwen2.5-1.5b-instruct, qwen2.5-0.5b-instruct

Hong Kong (China)

  • Seri Qwen-Max: qwen3-max, qwen3-max-2026-01-23 dan versi snapshot selanjutnya

  • Seri Qwen-Plus: qwen-plus, qwen-plus-2025-01-25 dan versi snapshot selanjutnya

  • Seri Qwen-Flash: qwen3.5-flash, qwen3.5-flash-2026-02-23 dan versi snapshot selanjutnya

Panggil menggunakan OpenAI SDK

Prasyarat

  • Pastikan lingkungan Python telah diinstal di komputer Anda.

  • Instal versi terbaru OpenAI SDK.

    # Jika perintah berikut gagal, ganti pip dengan pip3.
    pip install -U openai
  • Aktifkan Model Studio dan peroleh Kunci API. Untuk informasi selengkapnya, lihat Dapatkan Kunci API.

Penggunaan

Anda dapat menggunakan contoh berikut untuk memanggil model Qwen di Model Studio dengan OpenAI SDK.

Contoh panggilan non-streaming

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # Kunci API berbeda berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris ini dengan Kunci API Model Studio Anda: api_key="sk-xxx"
        # Berikut ini adalah base_url untuk wilayah Singapura.
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",  
    )
    completion = client.chat.completions.create(
        model="qwen-plus",  # Contoh ini menggunakan qwen-plus. Anda dapat mengubah nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': 'Who are you?'}]
        )
    print(completion.model_dump_json())

if __name__ == '__main__':
    get_response()

Menjalankan kode menghasilkan keluaran berikut:

{
    "id": "chatcmpl-xxx",
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null,
            "message": {
                "content": "I am a large-scale pre-trained model from Alibaba Cloud. My name is Qwen.",
                "role": "assistant",
                "function_call": null,
                "tool_calls": null
            }
        }
    ],
    "created": 1716430652,
    "model": "qwen-plus",
    "object": "chat.completion",
    "system_fingerprint": null,
    "usage": {
        "completion_tokens": 18,
        "prompt_tokens": 22,
        "total_tokens": 40
    }
}

Contoh panggilan streaming

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        # Kunci API berbeda berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
        # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # Berikut ini adalah base_url untuk wilayah Singapura.
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
        
    )
    completion = client.chat.completions.create(
        model="qwen-plus",  # Contoh ini menggunakan qwen-plus. Anda dapat mengubah nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
        messages=[{'role': 'system', 'content': 'You are a helpful assistant.'},
                  {'role': 'user', 'content': 'Who are you?'}],
        stream=True,
        # Pengaturan berikut menampilkan informasi penggunaan token pada baris terakhir keluaran streaming.
        stream_options={"include_usage": True}
        )
    for chunk in completion:
        print(chunk.model_dump_json())


if __name__ == '__main__':
    get_response()

Menjalankan kode menghasilkan keluaran berikut:

{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"","function_call":null,"role":"assistant","tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen-plus","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":"I am","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen-plus","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":" a large language model","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen-plus","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":" from Alibaba","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen-plus","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[{"delta":{"content":" Cloud. My name is Qwen.","function_call":null,"role":null,"tool_calls":null},"finish_reason":null,"index":0,"logprobs":null}],"created":1719286190,"model":"qwen-plus","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":"qwen-plus","object":"chat.completion.chunk","system_fingerprint":null,"usage":null}
{"id":"chatcmpl-xxx","choices":[],"created":1719286190,"model":"qwen-plus","object":"chat.completion.chunk","system_fingerprint":null,"usage":{"completion_tokens":16,"prompt_tokens":22,"total_tokens":38}}

Contoh panggilan fungsi

Contoh ini menggunakan alat kueri cuaca dan waktu untuk menunjukkan cara mengimplementasikan panggilan fungsi melalui antarmuka kompatibel OpenAI. Kode contoh ini dapat melakukan panggilan alat multi putaran.

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

client = OpenAI(
    # Kunci API berbeda berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Berikut ini adalah base_url untuk wilayah Singapura.
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",  
)

# Definisikan daftar alat. Model merujuk pada nama dan deskripsi alat saat memilih alat yang akan digunakan.
tools = [
    # Alat 1: Dapatkan waktu saat ini.
    {
        "type": "function",
        "function": {
            "name": "get_current_time",
            "description": "Berguna ketika Anda ingin mengetahui waktu saat ini.",
            # Karena mendapatkan waktu saat ini tidak memerlukan parameter input, parameters adalah dictionary kosong.
            "parameters": {}
        }
    },  
    # Alat 2: Dapatkan cuaca untuk kota tertentu.
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "Berguna ketika Anda ingin menanyakan cuaca untuk kota tertentu.",
            "parameters": {  
                "type": "object",
                "properties": {
                    # Lokasi harus disediakan untuk menanyakan cuaca, sehingga parameter diatur ke location.
                    "location": {
                        "type": "string",
                        "description": "Kota atau distrik, seperti Beijing, Hangzhou, atau Yuhang."
                    }
                }
            },
            "required": [
                "location"
            ]
        }
    }
]

# Tirukan alat kueri cuaca. Hasil contoh: "Hari ini hujan di Beijing."
def get_current_weather(location):
    return f"Hari ini hujan di {location}. "

# Alat untuk menanyakan waktu saat ini. Hasil contoh: "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 respons model.
def get_response(messages):
    completion = client.chat.completions.create(
        model="qwen-plus",  # Contoh ini menggunakan qwen-plus. Anda dapat mengubah nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/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 lagi?" "Bagaimana cuaca di Beijing?"
                "role": "user"
            }
    ]
    print("-"*60)
    # Putaran pertama panggilan model.
    i = 1
    first_response = get_response(messages)
    assistant_output = first_response['choices'][0]['message']
    print(f"\nKeluaran LLM pada putaran {i}: {first_response}\n")
    if  assistant_output['content'] is None:
        assistant_output['content'] = ""
    messages.append(assistant_output)
    # Jika tidak diperlukan panggilan alat, kembalikan jawaban akhir secara langsung.
    if assistant_output['tool_calls'] == None:  # Jika model menentukan bahwa tidak diperlukan panggilan alat, cetak balasan asisten secara langsung tanpa panggilan model kedua.
        print(f"Tidak diperlukan panggilan alat. Saya dapat membalas secara langsung: {assistant_output['content']}")
        return
    # Jika diperlukan panggilan alat, lakukan beberapa putaran panggilan model hingga model menentukan bahwa tidak diperlukan panggilan alat lagi.
    while assistant_output['tool_calls'] != None:
        # Jika model menentukan 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"}
            # Ambil informasi parameter lokasi.
            location = json.loads(assistant_output['tool_calls'][0]['function']['arguments'])['location']
            tool_info['content'] = get_current_weather(location)
        # Jika model menentukan 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"Keluaran 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"Keluaran LLM pada putaran {i}: {assistant_output}\n")
    print(f"Jawaban akhir: {assistant_output['content']}")

if __name__ == '__main__':
    call_with_messages()

Saat Anda memasukkan Bagaimana cuaca di Hangzhou dan Beijing? Jam berapa sekarang?, program menghasilkan keluaran berikut:

2024-06-26_10-04-56 (1).gif

Parameter input

Parameter input disejajarkan dengan parameter antarmuka OpenAI. Parameter yang saat ini didukung adalah sebagai berikut:

Parameter

Tipe

Bawaan

Deskripsi

model

string

-

Gunakan parameter model untuk menentukan model yang digunakan. Untuk daftar model yang tersedia, lihat Daftar model yang didukung.

messages

array

-

Riwayat percakapan antara pengguna dan model. Setiap elemen dalam array memiliki format {"role": Role, "content": Content}. Peran yang tersedia saat ini adalah system, user, dan assistant. Peran system hanya didukung di messages[0]. Dalam kebanyakan kasus, peran user dan assistant harus bergantian, dan peran elemen terakhir dalam messages harus user.

top_p (opsional)

float

-

Ambang batas probabilitas untuk pengambilan sampel inti selama proses generasi. Misalnya, jika Anda mengatur parameter ini ke 0.8, sistem menyimpan set token terkecil yang probabilitas kumulatifnya 0.8 atau lebih tinggi sebagai set kandidat. Nilai yang valid berada dalam rentang (0, 1.0). Nilai yang lebih besar menghasilkan keacakan yang lebih tinggi, dan nilai yang lebih kecil menghasilkan determinisme yang lebih tinggi.

temperature (opsional)

float

-

Mengontrol keacakan dan keragaman respons model. Secara spesifik, nilai temperature mengontrol tingkat penghalusan yang diterapkan pada distribusi probabilitas setiap kata kandidat selama generasi teks. Nilai temperature yang lebih tinggi mengurangi puncak distribusi probabilitas, memungkinkan lebih banyak kata berprobabilitas rendah dipilih dan membuat hasil generasi lebih beragam. Nilai temperature yang lebih rendah meningkatkan puncak distribusi probabilitas, membuat kata berprobabilitas tinggi lebih mungkin dipilih dan hasil generasi lebih deterministik.

Nilai yang valid berada dalam rentang [0, 2). Kami menyarankan agar Anda tidak mengatur parameter ini ke 0, karena tidak memiliki arti.

presence_penalty

(opsional)

float

-

Mengontrol pengulangan seluruh urutan selama generasi model. Meningkatkan presence_penalty dapat mengurangi pengulangan konten yang dihasilkan model. Nilai yang valid berada dalam rentang [-2.0, 2.0].

Catatan

Parameter ini saat ini hanya didukung pada model komersial Qwen dan model sumber terbuka mulai dari qwen1.5.

n (opsional)

integer

1

Jumlah respons yang akan dihasilkan. Nilai yang valid berada dalam rentang 1-4. Untuk skenario yang memerlukan beberapa respons, seperti penulisan kreatif atau salinan iklan, Anda dapat mengatur nilai n yang lebih besar.

Mengatur nilai n yang lebih besar tidak meningkatkan konsumsi token input tetapi meningkatkan konsumsi token output.
Saat ini hanya didukung untuk model qwen-plus dan tetap diatur ke 1 ketika parameter tools diberikan.

max_tokens (opsional)

integer

-

Menentukan jumlah maksimum token yang dapat dihasilkan model. Misalnya, jika panjang output maksimum model adalah 2k, Anda dapat mengatur ini ke 1k untuk mencegah model menghasilkan konten yang terlalu panjang.

Model yang berbeda memiliki batas output yang berbeda. Untuk detailnya, lihat daftar model.

seed (opsional)

integer

-

Seed bilangan acak yang digunakan untuk generasi, yang mengontrol keacakan konten yang dihasilkan model. Seed mendukung bilangan bulat tak bertanda 64-bit.

stream (opsional)

boolean

False

Mengontrol apakah akan menggunakan keluaran streaming. Saat hasil dikeluarkan dalam mode stream, antarmuka mengembalikan generator. Anda perlu melakukan iterasi untuk mendapatkan hasilnya. Setiap output adalah urutan inkremental yang dihasilkan pada waktu tersebut.

stop (opsional)

string atau array

None

Parameter stop memberikan kontrol tepat atas proses pembuatan konten. Ini secara otomatis menghentikan generasi ketika model akan menyertakan string atau ID token tertentu. Parameter stop dapat berupa string atau array.

  • tipe string

    Berhenti ketika model akan menghasilkan kata berhenti yang ditentukan.

    Misalnya, jika stop diatur ke "hello", model akan berhenti ketika akan menghasilkan "hello".

  • tipe array

    Elemen dalam array dapat berupa ID token, string, atau array ID token. Ketika token yang akan dihasilkan atau ID token-nya ada dalam daftar berhenti, generasi model akan berhenti. Berikut adalah contoh stop sebagai array (tokenizer sesuai dengan model qwen-turbo):

    1. Elemen adalah ID token:

    ID token 108386 dan 104307 masing-masing sesuai dengan token "hello" dan "weather". Jika stop diatur ke [108386,104307], model akan berhenti ketika akan menghasilkan "hello" atau "weather".

    2. Elemen adalah string:

    Jika stop diatur ke ["hello","weather"], model akan berhenti ketika akan menghasilkan "hello" atau "weather".

    3. Elemen adalah array:

    ID token 108386 dan 103924 masing-masing sesuai dengan token "hello" dan "ah", dan ID token 35946 dan 101243 masing-masing sesuai dengan token "I" dan "am fine". Jika stop diatur ke [[108386, 103924],[35946, 101243]], model akan berhenti ketika akan menghasilkan "hello ah" atau "I am fine".

    Catatan

    Ketika stop berupa array, elemennya harus semuanya ID token atau semuanya string. Misalnya, Anda tidak dapat menentukan stop sebagai ["你好", 104307].

tools (opsional)

array

None

Menentukan pustaka alat yang dapat dipanggil model. Dalam alur panggilan fungsi, model memilih satu alat dari pustaka ini. Setiap alat dalam array tools memiliki struktur berikut:

  • type: string, menunjukkan tipe alat. Saat ini, hanya function yang didukung.

  • function: object, dengan kunci termasuk name, description, dan parameters:

    • name: string, menunjukkan nama fungsi alat. Harus terdiri dari huruf, angka, dan dapat menyertakan garis bawah dan tanda hubung, dengan panjang maksimum 64.

    • description: string, menunjukkan deskripsi fungsi alat, agar model memutuskan kapan dan bagaimana memanggil fungsi alat tersebut.

    • parameters: object, menunjukkan deskripsi parameter alat, yang harus berupa JSON Schema yang valid. Untuk deskripsi JSON Schema, lihat tautan ini. Jika parameter parameters kosong, artinya fungsi tidak memiliki parameter input.

Dalam alur panggilan fungsi, parameter tools harus diatur, baik untuk memulai putaran panggilan fungsi maupun untuk mengirimkan hasil eksekusi fungsi alat ke model. Model yang saat ini didukung meliputi qwen-turbo, qwen-plus, dan qwen-max.

Catatan

Parameter tools tidak dapat digunakan bersamaan dengan stream=True.

stream_options (opsional)

object

None

Parameter ini digunakan untuk mengonfigurasi apakah akan menampilkan jumlah token yang digunakan selama keluaran streaming. Parameter ini hanya aktif ketika stream diatur ke True. Untuk menghitung jumlah token dalam mode keluaran streaming, Anda dapat mengonfigurasi parameter ini sebagai stream_options={"include_usage":True}.

Parameter respons

Parameter respons

Tipe data

Deskripsi

Keterangan

id

string

ID yang dihasilkan sistem untuk panggilan ini.

-

model

string

Nama model yang digunakan untuk panggilan ini.

-

system_fingerprint

string

Versi konfigurasi yang digunakan model saat waktu proses. Saat ini tidak didukung dan mengembalikan string kosong "".

-

choices

array

Detail konten yang dihasilkan model.

-

choices[i].finish_reason

string

Ada tiga kasus:

  • null selama generasi;

  • stop jika generasi berakhir karena kondisi berhenti dalam parameter input;

  • Generasi berakhir karena panjang berlebihan.

choices[i].message

object

Pesan keluaran oleh model.

choices[i].message.role

string

Peran model, tetap sebagai assistant.

choices[i].message.content

string

Teks yang dihasilkan model.

choices[i].index

integer

Nomor urut hasil yang dihasilkan, bawaan adalah 0.

created

integer

Stempel waktu UNIX (dalam detik) dari hasil yang dihasilkan saat ini.

-

usage

object

Informasi metering, menunjukkan data token yang dikonsumsi oleh permintaan ini.

-

usage.prompt_tokens

integer

Panjang teks input pengguna setelah dikonversi ke token.

-

usage.completion_tokens

integer

Panjang balasan yang dihasilkan model setelah dikonversi ke token.

-

usage.total_tokens

integer

Jumlah dari usage.prompt_tokens dan usage.completion_tokens.

-

Panggil menggunakan SDK langchain_openai

Prasyarat

  • Pastikan lingkungan Python telah diinstal di komputer Anda.

  • Instal SDK langchain_openai dengan menjalankan perintah berikut.

    # Jika perintah berikut gagal, ganti pip dengan pip3.
    pip install -U langchain_openai

Penggunaan

Anda dapat menggunakan contoh berikut untuk mengakses model Qwen di Model Studio dengan SDK langchain_openai.

Keluaran non-streaming

Gunakan metode invoke untuk keluaran non-streaming. Contoh kode berikut menunjukkan hal ini:

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # Kunci API berbeda berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris ini dengan Kunci API Model Studio Anda: api_key="sk-xxx"
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1", # Ini adalah base_url untuk wilayah Singapura.
        model="qwen-plus"  # Contoh ini menggunakan qwen-plus. Anda dapat mengubah nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
        )
    messages = [
        {"role":"system","content":"You are a helpful assistant."},
        {"role":"user","content":"Who are you?"}
    ]
    response = llm.invoke(messages)
    print(response.json())

if __name__ == "__main__":
    get_response()

Menjalankan kode menghasilkan keluaran berikut:

{
    "content": "I am a large language model from Alibaba Cloud. My name is Qwen.",
    "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": []
}

Keluaran streaming

Gunakan metode stream untuk keluaran streaming. Anda tidak perlu mengonfigurasi parameter stream.

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        # Kunci API berbeda berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris ini dengan Kunci API Model Studio Anda: api_key="sk-xxx"
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",   # Ini adalah base_url untuk wilayah Singapura.
        model="qwen-plus",   # Contoh ini menggunakan qwen-plus. Anda dapat mengubah nama model sesuai kebutuhan. Untuk daftar model, lihat https://www.alibabacloud.com/help/en/model-studio/getting-started/models
        stream_usage=True
        )
    messages = [
        {"role":"system","content":"You are a helpful assistant."}, 
        {"role":"user","content":"Who are you?"},
    ]
    response = llm.stream(messages)
    for chunk in response:
        print(chunk.model_dump_json())

if __name__ == "__main__":
    get_response()

Menjalankan kode menghasilkan keluaran berikut:

{"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": "I am", "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": " a large language model", "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": " from Alibaba", "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": " Cloud", "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": ". My name is Tongyi", "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": " Qwen.", "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 informasi tentang konfigurasi parameter input, lihat Parameter input. Parameter terkait didefinisikan dalam objek ChatOpenAI.

Panggil menggunakan HTTP API

Anda dapat memanggil layanan Alibaba Cloud Model Studio melalui antarmuka HTTP dan menerima respons dengan struktur yang identik dengan panggilan HTTP ke layanan OpenAI.

Prasyarat

Kirim panggilan API

Singapura: POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
AS (Virginia): POST https://dashscope-us.aliyuncs.com/compatible-mode/v1/chat/completions
China (Beijing): POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
Hong Kong (China): POST https://cn-hongkong.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

Contoh permintaan

Contoh berikut menunjukkan cara memanggil API menggunakan perintah cURL.

Catatan

Jika Anda belum mengonfigurasi Kunci API sebagai Variabel lingkungan, ganti $DASHSCOPE_API_KEY dengan Kunci API Anda.

Keluaran non-streaming

# Ini adalah base_url untuk wilayah Singapura.
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen-plus",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user", 
            "content": "Who are you?"
        }
    ]
}'

Perintah mengembalikan keluaran berikut:

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "I am a large language model from Alibaba Cloud. My name is Qwen."
            },
            "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": "qwen-plus",
    "id": "chatcmpl-xxx"
}

Keluaran streaming

Untuk menggunakan keluaran streaming, atur parameter stream ke true dalam badan permintaan.

# Ini adalah base_url untuk wilayah Singapura.
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "qwen-plus",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user", 
            "content": "Who are you?"
        }
    ],
    "stream":true
}'

Perintah mengembalikan keluaran berikut:

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":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"finish_reason":null,"delta":{"content":"I am"},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":" a large language model"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":" from Alibaba"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: {"choices":[{"delta":{"content":" Cloud. My name is Qwen."},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1715931028,"system_fingerprint":null,"model":"qwen-plus","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":"qwen-plus","id":"chatcmpl-3bb05cf5cd819fbca5f0b8d67a025022"}

data: [DONE]

Untuk informasi lebih lanjut tentang parameter input, lihat Parameter input.

Contoh respons kesalahan

Jika permintaan gagal, keluaran mencakup kode dan pesan yang menunjukkan alasan kesalahan tersebut.

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

Deskripsi kode status

Kode kesalahan

Deskripsi

400 - Invalid Request Error

Permintaan tidak valid. Lihat pesan kesalahan untuk detailnya.

401 - Incorrect API key provided

Kunci API salah.

429 - Rate limit reached for requests

Batas laju terlampaui, seperti permintaan per detik (QPS) atau permintaan per menit (QPM).

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

Kuota terlampaui atau akun memiliki Pembayaran tertunda.

500 - The server had an error while processing your request

Terjadi kesalahan di sisi server.

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

Server kelebihan beban. Coba lagi nanti.