guardrails-ai

Guardrails AI 的输入输出校验与结构化输出框架。

补充说明

Guardrails AI 在 LLM 前后插入校验器(validator),处理 JSON 结构、PII、敏感话题、竞品提及和格式约束。校验失败时可以抛异常、自动修复、重新询问模型或过滤内容。

核心概念:Guard 是校验容器,Hub 上的 validator 是可安装的规则包。LLM 类 validator 会增加一次模型调用,成本和延迟要计入预算。

安装与启动

pip install -U guardrails-ai
guardrails configure

guardrails configure 会询问 Hub token;CI 中先在有网环境安装 validator,再把依赖固化进镜像。

guardrails hub install hub://guardrails/valid_json
guardrails hub install hub://guardrails/detect_pii
guardrails hub list

常用示例

校验模型输出是否为合法 JSON:

python - <<'PY'
from guardrails import Guard
from guardrails.hub import ValidJson

guard = Guard().use(ValidJson, on_fail="exception")
try:
    outcome = guard.validate('{"service": "api", "port": 8080}')
    print("ok:", outcome.validated_output)
except Exception as exc:
    print("invalid json:", exc)
PY

检测并脱敏 PII:

python - <<'PY'
from guardrails import Guard
from guardrails.hub import DetectPII

guard = Guard().use(DetectPII(pii_entities="pii", on_fail="fix"))
outcome = guard.validate("联系人手机号 13800138000,请回拨。")
print(outcome.validated_output)
PY

在调用模型时直接套 Guard:

python - <<'PY'
from guardrails import Guard
from guardrails.hub import ValidJson

guard = Guard().use(ValidJson, on_fail="reask")
outcome = guard(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "返回包含 name 和 port 的 JSON"}],
)
print(outcome.validated_output)
PY

易错点与排错

读完自测

合上页面,先回答,再展开对照。

  1. on_fail 常见取值有哪些,分别做什么?
  2. 为什么 ValidJson 通过了仍然可能出错?
  3. Hub validator 在离线环境怎么用?
答案
  1. 常见有 exception(抛异常)、fix(自动修复)、reask(把错误反馈给模型重试)、filter(过滤)、noop(只记录)。生产环境要按风险选择,并记录原始输出。
  2. ValidJson 只保证文本能被解析为 JSON,不保证字段名、类型和业务约束正确。需要再用 Pydantic 模型或 JSON schema 校验结构和取值。
  3. 先在有网环境执行 guardrails hub install,把安装后的包和模型缓存打进镜像;CI 中不要重复联网安装,并锁定 validator 版本。

相关条目