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/v1Saat 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 openaiAktifkan Model Studio dan peroleh Kunci API. Untuk informasi selengkapnya, lihat Dapatkan Kunci API.
Kami menyarankan Anda mengonfigurasi Kunci API sebagai Variabel lingkungan untuk mengurangi risiko kebocoran. Untuk informasi selengkapnya, lihat Konfigurasikan Kunci API sebagai Variabel lingkungan (Metode ini sedang ditinggalkan dan akan digabungkan ke Konfigurasi Kunci API). Anda juga dapat mengonfigurasi Kunci API dalam kode Anda, tetapi hal ini meningkatkan risiko kebocoran.
Pilih model yang akan digunakan. Untuk informasi selengkapnya, lihat Daftar model yang didukung.
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:

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 |
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 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.
|
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:
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 |
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:
| |
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
Anda harus mengaktifkan Model Studio dan mendapatkan Kunci API. Untuk informasi selengkapnya, lihat Dapatkan Kunci API.
Kami menyarankan mengonfigurasi Kunci API sebagai Variabel lingkungan untuk mengurangi risiko kebocoran kunci. Untuk informasi selengkapnya, lihat Konfigurasikan Kunci API sebagai Variabel lingkungan (Metode ini sedang ditinggalkan dan akan digabungkan ke Konfigurasi Kunci API). Anda juga dapat mengonfigurasi Kunci API dalam kode Anda, tetapi hal ini meningkatkan risiko kebocoran.
Pilih model yang akan digunakan. Untuk informasi selengkapnya, lihat Daftar model yang didukung.
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
Anda harus mengaktifkan Model Studio dan mendapatkan Kunci API. Untuk informasi lebih lanjut, lihat Dapatkan Kunci API.
Kami menyarankan Anda mengonfigurasi Kunci API sebagai Variabel lingkungan untuk mengurangi risiko kebocoran kunci. Untuk informasi lebih lanjut, lihat Konfigurasikan Kunci API sebagai Variabel lingkungan (Metode ini sedang ditinggalkan dan akan digabungkan ke Konfigurasi Kunci API). Anda juga dapat mengonfigurasi Kunci API dalam kode Anda, tetapi hal ini meningkatkan risiko kebocoran.
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/completionsContoh permintaan
Contoh berikut menunjukkan cara memanggil API menggunakan perintah cURL.
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. |