guardrails

GitHub
6.7k 564 简单 1 次阅读 今天Apache-2.0语言模型开发框架Agent图像
AI 解读 由 AI 自动生成,仅供参考

Guardrails 是一个专为大语言模型(LLM)打造的 Python 框架,旨在帮助开发者构建更可靠、安全的 AI 应用。它主要解决两大核心痛点:一是有效识别并拦截输入与输出中的潜在风险(如幻觉、敏感信息泄露或格式错误),二是确保模型能够稳定地生成符合预期的结构化数据。

通过引入“护栏”机制,Guardrails 能在数据进入模型前进行预检,并在模型回复后做二次验证,从而大幅降低不可控输出带来的隐患。其独特亮点在于拥有庞大的"Guardrails Hub"生态,提供了丰富的预构建验证器(Validators)。开发者可以像搭积木一样,灵活组合这些验证器来定制专属的输入/输出防护策略,甚至支持正则匹配等细粒度控制。此外,项目近期推出的 Guardrails Index 还能帮助用户横向对比不同防护方案的性能与延迟表现。

这款工具非常适合正在开发 AI 应用的软件工程师、需要确保数据合规性的研究人员,以及希望提升模型输出稳定性的技术团队使用。只需简单的几行代码配置,即可为现有的 LLM 流程加上坚实的安全锁,让 AI 交互更加可控且值得信赖。

使用场景

某金融科技公司正在开发一款智能信贷助手,旨在通过大模型自动提取用户对话中的关键信息(如手机号、收入证明)并生成结构化数据供风控系统使用。

没有 guardrails 时

  • 数据格式混乱:大模型偶尔会输出非标准的电话号码格式(如"1234-789-0000"),导致下游数据库写入失败或报错。
  • 敏感信息泄露:模型可能在回答中无意复述用户的身份证号或银行卡号,存在严重的数据合规风险。
  • 幻觉误导决策:当用户未提供收入证明时,模型可能凭空捏造虚假数值,导致信贷额度评估出现重大偏差。
  • 人工复核成本高:开发团队不得不安排专人对每一条模型输出进行二次校验,严重拖慢了业务上线速度。

使用 guardrails 后

  • 强制格式规范:通过配置 RegexMatch 等验证器,guardrails 能自动拦截不符合正则规则的电话号码,并触发重试机制直至生成合法格式。
  • 实时风险阻断:利用预置的隐私保护验证器,guardrails 在输出阶段即时识别并屏蔽身份证号等敏感实体,确保数据不出域。
  • 消除事实幻觉:针对数值型字段设置逻辑约束,当模型试图编造数据时,guardrails 会直接抛出异常或返回默认安全值,保障风控准确性。
  • 自动化流程闭环:输入/输出守卫自动接管校验工作,研发团队无需编写大量样板代码,即可实现端到端的可靠数据流转。

guardrails 为大模型应用装上了“安全气囊”,将不可控的自然语言生成转化为可信、结构化且合规的业务数据流。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该工具是一个 Python 框架,主要用于 LLM 的输入/输出验证和结构化数据生成。支持通过 CLI 安装和管理验证器(validators)。可作为独立服务运行(基于 Flask),生产环境建议使用 Docker 配合 Gunicorn 部署。支持 Python 和 JavaScript,可与专有或开源 LLM 集成。
python3.8+
guardrails-ai
pydantic
openai
flask
gunicorn
guardrails hero image

快速开始

Guardrails AI Logo Guardrails AI Logo

License PyPI - Python Version Downloads CI codecov Checked with pyright X (formerly Twitter) Follow Discord Static Badge Static Badge Gurubase

新闻与更新

  • [2025年2月12日] 我们刚刚推出了 Guardrails Index——首个同类基准,用于比较 24 种护栏工具在 6 大常见类别中的性能和延迟!请访问 index.guardrailsai.com 查看该指数。

什么是 Guardrails?

Guardrails 是一个 Python 框架,通过执行两项关键功能来帮助构建可靠的 AI 应用程序:

  1. Guardrails 在您的应用程序中运行输入/输出护栏,以检测、量化并缓解特定类型的风险。要查看完整的风险列表,请访问 Guardrails Hub
  2. Guardrails 帮助您从 LLM 中生成结构化数据。
Guardrails in your application

Guardrails Hub

Guardrails Hub 是一系列预构建的特定类型风险度量(称为“验证器”)。多个验证器可以组合成输入和输出护栏,拦截 LLM 的输入和输出。访问 Guardrails Hub 查看完整的验证器列表及其文档。

Guardrails Hub gif

安装

pip install guardrails-ai

入门指南

