返回全部文章
指南

通过 DashScope 兼容模式用 OpenAI SDK 调用 Qwen3.7 Plus

2026年7月23日 · 18 分钟阅读 · Claude / GPT / Gemini

奶油色背景的编辑风封面,展示一个开发者终端通过三条陶土色路由线连接到标注为 a 的

Qwen3.7 Plus 已经便宜到值得认真测试:截至 2026 年 7 月 23 日,Qwen Cloud 对 qwen3.7-plus 的标价为:最高 256K 输入 token 时,每 1M 输入 token $0.40、每 1M 输出 token $1.60;从 256K 到 1M 时,输入为 $1.20、输出为 $4.80Qwen Cloud pricing)。这是在你重写任何东西之前值得做这次迁移的主要原因。

真正有用的是 API 形态。Qwen Cloud 文档提供了一个兼容 OpenAI 的 Chat Completions 端点:

https://dashscope-intl.aliyuncs.com/compatible-mode/v1

它自己的迁移页面说明,现有 OpenAI SDK 代码只需修改 base_urlapi_keymodel 即可切换,并且示例使用 model="qwen3.7-plus"Qwen Cloud OpenAI compatibility)。这意味着大多数聊天应用、评测脚本、小型 agent 和内部工具都可以在几分钟内完成迁移。需要注意的部分是思考参数、被忽略的 OpenAI 字段、长上下文定价和缓存行为。

迁移前后对比图,展示左侧的 OpenAI SDK 应用仅修改 api_key、base_url 和 model 后变为 r

1. 设置客户端

安装官方 OpenAI Python SDK:

python -m pip install --upgrade openai

设置你的 DashScope 密钥:

export DASHSCOPE_API_KEY="sk-your-dashscope-key"

然后发起一个尽可能简单的 Chat Completions 调用:

# qwen_chat.py
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DASHSCOPE_API_KEY"],
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)

completion = client.chat.completions.create(
    model="qwen3.7-plus",
    messages=[
        {"role": "system", "content": "You are a concise senior Python engineer."},
        {"role": "user", "content": "Write a Python function that chunks a list into size-n batches."},
    ],
    temperature=0.2,
)

print(completion.choices[0].message.content)
print(completion.usage)

运行它:

python qwen_chat.py

同样的模式也适用于 Node。Qwen Cloud 的快速迁移页面也展示了 JavaScript SDK 中使用 baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"model: "qwen3.7-plus"Qwen Cloud OpenAI compatibility)。

如果你维护的代码需要在多个服务商之间切换,请把服务商配置放在调用点之外:

PROVIDERS = {
    "qwen": {
        "api_key_env": "DASHSCOPE_API_KEY",
        "base_url": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
        "model": "qwen3.7-plus",
    }
}

def make_client(provider_name: str) -> tuple[OpenAI, str]:
    cfg = PROVIDERS[provider_name]
    return (
        OpenAI(
            api_key=os.environ[cfg["api_key_env"]],
            base_url=cfg["base_url"],
        ),
        cfg["model"],
    )

OpenAI SDK 本身支持 base_url、自定义超时、重试和原始响应访问;其 README 记录了对连接错误、408、409、429 和 500 级错误的自动重试,以及 max_retriestimeout 选项(openai-python)。

2. 迁移参数,而不只是 URL

理想路径很简单。棘手之处在于参数差异。

Qwen Cloud 表示 Chat Completions API 与 OpenAI 的 Chat API 大体兼容,但 Qwen 专属参数必须通过 Python SDK 中的 extra_body 传入(Qwen Cloud OpenAI compatibility)。这对思考、搜索以及一些采样控制很重要。

启用思考的示例:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DASHSCOPE_API_KEY"],
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)

stream = client.chat.completions.create(
    model="qwen3.7-plus",
    messages=[
        {"role": "user", "content": "Find the bug in this retry loop and explain the fix."}
    ],
    extra_body={
        "enable_thinking": True,
        "thinking_budget": 500,
    },
    stream=True,
)

for chunk in stream:
    if not chunk.choices:
        continue

    delta = chunk.choices[0].delta

    if getattr(delta, "reasoning_content", None):
        print(delta.reasoning_content, end="", flush=True)

    if getattr(delta, "content", None):
        print(delta.content, end="", flush=True)

Qwen 的思考指南说明,enable_thinking 会为混合模型开启推理,thinking_budget 会限制思考 token 数,并且思考 token 会按输出 token 计费(Qwen Cloud thinking)。最后一点很容易被开发者忽略。一个模型在写出 300-token 答案之前先思考了 2,000 个 token,这并不是一次 300-token 输出调用。

在迁移生产代码之前,也要检查不支持的 OpenAI 字段。Qwen Cloud 表示,在 Chat Completions 兼容模式中,包括 reasoning_effortmax_completion_tokensmetadatastoreverbosityprompt_cache_key 以及其他几个字段会被静默忽略(Qwen Cloud OpenAI compatibility)。如果你的 OpenAI 应用依赖其中某个字段来控制成本或产品行为,请显式替换它。

3. 发送前先估算长上下文价格

qwen3.7-plus 的价格分层很简单,但影响很实际。

