第 1 课

开通百炼跑通 qwen3.8-max:curl、Python、Node.js、报错与计费

开通百炼、创建 API Key 并拿到业务空间 ID,用 curl、Python、Node.js 各调一次 qwen3.8-max,用假 Key 复现 401 报错,并按 usage 和官方单价算出一次调用的费用。

图文20 分钟千问 官方文档 ↗

课程目录第 1 / 3 课

学习位置仅保存在当前浏览器,有效期 180 天。

01 / 图文教材

图文教材

本课依据:阿里云百炼官方文档「首次调用千问API」https://help.aliyun.com/zh/model-studio/first-api-call-to-qwen 、「获取与配置 API Key」https://help.aliyun.com/zh/model-studio/get-api-key 、「模型调用价格」https://help.aliyun.com/zh/model-studio/model-pricing 、「错误码」https://help.aliyun.com/zh/model-studio/error-code (2026-10-24 核对)。

这一课做完你会得到什么

一个阿里云百炼 API Key 和业务空间 ID,以及分别用 curl、Python、Node.js 写成、都能调通 qwen3.8-max 的最小程序。你还会亲手触发一次 401 报错,并学会按 usage 估算一次调用的费用。

先认清本课用到的三个模型

百炼「模型调用价格」页华北 2(北京)地域的标价(每百万 Token,人民币):

模型 ID单次输入范围输入 / 输出
qwen3.8-max0 < Token ≤ 1M12 元 / 36 元
qwen3.8-flash0 < Token ≤ 1M0.8 元 / 2.7 元
qwen3.7-plus0 < Token ≤ 256K原价 2 元 / 8 元,限时 8 折

三点要记住:

  • 上面三个模型在北京地域各有 100 万 Token 免费额度,有效期 90 天(从开通百炼或模型发布之日起算,以较晚者为准);其他地域没有免费额度。
  • 支持 Batch 调用的模型,输入和输出都按实时价格的 50% 计费;支持上下文缓存的模型,只有输入 Token 打折。两种优惠不能叠加。
  • qwen3.8-max 与 qwen3.8-flash 都同时支持思考和非思考模式,思维链 Token 按输出计费。第 2 课会讲怎么控制它。

第 1 步:开通百炼并创建 API Key

  1. 没有阿里云账号的先注册。用阿里云主账号打开百炼控制台 https://bailian.console.aliyun.com/ ,阅读并同意协议后会自动开通。如果提示「您尚未进行实名认证」,先完成实名认证。
  2. 在控制台的 API Key 页面点「创建 API Key」。创建时不用选模型,调用时在请求体的 model 参数里指定。如果想限制这个 Key 能调哪些模型,创建时选「自定义」权限,并打开「访问模型范围」。
  3. 在「业务空间管理」页面复制业务空间 ID(WorkspaceId)。使用华北 2(北京)、新加坡、日本(东京)、德国(法兰克福)、中国香港地域的模型时,Base URL 里必须带上它。
  4. 记住 Key 属于哪个地域。各地域的 API Key 不通用,本课全部使用华北 2(北京)。

第 2 步:把 Key 和业务空间 ID 放进环境变量

官方建议把 Key 放在环境变量 DASHSCOPE_API_KEY 里,不要写进代码。为了不在每段代码里手改 URL,本课另外用 WORKSPACE_ID 保存业务空间 ID。这个变量名是本课自己定的,不是官方变量。

macOS / Linux(临时生效,只对当前终端有效):

export DASHSCOPE_API_KEY="你的百炼API_KEY"
export WORKSPACE_ID="你的业务空间ID"
echo $DASHSCOPE_API_KEY

想让新开的终端也生效,就把这两行 export 追加到 ~/.bashrc(macOS 默认是 ~/.zshrc),再执行 source ~/.bashrc。

Windows PowerShell(当前窗口生效):

$env:DASHSCOPE_API_KEY = "你的百炼API_KEY"
$env:WORKSPACE_ID = "你的业务空间ID"

拼出来的北京地域 OpenAI 兼容 Base URL 形如:

https://你的业务空间ID.cn-beijing.maas.aliyuncs.com/compatible-mode/v1

第 3 步:用 curl 发出第一个请求

curl -X POST \
  "https://${WORKSPACE_ID}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions" \
  -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-max",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "你是谁?"}
    ]
  }'

