Qwen3-Coder 模型具有强大的代码能力,可通过 API 将其集成到业务中。
开发工具集成方法请参见 Claude Code、Qwen Code。
模型概览
商业版模型
模型名称 | 版本 | 上下文长度 | 最大输入 | 最大输出 | 输入成本 | 输出成本 | 免费额度 |
(Token数) | (每千Token) | ||||||
qwen3-coder-plus 当前与qwen3-coder-plus-2025-07-22能力相同 | 稳定版 | 1,000,000 | 997,952 | 65,536 | 阶梯计价,请参见表格下方说明。 | 各100万Token 有效期:百炼开通后180天内 | |
qwen3-coder-plus-2025-07-22 | 快照版 | ||||||
qwen3-coder-flash 当前与qwen3-coder-flash-2025-07-28能力相同 | 稳定版 | ||||||
qwen3-coder-flash-2025-07-28 | 快照版 |
上述模型根据本次请求输入的Token数,采取阶梯计费。
qwen3-coder-plus系列
qwen3-coder-plus 和 qwen3-coder-plus-2025-07-22 价格如下,其中 qwen3-coder-plus 支持上下文缓存:
输入Token数 | 输入成本(每千Token) | 输出成本(每千Token) |
0-32K | 0.004元 | 0.016元 |
32K-128K | 0.006元 | 0.024元 |
128K-256K | 0.01元 | 0.04元 |
256K-1M | 0.02元 | 0.2元 |
qwen3-coder-flash系列
qwen3-coder-flash 和 qwen3-coder-flash-2025-07-28 价格如下,其中 qwen3-coder-flash 支持上下文缓存:
输入Token数 | 输入价格(每千Token) | 输出价格(每千Token) |
0-32K | 0.001元 | 0.004元 |
32K-128K | 0.0015元 | 0.006元 |
128K-256K | 0.0025元 | 0.01元 |
256K-1M | 0.005元 | 0.025元 |
开源版模型
模型名称 | 上下文长度 | 最大输入 | 最大输出 | 输入成本 | 输出成本 | 免费额度 |
(Token数) | (每千Token) | |||||
qwen3-coder-480b-a35b-instruct | 262,144 | 204,800 | 65,536 | 阶梯计价,请参见表格下方说明。 | 各100万Token 有效期:百炼开通后180天内 | |
qwen3-coder-30b-a3b-instruct | ||||||
qwen2.5-coder-32b-instruct | 131,072 | 129,024 | 8,192 | 0.002元 | 0.006元 | |
qwen2.5-coder-14b-instruct | ||||||
qwen2.5-coder-7b-instruct | 0.001元 | 0.002元 | ||||
qwen2.5-coder-3b-instruct | 32,768 | 30,720 | 限时免费体验 | |||
qwen2.5-coder-1.5b-instruct | ||||||
qwen2.5-coder-0.5b-instruct |
qwen3-coder-480b-a35b-instruct 与 qwen3-coder-30b-a3b-instruct 根据本次请求输入的 Token数,采取阶梯计费。
模型名称 | 输入 Token 数 | 输入成本(每千Token) | 输出成本(每千Token) |
qwen3-coder-480b-a35b-instruct | 0-32K | 0.006元 | 0.024元 |
32K-128K | 0.009元 | 0.036元 | |
128K-200K | 0.015元 | 0.06元 | |
qwen3-coder-30b-a3b-instruct | 0-32K | 0.0015元 | 0.006元 |
32K-128K | 0.00225元 | 0.009元 | |
128K-200K | 0.0075元 | 0.0375元 |
关于模型的限流条件,请参见限流。
使用方法
以下是调用 Qwen‑Coder 模型的示例代码。此外,您也可以通过 Claude Code、Cline 等工具集成 Qwen‑Coder 模型。
您需要已获取API Key并配置API Key到环境变量。如果通过OpenAI SDK或DashScope SDK进行调用,还需要安装SDK。
简单示例
此处以使用通义千问代码模型编写一个寻找质数的Python函数为例。
OpenAI兼容
您可以通过OpenAI SDK或OpenAI兼容的HTTP方式调用通义千问代码模型。
Python
请求示例
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您没有配置环境变量,请在此处用您的API Key进行替换
base_url="https://dashscope.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': '请编写一个Python函数 find_prime_numbers,该函数接受一个整数 n 作为参数,并返回一个包含所有小于 n 的质数(素数)的列表。质数是指仅能被1和其自身整除的正整数,如2, 3, 5, 7等。不要输出非代码的内容。'}],
)
print("="*20+"回复内容"+"="*20)
print(completion.choices[0].message.content)
print("="*20+"Token消耗"+"="*20)
print(completion.usage)
返回结果
====================回复内容====================
```python
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消耗====================
CompletionUsage(completion_tokens=95, prompt_tokens=91, total_tokens=186, completion_tokens_details=None, prompt_tokens_details=PromptTokensDetails(audio_tokens=None, cached_tokens=0))
curl
请求示例
curl -X POST https://dashscope.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": "请编写一个Python函数 find_prime_numbers,该函数接受一个整数 n 作为参数,并返回一个包含所有小于 n 的质数(素数)的列表。质数是指仅能被1和其自身整除的正整数,如2, 3, 5, 7等。不要输出非代码的内容。"
}
]
}'
返回结果
{
"choices": [
{
"message": {
"content": "```python\ndef 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\n```",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 91,
"completion_tokens": 95,
"total_tokens": 186,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1753192010,
"system_fingerprint": null,
"model": "qwen3-coder-plus",
"id": "chatcmpl-798c99c2-7410-9cc4-8385-6dfd757757fa"
}
DashScope
您可以通过DashScope SDK或HTTP方式调用通义千问代码模型。
Python
请求示例
import dashscope
messages = [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "请编写一个Python函数 find_prime_numbers,该函数接受一个整数 n 作为参数,并返回一个包含所有小于 n 的质数(素数)的列表。质数是指仅能被1和其自身整除的正整数,如2, 3, 5, 7等。请不要输出代码之外的内容。"
}
]
response = dashscope.Generation.call(
model="qwen3-coder-plus",
messages=messages,
result_format="message"
)
print("=" * 20 + "回复内容" + "=" * 20)
print(response.output.choices[0].message.content)
print("=" * 20 + "Token消耗" + "=" * 20)
print(response.usage)
返回结果
====================回复内容====================
```python
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消耗====================
{"input_tokens": 92, "output_tokens": 95, "total_tokens": 187, "prompt_tokens_details": {"cached_tokens": 0}}
Java
请求示例
import java.util.Arrays;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.aigc.generation.models.QwenParam;
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;
public class Main {
public static void callWithMessage()
throws NoApiKeyException, ApiException, InputRequiredException {
Generation gen = new Generation();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("请编写一个Python函数 find_prime_numbers,该函数接受一个整数 n 作为参数,并返回一个包含所有小于 n 的质数(素数)的列表。质数是指仅能被1和其自身整除的正整数,如2, 3, 5, 7等。").build();
QwenParam param =
QwenParam.builder().model("qwen3-coder-plus").messages(Arrays.asList(userMsg))
.resultFormat(QwenParam.ResultFormat.MESSAGE)
.build();
GenerationResult result = gen.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
}
public static void main(String[] args){
try {
callWithMessage();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
返回结果
```python
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
```
curl
请求示例
curl -X POST "https://dashscope.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": "请编写一个Python函数 find_prime_numbers,该函数接受一个整数 n 作为参数,并返回一个包含所有小于 n 的质数(素数)的列表。质数是指仅能被1和其自身整除的正整数,如2, 3, 5, 7等。"
}
]
},
"parameters": {
"result_format": "message"
}
}'
返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "```python\ndef find_prime_numbers(n):\n primes = []\n for possiblePrime in range(2, n):\n isPrime = True\n for num in range(2, int(possiblePrime ** 0.5) + 1):\n if possiblePrime % num == 0:\n isPrime = False\n break\n if isPrime:\n primes.append(possiblePrime)\n return primes\n\n# 示例使用:\nprint(find_prime_numbers(10)) # 输出: [2, 3, 5, 7]\n```\n这个函数通过遍历从2到n-1的所有数字,检查每个数字是否为质数。如果是质数,则将其添加到结果列表中。最后返回包含所有小于n的质数的列表。"
}
}
]
},
"usage": {
"total_tokens": 247,
"output_tokens": 162,
"input_tokens": 85
},
"request_id": "e67209f6-e107-914b-b89f-fdfa3d6535df"
}
工具调用
Qwen3-Coder 模型具有强大的 Coding Agent 能力。您可以为模型配置读写文件、列举文件等工具,使其可以直接修改代码文件。
OpenAI兼容
Python
请求示例
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
tools = [
# 工具1 读取文件内容
{
"type": "function",
"function": {
"name": "read_file",
"description": "读取指定路径的文件内容。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标文件的相对或绝对路径"
}
},
"required": ["path"]
}
}
},
# 工具2 写入文件内容
{
"type": "function",
"function": {
"name": "write_file",
"description": "将内容写入指定文件,若文件不存在则创建。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标文件的相对或绝对路径"
},
"content": {
"type": "string",
"description": "写入文件的字符串内容"
}
},
"required": ["path", "content"]
}
}
},
# 工具3 列出目录内容
{
"type": "function",
"function": {
"name": "list_directory",
"description": "列出指定目录中的文件和子目录。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标目录的相对或绝对路径"
}
},
"required": ["path"]
}
}
}
]
messages = [{"role": "user", "content": "写一个python代码,快速排序,命名为quick_sort.py"}]
completion = client.chat.completions.create(
model="qwen3-coder-plus",
messages=messages,
tools=tools
)
print("="*20+"工具调用信息"+"="*20)
print(completion.choices[0].message.tool_calls)
print("="*20+"Token消耗"+"="*20)
print(completion.usage)
返回结果
====================工具调用信息====================
[ChatCompletionMessageToolCall(id='call_fb381599706a4d1d8496fdcb', function=Function(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 = [3, 6, 8, 10, 1, 2, 1]\\\\n print(\\\\\\"Original list:\\\\\\", example)\\\\n sorted_list = quick_sort(example)\\\\n print(\\\\\\"Sorted list:\\\\\\", sorted_list)", "path": "quick_sort.py"}', name='write_file'), type='function', index=0)]
====================Token消耗====================
CompletionUsage(completion_tokens=190, prompt_tokens=491, total_tokens=681, completion_tokens_details=None, prompt_tokens_details=PromptTokensDetails(audio_tokens=None, cached_tokens=0))
curl
请求示例
curl -X POST https://dashscope.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": "写一个python代码,快速排序,命名为quick_sort.py"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "read_file",
"description": "读取指定路径的文件内容。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标文件的相对或绝对路径"
}
},
"required": ["path"]
}
}
},
{
"type": "function",
"function": {
"name": "write_file",
"description": "将内容写入指定文件,若文件不存在则创建。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标文件的相对或绝对路径"
},
"content": {
"type": "string",
"description": "写入文件的字符串内容"
}
},
"required": ["path", "content"]
}
}
},
{
"type": "function",
"function": {
"name": "list_directory",
"description": "列出指定目录中的文件和子目录。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标目录的相对或绝对路径"
}
},
"required": ["path"]
}
}
}
]
}'
返回结果
{
"choices": [
{
"message": {
"content": "",
"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_82d0f7acdbd347f89c363551",
"type": "function"
}
]
},
"finish_reason": "tool_calls",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 478,
"completion_tokens": 176,
"total_tokens": 654,
"prompt_tokens_details": {
"cached_tokens": 0
}
},
"created": 1753192182,
"system_fingerprint": null,
"model": "qwen3-coder-plus",
"id": "chatcmpl-59d41f11-9f3f-9a94-9faf-50a070f8260a"
}
通过tool_calls
参数获得工具函数名与入参信息,运行工具函数可实现修改代码的效果。此请求示例为发起 Function Calling 步骤的代码,完整流程请参见:Function Calling。
DashScope
Python
请求示例
import os
import dashscope
tools = [
# 工具1 读取文件内容
{
"type": "function",
"function": {
"name": "read_file",
"description": "读取指定路径的文件内容。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标文件的相对或绝对路径"
}
},
"required": ["path"]
}
}
},
# 工具2 写入文件内容
{
"type": "function",
"function": {
"name": "write_file",
"description": "将内容写入指定文件,若文件不存在则创建。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标文件的相对或绝对路径"
},
"content": {
"type": "string",
"description": "写入文件的字符串内容"
}
},
"required": ["path", "content"]
}
}
},
# 工具3 列出目录内容
{
"type": "function",
"function": {
"name": "list_directory",
"description": "列出指定目录中的文件和子目录。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标目录的相对或绝对路径"
}
},
"required": ["path"]
}
}
}
]
messages = [{"role": "user", "content": "写一个python代码,快速排序,命名为quick_sort.py"}]
response = dashscope.Generation.call(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-coder-plus',
messages=messages,
tools=tools,
result_format='message'
)
print("="*20+"工具调用信息"+"="*20)
print(response.output.choices[0].message.tool_calls)
print("="*20+"Token消耗"+"="*20)
print(response.usage)
返回结果
====================工具调用信息====================
[{'index': 0, 'id': 'call_d011365ecedc4552bc449ee9', '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 = [3, 6, 8, 10, 1, 2, 1]\\\\n print(\\\\\\"Original list:\\\\\\", example)\\\\n sorted_list = quick_sort(example)\\\\n print(\\\\\\"Sorted list:\\\\\\", sorted_list)\\\\n", "path": "quick_sort.py"}'}}]
====================Token消耗====================
{"input_tokens": 491, "output_tokens": 192, "total_tokens": 683, "prompt_tokens_details": {"cached_tokens": 0}}
通过tool_calls
参数获得工具函数名与入参信息,运行工具函数可实现修改代码的效果。此请求示例为发起 Function Calling 步骤的代码,完整流程请参见:Function Calling。
curl
请求示例
curl --location "https://dashscope.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": "写一个python代码,快速排序,命名为quick_sort.py"
}]
},
"parameters": {
"result_format": "message",
"tools": [
{
"type": "function",
"function": {
"name": "read_file",
"description": "读取指定路径的文件内容。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标文件的相对或绝对路径"
}
},
"required": ["path"]
}
}
},
{
"type": "function",
"function": {
"name": "write_file",
"description": "将内容写入指定文件,若文件不存在则创建。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标文件的相对或绝对路径"
},
"content": {
"type": "string",
"description": "写入文件的字符串内容"
}
},
"required": ["path", "content"]
}
}
},
{
"type": "function",
"function": {
"name": "list_directory",
"description": "列出指定目录中的文件和子目录。",
"parameters": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "目标目录的相对或绝对路径"
}
},
"required": ["path"]
}
}
}
]
}
}'
返回结果
{
"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"
}
代码补全
Qwen3-Coder 即将上线基于 Partial Mode 的代码补全功能,敬请期待。
基于前缀进行代码补全
阿里云百炼提供了 OpenAI 兼容的 Completions 接口,适合代码补全场景。当前支持 Qwen Coder 的部分模型:
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、qwen-coder-turbo
如果您需要使用的代码模型不支持 Completions 接口,可以使用Partial Mode,它也可以基于前缀进行代码补全。
您可以在前缀中传入函数的名称、输入参数、使用说明等信息,Completions 接口将返回生成的代码。
提示词模板为:
<|fim_prefix|>{prefix_content}<|fim_suffix|>
<|fim_prefix|>与<|fim_suffix|>为通义千问代码模型的特殊 Token,其中fim
是"Fill-in-the-Middle"的缩写,用于指引模型进行文本的补全。
其中{prefix_content}
是您需要传入的前缀信息。
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|>写一个python的快速排序函数,def quick_sort(arr):<|fim_suffix|>",
)
print(completion.choices[0].text)
import OpenAI from "openai";
const openai = new OpenAI(
{
// 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const completion = await openai.completions.create({
model: "qwen2.5-coder-32b-instruct",
prompt: "<|fim_prefix|>写一个python的快速排序函数,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|>写一个python的快速排序函数,def quick_sort(arr):<|fim_suffix|>"
}'
除了使用 Completions 接口进行代码补全外,您也可以使用 Partial Mode 实现类似效果,但我们更推荐您使用 Completions 接口。
Partial Mode
根据前缀和后缀生成中间内容
Completions 接口支持通过您给定的前缀与后缀生成中间内容,您可以在前缀中传入函数的名称、输入参数、使用说明等信息,在后缀中传入函数的返回参数等信息,Completions 接口将返回生成的代码。
提示词模板为:
<|fim_prefix|>{prefix_content}<|fim_suffix|>{suffix_content}<|fim_middle|>
您需要将{prefix_content}
替换为传入的前缀信息,将{suffix_content}
替换为传入的后缀信息。
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 = f"""def reverse_words_with_special_chars(s):
'''
反转字符串中的每个单词(保留非字母字符的位置),并保持单词顺序。
示例:
reverse_words_with_special_chars("Hello, world!") -> "olleH, dlrow!"
参数:
s (str): 输入字符串(可能包含标点符号)
返回:
str: 处理后的字符串,单词反转但非字母字符位置不变
'''
"""
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):
'''
反转字符串中的每个单词(保留非字母字符的位置),并保持单词顺序。
示例:
reverse_words_with_special_chars("Hello, world!") -> "olleH, dlrow!"
参数:
s (str): 输入字符串(可能包含标点符号)
返回:
str: 处理后的字符串,单词反转但非字母字符位置不变
'''
`;
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\"\"\"\n反转字符串中的每个单词(保留非字母字符的位置),并保持单词顺序。\n 示例:\n reverse_words_with_special_chars(\"Hello, world!\") -> \"olleH, dlrow!\"\n 参数:\n s (str): 输入字符串(可能包含标点符号)\n 返回:\n str: 处理后的字符串,单词反转但非字母字符位置不变\n\"\"\"\n<|fim_suffix|>return result<|fim_middle|>"
}'
API参考
通义千问代码模型的输入与输出参数请参考通义千问。
常见问题
Q:使用Qwen Code、Claude Code等开发工具时,为什么会消耗大量 Token?
A:通过外部开发工具(如Qwen Code、Claude Code、Cline等)调用 Qwen-Coder 模型处理问题时,该工具可能会多次调用 API,从而消耗大量 Token。关于具体的监控和减少Token消耗的方法,请参考Qwen Code和Claude Code文档。
Q:如何使用 qwen3-coder-plus 的每日 2000 次免费额度?
A:需通过 Qwen Code 工具使用免费额度。请参见如何使用每天 2000 次的免费额度?
错误码
如果模型调用失败并返回报错信息,请参见错误信息进行解决。