千问AI兼容OpenAI SDK怎么调用
你想在现有项目里直接复用 OpenAI SDK 的代码来调用通义千问,不改业务逻辑、不换工具链,只改几行配置就能跑通——这完全可行。阿里云 DashScope 已经提供了稳定兼容的 v1 接口端点,主流模型如 qwen-turbo、qwen-plus、qwen-max 都支持。

安装与版本锁定
执行 pip install openai==1.12.0。这里有个坑需要注意:新版 openai 库(1.30+)已经移除了对非 OpenAI 最新 base_url 的宽松适配,所以
必须锁定 1.12.0 版本
UnknownEndpointError。
装完之后,跑一句 python -c "import openai; print(openai.__version__)" 确认版本准确无误,这一步别省。
环境变量安全配置
在项目根目录新建一个 .env 文件,写入以下内容:
OPENAI_API_KEY=sk-xxx-your-dashscope-key
OPENAI_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
注意:不要把密钥硬编码进 Python 文件里;.env 文件记得加入 .gitignore,防止意外提交到代码仓库。
初始化客户端并发起请求
第一步:导入并加载环境变量。
from openai import OpenAI
import os
from dotenv import load_dotenv
load_dotenv()
第二步:创建 client 实例,base_url 必须指向兼容模式端点。
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_API_BASE")
)
第三步:调用 chat.completions.create,model 参数填 qwen-turbo 或 qwen-max。
response = client.chat.completions.create(
model="qwen-turbo",
messages=[{"role": "user", "content": "你好,请用中文简单介绍你自己"}]
)
第四步:提取返回文本。
print(response.choices[0].message.content.strip())
常见错误速查与绕过方案
方法一:报错 “InvalidRequestError: model does not exist”
说明你传了 dashscope 原生模型名(比如 qwen-vl-chat)。兼容接口只认 qwen-turbo / qwen-plus / qwen-max,不支持 qwen-vl、qwen-audio 等多模态变体。
方法二:返回空 content 或 status_code=401
检查 OPENAI_API_KEY 是否复制完整——开头是 sk-,长度约 48 位。同时去 DashScope 控制台确认该 key 已启用、是否绑定正确项目。
方法三:timeout 或 connection refused
确认 base_url 是 https://dashscope.aliyuncs.com/compatible-mode/v1,不是 /api/v1 或 /v1/services——后者是原生接口路径,不兼容 OpenAI SDK。