对照结果(官方文档示例响应,id 与 created 每次不同):

{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "我是来自阿里云的大规模语言模型,我叫千问。"
      },
      "finish_reason": "stop",
      "index": 0,
      "logprobs": null
    }
  ],
  "object": "chat.completion",
  "usage": {"prompt_tokens": 22, "completion_tokens": 16, "total_tokens": 38},
  "created": 1728353155,
  "system_fingerprint": null,
  "model": "qwen3.8-max",
  "id": "chatcmpl-39799876-eda8-9527-9e14-2214d641cf9a"
}

第 4 步:Python 版

需要 Python 3.9 或更高版本。先安装 OpenAI SDK:

pip install -U openai

新建 hello_qwen.py:

import os
from openai import OpenAI

workspace = os.getenv("WORKSPACE_ID")
try:
    client = OpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # 华北2(北京)地域;其他地域的 URL 不同
        base_url=f"https://{workspace}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
    )
    completion = client.chat.completions.create(
        model="qwen3.8-max",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "你是谁?"},
        ],
    )
    print(completion.choices[0].message.content)
except Exception as e:
    print(f"错误信息:{e}")
    print("请参考文档:https://help.aliyun.com/zh/model-studio/error-code")

运行 python3 hello_qwen.py,对照结果(官方示例,措辞每次可能略有不同):

我是阿里云开发的一款超大规模语言模型,我叫千问。

第 5 步:Node.js 版

npm install --save openai

新建 hello_qwen.mjs:

import OpenAI from "openai";

const workspace = process.env.WORKSPACE_ID;
const openai = new OpenAI({
  apiKey: process.env.DASHSCOPE_API_KEY,
  baseURL: `https://${workspace}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1`,
});

const completion = await openai.chat.completions.create({
  model: "qwen3.8-max",
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "你是谁?" },
  ],
});
console.log(completion.choices[0].message.content);

运行 node hello_qwen.mjs,输出应与 Python 版类似。

第 6 步:故意触发一次 401,认识最常见的报错

把 Key 换成一个假的,再跑一次 curl:

curl -s -X POST \
  "https://${WORKSPACE_ID}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions" \
  -H "Authorization: Bearer sk-not-a-real-key" \
  -H "Content-Type: application/json" \
  -d '{"model": "qwen3.8-max", "messages": [{"role": "user", "content": "你是谁?"}]}'

2026-10-24 实测返回 HTTP 401(id 每次不同):

{
  "error": {
    "message": "Invalid API-key provided. For details, see: ...",
    "type": "invalid_request_error",
    "code": "invalid_api_key"
  }
}

官方错误码文档列出的两种提示 Invalid API-key provided. 与 Incorrect API key provided. 都表示 Key 填错了。最常见的三个原因:

  • 把 Key 当成变量名传给 os.getenv("sk-xxx")。正确写法是 os.getenv("DASHSCOPE_API_KEY")。
  • Key 与地域不匹配,例如拿新加坡的 Key 调北京的 URL。
  • 环境变量是在别的终端窗口里设的,当前窗口没生效。可以先 echo $DASHSCOPE_API_KEY 检查一下。

第 7 步:按 usage 估算一次调用的费用

费用 = 输入 Token × 输入单价 + 输出 Token × 输出单价。拿第 3 步的示例响应算(qwen3.8-max,输入 22、输出 16):

输入:22 ÷ 1,000,000 × 12 元 = 0.000264 元
输出:16 ÷ 1,000,000 × 36 元 = 0.000576 元
合计:约 0.00084 元

同样的请求如果换成 qwen3.8-flash,单价分别是 0.8 元和 2.7 元,费用大约是原来的十三分之一。开着思考模式时,思维链 Token 计入 completion_tokens,也按输出单价收费。在免费额度用完之前,这些 Token 都先从额度里扣。

自查清单

  • echo $DASHSCOPE_API_KEY 和 echo $WORKSPACE_ID 都有值
  • curl、Python、Node.js 三种方式都返回了千问的自我介绍
  • 用假 Key 能稳定复现 401 invalid_api_key
  • 你能用 usage 里的数字自己算出一次调用的费用

本课资料

适用环境

  • 网页
  • iOS
  • Android
  • API

官方文档

千问 ↗