通义千问代码模型具有强大的代码能力,您可以通过API接口调用,将通义千问代码模型集成到您的业务中。
模型概览
如果您对代码相关的任务或在复杂场景下的任务效果有要求,建议选择qwen-coder-plus或qwen2.5-coder-32b-instruct,这些模型在代码生成、代码修复、代码推理能力上具备业界领先水平。
如果您对模型推理速度有要求,如在补全场景下使用,建议选择qwen-coder-turbo或qwen2.5-coder-7b-instruct,这些模型响应较快,且仍然有较好的代码能力。
闭源版本
模型名称 | 版本 | 上下文长度 | 最大输入 | 最大输出 | 输入成本 | 输出成本 | 免费额度 |
(Token数) | (每千Token) | ||||||
qwen-coder-plus 当前等同qwen-coder-plus-2024-11-06 | 稳定版 | 131,072 | 129,024 | 8192 | 0.0035元 | 0.007元 | 100万Token 有效期:百炼开通后180天内 |
qwen-coder-plus-latest 等同qwen-coder-plus最新的快照版本 | 最新版 | ||||||
qwen-coder-plus-2024-11-06 又称qwen-coder-plus-1106 | 快照版 | ||||||
qwen-coder-turbo 当前等同qwen-coder-turbo-2024-09-19 | 稳定版 | 131,072 | 129,024 | 8,192 | 0.002元 | 0.006元 | 100万Token 有效期:百炼开通后180天内 |
qwen-coder-turbo-latest 等同qwen-coder-turbo最新的快照版本 | 最新版 | ||||||
qwen-coder-turbo-2024-09-19 又称qwen-coder-turbo-0919 | 快照版 |
开源版本
模型名称 | 上下文长度 | 最大输入 | 最大输出 | 输入成本 | 输出成本 | 免费额度 |
(Token数) | (每千Token) | |||||
qwen2.5-coder-32b-instruct | 131,072 | 129,024 | 8,192 | 0.0035元 | 0.007元 | 100万Token 有效期:百炼开通后180天内 |
qwen2.5-coder-14b-instruct | 0.002元 | 0.006元 | ||||
qwen2.5-coder-7b-instruct | 0.001元 | 0.002元 | ||||
qwen2.5-coder-3b-instruct | 32,768 | 30,720 | 限时免费 | 限时免费 | ||
qwen2.5-coder-1.5b-instruct | 100万Token 有效期:百炼开通后180天内 | |||||
qwen2.5-coder-0.5b-instruct | 限时免费 |
关于模型的限流条件,请参见限流。
示例代码
您需要已获取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", # 填写DashScope服务的base_url
)
completion = client.chat.completions.create(
model="qwen-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(completion.choices[0].message.content)
返回结果
```python
def find_prime_numbers(n):
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
prime_numbers = []
for number in range(2, n):
if is_prime(number):
prime_numbers.append(number)
return prime_numbers
```
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": "qwen-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": {
"role": "assistant",
"content": "```python\ndef find_prime_numbers(n):\n prime_numbers = []\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 prime_numbers.append(num)\n return prime_numbers\n```"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 101,
"completion_tokens": 84,
"total_tokens": 185
},
"created": 1726825741,
"system_fingerprint": null,
"model": "qwen-coder-turbo",
"id": "chatcmpl-88ea08ce-194e-9926-824b-c4c07dd48649"
}
DashScope
您可以通过DashScope SDK或HTTP方式调用通义千问代码模型。
Python
示例代码
from http import HTTPStatus
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='qwen-coder-plus',
messages=messages,
result_format='message',
)
if response.status_code == HTTPStatus.OK:
print(response.output.choices[0].message.content)
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
返回结果
```python
def find_prime_numbers(n):
prime_numbers = []
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:
prime_numbers.append(num)
return prime_numbers
```
这个函数首先定义了一个空列表 `prime_numbers` 来存储找到的质数。然后,它遍历从2到n-1的所有数字,对于每个数字,它检查是否有任何小于等于其平方根的数可以整除它。如果没有这样的数,那么这个数字就是质数,将其添加到列表中。最后,函数返回包含所有质数的列表。
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("qwen-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):
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
prime_numbers = []
for number in range(2, n):
if is_prime(number):
prime_numbers.append(number)
return prime_numbers
# 示例使用
print(find_prime_numbers(10)) # 输出: [2, 3, 5, 7]
```
这个函数首先定义了一个内部函数 `is_prime` 来检查一个数是否为质数。然后,它遍历从2到n-1的所有数字,使用 `is_prime` 函数来判断每个数字是否为质数,如果是,则将其添加到结果列表中。最后,函数返回包含所有小于n的质数的列表。
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": "qwen-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"
}
Partial mode
如果您希望Coder模型在生成内容时能够严格以指定内容作为前缀,可以使用Partial 模式。该模式允许模型基于在Assistant Message中指定的前缀继续生成内容。请参考以下代码:
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", # 填写DashScope服务的base_url
)
completion = client.chat.completions.create(
model="qwen-coder-plus",
messages=[{
"role": "user",
"content": "请帮我写一个python代码生成100以内的素数。不要生成代码之外的内容。"
},
{
"role": "assistant",
"content": "```python\ndef my_test",
"partial": True
}]
)
print(completion.choices[0].message.content)
返回结果
(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
for num in range(2, 101):
if my_test(num):
print(num)
```
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": "qwen-coder-plus",
"messages": [{
"role": "user",
"content": "请帮我写一个python代码生成100以内的素数。不要生成代码之外的内容。"
},
{
"role": "assistant",
"content": "```python\ndef my_test",
"partial": true
}]
}'
返回结果
{
"choices": [
{
"message": {
"role": "assistant",
"content": "():\n primes = []\n for num in range(2, 101):\n if all(num % i != 0 for i in range(2, int(num**0.5) + 1)):\n primes.append(num)\n return primes\n\nprint(my_test())\n```"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 45,
"completion_tokens": 59,
"total_tokens": 104
},
"created": 1726826616,
"system_fingerprint": null,
"model": "qwen-coder-turbo",
"id": "chatcmpl-e344c69c-3275-9f6d-9a53-b37df03c666d"
}
DashScope
您可以通过DashScope SDK或HTTP方式调用通义千问代码模型。
Python
示例代码
from http import HTTPStatus
import dashscope
messages = [{
"role": "user",
"content": "请帮我写一个python代码生成100以内的素数,不要生成代码之外的内容。"
},
{
"role": "assistant",
"content": "```python\ndef my_test",
"partial": True
}]
response = dashscope.Generation.call(
model='qwen-coder-plus',
messages=messages,
result_format='message',
)
if response.status_code == HTTPStatus.OK:
print(response.output.choices[0].message.content)
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
返回结果
():
primes = []
for num in range(2, 101):
if all(num % i != 0 for i in range(2, int(num**0.5) + 1)):
primes.append(num)
return primes
if __name__ == "__main__":
print(my_test())
```
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": "qwen-coder-plus",
"input":{
"messages":[{
"role": "user",
"content": "请帮我写一个python代码生成100以内的素数,不要生成代码之外的内容。"
},
{
"role": "assistant",
"content": "```python\ndef my_test",
"partial": true
}]
},
"parameters": {
"result_format": "message"
}
}'
返回结果
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "():\n for i in range(2, 101):\n if all(i % j != 0 for j in range(2, int(i**0.5) + 1)):\n print(i)\n\nmy_test()\n```"
}
}
]
},
"usage": {
"total_tokens": 94,
"output_tokens": 49,
"input_tokens": 45
},
"request_id": "11c5108b-8e73-94dd-bcc4-e1360fc83e64"
}
API参考
关于通义千问代码模型的输入与输出参数,请参考通义千问。