通义千问代码模型能力

2025-03-13   访问量:1014

通义千问代码模型具有强大的代码能力,您可以通过API接口调用,将通义千问代码模型集成到您的业务中。

模型概览

  • 如果您对代码相关的任务或在复杂场景下的任务效果有要求,建议选择qwen-coder-plusqwen2.5-coder-32b-instruct,这些模型在代码生成、代码修复、代码推理能力上具备业界领先水平。

  • 如果您对模型推理速度有要求,如在补全场景下使用,建议选择qwen-coder-turboqwen2.5-coder-7b-instruct,这些模型响应较快,且仍然有较好的代码能力。

闭源版本











模型名称

版本

上下文长度

最大输入

最大输出

输入成本

输出成本

免费额度

(注)

(Token数)

(每千Token)

qwen-coder-plus

当前等同qwen-coder-plus-2024-11-06

稳定版

131,072

129,024

8,192

0.0035

0.007

100Token

有效期:百炼开通后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


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.002

0.006


100Token

有效期:百炼开通后180天内

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

关于模型的限流条件,请参见限流

示例代码

您需要已获取API Key配置API Key到环境变量。如果通过OpenAI SDKDashScope SDK进行调用,还需要安装SDK

简单示例

此处以使用通义千问代码模型编写一个寻找质数的Python函数为例。

OpenAI兼容

DashScope

您可以通过OpenAI SDKOpenAI兼容的HTTP方式调用通义千问代码模型。

Python

curl

示例代码

 

import osfrom 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
```

代码补全

基于前缀进行代码补全

百炼提供了 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}是您需要传入的前缀信息。

Python

Node.js

curl

 

import osfrom 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)

除了使用 Completions 接口进行代码补全外,您也可以使用 Partial Mode 实现类似效果,但我们更推荐您使用 Completions 接口。

Partial Mode

根据前缀和后缀生成中间内容

Completions 接口支持通过您给定的前缀与后缀生成中间内容,您可以在前缀中传入函数的名称、输入参数、使用说明等信息,在后缀中传入函数的返回参数等信息,Completions 接口将返回生成的代码。

提示词模板为:

 

<|fim_prefix|>{prefix_content}<|fim_suffix|>{suffix_content}<|fim_middle|>

您需要将{prefix_content}替换为传入的前缀信息,将{suffix_content}替换为传入的后缀信息。

Python

Node.js

curl

 

import osfrom 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)

API参考

关于通义千问代码模型的输入与输出参数,请参考文本生成-通义千问

错误码

如果模型调用失败并返回报错信息,请参见错误信息进行解决。


热门文章
更多>