华为云 MaaS GLM-5.2 完整指南(踩坑实录)
从 ModelArts 控制台找不到入口,到成功 curl 通 GLM-5.2,把所有弯路一次讲清楚。附赠 OfficeAce 存储凭证解密脚本分析。
前言
最近想试试 GLM-5.2,发现华为云 MaaS(ModelArts Studio)上有预置服务,新用户有免费 Token 额度(不清楚,但是这个是收费项目),开箱就能调 API。但整个开通流程的坑点非常密集------光是"在线推理页面为什么是空白"就足以劝退一大部分人。这篇文章把我踩过的所有坑整理成一份避坑指南,照着走 10 分钟搞定。
一、先纠正几个认知误区
误区 1:GLM-5.2 是"部署"出来的 ❌
华为云上有两个长得很像的东西:
| 产品 | 用途 | 有没有 GLM-5.2 |
|---|---|---|
| AI开发平台 ModelArts | 部署你自己的模型 | ❌ 没有 |
| ModelArts Studio (MaaS) | 调用华为预置的商用模型 | ✅ 有 |
| GLM-5.2、DeepSeek、Qwen 这些都是华为已经帮你部署好 的预置服务,你要做的动作是**「开通」,不是「部署」**。 |
⚠️ 我第一次走流程时就点进了「部署」向导,被"调度策略、单元配置、镜像、容器端口、ELB、流控策略、同步调用/异步调用"这些参数整懵了。这些全是部署自定义模型才用的,跟调 GLM 一点关系都没有。 看到这个向导直接取消退出。
顺便回答下"同步/异步怎么选":同步 = 发请求等结果(对话/问答/补全用这个);异步 = 提交任务拿 task_id 再轮询(批量长任务用)。调 GLM 聊天永远选同步。
误区 2:在 ModelArts 控制台能找到预置服务 ❌
在 ModelArts 控制台的「在线推理 → 服务列表」里永远 不会出现 GLM,因为预置服务在 MaaS 控制台的**「预置服务」页签**下。两个控制台入口都不一样。
误区 3:中国-香港区域最好 ❌
很多教程写香港,但 MaaS 预置服务(含 GLM-5.2)仅支持「西南-贵阳一」,香港区反而没有预置服务列表。我一开始切到香港结果更空了。
对,GLM-5.2 这个预置服务本身就是收费的,按 Token 用量扣钱,没有免费额度送。之前说的"免费"其实是另外几个东西,容易混淆。给你一次说清:
一、你开通的 GLM-5.2 是收费的
从 2026 年 8 月 20 日起华为云调价,GLM-5.2 在贵阳一的价格:
| 计费项 | 白天 08:00--20:59 | 夜间 21:00--次日07:59(7折) |
|---|---|---|
| 输入 | 0.008 元 / 千 tokens | 0.0056 元 / 千 tokens |
| 输出 | 0.028 元 / 千 tokens | 0.0196 元 / 千 tokens |
| 开通本身免费,不用不扣钱;但只要调用就从账户余额扣。一次普通对话大概几百 tokens,花不了几分钱,但账户里没钱或没领代金券就会调用失败。 |
二、真正"免费"的是这几个,别搞混
| 免费来源 | 内容 | 怎么拿 |
|---|---|---|
| MaaS「免费服务」页签 | DeepSeek、Qwen 等模型,领取后送 200 万 tokens | 在线推理 → 切到「免费服务」页签 → 点「领取额度」 |
| AgentArts 平台 | 开通即送 200 万 tokens,用于智能体调试 | 开通 AgentArts 自动到账 |
| OfficeAce 内置模型 | 邀测期免费,每日 1000 次调用,次日重置 | 装 OfficeAce 客户端直接用 |
| CodeArts 码力续航计划 | 每日 1000 万免费 tokens,当日清零次日重置 | 登录即送,不用手动领 |
三、给你个实用建议
如果你不想花钱,最省事的组合是:
- 日常聊天/测试 → 用 OfficeAce 内置模型(每天 1000 次免费)或者去 MaaS 免费服务页签领 DeepSeek 的 200 万 tokens
- 写代码 → 用 CodeArts 码道,每天 1000 万 tokens 白送,量大到随便造
- GLM-5.2 → 留着真需要它的时候再调,账户里充个 10 块钱能聊很久(约 35 万输出 tokens)
如果你就是想专门试 GLM-5.2 又不想花一分钱,那目前没有针对它的免费额度------要么充小额,要么换 DeepSeek/Qwen 等免费模型的免费额度先玩。
一句话:GLM-5.2 是按 Token 收费的;要免费就去"免费服务"页签领 DeepSeek 的 200 万 tokens,或者用 OfficeAce 每天 1000 次的免费额度。
二、正确开通流程(10 分钟搞定)
Step 1:进入 MaaS 控制台
两种方式:
方式 A :控制台顶部搜索框输入 MaaS,点击第一个结果 「MaaS模型即服务」 ,或直接点下面三个快捷按钮中的 「在线推理」 。
方式 B :直接访问 https://www.huaweicloud.com/product/modelartsstudio.html → 点「进入控制台」。
Step 2:切换区域到「西南-贵阳一」⭐ 最关键
顶部区域下拉框,切到「西南-贵阳一」。
如果你发现「在线推理」页面空白,99% 就是区域不对。我一开始选了「华东二」,页面直接白屏;切到贵阳一后立刻就有内容了。
Step 3:开通 GLM-5.2 预置服务
左侧导航:模型推理 → 在线推理 → 「预置服务」页签 → 找到 GLM-5.2 → 操作列点 「开通服务」 → 勾选声明 → 一键开通。
- 几秒钟完成,不占用资源、不用不扣费
- 开通后不支持关闭,按 Token 用量计费
- 开通 GLM-5.2 会自动开通该模型所有版本
Step 4:创建 API Key
左侧 「管理与统计 → API Key 管理」→ 创建 API Key 。
⚠️ Key 只显示一次,立刻复制保存 。丢了只能重新建,新的生成后旧的立即失效。另外新建的 Key 要等 3~5 分钟才生效,刚建完马上 curl 报 401 很正常,别慌。
Step 5:找调用地址
回到 GLM-5.2 那一行,操作列点 「调用说明」,里面会给出:
- API 地址(贵阳一通用地址是
https://api.modelarts-maas.com/v2/chat/completions) - model 参数(就是
glm-5.2)
三、调用验证
curl
bash
curl -X POST "https://api.modelarts-maas.com/v2/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 你的API_Key" \
-d '{
"model": "glm-5.2",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "介绍下你自己"}
]
}'
Python(OpenAI SDK 兼容)
python
from openai import OpenAI
client = OpenAI(
base_url="https://api.modelarts-maas.com/v2", # 注意末尾不要带 /chat/completions
api_key="你的Key"
)
resp = client.chat.completions.create(
model="glm-5.2",
messages=[{"role": "user", "content": "写一个 Python 快速排序"}]
)
print(resp.choices[0].message.content)
返回 200 且 choices[0].message.content 有内容 = 大功告成。
接入 OfficeAce
如果你是用 OfficeAce 桌面端:
左侧「模型」→ 右上角「接入模型」→ 选 「接入华为云 MaaS 模型」 → 接入类型选 「华为云 MaaS 按需计费」 → 粘贴 API Key → 勾选 GLM-5.2 → 连通性测试 通过后确认即可。
(Token Plan 是另一种订阅制套餐,也仅支持贵阳一,按需计费更灵活,推荐按需。)
四、常见报错速查表
| 报错/现象 | 真实原因 | 解决 |
|---|---|---|
| 在线推理页面空白 | 区域不对 | 顶部切到西南-贵阳一 |
| 找不到「预置服务」页签 | 进错控制台了 | 用搜索框搜 MaaS,进 ModelArts Studio |
| 被要求填调度策略/镜像/端口 | 点了「部署」,那是自定义模型向导 | 全部取消退出,去「预置服务」页签 |
| 401 Unauthorized | Key 未生效 / 填错 | 新 Key 等 3-5 分钟;确认用 Bearer 头 |
| model not found | 未开通该模型 | 回预置服务页签对 GLM-5.2 点一次「开通服务」 |
| base_url 404 | SDK 地址末尾多写了 /chat/completions |
base_url 只写到 /v2 |
| 开通按钮点了没反应 | 未做 ModelArts 委托授权 | 页面弹授权提示就同意,或主账号登录刷新 |
五、费用与白嫖额度
- 开通免费,按 Token 用量计费,不用不扣钱
- 新用户有免费 Token 额度 ,在「预置服务 → 免费服务」页签还可以领取 DeepSeek、Qwen 等模型的免费额度
- GLM-5.2 计费参考(贵阳一):输入约 ¥8/M tokens,输出约 ¥28/M tokens;21:00--次日 07:59 分时段计费可享 7 折
- 配合 OfficeAce 内置模型调用(每日 1000 次不限 Token),日常办公够用了
六、附录:OfficeAce 本地凭证解密脚本分析
最后附赠一个进阶话题。如果你已经用 OfficeAce 客户端接入了 MaaS,其实可以在本机把 OfficeAce 存储的凭证直接解出来用(DPAPI + AES-GCM),不必再去控制台拿 Key:
python
# decrypt.py - 还原 OfficeAce 存储的 Huawei MaaS 凭证
# 必须在 Owner 本人 Windows 用户下运行(DPAPI CurrentUser 绑定用户 SID)
import os, json, glob, base64, hashlib, ctypes
from ctypes import wintypes
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
DIR_PATH = r"E:\OfficeAce\packages\api\.config\secure-config-nodejs"
class DATA_BLOB(ctypes.Structure):
_fields_ = [("cbData", wintypes.DWORD),
("pbData", ctypes.POINTER(ctypes.c_byte))]
def dpapi_unprotect(blob_bytes):
blob_in = DATA_BLOB(len(blob_bytes), ctypes.cast(
(ctypes.c_byte * len(blob_bytes))(*blob_bytes),
ctypes.POINTER(ctypes.c_byte)))
blob_out = DATA_BLOB()
desc = ctypes.c_wchar_p()
ok = ctypes.windll.crypt32.CryptUnprotectData(
ctypes.byref(blob_in), ctypes.byref(desc),
None, None, None, 0, ctypes.byref(blob_out))
if not ok:
raise ctypes.WinError(ctypes.get_last_error())
data = bytes(ctypes.string_at(blob_out.pbData, blob_out.cbData))
ctypes.windll.kernel32.LocalFree(blob_out.pbData)
return data
def from_b64url(s):
s = s.replace("-", "+").replace("_", "/")
return base64.b64decode(s + "=" * (-len(s) % 4))
with open(os.path.join(DIR_PATH, ".oauth-profile-encryption-key")) as f:
raw = f.read().lstrip("\ufeff") # 注意去 BOM,否则 startswith 会误判
MAGIC = "OC-DPAPI-1\n"
secret = dpapi_unprotect(base64.b64decode(raw[len(MAGIC):].strip()))
key = hashlib.sha256(secret).digest() # AES-256-GCM key = SHA256(secret)
profile = glob.glob(os.path.join(DIR_PATH, "oauth-*.json"))[0]
payload = json.load(open(profile, encoding="utf-8"))
plain = AESGCM(key).decrypt(
from_b64url(payload["iv"]),
from_b64url(payload["data"]) + from_b64url(payload["tag"]), # tag 必须拼在 ciphertext 后
None)
obj = json.loads(plain)
mi = obj["modelInfo"]
ak = mi["model_auth_info"]["model_app_key"]
sk = mi["model_auth_info"]["model_app_secret"]
basic = base64.b64encode(f"{ak}:{sk}".encode()).decode()
print(f"URL: {mi['model_api_url_base']}")
print(f"Basic: {basic}")
print(f"expires: {obj['credential']['expires_at']}")
几个实现细节:
- DPAPI CurrentUser 绑定 Windows 用户 SID ,换账号/换机器都解不开,
CryptUnprotectData的dwFlags=0就是 CurrentUser scope raw记得lstrip("\ufeff")去 BOM,否则"OC-DPAPI-1\n"的 startswith 会失败AESGCM.decrypt(iv, data + tag, None)------ tag 必须拼在 ciphertext 后面,这是 Pythoncryptography库的标准用法- 拼出的
Basic <base64(app_key:app_secret)>是给华为 MaaS 老式 OAuth2 用的;如果只想调 chat/completions,用控制台生成的 API Key + Bearer 头更简单
总结
整个流程中最容易翻车的三个点,再强调一遍:
- 控制台选错:是 ModelArts Studio (MaaS),不是 AI开发平台 ModelArts
- 区域选错:必须西南-贵阳一,华东二/香港都会白屏或没预置服务
- 动作选错 :预置服务是「开通」不是「部署」,看到部署向导直接取消
照着 Step 1 → 5 走,10 分钟内就能 curl 通 GLM-5.2。祝各位薅羊毛愉快 🎉
如果这篇文章对你有帮助,点个赞 + 收藏再走吧!有问题评论区见。