全部产品
Search
文档中心

Alibaba Cloud Model Studio:Antarmuka Chat kompatibel dengan OpenAI

更新时间:Nov 11, 2025

Model Qwen dari Alibaba Cloud Model Studio mendukung antarmuka yang kompatibel dengan OpenAI. Anda dapat memigrasikan kode OpenAI yang sudah ada ke layanan Alibaba Cloud Model Studio hanya dengan memperbarui Kunci API, BASE_URL, dan nama model.

Informasi yang diperlukan untuk kompatibilitas OpenAI

BASE_URL

BASE_URL adalah titik akhir jaringan dari layanan model. Alamat ini memungkinkan Anda mengakses fitur atau data yang disediakan oleh layanan tersebut. Saat menggunakan layanan web atau API, BASE_URL biasanya merupakan URL dasar untuk API, tempat titik akhir tertentu ditambahkan. Anda harus mengonfigurasi BASE_URL saat menggunakan antarmuka yang kompatibel dengan OpenAI untuk memanggil layanan Alibaba Cloud Model Studio.

  • Saat melakukan panggilan menggunakan kit pengembangan perangkat lunak (SDK) OpenAI atau SDK lain yang kompatibel dengan OpenAI, konfigurasikan BASE_URL sebagai berikut:

    Singapura: https://dashscope-intl.aliyuncs.com/compatible-mode/v1
    Tiongkok (Beijing): https://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
    Tiongkok (Beijing): POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

Daftar model yang didukung

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

Kategori model

Nama model

Qwen

qwen-max

qwen-max-latest

qwen-max-2025-01-25

qwen-plus

qwen-plus-latest

qwen-plus-2025-04-28

qwen-plus-2025-01-25

qwen-turbo

qwen-turbo-latest

qwen-turbo-2025-04-28

qwen-turbo-2024-11-01

Seri sumber terbuka Qwen

qwq-32b

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-72b-instruct

qwen2-7b-instruct

qwen1.5-110b-chat

qwen1.5-72b-chat

qwen1.5-32b-chat

qwen1.5-14b-chat

qwen1.5-7b-chat

Panggil model menggunakan SDK OpenAI

Prasyarat

  • Pastikan lingkungan Python telah diinstal di komputer Anda.

  • Instal versi terbaru SDK OpenAI.

    # Jika perintah berikut melaporkan kesalahan, ganti pip dengan pip3.
    pip install -U openai
  • Aktifkan layanan Alibaba Cloud Model Studio dan peroleh Kunci API. Untuk informasi selengkapnya, lihat Persiapan: Peroleh dan konfigurasikan Kunci API.

  • Kami menyarankan agar Anda menyetel Kunci API sebagai Variabel lingkungan untuk mengurangi risiko kebocoran Kunci API. Untuk informasi selengkapnya, lihat Menyetel Kunci API sebagai Variabel lingkungan. Anda juga dapat mengonfigurasi Kunci API dalam kode, tetapi hal ini meningkatkan risiko kebocoran.

  • Pilih model yang akan digunakan. Untuk informasi selengkapnya, lihat Daftar model yang didukung.

Penggunaan

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

Contoh panggilan non-streaming

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris ini dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda.
        # Tetapkan base_url SDK DashScope. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1.
        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 mengganti 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 hasil 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(
        # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda.
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # Tetapkan base_url SDK DashScope. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1.
        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 mengganti 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,
        # Gunakan pengaturan berikut untuk 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 hasil 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-scale"},"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":" language"},"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":" model from Alibaba Cloud"},"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":", and 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 pemanggilan fungsi

Bagian ini memberikan contoh cara menerapkan fitur Pemanggilan alat dengan antarmuka kompatibel OpenAI menggunakan alat kueri cuaca dan waktu. Kode contoh mendukung Pemanggilan alat multi-putaran.

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

client = OpenAI(
    # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda.
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Tetapkan base_url SDK DashScope. Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1.
    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 tidak diperlukan parameter input untuk mendapatkan waktu saat ini, parameters adalah kamus kosong.
            "parameters": {}
        }
    },  
    # Alat 2: Dapatkan cuaca kota tertentu.
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "Berguna untuk menanyakan cuaca di kota tertentu.",
            "parameters": {  
                "type": "object",
                "properties": {
                    # Lokasi harus disediakan untuk menanyakan cuaca, sehingga parameter diatur menjadi location.
                    "location": {
                        "type": "string",
                        "description": "Kota atau kabupaten, seperti Beijing, Hangzhou, atau Distrik Yuhang."
                    }
                }
            },
            "required": [
                "location"
            ]
        }
    }
]