创建用于 LLM 验证的输入和输出护栏

  1. 下载并配置 Guardrails Hub CLI。

    pip install guardrails-ai
    guardrails configure
    
  2. 从 Guardrails Hub 安装一个护栏。

    guardrails hub install hub://guardrails/regex_match
    
  3. 从已安装的护栏创建一个护栏。

    from guardrails import Guard, OnFailAction
    from guardrails.hub import RegexMatch
    
    guard = Guard().use(
        RegexMatch, regex="\(?\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)
    

    输出:

    字段验证失败,错误如下:结果必须匹配 \(?\d{3}\)?-? *\d{3}-? *-?\d{4}
    
  4. 在一个护栏中运行多个护栏。 首先,从 Guardrails Hub 安装必要的护栏。

    guardrails hub install hub://guardrails/competitor_check
    guardrails hub install hub://guardrails/toxic_language
    

    然后,从已安装的护栏创建一个护栏。

    from guardrails import Guard, OnFailAction
    from guardrails.hub import CompetitorCheck, ToxicLanguage
    
    guard = Guard().use(
        CompetitorCheck(["Apple", "Microsoft", "Google"], on_fail=OnFailAction.EXCEPTION),
        ToxicLanguage(threshold=0.5, validation_method="sentence", on_fail=OnFailAction.EXCEPTION)
    )
    
    guard.validate(
        """An apple a day keeps a doctor away.
        This is good advice for keeping your health."""
    )  # 两个护栏都通过
    
    try:
        guard.validate(
            """Shut the hell up! Apple just released a new iPhone."""
        )  # 两个护栏都失败
    except Exception as e:
        print(e)
    

    输出:

    字段验证失败,错误如下:发现了以下竞争对手:[['Apple']]。请下次避免提及这些竞争对手;您的回复中包含以下有毒语句:
    
    - Shut the hell up!
    

使用 Guardrails 从 LLM 中生成结构化数据

让我们通过一个例子来说明如何让 LLM 生成虚构的宠物名字。为此,我们将创建一个 Pydantic BaseModel,它代表我们期望的输出结构。

from pydantic import BaseModel, Field

class Pet(BaseModel):
    pet_type: str = Field(description="宠物种类")
    name: str = Field(description="独特的宠物名字")

现在,从 Pet 类创建一个护栏。该护栏可用于调用 LLM,使输出格式化为 Pet 类。其底层实现方式有两种:

  1. 函数调用:对于支持函数调用的 LLM,我们使用函数调用语法生成结构化数据。
  2. 提示优化:对于不支持函数调用的 LLM,我们将预期输出的模式添加到提示中,以便 LLM 能够生成结构化数据。
from guardrails import Guard
import openai

prompt = """
    我应该养什么类型的宠物,又该给它取个什么名字呢?

    ${gr.complete_json_suffix_v2}
"""
guard = Guard.for_pydantic(output_class=Pet, prompt=prompt)

raw_output, validated_output, *rest = guard(
    llm_api=openai.completions.create,
    engine="gpt-3.5-turbo-instruct"
)

print(validated_output)

这将打印出:

{
    "pet_type": "dog",
    "name": "Buddy
}

Guardrails 服务器

Guardrails 可以通过 guardrails start 命令以 Flask 提供的独立服务形式部署,从而允许您通过 REST API 与其交互。这种方法简化了基于 Guardrails 的应用程序的开发和部署。

  1. 安装:pip install "guardrails-ai"
  2. 配置:guardrails configure
  3. 创建配置:guardrails create --validators=hub://guardrails/two_words --guard-name=two-word-guard
  4. 启动开发服务器:guardrails start --config=./config.py
  5. 使用以下代码片段与开发服务器交互:
# 使用 guardrails 客户端
import guardrails as gr

gr.settings.use_server = True
guard = gr.Guard(name='two-word-guard')
guard.validate('this is more than two words')

# 或者使用 OpenAI SDK
import openai
openai.base_url = "http://localhost:8000/guards/two-word-guard/openai/v1/"
os.environ["OPENAI_API_KEY"] = "youropenaikey"

messages = [
        {
            "role": "user",
            "content": "用恰好三个词告诉我关于苹果的事情",
        },
    ]

completion = openai.chat.completions.create(
    model="gpt-4o-mini",
    messages=messages,
)

对于生产环境部署,我们建议使用 Docker 并搭配 Gunicorn 作为 WSGI 服务器,以提升性能和可扩展性。

常见问题解答

我在使用 Guardrails 时遇到了问题,可以在哪里寻求帮助?

您可以通过 DiscordTwitter 联系我们。

我可以将 Guardrails 与任何大模型一起使用吗?

是的,Guardrails 可以与专有和开源的大模型一起使用。请参阅这篇关于如何将 Guardrails 与任何大模型结合使用的指南。

我可以创建自己的验证器吗?

当然可以!您可以创建自己的验证器,并将其贡献到 Guardrails Hub。请参阅这篇关于如何创建自定义验证器的指南。

Guardrails 是否支持其他语言?

目前,Guardrails 支持 Python 和 JavaScript。您可以查阅文档,了解如何从 JavaScript 中使用 Guardrails。我们正在努力增加对其他语言的支持。如果您希望为 Guardrails 做出贡献,请通过 DiscordTwitter 联系我们。

贡献

我们欢迎所有对 Guardrails 的贡献!

您可以从浏览 GitHub 上的问题开始,并查看贡献指南。欢迎您随时提出新问题,或在希望参与项目时与我们联系!

版本历史

v0.9.32026/04/03
v0.10.02026/04/03
v0.9.22026/03/16
v0.9.12026/02/24
v0.9.02026/02/17
v0.8.22026/02/17
v0.8.12026/02/13
v0.8.02026/02/06
v0.7.32026/02/06
v0.7.22025/12/18
v0.7.12025/12/10
v0.7.02025/11/25
v0.6.82025/11/24
v0.6.72025/09/22
v0.6.62025/04/28
v0.6.52025/03/28
v0.6.42025/03/11
v0.6.32025/02/13
v0.6.22024/12/24
v0.6.12024/12/10

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|5天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

149.5k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|今天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|今天
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|4天前
插件开发框架