guardrails-ai 0.5 在内网机器上跑 Guard().use(DetectPII),首次执行去 hub 拉校验器,卡两分钟后报 Unable to fetch validator from hub,机器的出网只放行 443 且需要代理认证。

一开始怀疑是「校验器版本与本机 guardrails 版本不匹配」,查了一圈,方向不对。

排查方向其实有限,先把可能性排一排。训练环境无外网,hub 域名解析直接失败。另一种情况是代理只支持认证模式,pip 与 hub 客户端都没配代理。

另外,hub token 没写进环境变量,匿名请求被限流。

先在外网机器下载校验器 wheel 包

pip download guardrails-ai-detect-pii -d ./wheels --no-deps

然后把 wheel 拷进内网后本地安装

pip install ./wheels/guardrails_ai_detect_pii-0.3.2-py3-none-any.whl

再往下确认本地已注册的校验器列表

python -c "from guardrails import Guard;print(Guard.list_validators())"

末了用本地校验器初始化 Guard 并跑一条样例

python -c "from guardrails import Guard;g=Guard().use('detect_pii');print(g.validate('联系我 13800000000'))"

恢复的判定其实很直接。Guard 初始化不再访问网络,样例里的手机号被识别为 PII 并给出修正建议,离线机器上重复执行也稳定。

提醒一点。hub 拉取失败不一定是网络问题,版本不匹配同样会报 fetch 失败,先把 wheel 下载到本地再装,日志里的真实原因才看得清。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189