Doramagic 项目包 · 项目说明书

guardrails 项目

为大语言模型添加安全护栏(Guardrails)。

Overview and Quick Start

Guardrails AI(仓库 guardrails-ai/guardrails)是一个面向 LLM 应用的输出验证与结构化框架。它通过声明式的 Guard 配置,将 JSON Schema、RAIL 规范与可插拔的 Validator 组合起来,在 LLM 返回结果后对文本/结构化字段执行语义、格式与安全校验,并在校验失败时按 onfail 策略(fix、reask、f...

章节 相关页面

继续阅读本节完整说明和来源证据。

项目定位与核心能力

Guardrails AI(仓库 guardrails-ai/guardrails)是一个面向 LLM 应用的输出验证与结构化框架。它通过声明式的 Guard 配置,将 JSON Schema、RAIL 规范与可插拔的 Validator 组合起来,在 LLM 返回结果后对文本/结构化字段执行语义、格式与安全校验,并在校验失败时按 on_fail 策略(fixreaskfilterrefrainnoop 等)采取不同处理动作。README 中将其定位为对 LLM 输出进行"结构化、可信化"校验的中间层 (README.md)。

框架内部通过 schema_to_tool 把用户声明的 JSON Schema 转换为 OpenAI function calling 的 tool 对象,从而在 prompt 阶段就让模型按 schema 输出 (guardrails/utils/structured_data_utils.py)。输出回到客户端后,再由 prompt_content_for_schema 等工具生成带描述与校验器提示的字符串 prompt (guardrails/utils/prompt_utils.py)。

安装与 CLI 配置

Guardrails 提供一条以 guardrails 为入口的命令行,覆盖配置、Hub 校验器安装、Guard 模板生成与服务启动。典型流程如下:

  1. 安装主包:通过 pip install guardrails-ai 安装核心库。社区已确认 litellm<1.82.6 的版本上限约束源自 issue #1445 报告的 1.82.7/1.82.8 供应链投毒事件,请勿手动解除该上限以避免风险(参见 issue #1483)。
  2. 认证(可选)guardrails configure 用于写入 Hub Token。Hub 客户端会在调用 hub.api.guardrailsai.com 校验 manifest 模板时附带 Bearer token (guardrails/cli/server/hub_client.py)。若只进行本地校验,token 缺失不会影响核心功能(TOKEN_INVALID_MESSAGE 中明确说明 "It is not needed for local validation")。
  3. 版本自检:每次 CLI 启动都会通过 PyPI 元数据比对当前版本,并在落后时提示升级 (guardrails/cli/version.py)。

快速开始:创建首个 Guard

guardrails create 是最常用的"脚手架"命令,支持两种来源:显式列出 validator URI,或从远程模板生成 (guardrails/cli/create.py)。

# 通过 Hub 模板一键生成 chatbot 配置
guardrails create --template hub:template://guardrails/chatbot \
                  --filepath config.py

# 显式指定多个 validator
guardrails create --validators "hub://guardrails/regex_match,hub://guardrails/toxic_language" \
                  --guard-name ChatGuard

当传入 --template 时,CLI 会先调用 get_template 解析模板:若以 .json 结尾则从本地读取,否则请求 Hub 端点并把模板落盘到工作目录 (guardrails/cli/hub/template.py)。随后 split_and_install_validators 会按 URI 安装缺失的 Hub 包,安装完成后写入 config.py

安装命令 guardrails hub install <uri>... 接受多个 URI、可选 --install-local-models/--no-install-local-models--quiet--upgrade (guardrails/cli/hub/install.py)。安装成功后会向 guardrails/hub/__init__.py 注入 import 语句;卸载则通过 guardrails hub uninstall 反向清理 (guardrails/cli/hub/uninstall.py)。

如果想自己编写校验器,guardrails hub create-validator <name> <file.py> 会生成一个带 PassResult / FailResult 测试用例的脚手架文件 (guardrails/cli/hub/create_validator.py)。

启动 Guardrails API 服务

guardrails start 是部署形态入口,它会先检查 guardrails_api 是否安装,缺失则自动 pip install "guardrails-api>=0.2.1",再委派到 guardrails_api.cli.start (guardrails/cli/start.py)。常用参数:

参数含义默认值
--env加载环境变量文件
--config加载 Guard 配置
--port服务端口8000
--watch打开日志 watch 模式False
--env-override允许 env 文件覆盖现有变量False

启动后可以在任意语言客户端通过 HTTP 复用既有 Guard 校验流水线,无需在应用进程中重复加载 Validator。

常见问题与安全须知

  • Hub 包安装失败issue #1424):guardrails configure 之后仍出现 No module named 'guardrails_grhub_regex_match',通常源自 pip 源或 token 解析异常,建议先 pip cache purge 后重新 guardrails hub install
  • 供应链安全issue #1473 报告 v0.10.1 在 PyPI 上被投毒,请立即升级到 ≥ v0.10.2(包含 SECURITY_ADVISORY.md)。
  • on_fail="fix" 行为:社区对 fix 动作"静默改写输出"存在讨论(issue #1448),对于安全敏感场景建议使用 reaskrefrain,或自行在外层加审计。
  • RAIL 参数解析parse_rail_arguments 中存在 literal_eval 解析用户输入的 FIXME 注释,提醒 RAIL 字符串不应来自不可信源 (guardrails/utils/validator_utils.py)。
  • Python 与依赖版本:Python 3.13 支持与 langchain-core>=1.0.0 兼容性仍在追踪(issue #1228#1334),生产环境建议锁定到官方测试矩阵支持的版本。

See Also

来源:https://github.com/guardrails-ai/guardrails / 项目说明书

Core Architecture: Guards, Validators, and Validation Flow

Guardrails AI 是一个面向 LLM 应用的输出验证框架,其核心架构由 Guard(守卫器)、Validator(验证器) 和 Validation Flow(验证流程) 三个层级构成。用户通过 Guard 组合一个或多个 Validator,在 LLM 输出或结构化数据进入下游消费之前对其进行模式、格式、安全与领域规则的多重检查。仓库将这一核心能力同时暴露为 P...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 Validator 抽象与基类

继续阅读本节完整说明和来源证据。

章节 创建自定义 Validator

继续阅读本节完整说明和来源证据。

章节 解析 Validator 引用

继续阅读本节完整说明和来源证据。

概述

Guardrails AI 是一个面向 LLM 应用的输出验证框架,其核心架构由 Guard(守卫器)Validator(验证器)Validation Flow(验证流程) 三个层级构成。用户通过 Guard 组合一个或多个 Validator,在 LLM 输出或结构化数据进入下游消费之前对其进行模式、格式、安全与领域规则的多重检查。仓库将这一核心能力同时暴露为 Python API 和 CLI(命令行工具),CLI 子命令通过 guardrails/cli/__init__.py 统一挂载到 Typer 应用上,包含 hubcreateconfigurestartvalidate 等子命令。

资料来源:guardrails/cli/__init__.py:1-19

核心组件:Validator 与 Hub

Validator 抽象与基类

Validator 是验证流程的最小执行单元,由 guardrails.validator_base 中的 Validator 抽象基类定义。用户在 Hub 中安装的每一个验证器(Hub Validator)都是该基类的子类,通过 guardrails hub install hub://<namespace>/<name> 命令作为独立的 PyPI 包安装到环境中。CLI 的 install_cli 函数负责接收一个或多个 package_uris,并把它们作为依赖安装到当前 Python 环境。

资料来源:guardrails/cli/hub/install.py:1-30

创建自定义 Validator

仓库提供 guardrails hub create-validator 命令,用 string.Template 渲染一个轻量级 Validator 模板,模板定义了 __init__ 参数、validate(value, metadata) 方法以及一组 pytest 测试用例。模板文件注明了 guardrails-ai>=0.4.0 的依赖要求,并提示对更复杂的验证器使用独立的 validator-template 仓库。如下是 README 中的官方安装与使用示例:

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")  # 通过

资料来源:README.md:40-70

解析 Validator 引用

guardrails/utils/validator_utils.py 提供了两种将字符串或对象形式的 Validator 引用解析为实例的工具:

  • parse_rail_validator:解析 RAIL 规范中的字符串,例如 "hub://guardrails/regex_match: pattern"。它以 : 拆分标识符与参数,使用 split_on + ESCAPED_OR_QUOTED 正则进行分词,再用 literal_eval 求值(源码中标注为不安全的 FIXME,提示后续应改用 Validator Manifest 解析)。
  • parse_validator_reference:解析来自 guardrails_ai.types.Validator 的结构化引用,把 argskwargs 透传给 Validator 构造函数并附带 OnFailAction.get(ref.on_fail)

资料来源:guardrails/utils/validator_utils.py:1-115

验证流程:Schema、Prompt 与结构化数据

Schema 驱动的 Prompt 生成

当 Guard 用于受 Schema 约束的结构化输出时,框架会基于 JSON Schema 与 Validator 列表生成 LLM 提示。prompt_content_for_string_schema 在描述之后追加每个 Validator 的 to_prompt() 提示文本,并在末尾加上 "Don't talk; just go." 指令;prompt_content_for_schema 则按 OutputTypes 分派——字符串走前者,对象/列表类型直接 json.dumps 输出 Schema。prompt_uses_xml 用于检测是否应使用 XML 模式(匹配 gr.*xml_.*xml_output_schema)。

资料来源:guardrails/utils/prompt_utils.py:1-90

Schema 转 OpenAI Tool

schema_to_tool 将内部 JSON Schema 包装成 OpenAI 风格的 function 工具对象,函数名固定为 gd_response_tool,要求 parametersrequired 字段同步。set_additional_properties_false_iteratively 会迭代地把所有嵌套对象上的 required 设为所有属性键,并丢弃 API 不支持的 maximumminimumdefault 字段(通过 logger.warn 记录)。parsing_utils.has_code_block 则用于检测 LLM 是否以 Markdown 代码块包裹返回内容,从而选择合适的解析路径。

资料来源:guardrails/utils/structured_data_utils.py:1-50、guardrails/utils/parsing_utils.py:1-40

验证失败处理(on_fail)

每个 Validator 在声明时通过 OnFailAction 枚举指定失败行为——EXCEPTIONFIXREFRAINLOG 等不同策略会决定验证器是抛错、自动改写、阻止输出还是仅记录。社区讨论 #1448 指出当前 on_fail="fix" 会在用户无感知的情况下改写 LLM 输出,建议在 LOGFIX 之间引入一个 “quarantine” 中间态,以便保留证据并让上层策略决定后续处理。

资料来源:guardrails/utils/validator_utils.py:60-115

Hub 生命周期与 CLI 集成

安装 / 卸载 / 创建 Guard 配置

guardrails/cli/hub/__init__.pyinstalluninstallcreate-validatorsubmitlist 等子命令挂载到 hub_command Typer 子应用上。uninstall_hub_module 流程会先读取 Manifest.exports,再按字母倒序生成 from <import_path> import ... 行,从 site-packages/guardrails/hub/__init__.py 中移除;其函数 remove_line 以行为单位读写并截断文件,保证导出同步。cli/create.py 中的 create_command 接收 validators 列表或 template 引用(hub:template://guardrails/chatbot),自动安装依赖并生成 config.py;未提供任何参数时打印帮助并 sys.exit(1)

资料来源:guardrails/cli/hub/uninstall.py:1-60、guardrails/cli/create.py:1-90

版本与安全提示

cli/version.py 通过 importlib.metadata.version 获取当前安装版本,并与 PyPI 元数据比较;若发现新版本则在 Rich 控制台打印黄色警告。CLI 子命令在入口处会调用 version_warnings_if_applicable,确保用户在安装 Hub 包时也能看到升级提示。

社区中关于 #1424 “无法安装任何 Hub 包” 的问题,正是由于该安装流程对 pip 进程的依赖与 ValidatorPackageService.get_import_path_from_validator_id 路径解析密切相关;而 v0.10.1 的供应链事件(#1473)与 LiteLLM 1.82.7/1.82.8 漏洞(#1445/#1483/#1485)也提醒用户在 pip install Hub 包前后务必校验源与依赖锁。

资料来源:guardrails/cli/version.py:1-30、guardrails/cli/hub/uninstall.py:30-50

架构总览图

flowchart LR
    A[用户代码/LLM 输出] --> B[Guard 守卫器]
    B --> C{Validator 列表}
    C --> D[Validator 1]
    C --> E[Validator 2]
    C --> F[Validator N]
    D --> G{OnFailAction}
    E --> G
    F --> G
    G -->|EXCEPTION| H[抛出异常]
    G -->|FIX| I[改写输出]
    G -->|LOG| J[记录告警]
    G -->|REFRAIN| K[阻止输出]
    H --> L[返回最终结果]
    I --> L
    J --> L
    K --> L

See Also

  • Hub Validator Manifest 与上传流程:guardrails/cli/hub/submit.py
  • Schema 解析与 ReAsk 流程:guardrails/actions/reask.pyguardrails/schema/parser.py
  • CLI 命令速查:guardrails/cli/hub/install.pyguardrails/cli/create.py
  • 供应链安全公告:仓库根目录的 SECURITY_ADVISORY.md(v0.10.2 引入)

资料来源:guardrails/cli/__init__.py:1-19

Guardrails Hub: Validator Ecosystem, CLI, and Telemetry

Guardrails Hub 是 Guardrails AI 的验证器分发与生命周期管理平台,围绕 guardrails-ai 与 guardrails-api 两个核心包构建。它通过 hub://<namespace/<validator 形式的 URI 标识每一个验证器,使开发者能够以类似 pip 的方式安装、卸载、列出和提交验证器,实现 LLM 输入/输出护栏的可插拔...

章节 相关页面

继续阅读本节完整说明和来源证据。

Guardrails Hub:验证器生态、命令行与遥测

概述

Guardrails Hub 是 Guardrails AI 的验证器分发与生命周期管理平台,围绕 guardrails-aiguardrails-api 两个核心包构建。它通过 hub://<namespace>/<validator> 形式的 URI 标识每一个验证器,使开发者能够以类似 pip 的方式安装、卸载、列出和提交验证器,实现 LLM 输入/输出护栏的可插拔管理 资料来源:README.md:1-30

Hub 的运行依赖一个 HTTP 客户端,负责与 Guardrails 后端服务通信,默认端点为 https://hub.api.guardrailsai.com,可通过 GR_VALIDATOR_HUB_SERVICE 环境变量覆盖 资料来源:guardrails/cli/server/hub_client.py:30-40。同时,CLI 通过 hub_tracing 装饰器对所有子命令进行遥测埋点 资料来源:guardrails/cli/hub/install.py:10-30。

flowchart LR
    User[开发者] -->|guardrails hub install| CLI[Hub CLI]
    CLI --> HubClient[hub_client.py]
    HubClient -->|HTTPS + JWT| Backend[Guardrails Hub 后端]
    Backend -->|manifest| HubClient
    HubClient -->|pip install| PyPI[PyPI 包索引]
    PyPI -->|grhub_* 包| SitePackages[site-packages]
    SitePackages --> Registry[guardrails/hub 注册表]
    User -->|guardrails validate / Guard().use| Runtime[运行时 Guard]
    Runtime --> Registry

CLI 命令生态

Hub 命令作为 Typer 子应用注册到主 CLI 中:cli.add_typer(hub_command, name="hub", ...) 将其挂载为 guardrails hub 命名空间 资料来源:guardrails/cli/__init__.py:1-20。hub_command 聚合了 install、uninstall、list、submit、create-validator 五个子命令 资料来源:guardrails/cli/hub/__init__.py:1-10。

子命令关键参数行为引用
installpackage_uris--quiet--upgrade通过 hub_client 拉取 manifest 并执行 pip 安装guardrails/cli/hub/install.py:17-40
uninstall模块 manifest调用 pip 卸载并从 hub/__init__.py 移除导入行guardrails/cli/hub/uninstall.py:36-50
list枚举注册表中已安装的验证器guardrails/cli/hub/list.py:9-20
create-validatornamefilepath生成内置的 Python 验证器模板guardrails/cli/hub/create_validator.py:118-145
submitpackage_namefilepath通过 post_validator_submit 提交给 Guardrails 团队guardrails/cli/hub/submit.py:12-30

此外,guardrails create 命令可以基于模板或验证器列表生成 config.py,并通过 split_and_install_validators 触发安装流程 资料来源:guardrails/cli/create.py:36-70。guardrails start 命令会检查 guardrails_api 是否存在,缺失时自动 pip install guardrails-api>=0.2.1 资料来源:guardrails/cli/start.py:14-25。

验证器安装与管理

验证器以 grhub_<name> 命名约定发布到 PyPI(参见社区 issue #1424:pip 安装步骤偶尔无法解析模块名)。安装时,Hub 客户端先根据 validator/${namespace}/${validator_name}/manifest 端点拉取元数据 资料来源:guardrails/cli/server/hub_client.py:33-36,随后通过 pip_process 工具在子进程中执行 pip 命令 资料来源:guardrails/cli/hub/uninstall.py:6-15。

JWT 鉴权是 Hub 客户端的关键路径,后端令牌通过 guardrails configure 写入本地配置。客户端会区分 ExpiredSignatureErrorDecodeError 与通用 HttpError,并提示用户重新配置 资料来源:guardrails/cli/server/hub_client.py:11-28。

卸载流程不仅调用 pip,还使用 remove_from_hub_inits 清理 site-packages/guardrails/hub/__init__.py 中相应的 import 行,避免悬空引用 资料来源:guardrails/cli/hub/uninstall.py:30-50。

自定义验证器创建与提交

create-validator 命令通过 string.Template.safe_substitute 渲染一个最小可运行的验证器骨架,模板中包含 __init__validate_fix、单元测试等占位符,并提示用户在 docstring 中明确依赖、模型密钥与失败行为 资料来源:guardrails/cli/hub/create_validator.py:1-150。当验证器较复杂(例如需要额外资源或后处理)时,CLI 会建议改用 validator-template 仓库 资料来源:guardrails/cli/hub/create_validator.py:118-135。

提交时,submit 命令读取本地 Python 源文件并通过 post_validator_submit(package_name, content) 上传到 Hub 后端;成功后输出可安装的 hub://guardrails/${package_name} 引用 资料来源:guardrails/cli/hub/submit.py:20-40。社区已基于该流程提交了多个专用验证器提案,如基于 styxx 的 HallucinationCheck(issue #1463)以及用于 OWASP LLM02 模式扫描的 OwaspLlm02OutputScanner(issue #1489)。

遥测与安全考量

每个 Hub 子命令均被 @trace(name="guardrails-cli/hub/<cmd>") 装饰,事件经 hub_telemetry 链路发出 资料来源:guardrails/cli/hub/install.py:28-30。guardrails.utils.prompt_utilsdocs_utils 提供了提示词拼接与分块工具,供远程推理时构造上下文 资料来源:guardrails/utils/prompt_utils.py:55-70。

社区重点关注的安全事项包括:

  • LiteLLM 供应链事件:1.82.7/1.82.8 含外泄脚本,Guardrails 临时将 litellm<1.82.6 钉住,后续应跟进 1.83+ 已验证安全版本(issue #1483、#1445、#1473、v0.10.2)。
  • 模板注入与 JWT 解析:hub_client.py 中使用了 jwt.decode 路径,需确保签名校验与算法白名单到位(issue #1485 最佳实践建议)。
  • FIX 行为静默改写输出:在 on_fail="fix" 触发时,执行会无感地继续,社区(issue #1448)提议在 LOGFIX 之间引入"隔离"层级。

验证器解析与运行时接线

utils.validator_utils.parse_rail_validator 是 RAIL 规范中 validators 字段的入口,负责拆分 hub:// 命名空间、参数 token,并通过 get_validator_class 把 ID 映射到具体类 资料来源:guardrails/utils/validator_utils.py:55-90。该机制与 Guard().use(...) 配合,使验证器既可通过 Python API 也可通过 RAIL 文件声明式使用。

See Also

来源:https://github.com/guardrails-ai/guardrails / 项目说明书

Structured Data Generation, Schemas, and LLM Integration

Guardrails AI 的核心能力之一是让大语言模型产出符合预定义 Schema 的结构化数据,并对其执行可编程校验。该能力横跨 "Prompt 构造 → LLM 调用 → 输出解析 → Schema 校验" 完整链路,由 guardrails/utils/promptutils.py、guardrails/utils/structureddatautils.py、gu...

章节 相关页面

继续阅读本节完整说明和来源证据。

结构化数据生成、Schema 与 LLM 集成

概述

Guardrails AI 的核心能力之一是让大语言模型产出符合预定义 Schema 的结构化数据,并对其执行可编程校验。该能力横跨 "Prompt 构造 → LLM 调用 → 输出解析 → Schema 校验" 完整链路,由 guardrails/utils/prompt_utils.pyguardrails/utils/structured_data_utils.pyguardrails/utils/parsing_utils.py 等模块协同实现;CLI 工具 guardrails createguardrails hub create-validator 则为用户提供了配置入口与自定义校验器模板 资料来源:guardrails/cli/create.py:32-58、guardrails/cli/hub/create_validator.py。

Schema 到 Prompt 与 Tool 转换

Guardrails 通过两条路径将 Schema 注入 LLM 调用:

  1. Prompt 注入路径(不支持工具调用的模型):当输出类型为字符串时,prompt_content_for_string_schema 读取 output_schema["description"]validator_map 中注册的全部校验器,把校验约束拼成自然语言指令 资料来源:guardrails/utils/prompt_utils.py:18-36。prompt_uses_xml 用于判断 Prompt 是否依赖 gr.*xml_* 常量或 xml_output_schema 资料来源:guardrails/utils/prompt_utils.py:11-16。
  2. Function Calling 工具转换路径(支持工具调用的模型)schema_to_tool 把处理后的 JSON Schema 包装为 OpenAI 风格的 function 工具对象,工具名固定为 gd_response_tool,并在说明中要求 "must be called last in every response" 资料来源:guardrails/utils/structured_data_utils.py:7-20。

转换前的 Schema 规范化由 set_additional_properties_false_iteratively 递归完成:自动补齐 required、丢弃 LLM 工具调用 API 不接受的 maximum / minimum / default,并对嵌套对象与列表统一处理 资料来源:guardrails/utils/structured_data_utils.py:23-56。

输出解析与结构化校验

LLM 返回内容后,parsing_utils.py 负责将其还原为可校验的 Python 对象。has_code_block 检测 Markdown 代码块边界,以便从原始字符串中提取 JSON/XML 片段 资料来源:guardrails/utils/parsing_utils.py:19-39。coerce_property 基于 propertiesadditionalProperties 以及 if/then/else 条件子 Schema 对载荷进行类型与嵌套结构的强制转换,使下游 Pydantic 校验能够命中 资料来源:guardrails/utils/parsing_utils.py:106-180。

校验器侧,RAIL 中形如 validator_id: arg1 arg2 的字符串由 parse_rail_validator 拆分:ID 以 hub:// 开头则按 2 段切分,本地校验器按 1 段切分,参数再交给 parse_rail_arguments 处理 资料来源:guardrails/utils/validator_utils.py:51-83。需要特别留意的是,parse_rail_arguments 使用 ast.literal_eval 解析 {...} 包裹的 Python 表达式,源码中明确标注 FIXME: This is incredibly insecure!,是已知的潜在安全风险点 资料来源:guardrails/utils/validator_utils.py:19-41。

端到端数据流

flowchart LR
    A[Output Schema + Validators] --> B{模型支持工具调用?}
    B -- 是 --> C["schema_to_tool<br/>→ gd_response_tool"]
    B -- 否 --> D["prompt_content_for_schema<br/>注入自然语言指令"]
    C --> E[LLM 调用]
    D --> E
    E --> F["parsing_utils<br/>has_code_block + coerce_property"]
    F --> G["parse_rail_validator<br/>→ Validator 实例"]
    G --> H{Pass / Fail}
    H -- Pass --> I[validated_output]
    H -- Fail --> J["ReAsk / on_fail 动作"]

CLI 入口与社区关注点

guardrails create 支持通过 --validators(逗号分隔的 hub:// URI)或 --template(如 hub:template://guardrails/chatbot)生成 config.py;后者会把模板内全部 guards[*].validators 解析为安装列表 资料来源:guardrails/cli/create.py:19-58。guardrails hub install 提供 --install-local-models/--no-install-local-models--quiet--upgrade 等开关 资料来源:guardrails/cli/hub/install.py:23-39;README 中展示的完整链路上线示例演示了 Guard.for_pydantic(output_class=Pet, prompt=prompt) 的典型用法 资料来源:README.md

社区近期高度关注的问题中,多项与本链路直接相关:on_fail="fix" 会静默改写 LLM 输出,可能掩盖校验失败(issue #1448);sub_reasks_with_fixed_valuesFieldReAsk.fail_results=None 时会触发 IndexError(issue #1491);v0.10.1 曾遭 PyPI 供应链投毒,社区随后通过 v0.10.2 引入 SECURITY_ADVISORY.md 并将 litellm 锁在 <1.82.6(issue #1473、#1483、#1485)。这些反馈共同提示:在生产环境集成时,Schema 链路需同时关注 "正确性(ReAsk / on_fail 行为)" 与 "安全性(依赖锁定与解析入口)" 两类问题。

来源:https://github.com/guardrails-ai/guardrails / 项目说明书

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

high 来源证据:FIX action silently mutates output - should there be a 'quarantine' tier between LOG and FIX?

可能增加新用户试用和生产接入成本。

high 来源证据:Best-practice: litellm pin excludes patched CVE versions, unverified-jwt-decode duplication, workflow inputs interpolat…

可能影响授权、密钥配置或安全边界。

high 来源证据:Cannot install any Guardrails hub package

可能阻塞安装或首次运行。

high 来源证据:Feature request: OWASP ASI06 memory poisoning guard validator

可能影响授权、密钥配置或安全边界。

Pitfall Log / 踩坑日志

项目:guardrails-ai/guardrails

摘要:发现 16 个潜在踩坑项,其中 6 个为 high/blocking;最高优先级:安装坑 - 来源证据:FIX action silently mutates output - should there be a 'quarantine' tier between LOG and FIX?。

1. 安装坑 · 来源证据:FIX action silently mutates output - should there be a 'quarantine' tier between LOG and FIX?

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:FIX action silently mutates output - should there be a 'quarantine' tier between LOG and FIX?
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1448 | 来源类型 github_issue 暴露的待验证使用条件。

2. 安全/权限坑 · 来源证据:Best-practice: litellm pin excludes patched CVE versions, unverified-jwt-decode duplication, workflow inputs interpolat…

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Best-practice: litellm pin excludes patched CVE versions, unverified-jwt-decode duplication, workflow inputs interpolation
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1485 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

3. 安全/权限坑 · 来源证据:Cannot install any Guardrails hub package

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Cannot install any Guardrails hub package
  • 对用户的影响:可能阻塞安装或首次运行。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1424 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

4. 安全/权限坑 · 来源证据:Feature request: OWASP ASI06 memory poisoning guard validator

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Feature request: OWASP ASI06 memory poisoning guard validator
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1488 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

5. 安全/权限坑 · 来源证据:Integration proposal: styxx hallucination validator (8-benchmark cross-validated)

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Integration proposal: styxx hallucination validator (8-benchmark cross-validated)
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1463 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

6. 安全/权限坑 · 来源证据:[SECURITY] Supply Chain Compromise in guardrails-ai v0.10.1 on PyPI

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[SECURITY] Supply Chain Compromise in guardrails-ai v0.10.1 on PyPI
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1473 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

7. 配置坑 · 来源证据:BUG: IndexError in sub_reasks_with_fixed_values when FieldReAsk has fail_results=None

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:BUG: IndexError in sub_reasks_with_fixed_values when FieldReAsk has fail_results=None
  • 对用户的影响:可能阻塞安装或首次运行。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1491 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

8. 能力坑 · 来源证据:[docs] Fix double logo display in pypi

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个能力理解相关的待验证问题:[docs] Fix double logo display in pypi
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1362 | 来源类型 github_issue 暴露的待验证使用条件。

9. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 证据:capability.assumptions | github_repo:594609262 | https://github.com/guardrails-ai/guardrails | README/documentation is current enough for a first validation pass.

10. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 证据:evidence.maintainer_signals | github_repo:594609262 | https://github.com/guardrails-ai/guardrails | last_activity_observed missing
  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 证据:downstream_validation.risk_items | github_repo:594609262 | https://github.com/guardrails-ai/guardrails | no_demo; severity=medium

12. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 证据:risks.scoring_risks | github_repo:594609262 | https://github.com/guardrails-ai/guardrails | no_demo; severity=medium

13. 安全/权限坑 · 来源证据:Lift litellm <1.82.6 pin to allow post-incident safe releases (1.83+)

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Lift litellm <1.82.6 pin to allow post-incident safe releases (1.83+)
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1483 | 来源类型 github_issue 暴露的待验证使用条件。

14. 安全/权限坑 · 来源证据:Proposal: OwaspLlm02OutputScanner Hub validator — regex-based output threat detection across 5 OWASP LLM02 categories

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Proposal: OwaspLlm02OutputScanner Hub validator — regex-based output threat detection across 5 OWASP LLM02 categories
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/guardrails-ai/guardrails/issues/1489 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

15. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 证据:evidence.maintainer_signals | github_repo:594609262 | https://github.com/guardrails-ai/guardrails | issue_or_pr_quality=unknown

16. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 证据:evidence.maintainer_signals | github_repo:594609262 | https://github.com/guardrails-ai/guardrails | release_recency=unknown

来源:Doramagic 发现、验证与编译记录