如何用Python调用阿里云的Qwen模型
·
aliases:
- 如何用Python调用阿里云的Qwen模型?
使用 Python 调用阿里云的 Qwen(通义千问)模型,目前最主流且推荐的方式是使用阿里云官方的 DashScope SDK(灵积模型服务)。此外,阿里云百炼平台也兼容 OpenAI SDK 格式,如果你习惯使用 OpenAI 的库,也可以直接调用。
以下是两种方法的详细步骤:
准备工作:获取 API Key
在写代码之前,你必须先拥有一个阿里云账号并获取 API Key:
- 登录阿里云:访问 阿里云官网 并登录。
- 开通服务:搜索“模型服务灵积” (DashScope) 或 “百炼”,进入控制台并开通服务(通常有免费额度)。
- 创建 API Key:
- 进入 API Key 管理页面。
- 点击“创建新的 API-KEY”。
- 重要:复制并保存这个 Key(例如
sk-xxxxxxxx),它只会显示一次。
方法一:使用官方 DashScope SDK(推荐)
这是阿里云官方维护的 SDK,功能最全,支持 Qwen 的所有特性(如流式输出、多模态等)。
1. 安装 SDK
在终端(PowerShell)中运行:
pip install dashscope
2. 编写代码
创建一个 Python 文件(例如 call_qwen.py),填入以下代码:
import os
from http import HTTPStatus
import dashscope
# 【重要】将你的 API Key 填入这里,或者设置为环境变量 DASHSCOPE_API_KEY
# 建议不要硬编码在代码中提交到 git,而是使用 os.getenv("DASHSCOPE_API_KEY")
dashscope.api_key = "sk-你的API_KEY_在这里"
def call_qwen():
# 定义消息历史
messages = [
{'role': 'system', 'content': '你是一个有用的助手。'},
{'role': 'user', 'content': '请用 Python 写一个快速排序算法,并加上注释。'}
]
try:
# 调用 Qwen-Max 或 Qwen-Plus 模型 (也可以换成 qwen-turbo, qwen-max 等)
response = dashscope.Generation.call(
model='qwen-max', # 推荐使用 qwen-max 或 qwen-plus
messages=messages,
result_format='message', # 设置返回格式为 message,方便处理
)
if response.status_code == HTTPStatus.OK:
# 打印模型回复的内容
print(response.output.choices[0].message.content)
else:
# 错误处理
print(f"请求失败: Code {response.code}, Message {response.message}")
except Exception as e:
print(f"发生异常: {e}")
if __name__ == '__main__':
call_qwen()
3. 运行
python call_qwen.py
方法二:使用 OpenAI SDK(兼容模式)
阿里云百炼平台完全兼容 OpenAI 的 API 协议。如果你已经在使用 openai 库,或者想复用现有的 OpenAI 代码,只需修改 base_url 和 api_key 即可。
1. 安装 OpenAI SDK
pip install openai
2. 编写代码
import os
from openai import OpenAI
# 初始化客户端
client = OpenAI(
# 填入你的阿里云 API Key
api_key="sk-你的API_KEY_在这里",
# 【关键】指定阿里云的兼容接口地址
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
def call_qwen_openai_style():
try:
completion = client.chat.completions.create(
# 阿里云的模型名称,例如 qwen-max, qwen-plus, qwen-turbo
model="qwen-max",
messages=[
{"role": "system", "content": "你是一个编程助手。"},
{"role": "user", "content": "解释一下什么是装饰器?"}
],
stream=False # 如果需要流式输出,设为 True
)
print(completion.choices[0].message.content)
except Exception as e:
print(f"调用失败: {e}")
if __name__ == '__main__':
call_qwen_openai_style()
常用模型名称对照
在代码的 model 参数中,你可以替换为以下常用模型(具体以阿里云官网最新列表为准):
| 模型名称 | 特点 | 适用场景 |
|---|---|---|
qwen-max |
效果最好,逻辑推理最强 | 复杂任务、代码生成、深度分析 |
qwen-plus |
性价比高,速度与效果平衡 | 日常对话、中等复杂度任务 |
qwen-turbo |
速度最快,成本最低 | 简单问答、高频调用 |
qwen-long |
支持超长上下文 (百万字) | 长文档分析、书籍总结 |
qwen-vl-max |
视觉语言模型 | 图片理解、OCR、图表分析 |
💡 最佳实践建议
-
环境变量管理:
为了安全,不要把 API Key 直接写在代码里。-
在 PowerShell 中设置临时环境变量:
$env:DASHSCOPE_API_KEY="sk-你的KEY" -
然后在 Python 代码中使用
os.getenv("DASHSCOPE_API_KEY")获取。
-
-
流式输出 (Stream):
如果希望像聊天机器人那样一个字一个字地输出,可以在 DashScope SDK 中设置stream=True,或在 OpenAI SDK 中设置stream=True,然后迭代处理返回结果。 -
费用控制:
阿里云通常为新用户提供免费额度,但使用后会产生费用。请在 费用中心 关注用量,避免超额。
更多推荐

所有评论(0)