qwen3 中文文档 下载 App

用 OpenAI SDK 调用百炼 Qwen3 — 一行 base_url 切换到阿里云

为什么用 OpenAI 兼容接口

DashScope SDK 是百炼的原生方式,但如果你已经有基于 OpenAI API 的代码,或者用的是 LangChain、LlamaIndex 等只认 OpenAI 接口的框架,OpenAI 兼容接口就是你的选择。

迁移只需改两处:

  1. base_url 改成百炼的兼容地址
  2. model 名改成百炼的模型名

其他代码几乎不用动。

最简迁移

# 原来调 OpenAI
# from openai import OpenAI
# client = OpenAI(api_key="sk-openai-xxx")
# response = client.chat.completions.create(model="gpt-4", messages=messages)

# 改成调百炼
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_DASHSCOPE_API_KEY",  # 用百炼的 API Key
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"  # 百炼兼容接口
)

response = client.chat.completions.create(
    model="qwen3-plus",  # 百炼的模型名
    messages=[
        {"role": "user", "content": "介绍一下 Qwen3。"}
    ]
)

print(response.choices[0].message.content)

就这么简单。

安装

pip install openai  # ≥ 1.0.0

模型名对照

百炼兼容接口支持的 Qwen3 模型名:

百炼模型名说明
qwen3-max旗舰,默认自动思考
qwen3-plus高性能,可选思考
qwen3-flash低延迟,可选思考
qwen3-vl-plus多模态(图+视频)
qwen3-vl-flash多模态(仅图)

思考模式控制

OpenAI 接口通过 extra_body 传递百炼特有参数:

开启思考

response = client.chat.completions.create(
    model="qwen3-max",
    messages=[{"role": "user", "content": "证明勾股定理。"}],
    max_tokens=2048,
    extra_body={
        "enable_thinking": True
    }
)

关闭思考

response = client.chat.completions.create(
    model="qwen3-plus",
    messages=[{"role": "user", "content": "1 + 1 = ?"}],
    extra_body={
        "enable_thinking": False
    }
)

获取思考内容

当开启思考模式时,百炼会在 OpenAI 响应的 reasoning_content 字段返回思考链:

response = client.chat.completions.create(
    model="qwen3-max",
    messages=[{"role": "user", "content": "证明勾股定理。"}],
    extra_body={"enable_thinking": True}
)

msg = response.choices[0].message
print("思考过程:", getattr(msg, "reasoning_content", None))
print("最终答案:", msg.content)

reasoning_content 是百炼扩展的字段,OpenAI 原生没有。如果要在代码里兼容两者,可以用 getattr 或 .pop("reasoning_content", None) 访问原始字典。

流式输出

stream = client.chat.completions.create(
    model="qwen3-flash",
    messages=[{"role": "user", "content": "介绍一下 Qwen3。"}],
    stream=True,
    extra_body={"enable_thinking": False}
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

流式思考模式下,思考内容会以 delta.reasoning_content 的形式推送:

stream = client.chat.completions.create(
    model="qwen3-max",
    messages=[{"role": "user", "content": "证明勾股定理。"}],
    stream=True,
    extra_body={"enable_thinking": True}
)

for chunk in stream:
    delta = chunk.choices[0].delta
    if hasattr(delta, "reasoning_content") and delta.reasoning_content:
        print(delta.reasoning_content, end="")
    if delta.content:
        print(delta.content, end="")

多模态(图像理解)

OpenAI 格式下的图像理解:

response = client.chat.completions.create(
    model="qwen3-vl-plus",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "这张图片里有什么?"},
                {"type": "image_url", "image_url": {
                    "url": "https://example.com/image.jpg"
                }}
            ]
        }
    ]
)

print(response.choices[0].message.content)

本地图片需要先转成 base64:

import base64

with open("image.jpg", "rb") as f:
    base64_img = base64.b64encode(f.read()).decode("utf-8")

response = client.chat.completions.create(
    model="qwen3-vl-plus",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "描述这张图片。"},
                {"type": "image_url", "image_url": {
                    "url": f"data:image/jpeg;base64,{base64_img}"
                }}
            ]
        }
    ]
)

与 LangChain / LlamaIndex 集成

LangChain

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    api_key="YOUR_DASHSCOPE_API_KEY",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    model="qwen3-plus",
    # 可以在这里设置默认的 extra_body
    model_kwargs={
        "extra_body": {"enable_thinking": False}
    }
)

response = llm.invoke("介绍一下 Qwen3。")
print(response.content)

LlamaIndex

from llama_index.llms.openai import OpenAI

llm = OpenAI(
    api_key="YOUR_DASHSCOPE_API_KEY",
    api_base="https://dashscope.aliyuncs.com/compatible-mode/v1",
    model="qwen3-plus"
)

response = llm.complete("介绍一下 Qwen3。")
print(response.text)

完整参数

response = client.chat.completions.create(
    model="qwen3-plus",
    messages=[
        {"role": "system", "content": "你是一个有帮助的助手。"},
        {"role": "user", "content": "写一首关于春天的诗。"}
    ],
    # 标准 OpenAI 参数
    max_tokens=1024,
    temperature=0.7,
    top_p=0.9,
    stream=False,
    # 百炼扩展参数(通过 extra_body)
    extra_body={
        "enable_thinking": False,      # 思考模式
        "repetition_penalty": 1.05,    # 重复惩罚
        "top_k": 50                    # Top-K
    }
)

不兼容的地方

虽然接口高度兼容,但仍有一些差异:

方面OpenAI百炼兼容
思考模式原生不支持通过 extra_body 扩展
思考内容字段无reasoning_content
多模态格式OpenAI 原生格式兼容,但百炼也支持自己的格式
函数/工具调用原生支持支持,但可能有细微差异
上下文长度因模型而异qwen3-max 256K,其他 128K

如果遇到问题,可以用 DashScope SDK 作为备选方案。

相关阅读