通義千問代碼模型具有強大的代碼能力,您可以通過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參考
關于通義千問代碼模型的輸入與輸出參數,請參考通義千問。
錯誤碼
如果模型調用失敗并返回報錯信息,請參見錯誤碼進行解決。