aliases:

  • 如何用Python调用阿里云的Qwen模型?

使用 Python 调用阿里云的 Qwen(通义千问)模型,目前最主流且推荐的方式是使用阿里云官方的 DashScope SDK(灵积模型服务)。此外,阿里云百炼平台也兼容 OpenAI SDK 格式,如果你习惯使用 OpenAI 的库,也可以直接调用。

以下是两种方法的详细步骤:

准备工作:获取 API Key

在写代码之前,你必须先拥有一个阿里云账号并获取 API Key:

  1. 登录阿里云:访问 阿里云官网 并登录。
  2. 开通服务:搜索“模型服务灵积” (DashScope) 或 “百炼”,进入控制台并开通服务(通常有免费额度)。
  3. 创建 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_urlapi_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、图表分析

💡 最佳实践建议

  1. 环境变量管理
    为了安全,不要把 API Key 直接写在代码里。

    • 在 PowerShell 中设置临时环境变量:

      $env:DASHSCOPE_API_KEY="sk-你的KEY"
      
    • 然后在 Python 代码中使用 os.getenv("DASHSCOPE_API_KEY") 获取。

  2. 流式输出 (Stream)
    如果希望像聊天机器人那样一个字一个字地输出,可以在 DashScope SDK 中设置 stream=True,或在 OpenAI SDK 中设置 stream=True,然后迭代处理返回结果。

  3. 费用控制
    阿里云通常为新用户提供免费额度,但使用后会产生费用。请在 费用中心 关注用量,避免超额。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