karthikvenkata79-tech/llm-guard

GitHub: karthikvenkata79-tech/llm-guard

一个用 Rust 编写的隐私优先的轻量级 LLM 安全防护代理,能够拦截提示注入攻击、脱敏机密信息与 PII,并覆盖多项 OWASP LLM Top 10 风险。

Stars: 1 | Forks: 0

# llm-guard(单文件版) 所有代码都位于同一个文件中:`src/main.rs`。唯一的另一个文件是 `Cargo.toml`(库列表——任何使用外部 crate 的 Rust 项目都需要它)。 其行为与之前相同:拦截 prompt injection,脱敏请求和模型回复中的机密信息/PII,并记录所有日志。 ## 运行(在 Mac、Windows、Linux 上完全一致) ``` cargo run ``` 监听地址为 `http://127.0.0.1:8080`。可通过环境变量进行配置: `GUARD_LISTEN`、`GUARD_UPSTREAM`、`GUARD_BLOCK`、`GUARD_SCAN_RESPONSE`。 ## 制作独立的“点击即运行”二进制文件 ``` cargo build --release ``` 这会生成一个单独的可执行文件,位于: - macOS / Linux:`target/release/llm-guard` - Windows:`target\release\llm-guard.exe` 你可以直接运行该文件——无需 `cargo`,也无需源码: ``` ./target/release/llm-guard ``` 注意:编译后的二进制文件只能在构建它的操作系统上运行。Mac 上构建的版本无法在 Windows 上运行,反之亦然。要面向所有三个平台发布,你需要分别在各个平台上进行构建(或使用交叉编译)。请注意,这是一个后台服务器——它用于监听请求;启动时不会弹出窗口。 ## 使用 Docker 在任何地方运行(一个镜像,适配所有平台) 如果你安装了 Docker,这是最接近“在所有环境中表现完全一致”的方案。 在 `Cargo.toml` 旁边创建一个名为 `Dockerfile` 的文件: ``` FROM rust:1-slim AS build WORKDIR /app COPY . . RUN cargo build --release FROM debian:stable-slim COPY --from=build /app/target/release/llm-guard /usr/local/bin/llm-guard EXPOSE 8080 ENV GUARD_LISTEN=0.0.0.0:8080 CMD ["llm-guard"] ``` 然后: ``` docker build -t llm-guard . docker run -p 8080:8080 -e GUARD_UPSTREAM=https://api.openai.com/v1/chat/completions llm-guard ``` ## 防规避(标准化处理) 在执行注入规则之前,该工具还会检查 prompt 的“清理后”视图,因此常见的规避普通模式匹配的手段依然会被捕获: - 添加空格的字母 —— `i g n o r e` - Leet 语(黑客语) —— `1gn0re` - 相似(同形)字符 - base64 编码的隐藏指令 这只是第一层防护,并非万无一失——执着的攻击者仍可能找到漏洞。更强大的下一步是进行语义检查(使用 LLM 或 ML 模型来判断语义,而不仅仅是匹配文本)。 ## 配置文件中的规则(无需重新编译) 现在,无需修改代码即可更改该工具的检测内容。只需将 `GUARD_RULES_FILE` 变量指向一个 JSON 文件: ``` GUARD_RULES_FILE=rules.json cargo run ``` 项目中包含了一个入门级的 `rules.json`——其中包含了与内置规则相同的内容。你可以对其进行编辑(添加、删除或修改规则),保存并重启即可生效——无需重新编译。 每条规则包含四个字段: ``` { "category": "pii", "name": "phone_number", "severity": "medium", "pattern": "\\d{3}-\\d{3}-\\d{4}" } ``` - `category` —— `prompt_injection`、`secret` 或 `pii` - `name` —— 你自定义的任意标签 - `severity` —— `low`、`medium` 或 `high` - `pattern` —— 用于匹配的正则表达式(请注意:JSON 中的反斜杠必须双写,因此 `\d` 应写为 `\\d`) 严重级别为 `high` 的 `prompt_injection` 类别规则将被拦截;`secret` 和 `pii` 类别将被脱敏。如果文件缺失或包含无效 pattern,该工具将记录警告并回退到内置的默认规则,因此它绝不会崩溃。 ## 流式传输(逐字回复) 如果请求中包含 `"stream": true`,防护器会在模型生成回复时,将其逐块直接透传。请求端的保护(拦截攻击,脱敏 prompt 中的机密信息)依然全面生效。 权衡:对于流式回复,将跳过响应端的脱敏,因为扫描回复需要缓冲整个内容——这就违背了流式传输的初衷。非流式请求不受影响,仍会进行完整的响应扫描。 ## 添加自定义检测规则 打开 `src/main.rs`,找到 `RULES` 列表,并添加另一个 `Rule { ... }` 块。 它会自动生效。或者更好的是,将其添加到 `rules.json` 中(如上文所述),这样你就不必重新编译。 ## 许可证 本项目基于 MIT 许可证发布——详见 `LICENSE`。打开它并将 `` 替换为你的名字。 本项目使用了几款采用宽松开源许可证的开源库;它们的清单及归属信息可在 `CREDITS.md` 中查看。
标签:Rust, 人工智能安全, 可视化界面, 合规性, 提示词注入防护, 数据脱敏, 网络流量审计, 请求拦截, 通知系统, 防御绕过