Mattral/guardrail-rs

GitHub: Mattral/guardrail-rs

一款使用 Rust 编写的零依赖生产级 LLM 安全反向代理,通过拦截 prompt 注入和脱敏 PII 来保护大模型应用的请求安全。

Stars: 3 | Forks: 0

# guardrail-rs **一个零 Python、生产级的 LLM 安全层,使用 Rust 编写。** `guardrail-rs` 是一个反向代理,位于您的应用程序和 LLM 提供商(OpenAI、Anthropic、Azure OpenAI 或任何兼容 OpenAI 的端点)之间。它会在每个 chat-completion 请求离开您的基础设施之前对其进行检查,拦截 prompt 注入攻击、脱敏 PII,并执行自定义策略规则——所有这一切仅带来个位数毫秒级的开销。 ``` ┌──────────┐ ┌──────────────────┐ ┌────────────┐ ┌───────────────┐ │ Your │ ──▶│ guardrail-rs │ ──▶ │ Pipeline │ ──▶│ OpenAI / │ │ App │ │ (drop-in proxy) │ │ (Stages) │ │ Anthropic /… │ └──────────┘ └──────────────────┘ └────────────┘ └───────────────┘ │ ▼ 403 + JSON error (blocked requests never leave your network) ``` ## 为什么选择 guardrail-rs? - **不需要 Python、PyTorch 或 GPU。** 一个单一的静态二进制文件(约 15 MB),由本仓库中的 Rust 源码构建。 - **极速。** Regex 注入扫描和 PII 脱敏均在个位数微秒内运行;在默认(非 ONNX)配置下,完整 pipeline 为请求延迟增加的开销远低于 1 ms p99。 - **即插即用。** 将您现有的 OpenAI/Anthropic SDK 的 `base_url` 指向 `guardrail-rs` —— 无需修改应用程序代码。 - **默认故障放行。** 异常的阶段绝不会中断您的生产流量;可通过 `pipeline.on_error` 按部署进行配置。 - **配置热重载。** 无需断开连接即可更新规则和策略。 - **可观测性。** 开箱即用的结构化审计日志(绝不记录原始 PII)和 Prometheus 指标。 ## 快速开始 ``` # 1. 复制并编辑示例配置 cp guardrail.example.toml guardrail.toml # 编辑 guardrail.toml:设置 [upstream].url # 2. 验证配置 just validate # 或:cargo run -p guardrail-cli -- validate --config guardrail.toml # 3. 运行代理 just run # 或:cargo run -p guardrail-cli -- run --config guardrail.toml ``` 然后将您的应用程序指向 `http://localhost:8080`,而不是 `https://api.openai.com`: ``` from openai import OpenAI client = OpenAI( base_url="http://localhost:8080/v1", api_key="sk-...", # forwarded to the real upstream unchanged ) ``` ### 环境变量覆盖 无需编辑 `guardrail.toml` 即可覆盖配置: | 变量 | 覆盖项 | |----------|-----------| | `GUARDRAIL_UPSTREAM` | `upstream.url` | | `GUARDRAIL_PORT` | `server.port` | | `GUARDRAIL_LOG_LEVEL` | `observability.log_level` | | `GUARDRAIL_OTLP_ENDPOINT` | `observability.otlp_endpoint` | ### 热重载(Unix) 发送 `SIGHUP` 以在不断开连接的情况下重载配置: ``` pkill -HUP guardrail # 或:just reload ``` ## 检查内容 | 阶段 | 功能描述 | 性能目标 | |-------|--------------|---------------------| | `regex_injection` | 通过快速的 regex 扫描来检测越狱、prompt 提取尝试、分隔符注入 | < 50 µs / 8 KB | | `onnx_injection` *(可选)* | 基于 DeBERTa 的语义注入检测 | < 5 ms / 512 tokens | | `pii_redactor` | 检测并脱敏电子邮件、电话号码、信用卡(通过 Luhn 算法验证)、社会安全号码(SSN)、IP 地址、API 密钥 | < 20 µs / 4 KB | | `toxicity` *(可选)* | 基于 RoBERTa 的毒性/骚扰检测 | < 5 ms / 512 tokens | | `policy_engine` | 您的自定义规则:关键词拦截、token 数量限制、必需的 system prompt 检查 | 可忽略不计 | `onnx_injection` 和 `toxicity` 阶段需要使用 `--features onnx` 进行构建,并提供 ONNX 模型文件(参见 [`models/README.md`](models/README.md))。 其他所有功能在零外部依赖下即可工作。 ## CLI ``` guardrail run --config guardrail.toml # start the proxy guardrail validate --config guardrail.toml # check config without starting guardrail check "some text" --config guardrail.toml # run text through the pipeline # and print the decision as JSON ``` ## 配置 请参阅 [`guardrail.example.toml`](guardrail.example.toml) 获取带有完整注释的参考配置,并查阅 [`docs/`](docs/) 获取详细指南: - [`docs/architecture.md`](docs/architecture.md) — pipeline 设计与阶段契约 - [`docs/configuration.md`](docs/configuration.md) — 完整的 TOML schema 参考 - [`docs/policy-rules.md`](docs/policy-rules.md) — 编写自定义策略规则 - [`docs/deployment.md`](docs/deployment.md) — Docker、Kubernetes 及裸机部署 - [`docs/onnx-models.md`](docs/onnx-models.md) — 启用语义分类器 - [`docs/threat-model.md`](docs/threat-model.md) — guardrail-rs 可防御的威胁(以及不可防御的威胁) - [`docs/stage-api.md`](docs/stage-api.md) — 实现自定义 pipeline 阶段 - [`docs/benchmarks.md`](docs/benchmarks.md) — 性能目标及如何运行基准测试 ## 示例 请参阅 [`examples/README.md`](examples/README.md) 获取针对正在运行的代理的客户端示例(curl、Python、Node.js、Anthropic SDK)。要将 guardrail-rs 作为完全不需要 HTTP 服务器的库进行嵌入: ``` cargo run --example minimal -p guardrail-cli ``` ## 项目布局 ``` crates/ guardrail-core # Pipeline trait, request/decision types, policy engine guardrail-classifiers # Regex injection scanner, PII redactor, ONNX classifiers guardrail-config # TOML config schema, validation, hot-reload guardrail-proxy # HTTP server, request forwarding, metrics, audit log guardrail-cli # `guardrail` binary guardrail-test-suite # End-to-end integration tests ``` ## 开发 ``` # 安装 just (task runner) cargo install just # 构建 just build # 测试(需要 cargo-nextest:cargo install cargo-nextest) just test # Lint just lint # 格式化 just fmt # 本地完整 CI 检查 just ci # 生成覆盖率报告(需要 cargo-tarpaulin) just coverage ``` 有关所有可用的任务,请参见 `justfile`(`just --list`)。 ## 许可证 根据您的选择,在 [Apache License, Version 2.0](LICENSE-APACHE) 或 [MIT license](LICENSE-MIT) 下授权。 ## 贡献 欢迎贡献!请参阅 [`CONTRIBUTING.md`](CONTRIBUTING.md) 获取有关提交 issue 和 pull request 的指南,包括如何添加新的 prompt 注入规则或 PII 实体类型。
标签:AI网关, CNCF毕业项目, PII脱敏, Python安全, Rust, 反向代理, 可视化界面, 子域名突变, 提示词注入防护, 用户代理, 网络流量审计, 自定义请求头, 请求拦截, 通知系统