# Simulasikan 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 mengganti 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 pertanyaan Anda:'),  # Pertanyaan contoh: "Jam berapa sekarang?" "Jam berapa satu jam lagi?" "Bagaimana cuaca di Beijing?"
                "role": "user"
            }
    ]
    print("-"*60)
    # Putaran pertama pemanggilan model.
    i = 1
    first_response = get_response(messages)
    assistant_output = first_response['choices'][0]['message']
    print(f"\nKeluaran model besar putaran {i}: {first_response}\n")
    if  assistant_output['content'] is None:
        assistant_output['content'] = ""
    messages.append(assistant_output)
    # Jika tidak perlu memanggil alat, kembalikan jawaban akhir secara langsung.
    if assistant_output['tool_calls'] == None:  # Jika model menentukan bahwa tidak perlu memanggil alat, cetak balasan asisten secara langsung. Tidak diperlukan putaran kedua pemanggilan model.
        print(f"Tidak perlu memanggil alat. Saya dapat menjawab langsung: {assistant_output['content']}")
        return
    # Jika perlu memanggil alat, lakukan beberapa putaran pemanggilan model hingga model menentukan bahwa tidak perlu memanggil alat lagi.
    while assistant_output['tool_calls'] != None:
        # Jika model menentukan bahwa perlu memanggil alat kueri cuaca, 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 model menentukan bahwa perlu memanggil alat kueri waktu, 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 model besar putaran {i}: {assistant_output}\n")
    print(f"Jawaban akhir: {assistant_output['content']}")

if __name__ == '__main__':
    call_with_messages()

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

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

Parameter permintaan

Parameter input diselaraskan dengan parameter antarmuka OpenAI. Parameter berikut didukung:

Parameter

Tipe

Bawaan

Deskripsi

model

string

-

Menentukan model yang akan 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": "Peran", "content": "Konten"}. Peran dapat berupa system, user, atau assistant. Peran hanya dapat diatur sebagai system pada messages[0]. Biasanya, user dan assistant harus muncul bergantian, dan peran elemen terakhir dalam messages harus user.

top_p (opsional)

float

-

Ambang batas probabilitas untuk pengambilan sampel inti. Misalnya, jika Anda menyetel parameter ini ke 0,8, model menghasilkan token dari set token teratas terkecil yang memiliki probabilitas kumulatif 0,8 atau lebih tinggi. Nilai yang valid: (0, 1,0). Nilai yang lebih besar menunjukkan keacakan yang lebih tinggi. Nilai yang lebih kecil menunjukkan determinisme yang lebih tinggi.

temperature (opsional)

float

-

Mengontrol keacakan dan keragaman tanggapan model. Nilai temperature yang lebih tinggi memuluskan distribusi probabilitas kata kandidat, yang memungkinkan kata yang kurang mungkin dipilih dan menghasilkan hasil yang lebih beragam. Nilai temperature yang lebih rendah mempertajam distribusi probabilitas, yang membuat kata yang lebih mungkin lebih mudah dipilih dan menghasilkan hasil yang lebih deterministik.

Nilai yang valid: [0, 2). Kami menyarankan agar Anda tidak menyetel nilai ke 0.

presence_penalty

(opsional)

float

-

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

Catatan

Saat ini, parameter ini hanya didukung pada model komersial Qwen dan model sumber terbuka qwen1.5 serta yang lebih baru.

n (opsional)

integer

1

Jumlah tanggapan yang akan dihasilkan. Nilai yang valid: 1 hingga 4. Untuk skenario yang memerlukan beberapa tanggapan, seperti penulisan kreatif atau salinan iklan, Anda dapat menyetel nilai n yang lebih besar.

Nilai n yang lebih besar tidak meningkatkan konsumsi token input tetapi meningkatkan konsumsi token output.
Saat ini, parameter ini hanya didukung untuk model qwen-plus. Nilainya harus 1 ketika parameter tools dilewatkan.