单次请求的输入 token 输入价格 / 1M 输出价格 / 1M
≤ 256K $0.40 $1.60
256K 到 1M $1.20 $4.80

来源:Qwen Cloud pricing

5 月 26 日快照的模型市场页面将 qwen3.7-plus-2026-05-26 列为支持文本、图像和视频输入、文本输出的模型,并标识为 2026 年 5 月 26 日的快照(Qwen Cloud model page)。Qwen Cloud 更新日志则在 2026 年 6 月 1 日下分别列出了 qwen3.7-plusqwen3.7-plus-2026-05-26,并描述 Plus 系列在保留编码、工具使用和生产力工作流能力的同时,增加了升级后的视觉语言能力(Qwen Cloud model releases)。

对于产品代码,请增加一个预检估算器。你不需要完美的 tokenization,也能防止意外的 900K-token 调用落入更昂贵的档位。

def estimate_qwen37_plus_cost(input_tokens: int, output_tokens: int) -> float:
    if input_tokens <= 256_000:
        input_per_m = 0.40
        output_per_m = 1.60
    else:
        input_per_m = 1.20
        output_per_m = 4.80

    return (input_tokens / 1_000_000 * input_per_m) + (
        output_tokens / 1_000_000 * output_per_m
    )

print(estimate_qwen37_plus_cost(180_000, 4_000))  # 0.0784
print(estimate_qwen37_plus_cost(400_000, 4_000))  # 0.4992

第二次调用并不只是“多一点上下文”。它跨过了一个价格档位边界。

紧凑价格图,对比 qwen3.7-plus token 档位,x 轴标注为每次请求输入 token 从 0 到 1M,y-

4. 前缀重复时使用缓存

上下文缓存能让 Qwen 在重复长提示场景下显著变便宜。Qwen Cloud 文档说明了三种缓存模式:显式缓存、隐式缓存和会话缓存(Qwen Cloud context cache)。

计费规则很明确:

缓存模式 创建成本 命中成本 最小缓存 token 数
显式缓存 标准输入的 125% 标准输入的 10% 1,024
隐式缓存 标准输入的 100% 标准输入的 20% 256
会话缓存 标准输入的 125% 标准输入的 10% 1,024

对于 ≤256K 档位的 qwen3.7-plus,这对应模型页面上的每 1M 隐式缓存命中 token $0.08、每 1M 显式缓存创建 token $0.50,以及每 1M 显式缓存读取 token $0.04Qwen Cloud model page)。

将缓存用于稳定前缀:政策文档、长系统提示、工具手册、schema 或代码库摘要。不要指望它拯救每个请求开头都不同的提示。Qwen Cloud 还表示,Batch 和缓存折扣不能在同一请求中叠加使用(Qwen Cloud pricing)。

5. 生产检查清单和网关选项

切换流量之前,请测试这些情况:

  1. 基础非流式聊天。
  2. 流式聊天。
  3. 使用 extra_body 的思考模式。
  4. 如果你的应用使用函数,请测试工具调用。
  5. JSON 输出,记住 Qwen 兼容模式支持 json_object,而不是 OpenAI 的 json_schema
  6. 接近 256K 输入 token 的长提示。
  7. 大量缓存、重复前缀的调用。
  8. 重试和超时行为。

对于跨模型家族的 fallback 路由,onehop 是简单路径。将一个 OpenAI SDK base URL 改为 https://api.onehop.ai/v1,并用一个网关接入 GPT、Claude、Gemini 和其他模型。OneHop 文档提供了兼容 OpenAI 的 https://api.onehop.ai/v1、兼容 Anthropic 的 https://api.onehop.ai/anthropic,以及兼容 Vertex/Gemini 的 https://api.onehop.ai/vertex-ai 端点(onehop docs)。它也被定位为比一方渠道更便宜,新账号可获得 $10 免费额度且无需绑卡。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ONEHOP_API_KEY"],
    base_url="https://api.onehop.ai/v1",
)

response = client.chat.completions.create(
    model="openai/gpt-5.5",
    messages=[{"role": "user", "content": "Summarize this incident report in 5 bullets."}],
)

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

这并不会替代上面的 Qwen 专属工作。它提供了一条更干净的路径:当你的应用某个工作流需要 Claude、另一个需要 GPT、还要用 Gemini 做多模态测试时,无需接入三套计费系统和三套 SDK 配置。可以从这里开始在 onehop 上调用 Claude 和其他模型,或者注册领取 $10 免费额度

6. 实用迁移方式

迁移一开始只有三行,直到事情不再这么简单:base_urlapi_keymodel。之后真正的工作是移除被忽略的 OpenAI 参数,把 Qwen 控制项移到 extra_body,并为长上下文加上硬性防护。

当你想要一个兼顾成本、长上下文和多模态输入支持的模型时,可以使用 qwen3.7-plus。对于简单抽取和分类,保持思考关闭。对于代码审查、工具编排或多步推理,开启它,并设置 thinking_budget,避免成本漂移。缓存稳定前缀。留意 256K 档位边界。

对于同一产品中还需要 Claude、GPT 或 Gemini 的团队,请保留一条网关路径:在 onehop 上调用 Claude 和其他模型,然后在你想要不绑卡进行真实冒烟测试时,注册领取 $10 免费额度