在阿里云国际站开通 Model Studio 拿到 sk- 开头的 key,代码里把 base_url 抄成了国内站的 https://dashscope.aliyuncs.com/api/v1,请求返回 401,原文 InvalidApiKey,这个 key 在国内站控制台里根本查不到。
原因不止一个,得分开看。国际站与国内站账号体系独立 key 不能互用;base_url 和 key 所属站点不一致;环境变量里存着另一套 key 覆盖了配置;SDK 只读 DASHSCOPE_API_KEY 代码里传的没生效。
第一件事是打印实际生效的 base_url 和 key 尾号
python -c "import os;print(os.getenv('DASHSCOPE_BASE_URL'),os.getenv('DASHSCOPE_API_KEY')[-4:])"
接着用 curl 直接打国际站接口
curl https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation -H "Authorization: Bearer $DASHSCOPE_API_KEY" -H 'Content-Type: application/json' -d '{"model":"qwen-plus","input":{"messages":[{"role":"user","content":"hi"}]}}'
再往下在 SDK 初始化时显式指定站点地址
python -c "import dashscope;dashscope.base_http_api_url='https://dashscope-intl.aliyuncs.com/api/v1';print(dashscope.base_http_api_url)"
等前面都确认过,再清掉旧变量重开终端再跑一次
Remove-Item Env:DASHSCOPE_API_KEY; $env:DASHSCOPE_API_KEY='sk-新key'
这台环境是别人交接的,不少默认值被动过,只能一项项核。
同事提醒我看一下最近一次发布,时间点确实对得上。
别只看报错消失,验证要多做一步。curl 与 SDK 都返回 200,返回体里有正常 request_id,控制台调用量统计里能看到这次请求。
国际站与国内站的域名、账号、计费完全隔离,报 401 时先确认请求打到了哪个域名,再怀疑 key。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
