guardrails
为 LLM 装上安全栏杆:输入输出校验 + 结构化数据生成的开源 Python 框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为 LLM 装上安全栏杆:输入输出校验 + 结构化数据生成的开源 Python 框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你的 AI 助手刚刚生成了一段回复,其中不小心泄露了用户的邮箱地址、顺便提了一句竞争对手的名字、甚至还冒出了一句脏话——如果能在 AI「脱口而出」之前就把这些问题拦截下来,那该有多好?
这正是 Guardrails 要做的事。它是一个开源 Python 框架,专门为大型语言模型(LLM)构建输入输出安全检查和结构化数据生成能力。自 2022 年发布以来,该项目已积累超过 6900 颗 GitHub 星,成为 LLM 应用安全领域最受关注的工具之一。
Guardrails AI 官方 Logo
Guardrails 的诞生源于一个现实痛点:LLM 的输出具有高度不可预测性。在企业级 AI 应用中,直接让 LLM 输出原始结果而不做任何校验,几乎等同于埋下定时炸弹——数据泄露、品牌风险、合规问题随时可能引爆。
Guardrails AI 公司于 2022 年创立,迅速获得了 Andreessen Horowitz 等知名 VC 的支持,团队规模持续扩大。2025 年 2 月,项目方发布了 Guardrails Index,这是业界首个系统性基准测试,对 6 大风险类别、共 24 种 guardrails 方案的性能与延迟进行了横向对比,反映出该项目已从单一工具演化为行业标准制定者。
从 GitHub topics(ai、llm、openai、gpt-3、foundation-model)可以看出,项目聚焦于当前最主流的 LLM 应用场景,而非小众领域。
Guardrails 提供两大核心能力,贯穿整个 LLM 应用生命周期:
1. Input/Output Guards(输入输出守卫)
这是 Guardrails 最直观的功能——在 LLM 处理输入前和生成输出后,分别插入校验逻辑,发现问题立即处理。
支持的校验场景包括(但不限于):
守卫可以自由组合,一个 Guard 对象可以串联多个验证器,层层把关。
Guardrails 在 LLM 应用中的位置示意:有/无 Guardrails 的对比
2. 结构化数据生成(Structured Data Generation)
让 LLM「按模板说话」往往比想象中困难。Guardrails 通过 Pydantic BaseModel 定义输出结构,内部自动选择两种策略之一:
这意味着开发者无需关心底层模型能力差异,只需定义好 Pydantic 模型,Guardrails 自动处理兼容性。
Guardrails 的源码采用模块化组织,核心目录结构如下:
guardrails/
guard.py # 核心 Guard 类,统一入口
classes/ # Validator、Filter 等基类定义
actions/ # 验证动作(exception、filter、refrain)
hub/ # Hub 集成,从 Hub 安装的 validator
formatters/ # 输出格式化(XML、JSON)
datatypes.py # 内置数据类型定义
api_client.py # Hub API 客户端
cli/ # CLI 工具(guardrails start/config)
关键技术栈:
代码质量:
pytest --cov 追踪,有 codecov 集成Guardrails Server: 内置 Flask 服务器,通过 guardrails start 一键启动 REST API,支持微服务化部署。生产环境推荐使用 Gunicorn 替代内置服务器。
Guardrails 的安装和使用极为简单,无需 Docker,单机 Python 环境即可运行。
安装(一条命令):
pip install guardrails-ai
配置 Hub:
guardrails configure
安装预置验证器:
guardrails hub install hub://guardrails/regex_match
使用示例(正则验证美国手机号):
from guardrails import Guard, OnFailAction
from guardrails.hub import RegexMatch
guard = Guard().use(
RegexMatch,
regex=r"\(?\d{3}\)?-? *\d{3}-? *-?\d{4}",
on_fail=OnFailAction.EXCEPTION
)
# 合法输入:通过
guard.validate("123-456-7890")
# 非法输入:抛出异常
try:
guard.validate("1234-789-0000")
except Exception as e:
print(e)
结构化输出示例:
from pydantic import BaseModel, Field
from guardrails import Guard
class Pet(BaseModel):
pet_type: str = Field(description="宠物种类")
name: str = Field(description="宠物名字")
guard = Guard.for_pydantic(output_class=Pet, prompt="我应该养什么宠物?")
raw, validated, rest = guard(
llm_api=openai.completions.create,
engine="gpt-3.5-turbo-instruct"
)
print(validated)
# 输出类似: Pet(pet_type="dog", name="Buddy")
Guardrails 是一款轻量级 Python 库,对硬件几乎无特殊要求:
| 项目 | 要求 |
|---|---|
| Python 版本 | 3.10 ~ 3.13 |
| 内存 | ≥ 512MB |
| 磁盘 | ≥ 200MB |
| GPU | 不需要(纯推理逻辑库) |
| 部署方式 | pip 安装即可 |
| REST API 服务 | guardrails start 启动 Flask 内置服务器 |
当前仓库不包含 Dockerfile 和 docker-compose,但由于是纯 Python 库,通过 pip 安装即可满足几乎所有场景。对于需要 Docker 部署的团队,可自行编写 Dockerfile(基于 python:3.10-slim 镜像,安装依赖后启动 guardrails start 即可)。
验证器质量依赖社区贡献:内置验证器覆盖常见场景,但特定行业的合规需求(如 GDPR、医疗数据)可能需要自定义开发 validator。
Guardrails Server 生产部署需加 Gunicorn:README 明确建议生产环境用 Gunicorn 替代 Flask 内置服务器,否则性能和稳定性无法保证。
Python 3.10 以下版本不兼容:项目依赖 Pydantic v2,实际需要 Python 3.10+。
Function Calling 能力取决于模型:结构化数据生成在不支持 function calling 的模型上依赖 prompt 优化,效果可能不稳定。
Hub 生态仍在快速迭代:Hub 上的 validator 版本更新频繁,使用前建议锁定版本号,避免自动升级导致行为变化。
Guardrails 的出现填补了 LLM 应用安全领域的一个重要空白。在此之前,开发者通常需要在业务逻辑中手工写大量校验代码;有了 Guardrails,这种关注点分离让业务代码专注于「做什么」,安全校验专注于「怎么做」。
2025 年 Guardrails Index 的发布,标志着该项目从工具向平台的演进。随着越来越多的企业将 LLM 集成到核心业务流程,对输入输出安全的监管要求也在同步提升——GDPR、CCPA 等法规的合规压力,使得「AI 安全检查」从可选项变为必选项。
可以预见,Guardrails 这类工具的市场需求将持续增长,其 Hub 生态的丰富程度将成为竞争壁垒。若项目能持续扩展多语言支持(目前主要是 Python 和实验性的 JavaScript),并加强与主流 MLOps 平台的集成,将有望成为 LLM 应用安全的行业基础设施。

Guardrails Hub 界面:浏览、搜索和安装各类预置验证器
项目基本信息
| 维度 | 信息 |
|---|---|
| GitHub | guardrails-ai/guardrails |
| Stars | 6,945 |
| 语言 | Python |
| 许可证 | Apache 2.0 |
| 主仓库 | https://github.com/guardrails-ai/guardrails |
| 官方文档 | https://www.guardrailsai.com/docs |
| 最新版本 | 0.10.0 |
| Python 要求 | ≥ 3.10, < 4.0 |