Qwen-Coder adalah language model yang dirancang untuk tugas-tugas terkait kode. Anda dapat menggunakan API untuk memanggil model guna menghasilkan kode, melengkapi kode, dan berinteraksi dengan sistem eksternal melalui function calling.
Mulai
Prasyarat
Anda telah membuat Kunci API dan mengekspornya sebagai Variabel lingkungan.
Jika Anda menggunakan SDK untuk melakukan panggilan, Anda harus menginstal SDK. Versi DashScope Python SDK harus 1.24.6 atau lebih baru, dan versi DashScope Java SDK harus 2.21.10 atau lebih baru.
Topik ini memberikan contoh cara memanggil model Qwen-Coder untuk menulis fungsi Python yang mencari bilangan prima.
Kompatibel dengan OpenAI
Python
Contoh permintaan
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. 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. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
# Contoh ini menggunakan qwen3-coder-plus. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan.
model="qwen3-coder-plus",
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks.'}],
)
print(completion.choices[0].message.content)
Tanggapan
def find_prime_numbers(n):
if n <= 2:
return []
primes = []
for num in range(2, n):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primesNode.js
Contoh permintaan
import OpenAI from "openai";
const client = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. 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: apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const completion = await client.chat.completions.create({
model: "qwen3-coder-plus", //Contoh ini menggunakan qwen3-coder-plus. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan.
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks." }
],
});
console.log(completion.choices[0].message.content);
}
main();Tanggapan
def find_prime_numbers(n):
if n <= 2:
return []
primes = []
for num in range(2, n):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primescurl
Contoh permintaan
URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-plus",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks."
}
]
}'Tanggapan
{
"choices": [
{
"message": {
"content": "def find_prime_numbers(n):\n if n <= 2:\n return []\n \n primes = []\n \n for num in range(2, n):\n is_prime = True\n for i in range(2, int(num ** 0.5) + 1):\n if num % i == 0:\n is_prime = False\n break\n if is_prime:\n primes.append(num)\n \n return primes",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 96,
"completion_tokens": 90,
"total_tokens": 186,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1761615592,
"system_fingerprint": null,
"model": "qwen3-coder-plus",
"id": "chatcmpl-3de690bd-ae7f-461d-8eb6-d65b0577e803"
}DashScope
Python
Contoh permintaan
import dashscope
import os
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks."
}
]
response = dashscope.Generation.call(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. 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"),
# Contoh ini menggunakan qwen3-coder-plus. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan.
model="qwen3-coder-plus",
messages=messages,
result_format="message"
)
if response.status_code == 200:
print(response.output.choices[0].message.content)
else:
print(f"HTTP status code: {response.status_code}")
print(f"Error code: {response.code}")
print(f"Error message: {response.message}")Hasil
def find_prime_numbers(n):
if n <= 2:
return []
primes = []
for num in range(2, n):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primesJava
Contoh permintaan
import java.util.Arrays;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.protocol.Protocol;
public class Main {
public static GenerationResult callWithMessage()
throws NoApiKeyException, ApiException, InputRequiredException {
String apiKey = System.getenv("DASHSCOPE_API_KEY");
// Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
Message sysMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.content("You are a helpful assistant.").build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks.").build();
// Contoh ini menggunakan qwen3-coder-plus. Anda dapat menggantinya dengan nama model lain sesuai kebutuhan.
GenerationParam param = GenerationParam.builder()
.apiKey(apiKey)
.model("qwen3-coder-plus")
.messages(Arrays.asList(sysMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args){
try {
GenerationResult result = callWithMessage();
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.err.println("Request exception: " + e.getMessage());
e.printStackTrace();
}
}
}Hasil
def find_prime_numbers(n):
if n <= 2:
return []
primes = []
for num in range(2, n):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primescurl
Contoh permintaan
URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
curl -X POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-plus",
"input":{
"messages":[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks."
}
]
},
"parameters": {
"result_format": "message"
}
}'Tanggapan
{
"output": {
"choices": [
{
"message": {
"content": "def find_prime_numbers(n):\n if n <= 2:\n return []\n \n primes = []\n \n for num in range(2, n):\n is_prime = True\n for i in range(2, int(num ** 0.5) + 1):\n if num % i == 0:\n is_prime = False\n break\n if is_prime:\n primes.append(num)\n \n return primes",
"role": "assistant"
},
"finish_reason": "stop"
}
]
},
"usage": {
"total_tokens": 186,
"output_tokens": 90,
"input_tokens": 96,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"request_id": "b1b8d1f8-0d26-4651-a466-66eefa0e7c51"
}Pemilihan model
Qwen-Coder telah ditingkatkan ke seri Qwen3. Model ini mendukung jendela konteks hingga 1 juta token dan menawarkan beberapa varian untuk memenuhi berbagai kebutuhan terkait kinerja, kecepatan respons, dan biaya dalam berbagai skenario.
Rekomendasi:
qwen3-coder-plus: Model ini menawarkan kemampuan coding terkuat dan cocok untuk tugas berkualitas tinggi seperti menghasilkan proyek kompleks dan melakukan Tinjauan kode mendalam.qwen3-coder-flash: Ini adalah model hemat biaya yang menyeimbangkan kinerja dan biaya, menawarkan kecepatan lebih tinggi dengan harga lebih rendah. Cocok untuk skenario yang sensitif terhadap kecepatan respons.
Untuk informasi selengkapnya tentang nama model, jendela konteks, harga, dan versi Snapshot, lihat Daftar model. Untuk informasi selengkapnya tentang batas permintaan konkuren, lihat Batas laju.
Kemampuan inti
Streaming
Untuk meningkatkan pengalaman interaktif dan mengurangi risiko timeout pada permintaan berdurasi panjang, aktifkan keluaran streaming dengan mengatur parameter stream=True. Model akan mengembalikan konten yang dihasilkan dalam chunk saat dibuat, bukan menunggu untuk mengembalikan seluruh tanggapan sekaligus.
Kompatibel dengan OpenAI
Python
Contoh permintaan
import os
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. 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. Jika Anda menggunakan model di wilayah Beijing, ganti base_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="qwen3-coder-plus",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks."}
],
stream=True,
# Dapatkan penggunaan token untuk permintaan ini dari chunk terakhir
stream_options={"include_usage": True}
)
content_parts = []
print("="*20+"Response"+"="*20)
for chunk in completion:
# Chunk terakhir tidak berisi choices, tetapi berisi informasi penggunaan.
if chunk.choices:
# delta.content mungkin None. Gunakan 'or ""' untuk menghindari error saat penggabungan.
content = chunk.choices[0].delta.content or ""
print(content, end="", flush=True)
content_parts.append(content)
elif chunk.usage:
print("\n"+"="*20+"Token Usage"+"="*20)
print(f"Input Tokens: {chunk.usage.prompt_tokens}")
print(f"Output Tokens: {chunk.usage.completion_tokens}")
print(f"Total Tokens: {chunk.usage.total_tokens}")
full_response = "".join(content_parts)
# Untuk mendapatkan string tanggapan lengkap, hapus komentar pada baris berikut.
# print(f"\n--- Full Response ---\n{full_response}")Tanggapan
====================Response====================
def find_prime_numbers(n):
if n <= 2:
return []
primes = []
for num in range(2, n):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primes
====================Token Usage====================
Input Tokens: 66
Output Tokens: 89
Total Tokens: 155Node.js
Contoh permintaan
import OpenAI from "openai";
const client = new OpenAI(
{
// Kunci API untuk wilayah Singapura dan Beijing berbeda. 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: apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const stream = await client.chat.completions.create({
model: "qwen3-coder-plus",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks." },
],
stream: true,
// Dapatkan penggunaan token untuk permintaan ini dari chunk terakhir
stream_options: { include_usage: true },
});
const contentParts = [];
console.log("=".repeat(20) + "Response" + "=".repeat(20));
for await (const chunk of stream) {
// Chunk terakhir tidak berisi choices, tetapi berisi informasi penggunaan.
if (chunk.choices && chunk.choices.length > 0) {
const content = chunk.choices[0]?.delta?.content || "";
process.stdout.write(content);
contentParts.push(content);
} else if (chunk.usage) {
// Permintaan selesai. Cetak penggunaan token.
console.log("\n"+"=".repeat(20) + "Token Usage" + "=".repeat(20));
console.log(`Input Tokens: ${chunk.usage.prompt_tokens}`);
console.log(`Output Tokens: ${chunk.usage.completion_tokens}`);
console.log(`Total Tokens: ${chunk.usage.total_tokens}`);
}
}
const fullResponse = contentParts.join("");
// Untuk mendapatkan string tanggapan lengkap, hapus komentar pada baris berikut.
// console.log(`\n--- Full Response ---\n${fullResponse}`);
}
main();Tanggapan
====================Response====================
def find_prime_numbers(n):
if n <= 2:
return []
primes = []
for num in range(2, n):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primes
====================Token Usage====================
Input Tokens: 66
Output Tokens: 89
Total Tokens: 155curl
Contoh permintaan
URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
--no-buffer \
-d '{
"model": "qwen3-coder-plus",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks."}
],
"stream": true,
"stream_options": {"include_usage": true}
}'Tanggapan
data: {"choices":[{"delta":{"content":"","role":"assistant"},"index":0,"logprobs":null,"finish_reason":null}],"object":"chat.completion.chunk","usage":null,"created":1763085409,"system_fingerprint":null,"model":"qwen3-coder-plus","id":"chatcmpl-61f94113-f29b-4f7d-9730-551749d40ef4"}
data: {"choices":[{"finish_reason":null,"logprobs":null,"delta":{"content":"def"},"index":0}],"object":"chat.completion.chunk","usage":null,"created":1763085409,"system_fingerprint":null,"model":"qwen3-coder-plus","id":"chatcmpl-61f94113-f29b-4f7d-9730-551749d40ef4"}
data: {"choices":[{"delta":{"content":" find_prime_numbers(n"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1763085409,"system_fingerprint":null,"model":"qwen3-coder-plus","id":"chatcmpl-61f94113-f29b-4f7d-9730-551749d40ef4"}
......
data: {"choices":[{"delta":{"content":" primes"},"finish_reason":null,"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1763085409,"system_fingerprint":null,"model":"qwen3-coder-plus","id":"chatcmpl-61f94113-f29b-4f7d-9730-551749d40ef4"}
data: {"choices":[{"finish_reason":"stop","delta":{"content":""},"index":0,"logprobs":null}],"object":"chat.completion.chunk","usage":null,"created":1763085409,"system_fingerprint":null,"model":"qwen3-coder-plus","id":"chatcmpl-61f94113-f29b-4f7d-9730-551749d40ef4"}
data: {"choices":[],"object":"chat.completion.chunk","usage":{"prompt_tokens":66,"completion_tokens":89,"total_tokens":155,"prompt_tokens_details":{"cached_tokens":0}},"created":1763085409,"system_fingerprint":null,"model":"qwen3-coder-plus","id":"chatcmpl-61f94113-f29b-4f7d-9730-551749d40ef4"}
data: [DONE]DashScope
Python
Contoh permintaan
import os
from http import HTTPStatus
import dashscope
from dashscope import Generation
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks."},
]
responses = Generation.call(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. 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'),
model="qwen3-coder-plus",
messages=messages,
result_format="message",
stream=True,
# Keluaran inkremental. Setiap blok data hanya berisi konten yang baru dihasilkan.
incremental_output=True,
)
content_parts = []
print("="*20+"Response"+"="*20+"\n", end="", flush=True)
for resp in responses:
if resp.status_code == HTTPStatus.OK:
content = resp.output.choices[0].message.content
print(content, end="", flush=True)
content_parts.append(content)
if resp.output.choices[0].finish_reason == "stop":
print("\n"+"=" * 20 + "Token Usage" + "=" * 20)
print(f"Input Tokens: {resp.usage.input_tokens}")
print(f"Output Tokens: {resp.usage.output_tokens}")
print(f"Total Tokens: {resp.usage.total_tokens}")
else:
print(f"HTTP status code: {resp.status_code}")
print(f"Error code: {resp.code}")
print(f"Error message: {resp.message}")
full_response = "".join(content_parts)
# Untuk mendapatkan string tanggapan lengkap, hapus komentar pada baris berikut.
# print(f"\n--- Full Response ---\n{full_response}")Tanggapan
====================Response====================
def find_prime_numbers(n):
if n <= 2:
return []
primes = []
for num in range(2, n):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primes
====================Token Usage====================
Input Tokens: 66
Output Tokens: 89
Total Tokens: 155Java
Contoh permintaan
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import io.reactivex.Flowable;
import io.reactivex.schedulers.Schedulers;
import java.util.Arrays;
import java.util.concurrent.CountDownLatch;
import com.alibaba.dashscope.protocol.Protocol;
public class Main {
public static void main(String[] args) {
String apiKey = System.getenv("DASHSCOPE_API_KEY");
// Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
CountDownLatch latch = new CountDownLatch(1);
GenerationParam param = GenerationParam.builder()
.apiKey(apiKey)
.model("qwen3-coder-plus")
.messages(Arrays.asList(
Message.builder()
.role(Role.USER.getValue())
.content("Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks.")
.build()
))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.incrementalOutput(true) // Aktifkan keluaran inkremental untuk streaming, di mana setiap blok data hanya berisi konten yang baru dihasilkan.
.build();
try {
Flowable<GenerationResult> result = gen.streamCall(param);
StringBuilder fullContent = new StringBuilder();
System.out.println("====================Response====================");
result
.subscribeOn(Schedulers.io()) // Jalankan permintaan pada Thread I/O.
.observeOn(Schedulers.computation()) // Proses tanggapan pada thread komputasi.
.subscribe(
// onNext: Proses setiap chunk tanggapan.
message -> {
String content = message.getOutput().getChoices().get(0).getMessage().getContent();
String finishReason = message.getOutput().getChoices().get(0).getFinishReason();
// Keluarkan konten.
System.out.print(content);
fullContent.append(content);
// Ketika finishReason tidak null, itu menunjukkan chunk terakhir. Keluarkan informasi penggunaan.
if (finishReason != null && !"null".equals(finishReason)) {
System.out.println("\n====================Token Usage====================");
System.out.println("Input Tokens: " + message.getUsage().getInputTokens());
System.out.println("Output Tokens: " + message.getUsage().getOutputTokens());
System.out.println("Total Tokens: " + message.getUsage().getTotalTokens());
}
System.out.flush(); // Segera flush output.
},
// onError: Tangani error.
error -> {
System.err.println("\nRequest failed: " + error.getMessage());
latch.countDown();
},
// onComplete: Callback penyelesaian.
() -> {
System.out.println(); // Tambahkan baris baru.
// Untuk mendapatkan string tanggapan lengkap, hapus komentar pada baris berikut.
// System.out.println("Full response: " + fullContent.toString());
latch.countDown();
}
);
// Tunggu tugas asinkron selesai di thread utama.
latch.await();
} catch (Exception e) {
System.err.println("Request exception: " + e.getMessage());
e.printStackTrace();
}
}
}Tanggapan
====================Response====================
def find_prime_numbers(n):
if n <= 2:
return []
primes = []
for num in range(2, n):
is_prime = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
return primes
====================Token Usage====================
Input Tokens: 66
Output Tokens: 89
Total Tokens: 155curl
Contoh permintaan
URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-SSE: enable" \
-d '{
"model": "qwen3-coder-plus",
"input":{
"messages":[
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Write a Python function named find_prime_numbers that accepts an integer n as a parameter and returns a list of all prime numbers less than n. Do not output any content other than the code and do not use Markdown code blocks."
}
]
},
"parameters": {
"result_format": "message",
"incremental_output":true
}
}'Nilai kembali
id:1
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"def","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":67,"output_tokens":1,"input_tokens":66,"prompt_tokens_details":{"cached_tokens":0}},"request_id":"fadfc21b-4411-40d5-b143-8c3573284c42"}
id:2
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":" find_prime_numbers(n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":71,"output_tokens":5,"input_tokens":66,"prompt_tokens_details":{"cached_tokens":0}},"request_id":"fadfc21b-4411-40d5-b143-8c3573284c42"}
id:3
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"):\n if n","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":75,"output_tokens":9,"input_tokens":66,"prompt_tokens_details":{"cached_tokens":0}},"request_id":"fadfc21b-4411-40d5-b143-8c3573284c42"}
...
id:26
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":" primes","role":"assistant"},"finish_reason":"null"}]},"usage":{"total_tokens":155,"output_tokens":89,"input_tokens":66,"prompt_tokens_details":{"cached_tokens":0}},"request_id":"fadfc21b-4411-40d5-b143-8c3573284c42"}
id:27
event:result
:HTTP_STATUS/200
data:{"output":{"choices":[{"message":{"content":"","role":"assistant"},"finish_reason":"stop"}]},"usage":{"total_tokens":155,"output_tokens":89,"input_tokens":66,"prompt_tokens_details":{"cached_tokens":0}},"request_id":"fadfc21b-4411-40d5-b143-8c3573284c42"}Pemanggilan fungsi
Untuk memungkinkan model berinteraksi dengan lingkungan eksternal, seperti membaca dan menulis file, memanggil API, serta berinteraksi dengan database, Anda dapat menyediakan serangkaian tool. Model akan menentukan apakah dan bagaimana memanggil tool tersebut berdasarkan instruksi Anda. Untuk informasi selengkapnya, lihat Pemanggilan fungsi.
Proses pemanggilan tool lengkap mencakup langkah-langkah berikut:
Definisikan tool dan buat permintaan: Definisikan daftar tool dalam permintaan Anda dan minta model untuk melakukan tugas yang memerlukan tool tersebut.
Eksekusi tool: Uraikan
tool_callsdari tanggapan model dan panggil fungsi tool lokal yang sesuai untuk menjalankan tugas.Kembalikan hasil eksekusi: Kemas hasil eksekusi tool ke dalam format yang diperlukan dan kirimkan kembali ke model. Hal ini memungkinkan model menyelesaikan tugas akhir berdasarkan hasil tersebut.
Contoh berikut menunjukkan cara memandu model untuk menghasilkan kode dan menggunakan tool write_file untuk menyimpannya ke file lokal.
Kompatibel dengan OpenAI
Python
Contoh permintaan
import os
import json
from openai import OpenAI
client = OpenAI(
# Kunci API untuk wilayah Singapura dan Beijing berbeda. 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. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
tools = [
{
"type": "function",
"function": {
"name": "write_file",
"description": "Writes content to the specified file. If the file does not exist, it is created.",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The relative or absolute path of the target file."
},
"content": {
"type": "string",
"description": "The string content to write to the file."
}
},
"required": ["path", "content"]
}
}
}
]
# Implementasi fungsi tool
def write_file(path: str, content: str) -> str:
"""Write file content"""
try:
# Pastikan direktori ada
os.makedirs(os.path.dirname(path),
exist_ok=True) if os.path.dirname(path) else None
with open(path, 'w', encoding='utf-8') as f:
f.write(content)
return f"Success: The file '{path}' has been written."
except Exception as e:
return f"Error: An exception occurred while writing the file - {str(e)}"
messages = [{"role": "user", "content": "Write a Python script for quick sort and name it quick_sort.py."}]
completion = client.chat.completions.create(
model="qwen3-coder-plus",
messages=messages,
tools=tools
)
assistant_output = completion.choices[0].message
if assistant_output.content is None:
assistant_output.content = ""
messages.append(assistant_output)
# Jika tidak diperlukan pemanggilan tool, cetak kontennya langsung.
if assistant_output.tool_calls is None:
print(f"No tool call needed, responding directly: {assistant_output.content}")
else:
# Masuk ke loop pemanggilan tool
while assistant_output.tool_calls is not None:
for tool_call in assistant_output.tool_calls:
tool_call_id = tool_call.id
func_name = tool_call.function.name
arguments = json.loads(tool_call.function.arguments)
print(f"Calling tool [{func_name}] with arguments: {arguments}")
# Eksekusi tool
tool_result = write_file(**arguments)
# Buat pesan balasan tool
tool_message = {
"role": "tool",
"tool_call_id": tool_call_id,
"content": tool_result,
}
print(f"Tool returned: {tool_message['content']}")
messages.append(tool_message)
# Panggil model lagi untuk mendapatkan tanggapan bahasa alami yang dirangkum
response = client.chat.completions.create(
model="qwen3-coder-plus",
messages=messages,
tools=tools
)
assistant_output = response.choices[0].message
if assistant_output.content is None:
assistant_output.content = ""
messages.append(assistant_output)
print(f"Model's final response: {assistant_output.content}")
Tanggapan
Calling tool [write_file] with arguments: {'content': 'def quick_sort(arr):\\n if len(arr) <= 1:\\n return arr\\n pivot = arr[len(arr) // 2]\\n left = [x for x in arr if x < pivot]\\n middle = [x for x in arr if x == pivot]\\n right = [x for x in arr if x > pivot]\\n return quick_sort(left) + middle + quick_sort(right)\\n\\nif __name__ == \\"__main__\\":\\n example_list = [3, 6, 8, 10, 1, 2, 1]\\n print(\\"Original list:\\", example_list)\\n sorted_list = quick_sort(example_list)\\n print(\\"Sorted list:\\", sorted_list)', 'path': 'quick_sort.py'}
Tool returned: Success: The file 'quick_sort.py' has been written.
Model's final response: Okay, I have created the file named `quick_sort.py` for you, which contains the Python implementation of quick sort. You can run this file to see the example output. Let me know if you need any further modifications or explanations!Node.js
Contoh permintaan
import OpenAI from "openai";
import fs from "fs/promises";
import path from "path";
const client = new OpenAI({
// Kunci API untuk wilayah Singapura dan Beijing berbeda. 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: apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
const tools = [
{
"type": "function",
"function": {
"name": "write_file",
"description": "Writes content to the specified file. If the file does not exist, it is created.",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The relative or absolute path of the target file."
},
"content": {
"type": "string",
"description": "The string content to write to the file."
}
},
"required": ["path", "content"]
}
}
}
];
// Implementasi fungsi tool
async function write_file(filePath, content) {
try:
// Untuk alasan keamanan, fitur penulisan file dinonaktifkan secara default. Untuk menggunakannya, hapus komentar pada kode dan pastikan jalurnya aman.
// const dir = path.dirname(filePath);
// if (dir) {
// await fs.mkdir(dir, { recursive: true });
// }
// await fs.writeFile(filePath, content, "utf-8");
return `Success: The file '${filePath}' has been written.`;
} catch (error) {
return `Error: An exception occurred while writing the file - ${error.message}`;
}
}
const messages = [{"role": "user", "content": "Write a Python script for quick sort and name it quick_sort.py."}];
async function main() {
const completion = await client.chat.completions.create({
model: "qwen3-coder-plus",
messages: messages,
tools: tools
});
let assistant_output = completion.choices[0].message;
// Pastikan konten tidak null
if (!assistant_output.content) assistant_output.content = "";
messages.push(assistant_output);
// Jika tidak diperlukan pemanggilan tool, cetak kontennya langsung.
if (!assistant_output.tool_calls) {
console.log(`No tool call needed, responding directly: ${assistant_output.content}`);
} else {
// Masuk ke loop pemanggilan tool
while (assistant_output.tool_calls) {
for (const tool_call of assistant_output.tool_calls) {
const tool_call_id = tool_call.id;
const func_name = tool_call.function.name;
const args = JSON.parse(tool_call.function.arguments);
console.log(`Calling tool [${func_name}] with arguments:`, args);
// Eksekusi tool
const tool_result = await write_file(args.path, args.content);
// Buat pesan balasan tool
const tool_message = {
"role": "tool",
"tool_call_id": tool_call_id,
"content": tool_result
};
console.log(`Tool returned: ${tool_message.content}`);
messages.push(tool_message);
}
// Panggil model lagi untuk mendapatkan tanggapan bahasa alami yang dirangkum
const response = await client.chat.completions.create({
model: "qwen3-coder-plus",
messages: messages,
tools: tools
});
assistant_output = response.choices[0].message;
if (!assistant_output.content) assistant_output.content = "";
messages.push(assistant_output);
}
console.log(`Model's final response: ${assistant_output.content}`);
}
}
main();
Tanggapan
Calling tool [write_file] with arguments: {
content: 'def quick_sort(arr):\\n if len(arr) <= 1:\\n return arr\\n pivot = arr[len(arr) // 2]\\n left = [x for x in arr if x < pivot]\\n middle = [x for x in arr if x == pivot]\\n right = [x for x in arr if x > pivot]\\n return quick_sort(left) + middle + quick_sort(right)\\n\\nif __name__ == \\"__main__\\":\\n example_list = [3, 6, 8, 10, 1, 2, 1]\\n print(\\"Original list:\\", example_list)\\n sorted_list = quick_sort(example_list)\\n print(\\"Sorted list:\\", sorted_list)',
path: 'quick_sort.py'
}
Tool returned: Success: The file 'quick_sort.py' has been written.
Model's final response: The `quick_sort.py` file has been successfully created with the Python implementation of quick sort. You can run the file to see the sorting result for the example list. Let me know if you need any further modifications or explanations!curl
Contoh permintaan
Contoh ini menunjukkan langkah pertama proses pemanggilan tool: membuat permintaan dan mendapatkan maksud model untuk memanggil tool.
URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-plus",
"messages": [
{
"role": "user",
"content": "Write a Python script for quick sort and name it quick_sort.py."
}
],
"tools": [
{
"type": "function",
"function": {
"name": "write_file",
"description": "Writes content to the specified file. If the file does not exist, it is created.",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The relative or absolute path of the target file."
},
"content": {
"type": "string",
"description": "The string content to write to the file."
}
},
"required": ["path", "content"]
}
}
}
]
}'Tanggapan
{
"choices": [
{
"message": {
"content": "",
"role": "assistant",
"tool_calls": [
{
"index": 0,
"id": "call_0ca7505bb6e44471a40511e5",
"type": "function",
"function": {
"name": "write_file",
"arguments": "{\"content\": \"def quick_sort(arr):\\\\n if len(arr) <= 1:\\\\n return arr\\\\n pivot = arr[len(arr) // 2]\\\\n left = [x for x in arr if x < pivot]\\\\n middle = [x for x in arr if x == pivot]\\\\n right = [x for x in arr if x > pivot]\\\\n return quick_sort(left) + middle + quick_sort(right)\\\\n\\\\nif __name__ == \\\\\\\"__main__\\\\\\\":\\\\n example_list = [3, 6, 8, 10, 1, 2, 1]\\\\n print(\\\\\\\"Original list:\\\\\\\", example_list)\\\\n sorted_list = quick_sort(example_list)\\\\n print(\\\\\\\"Sorted list:\\\\\\\", sorted_list)\", \"path\": \"quick_sort.py\"}"
}
}
]
},
"finish_reason": "tool_calls",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 494,
"completion_tokens": 193,
"total_tokens": 687,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1761620025,
"system_fingerprint": null,
"model": "qwen3-coder-plus",
"id": "chatcmpl-20e96159-beea-451f-b3a4-d13b218112b5"
}DashScope
Python
Contoh permintaan
import os
import json
import dashscope
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
tools = [
{
"type": "function",
"function": {
"name": "write_file",
"description": "Writes content to the specified file. If the file does not exist, it is created.",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The relative or absolute path of the target file."
},
"content": {
"type": "string",
"description": "The string content to write to the file."
}
},
"required": ["path", "content"]
}
}
}
]
# Implementasi fungsi tool
def write_file(path: str, content: str) -> str:
"""Write file content"""
try:
# Untuk alasan keamanan, fitur penulisan file dinonaktifkan secara default. Untuk menggunakannya, hapus komentar pada kode dan pastikan jalurnya aman.
# os.makedirs(os.path.dirname(path),exist_ok=True) if os.path.dirname(path) else None
# with open(path, 'w', encoding='utf-8') as f:
# f.write(content)
return f"Success: The file '{path}' has been written."
except Exception as e:
return f"Error: An exception occurred while writing the file - {str(e)}"
messages = [{"role": "user", "content": "Write a Python script for quick sort and name it quick_sort.py."}]
response = dashscope.Generation.call(
# 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'),
model='qwen3-coder-plus',
messages=messages,
tools=tools,
result_format='message'
)
if response.status_code == 200:
assistant_output = response.output.choices[0].message
messages.append(assistant_output)
# Jika tidak diperlukan pemanggilan tool, cetak kontennya langsung.
if "tool_calls" not in assistant_output or not assistant_output["tool_calls"]:
print(f"No tool call needed, responding directly: {assistant_output['content']}")
else:
# Masuk ke loop pemanggilan tool
while "tool_calls" in assistant_output and assistant_output["tool_calls"]:
for tool_call in assistant_output["tool_calls"]:
func_name = tool_call["function"]["name"]
arguments = json.loads(tool_call["function"]["arguments"])
tool_call_id = tool_call.get("id")
print(f"Calling tool [{func_name}] with arguments: {arguments}")
# Eksekusi tool
tool_result = write_file(**arguments)
# Buat pesan balasan tool
tool_message = {
"role": "tool",
"content": tool_result,
"tool_call_id": tool_call_id
}
print(f"Tool returned: {tool_message['content']}")
messages.append(tool_message)
# Panggil model lagi untuk mendapatkan tanggapan bahasa alami yang dirangkum
response = dashscope.Generation.call(
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-coder-plus',
messages=messages,
tools=tools,
result_format='message'
)
if response.status_code == 200:
print(f"Model's final response: {response.output.choices[0].message.content}")
assistant_output = response.output.choices[0].message
messages.append(assistant_output)
else:
print(f"Error during summary response: {response}")
break
else:
print(f"Execution error: {response}")
Tanggapan
Calling tool [write_file] with arguments: {'content': 'def quick_sort(arr):\\n if len(arr) <= 1:\\n return arr\\n pivot = arr[len(arr) // 2]\\n left = [x for x in arr if x < pivot]\\n middle = [x for x in arr if x == pivot]\\n right = [x for x in arr if x > pivot]\\n return quick_sort(left) + middle + quick_sort(right)\\n\\nif __name__ == \\"__main__\\":\\n example_list = [3, 6, 8, 10, 1, 2, 1]\\n print(\\"Original list:\\", example_list)\\n sorted_list = quick_sort(example_list)\\n print(\\"Sorted list:\\", sorted_list)', 'path': 'quick_sort.py'}
Tool returned: Success: The file 'quick_sort.py' has been written.
Model's final response: The `quick_sort.py` file has been successfully created with the Python implementation of quick sort. You can run the file to see the sorting result for the example list. Let me know if you need any further modifications or explanations!Java
Contoh permintaan
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.protocol.Protocol;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.tools.FunctionDefinition;
import com.alibaba.dashscope.tools.ToolCallBase;
import com.alibaba.dashscope.tools.ToolCallFunction;
import com.alibaba.dashscope.tools.ToolFunction;
import com.alibaba.dashscope.utils.JsonUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
/**
* Write file content
* @param arguments A JSON string passed by the model, containing the parameters required by the tool.
* @return A string with the result of the tool execution.
*/
public static String writeFile(String arguments) {
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode argsNode = objectMapper.readTree(arguments);
String path = argsNode.get("path").asText();
String content = argsNode.get("content").asText();
// Untuk alasan keamanan, fitur penulisan file dinonaktifkan secara default. Untuk menggunakannya, hapus komentar pada kode dan pastikan jalurnya aman.
// File file = new File(path);
// File parentDir = file.getParentFile();
// if (parentDir != null && !parentDir.exists()) {
// parentDir.mkdirs();
// }
// Files.write(Paths.get(path), content.getBytes(StandardCharsets.UTF_8));
return "Success: The file '" + path + "' has been written.";
} catch (Exception e) {
return "Error: An exception occurred while writing the file - " + e.getMessage();
}
}
public static void main(String[] args) {
try {
// Definisikan skema parameter tool
String writePropertyParams =
"{\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\",\"description\":\"The relative or absolute path of the target file.\"},\"content\":{\"type\":\"string\",\"description\":\"The string content to write to the file.\"}},\"required\":[\"path\",\"content\"]}";
FunctionDefinition writeFileFunction = FunctionDefinition.builder()
.name("write_file")
.description("Writes content to the specified file. If the file does not exist, it is created.")
.parameters(JsonUtils.parseString(writePropertyParams).getAsJsonObject())
.build();
// Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
String userInput = "Write a Python script for quick sort and name it quick_sort.py.";
List<Message> messages = new ArrayList<>();
messages.add(Message.builder().role(Role.USER.getValue()).content(userInput).build());
// Panggilan pertama ke model
GenerationParam param = GenerationParam.builder()
.model("qwen3-coder-plus")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.messages(messages)
.tools(Arrays.asList(ToolFunction.builder().function(writeFileFunction).build()))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
GenerationResult result = gen.call(param);
Message assistantOutput = result.getOutput().getChoices().get(0).getMessage();
messages.add(assistantOutput);
// Jika tidak diperlukan pemanggilan tool, cetak kontennya langsung.
if (assistantOutput.getToolCalls() == null || assistantOutput.getToolCalls().isEmpty()) {
System.out.println("No tool call needed, responding directly: " + assistantOutput.getContent());
} else {
// Masuk ke loop pemanggilan tool
while (assistantOutput.getToolCalls() != null && !assistantOutput.getToolCalls().isEmpty()) {
for (ToolCallBase toolCall : assistantOutput.getToolCalls()) {
ToolCallFunction functionCall = (ToolCallFunction) toolCall;
String funcName = functionCall.getFunction().getName();
String arguments = functionCall.getFunction().getArguments();
System.out.println("Calling tool [" + funcName + "] with arguments: " + arguments);
// Eksekusi tool
String toolResult = writeFile(arguments);
// Buat pesan balasan tool
Message toolMessage = Message.builder()
.role("tool")
.toolCallId(toolCall.getId())
.content(toolResult)
.build();
System.out.println("Tool returned: " + toolMessage.getContent());
messages.add(toolMessage);
}
// Panggil model lagi untuk mendapatkan tanggapan bahasa alami yang dirangkum
param.setMessages(messages);
result = gen.call(param);
assistantOutput = result.getOutput().getChoices().get(0).getMessage();
messages.add(assistantOutput);
}
System.out.println("Model's final response: " + assistantOutput.getContent());
}
} catch (NoApiKeyException | InputRequiredException e) {
System.err.println("Error: " + e.getMessage());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Tanggapan
Calling tool [write_file] with arguments: {"content": "def quick_sort(arr):\\n if len(arr) <= 1:\\n return arr\\n pivot = arr[len(arr) // 2]\\n left = [x for x in arr if x < pivot]\\n middle = [x for x in arr if x == pivot]\\n right = [x for x in arr if x > pivot]\\n return quick_sort(left) + middle + quick_sort(right)\\n\\nif __name__ == \\\"__main__\\\":\\n example_array = [3, 6, 8, 10, 1, 2, 1]\\n print(\\\"Original array:\\\", example_array)\\n sorted_array = quick_sort(example_array)\\n print(\\\"Sorted array:\\\", sorted_array)", "path": "quick_sort.py"}
Tool returned: Success: The file 'quick_sort.py' has been written.
Model's final response: I have successfully created the Python code file `quick_sort.py` for you. This file contains a `quick_sort` function and an example of its usage. You can run it in your terminal or editor to test the quick sort functionality.curl
Contoh permintaan
Contoh ini menunjukkan langkah pertama proses pemanggilan tool: membuat permintaan dan mendapatkan maksud model untuk memanggil tool.
URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
curl --location "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "qwen3-coder-plus",
"input": {
"messages": [{
"role": "user",
"content": "Write a Python script for quick sort and name it quick_sort.py."
}]
},
"parameters": {
"result_format": "message",
"tools": [
{
"type": "function",
"function": {
"name": "write_file",
"description": "Writes content to the specified file. If the file does not exist, it is created.",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The relative or absolute path of the target file."
},
"content": {
"type": "string",
"description": "The string content to write to the file."
}
},
"required": ["path", "content"]
}
}
}
]
}
}'Tanggapan
{
"output": {
"choices": [
{
"finish_reason": "tool_calls",
"message": {
"role": "assistant",
"tool_calls": [
{
"function": {
"name": "write_file",
"arguments": "{\"content\": \"def quick_sort(arr):\\\\n if len(arr) <= 1:\\\\n return arr\\\\n pivot = arr[len(arr) // 2]\\\\n left = [x for x in arr if x < pivot]\\\\n middle = [x for x in arr if x == pivot]\\\\n right = [x for x in arr if x > pivot]\\\\n return quick_sort(left) + middle + quick_sort(right)\\\\n\\\\nif __name__ == \\\\\\\"__main__\\\\\\\":\\\\n example_list = [3, 6, 8, 10, 1, 2, 1]\\\\n print(\\\\\\\"Original list:\\\\\\\", example_list)\\\\n sorted_list = quick_sort(example_list)\\\\n print(\\\\\\\"Sorted list:\\\\\\\", sorted_list), \"path\": \"quick_sort.py\"}"
},
"index": 0,
"id": "call_645b149bbd274e8bb3789aae",
"type": "function"
}
],
"content": ""
}
}
]
},
"usage": {
"total_tokens": 684,
"output_tokens": 193,
"input_tokens": 491,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"request_id": "d2386acd-fce3-9d0f-8015-c5f3a8bf9f5c"
}Penyelesaian kode
Qwen-Coder mendukung dua metode untuk penyelesaian kode. Anda dapat memilih salah satu berdasarkan kebutuhan Anda:
Mode parsial: Metode ini direkomendasikan. Implementasinya sederhana, mendukung penyelesaian awalan (prefix completion), dan tersedia untuk semua model Qwen-Coder di semua wilayah.
API Completions: API ini hanya mendukung seri model
qwen2.5-coderdi wilayah China (Beijing). API ini mendukung penyelesaian awalan (prefix completion) dan penyelesaian isi tengah (fill-in-the-middle completion).
Mode parsial
Fitur ini memungkinkan model secara otomatis melengkapi sisa kode Anda berdasarkan awalan (prefix) yang Anda berikan.
Anda dapat mengaktifkan fitur ini dengan menambahkan pesan dengan role diatur ke assistant ke daftar messages dan mengatur partial: true. content dari pesan assistant adalah awalan kode yang Anda berikan. Untuk informasi selengkapnya, lihat Mode parsial.
Kompatibel dengan OpenAI
Python
Contoh permintaan
import os
from openai import OpenAI
client = OpenAI(
# 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. Jika Anda menggunakan model di wilayah Beijing, ganti base_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="qwen3-coder-plus",
messages=[{
"role": "user",
"content": "Help me write a Python script to generate prime numbers up to 100. Do not output non-code content or Markdown code blocks."
},
{
"role": "assistant",
"content": "def generate_prime_number",
"partial": True
}]
)
print(completion.choices[0].message.content)
Tanggapan
(n):
primes = []
for i in range(2, n+1):
is_prime = True
for j in range(2, int(i**0.5)+1):
if i % j == 0:
is_prime = False
break
if is_prime:
primes.append(i)
return primes
prime_numbers = generate_prime_number(100)
print(prime_numbers)Node.js
Contoh permintaan
import OpenAI from "openai";
const client = new OpenAI(
{
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/compatible-mode/v1
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const completion = await client.chat.completions.create({
model: "qwen3-coder-plus",
messages: [
{ role: "user", content: "Help me write a Python script to generate prime numbers up to 100. Do not output non-code content or Markdown code blocks." },
{ role: "assistant", content: "def generate_prime_number", partial: true}
],
});
console.log(completion.choices[0].message.content);
}
main();Hasil
(n):
primes = []
for i in range(2, n+1):
is_prime = True
for j in range(2, int(i**0.5)+1):
if i % j == 0:
is_prime = False
break
if is_prime:
primes.append(i)
return primes
prime_numbers = generate_prime_number(100)
print(prime_numbers)curl
Contoh permintaan
URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-plus",
"messages": [{
"role": "user",
"content": "Help me write a Python script to generate prime numbers up to 100. Do not output non-code content or Markdown code blocks."
},
{
"role": "assistant",
"content": "def generate_prime_number",
"partial": true
}]
}'Tanggapan
{
"choices": [
{
"message": {
"content": "(n):\n primes = []\n for num in range(2, n + 1):\n is_prime = True\n for i in range(2, int(num ** 0.5) + 1):\n if num % i == 0:\n is_prime = False\n break\n if is_prime:\n primes.append(num)\n return primes\n\nprime_numbers = generate_prime_number(100)\nprint(prime_numbers)",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 38,
"completion_tokens": 93,
"total_tokens": 131,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1761634556,
"system_fingerprint": null,
"model": "qwen3-coder-plus",
"id": "chatcmpl-c108050a-bb6d-4423-9d36-f64aa6a32976"
}DashScope
Python
Contoh permintaan
from http import HTTPStatus
import dashscope
import os
# Berikut ini adalah base_url untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti base_url dengan: https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{
"role": "user",
"content": "Help me write a Python script to generate prime numbers up to 100. Do not output non-code content or Markdown code blocks."
},
{
"role": "assistant",
"content": "def generate_prime_number",
"partial": True
}]
response = dashscope.Generation.call(
# 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'),
model='qwen3-coder-plus',
messages=messages,
result_format='message',
)
if response.status_code == HTTPStatus.OK:
print(response.output.choices[0].message.content)
else:
print(f"HTTP status code: {response.status_code}")
print(f"Error code: {response.code}")
print(f"Error message: {response.message}")
Tanggapan
(n):
primes = []
for i in range(2, n+1):
is_prime = True
for j in range(2, int(i**0.5)+1):
if i % j == 0:
is_prime = False
break
if is_prime:
primes.append(i)
return primes
prime_numbers = generate_prime_number(100)
print(prime_numbers)curl
Contoh permintaan
URL berikut ini untuk wilayah Singapura. Jika Anda menggunakan model di wilayah Beijing, ganti URL dengan: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
curl -X POST "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-plus",
"input":{
"messages":[{
"role": "user",
"content": "Help me write a Python script to generate prime numbers up to 100. Do not output non-code content or Markdown code blocks."
},
{
"role": "assistant",
"content": "def generate_prime_number",
"partial": true
}]
},
"parameters": {
"result_format": "message"
}
}'Tanggapan
{
"output": {
"choices": [
{
"message": {
"content": "(n):\n prime_list = []\n for i in range(2, n+1):\n is_prime = True\n for j in range(2, int(i**0.5)+1):\n if i % j == 0:\n is_prime = False\n break\n if is_prime:\n prime_list.append(i)\n return prime_list\n\nprime_numbers = generate_prime_number(100)\nprint(prime_numbers)",
"role": "assistant"
},
"finish_reason": "stop"
}
]
},
"usage": {
"total_tokens": 131,
"output_tokens": 92,
"input_tokens": 39,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"request_id": "9917f629-e819-4519-af44-b0e677e94b2c"
}API Completions
API Completions hanya berlaku untuk model di wilayah China (Beijing) dan memerlukan Kunci API untuk wilayah China (Beijing).
Model yang didukung:
qwen2.5-coder-0.5b-instruct, qwen2.5-coder-1.5b-instruct, qwen2.5-coder-3b-instruct, qwen2.5-coder-7b-instruct, qwen2.5-coder-14b-instruct, qwen2.5-coder-32b-instruct, qwen-coder-turbo-0919, qwen-coder-turbo-latest, dan qwen-coder-turbo
API Completions menggunakan tag khusus fim (Fill-in-the-Middle) dalam prompt untuk menginstruksikan model melakukan penyelesaian.
Penyelesaian awalan
Templat prompt:
<|fim_prefix|>{prefix_content}<|fim_suffix|><|fim_prefix|>dan<|fim_suffix|>adalah token khusus yang menginstruksikan model untuk melengkapi teks. Jangan ubah token ini.Ganti
{prefix_content}dengan informasi awalan, seperti nama fungsi, parameter input, dan instruksi penggunaan.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
api_key=os.getenv("DASHSCOPE_API_KEY")
)
completion = client.completions.create(
model="qwen2.5-coder-32b-instruct",
prompt="<|fim_prefix|>def quick_sort(arr):<|fim_suffix|>",
)
print(completion.choices[0].text)import OpenAI from "openai";
const client = new OpenAI(
{
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const completion = await client.completions.create({
model: "qwen2.5-coder-32b-instruct",
prompt: "<|fim_prefix|>def quick_sort(arr):<|fim_suffix|>",
});
console.log(completion.choices[0].text)
}
main();curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-coder-32b-instruct",
"prompt": "<|fim_prefix|>def quick_sort(arr):<|fim_suffix|>"
}'Penyelesaian awalan dan akhiran
Templat prompt:
<|fim_prefix|>{prefix_content}<|fim_suffix|>{suffix_content}<|fim_middle|><|fim_prefix|>,<|fim_suffix|>, dan<|fim_middle|>adalah token khusus yang menginstruksikan model untuk melengkapi teks. Jangan ubah token ini.Ganti
{prefix_content}dengan informasi awalan, seperti nama fungsi, parameter input, dan instruksi penggunaan.Ganti
{suffix_content}dengan informasi akhiran, seperti parameter kembalian fungsi.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
api_key=os.getenv("DASHSCOPE_API_KEY")
)
prefix_content = """def reverse_words_with_special_chars(s):
'''
Reverses each word in a string while preserving the position of non-alphabetic characters and maintaining word order.
Example:
reverse_words_with_special_chars("Hello, world!") -> "olleH, dlrow!"
Parameters:
s (str): The input string, which may contain punctuation.
Returns:
str: The processed string with reversed words, where the positions of non-alphabetic characters are unchanged.
'''
"""
suffix_content = "return result"
completion = client.completions.create(
model="qwen2.5-coder-32b-instruct",
prompt=f"<|fim_prefix|>{prefix_content}<|fim_suffix|>{suffix_content}<|fim_middle|>",
)
print(completion.choices[0].text)import OpenAI from 'openai';
const client = new OpenAI({
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
apiKey: process.env.DASHSCOPE_API_KEY
});
const prefixContent = `def reverse_words_with_special_chars(s):
'''
Reverses each word in a string while preserving the position of non-alphabetic characters and maintaining word order.
Example:
reverse_words_with_special_chars("Hello, world!") -> "olleH, dlrow!"
Parameters:
s (str): The input string, which may contain punctuation.
Returns:
str: The processed string with reversed words, where the positions of non-alphabetic characters are unchanged.
'''
`;
const suffixContent = "return result";
async function main() {
const completion = await client.completions.create({
model: "qwen2.5-coder-32b-instruct",
prompt: `<|fim_prefix|>${prefixContent}<|fim_suffix|>${suffixContent}<|fim_middle|>`
});
console.log(completion.choices[0].text);
}
main();curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-coder-32b-instruct",
"prompt": "<|fim_prefix|>def reverse_words_with_special_chars(s):\n\"\"\"\nReverses each word in a string while preserving the position of non-alphabetic characters and maintaining word order.\n Example:\n reverse_words_with_special_chars(\"Hello, world!\") -> \"olleH, dlrow!\"\n Parameters:\n s (str): The input string, which may contain punctuation.\n Returns:\n str: The processed string with reversed words, where the positions of non-alphabetic characters are unchanged.\n\"\"\"\n<|fim_suffix|>return result<|fim_middle|>"
}'Produksi
Untuk mengoptimalkan efisiensi dan mengurangi biaya Qwen-Coder, pertimbangkan hal-hal berikut:
Aktifkan keluaran streaming: Atur
stream=Trueuntuk mengembalikan hasil antara secara real time. Ini mengurangi risiko timeout dan meningkatkan pengalaman pengguna.Turunkan parameter suhu: Tugas pembuatan kode biasanya memerlukan hasil yang deterministik dan akurat. Atur parameter
temperatureke nilai antara0,1dan0,3untuk mengurangi keacakan hasil yang dihasilkan.Gunakan model yang mendukung cache konteks: Untuk skenario dengan banyak awalan berulang, seperti penyelesaian kode dan tinjauan kode, gunakan model yang mendukung cache konteks, seperti qwen3-coder-plus dan qwen3-coder-flash, untuk mengurangi overhead.
Kontrol jumlah tool: Untuk memastikan panggilan model yang efisien dan hemat biaya, jangan meneruskan lebih dari 20
toolsekaligus. Meneruskan banyak deskripsi tool menghabiskan terlalu banyak token input. Hal ini meningkatkan biaya, mengurangi kecepatan respons, dan menyulitkan model memilih tool yang tepat. Untuk informasi selengkapnya, lihat Pemanggilan fungsi.
Penagihan dan batas laju
Penagihan dasar: Anda dikenai biaya untuk setiap permintaan berdasarkan jumlah Token input dan Token output. Harga satuan bervariasi tergantung model. Untuk harga spesifik, lihat Daftar model.
Item penagihan khusus:
Harga bertingkat: Model seri
qwen3-codermenggunakan struktur harga bertingkat. Jika jumlah token input dalam satu permintaan mencapai tingkat tertentu, semua token input dan output untuk permintaan tersebut ditagih dengan harga tingkat tersebut.Cache konteks: Untuk model yang mendukung cache konteks, seperti
qwen3-coder-plusdanqwen3-coder-flash, mekanisme caching dapat secara signifikan mengurangi biaya ketika banyak permintaan berisi sejumlah besar input berulang, seperti selama tinjauan kode. Teks input yang mengenai cache implisit ditagih sebesar 20% dari harga standar, dan teks input yang mengenai cache eksplisit ditagih sebesar 10% dari harga standar. Untuk informasi selengkapnya, lihat Cache konteks.Pemanggilan fungsi: Saat Anda menggunakan fitur pemanggilan tool, deskripsi tool yang Anda definisikan dalam parameter
toolsdihitung sebagai konten input dan termasuk dalam total jumlahTokenuntuk penagihan.
Batas laju: Panggilan API dikenai batas ganda untuk permintaan per menit (RPM) dan token per menit (TPM). Untuk informasi selengkapnya, lihat Batas laju.
Kuota gratis (hanya wilayah Singapura): Periode validitas dimulai saat Anda mengaktifkan Alibaba Cloud Model Studio atau saat permintaan model Anda disetujui. Dalam periode validitas 90 hari, setiap model Qwen-Coder menyediakan 1 juta token kuota gratis untuk pengguna baru.
Referensi API
Untuk parameter input dan output Qwen-Coder, lihat Qwen.
FAQ
Mengapa banyak token dikonsumsi saat saya menggunakan alat pengembangan seperti Qwen Code dan Claude Code?
Saat Anda menggunakan alat pengembangan eksternal untuk memanggil model Qwen-Coder, alat tersebut mungkin melakukan beberapa panggilan API, yang dapat mengakibatkan konsumsi token tinggi. Mulai alat dalam direktori proyek tertentu karena terlalu banyak file di direktori startup, seperti direktori root, meningkatkan konsumsi token. Aktifkan fitur Hanya kuota gratis untuk menghindari biaya tambahan setelah kuota gratis Anda habis.
Bagaimana cara melihat penggunaan model saya?
Satu jam setelah Anda memanggil model, buka halaman Observasi Model (Singapura atau Beijing). Atur kondisi kueri, seperti rentang waktu dan ruang kerja. Kemudian, di area Models, temukan model target dan klik Monitor di kolom Actions untuk melihat statistik panggilan model. Untuk informasi selengkapnya, lihat dokumen Observasi Model.
Data diperbarui setiap jam. Selama periode puncak, mungkin terjadi latensi tingkat jam.

Bagaimana cara membuat model hanya mengeluarkan kode, tanpa teks penjelasan apa pun?
Anda dapat menggunakan metode berikut:
Batasan prompt: Berikan instruksi yang jelas dalam prompt. Misalnya: "Kembalikan hanya kode. Jangan sertakan penjelasan, komentar, atau tag Markdown apa pun."
Atur urutan
stop: Gunakan frasa sepertistop=["\n# Explanation:", "Description", "Explanation:", "Note:"]untuk menghentikan model lebih awal saat mulai menghasilkan teks penjelasan. Untuk informasi selengkapnya, lihat Referensi API Qwen.