通义千问代码模型具有强大的代码能力,您可以通过API接口调用,将通义千问代码模型集成到您的业务中。
如果您对代码相关的任务或在复杂场景下的任务效果有要求,建议选择qwen-coder-plus或qwen2.5-coder-32b-instruct,这些模型在代码生成、代码修复、代码推理能力上具备业界领先水平。 如果您对模型推理速度有要求,如在补全场景下使用,建议选择qwen-coder-turbo或qwen2.5-coder-7b-instruct,这些模型响应较快,且仍然有较好的代码能力。 闭源版本 模型名称 版本 上下文长度 最大输入 最大输出 输入成本 输出成本 免费额度 (Token数) (每千Token) qwen-coder-plus 稳定版 131,072 129,024 8,192 0.0035元 0.007元 各100万Token 有效期:百炼开通后180天内 qwen-coder-plus-latest 最新版 qwen-coder-plus-2024-11-06 快照版 qwen-coder-turbo 稳定版 131,072 129,024 8,192 0.002元 0.006元 qwen-coder-turbo-latest 最新版 qwen-coder-turbo-2024-09-19 快照版 开源版本 模型名称 上下文长度 最大输入 最大输出 输入成本 输出成本 免费额度 (Token数) (每千Token) qwen2.5-coder-32b-instruct 131,072 129,024 8,192 0.002元 0.006元 各100万Token 有效期:百炼开通后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 SDK或DashScope SDK进行调用,还需要安装SDK。 此处以使用通义千问代码模型编写一个寻找质数的Python函数为例。 OpenAI兼容 DashScope 您可以通过OpenAI SDK或OpenAI兼容的HTTP方式调用通义千问代码模型。 Python curl 百炼提供了 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 接口将返回生成的代码。 提示词模板为: 其中 Python Node.js curl 除了使用 Completions 接口进行代码补全外,您也可以使用 Partial Mode 实现类似效果,但我们更推荐您使用 Completions 接口。 Completions 接口支持通过您给定的前缀与后缀生成中间内容,您可以在前缀中传入函数的名称、输入参数、使用说明等信息,在后缀中传入函数的返回参数等信息,Completions 接口将返回生成的代码。 提示词模板为: 您需要将 Python Node.js curl 关于通义千问代码模型的输入与输出参数,请参考文本生成-通义千问。 如果模型调用失败并返回报错信息,请参见错误信息进行解决。模型概览
当前等同qwen-coder-plus-2024-11-06
等同qwen-coder-plus最新的快照版本
又称qwen-coder-plus-1106
当前等同qwen-coder-turbo-2024-09-19
等同qwen-coder-turbo最新的快照版本
又称qwen-coder-turbo-0919
示例代码
简单示例
示例代码
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
```
代码补全
基于前缀进行代码补全
如果您需要使用的代码模型不支持 Completions 接口,可以使用Partial Mode,它也可以基于前缀进行代码补全。
<|fim_prefix|>{prefix_content}<|fim_suffix|>
<|fim_prefix|>与<|fim_suffix|>为通义千问代码模型的特殊 Token,其中
fim
是"Fill-in-the-Middle"的缩写,用于指引模型进行文本的补全。{prefix_content}
是您需要传入的前缀信息。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)
Partial Mode
根据前缀和后缀生成中间内容
<|fim_prefix|>{prefix_content}<|fim_suffix|>{suffix_content}<|fim_middle|>
{prefix_content}
替换为传入的前缀信息,将{suffix_content}
替换为传入的后缀信息。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参考
错误码