max_tokens (opsional)

integer

-

Jumlah maksimum token yang dapat dihasilkan model. Misalnya, jika panjang output maksimum model adalah 2.000 token, Anda dapat menyetel parameter ini ke 1.000 untuk mencegah model menghasilkan konten yang terlalu panjang.

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

seed (opsional)

integer

-

Bilangan acak seed yang digunakan selama generasi untuk mengontrol keacakan konten yang dihasilkan. Parameter seed mendukung bilangan bulat tak bertanda 64-bit.

stream (opsional)

boolean

False

Menentukan apakah akan menggunakan keluaran streaming. Saat hasil dialirkan, API mengembalikan generator. Anda harus melakukan iterasi untuk mendapatkan hasilnya. Setiap keluaran adalah urutan inkremental yang sedang dihasilkan.

stop (opsional)

string atau array

None

Parameter stop memberikan kontrol tepat atas prosedur pembuatan konten. Model secara otomatis berhenti menghasilkan konten ketika akan menyertakan string atau ID token tertentu. Parameter stop dapat berupa string atau array.

  • string

    Model berhenti ketika akan menghasilkan kata berhenti yang ditentukan.

    Misalnya, jika Anda menyetel stop ke "Hello", model berhenti ketika akan menghasilkan "Hello".

  • array

    Elemen dalam array dapat berupa ID token, string, atau array ID token. Model berhenti menghasilkan konten jika token berikutnya yang akan dihasilkan, atau ID token-nya, ada dalam array stop. Contoh berikut menunjukkan cara menggunakan array untuk parameter stop. Dalam contoh ini, tokenizer sesuai dengan model qwen-turbo:

    1. Elemen berupa ID token:

    ID token 108386 dan 104307 masing-masing sesuai dengan token "Hello" dan "Weather". Jika Anda menyetel stop ke [108386,104307], model berhenti ketika akan menghasilkan "Hello" atau "Weather".

    2. Elemen berupa string:

    Jika Anda menyetel stop ke ["Hello","Weather"], model berhenti ketika akan menghasilkan "Hello" atau "Weather".

    3. Elemen berupa array:

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

    Catatan

    Ketika stop berupa array, jangan mencampur ID token dan string sebagai elemen. Misalnya, jangan menyetel stop ke ["Hello",104307].

tools (opsional)

array

None

Menentukan pustaka alat yang dapat dipanggil model. Dalam proses pemanggilan alat, model memilih satu alat dari pustaka. Struktur setiap alat dalam array tools adalah sebagai berikut:

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

  • function: objek yang mencakup pasangan kunci-nilai name, description, dan parameters.

    • name: string yang menunjukkan nama fungsi alat. Harus terdiri dari huruf dan angka, dan dapat berisi garis bawah (_) dan tanda hubung (-). Panjang maksimum adalah 64 karakter.

    • description: string yang menjelaskan fungsi alat. Model menggunakan deskripsi ini untuk memutuskan kapan dan bagaimana memanggil fungsi.

    • parameters: objek yang menjelaskan parameter alat. Harus berupa Skema JSON yang valid. Untuk informasi selengkapnya tentang Skema JSON, lihat dokumentasi Skema JSON. Jika objek parameters kosong, fungsi tidak memiliki parameter input.

Dalam proses pemanggilan alat, Anda harus menyetel parameter tools baik saat memulai putaran pemanggilan alat maupun saat 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

Mengonfigurasi apakah akan menampilkan jumlah token yang digunakan selama keluaran streaming. Parameter ini hanya berlaku ketika stream disetel ke True. Untuk menghitung jumlah token dalam mode keluaran streaming, setel parameter ini ke stream_options={"include_usage":True}.

Parameter respons

Parameter

Tipe data

Deskripsi

Catatan

id

string

ID yang dihasilkan sistem untuk panggilan ini.

None

model

string

Nama model yang dipanggil.

None

system_fingerprint

string

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

None

choices

array

Rincian konten yang dihasilkan model.

None

choices[i].finish_reason

string

Berlaku tiga kasus berikut:

  • Nilainya null selama generasi.

  • stop: kondisi berhenti dalam parameter input dipicu.

  • length: output melebihi panjang maksimum.

choices[i].message

object

Pesan yang dikeluarkan model.

choices[i].message.role

string

Peran model, yang tetap menjadi assistant.

choices[i].message.content

string

Teks yang dihasilkan model.

choices[i].index

integer

Nomor urut hasil yang dihasilkan. Nilai bawaan: 0.

created

integer

Stempel waktu UNIX (dalam detik) saat hasil dihasilkan.

None

usage

object

Konsumsi token dari permintaan.

None

usage.prompt_tokens

integer

Jumlah token dalam teks input.

None

usage.completion_tokens

integer

Jumlah token dalam tanggapan yang dihasilkan.

None

usage.total_tokens

integer

Jumlah dari usage.prompt_tokens dan usage.completion_tokens.

None

Panggil model menggunakan SDK langchain_openai

Prasyarat

  • Pastikan lingkungan Python telah diinstal di komputer Anda.

  • Jalankan perintah berikut untuk menginstal SDK langchain_openai.

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

Penggunaan

Contoh berikut menunjukkan cara menggunakan SDK langchain_openai untuk memanggil model Qwen dari Alibaba Cloud Model Studio.

Keluaran non-streaming

Keluaran non-streaming diimplementasikan menggunakan metode invoke. Berikut adalah kode contohnya:

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris ini dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda.
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",  # Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1.
        model="qwen-plus"  # Contoh ini menggunakan qwen-plus. Anda dapat mengganti 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 hasil 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

Keluaran streaming diimplementasikan menggunakan metode stream. Anda tidak perlu mengonfigurasi parameter stream.

from langchain_openai import ChatOpenAI
import os

def get_response():
    llm = ChatOpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),  # Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris ini dengan api_key="sk-xxx" menggunakan Kunci API Model Studio Anda.
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",   # Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1.
        model="qwen-plus",   # Contoh ini menggunakan qwen-plus. Anda dapat mengganti 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 hasil 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", "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": " 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", "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": " 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": ", and my name is 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 pengaturan parameter input, lihat Parameter permintaan. Parameter terkait didefinisikan dalam objek ChatOpenAI.

Panggil model menggunakan antarmuka HTTP

Anda dapat memanggil layanan Alibaba Cloud Model Studio menggunakan antarmuka HTTP untuk menerima respons yang memiliki struktur sama dengan respons dari layanan OpenAI.

Prasyarat

Kirim permintaan API

Singapura: POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions
Tiongkok (Beijing): POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

Contoh permintaan

Contoh berikut menunjukkan skrip yang memanggil API menggunakan perintah cURL.

Catatan

Jika Anda belum mengonfigurasi Kunci API sebagai variabel lingkungan, Anda harus mengganti $DASHSCOPE_API_KEY dengan Kunci API Anda.

Keluaran non-streaming

# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions.
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?"
        }
    ]
}'

Menjalankan perintah menghasilkan hasil 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

Jika Anda ingin menggunakan keluaran streaming, setel parameter stream ke true dalam badan permintaan.

# Jika Anda menggunakan model di wilayah Tiongkok (Beijing), ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions.
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
}'

Menjalankan perintah menghasilkan hasil 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-scale"},"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":" 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 Cloud"},"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":", and 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 rincian parameter input, lihat Parameter permintaan.

Contoh respons abnormal

Jika terjadi kesalahan selama permintaan, respons menunjukkan penyebab kesalahan dalam bidang code dan message.

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

Kode status

Kode kesalahan

Deskripsi

400 - Permintaan Tidak Valid

Permintaan tidak valid. Untuk informasi selengkapnya, lihat pesan kesalahan.

401 - Kunci API yang diberikan salah

Kunci API salah.

429 - Batas laju permintaan tercapai

Batas permintaan per detik (QPS), permintaan per menit (QPM), atau batas lainnya terlampaui.

429 - Kuota Anda saat ini telah terlampaui, silakan periksa paket dan detail penagihan Anda

Kuota Anda telah terlampaui atau akun Anda memiliki Pembayaran tertunda.

500 - Server mengalami kesalahan saat memproses permintaan Anda

Terjadi kesalahan di sisi server.

503 - Mesin saat ini kelebihan beban, silakan coba lagi nanti

Server kelebihan beban. Coba lagi nanti.