Jokersystems-online/flowki-llm-safety-pipeline

GitHub: Jokersystems-online/flowki-llm-safety-pipeline

为自建 LLM 应用提供六阶段安全流水线(限流、输入净化、注入检测、提示词加固、输出校验、审计),覆盖 Python 和 TypeScript 两种技术栈的生产级中间件。

Stars: 0 | Forks: 0

# flowki-llm-safety-pipeline 为自定义 LLM 应用提供的六阶段安全 Pipeline:基于 Cost 的 Rate-Limiting、Input-Sanitization、三层 Injection-Detection、System-Prompt-Härtung、Output-Validation(JSON-Schema + PII-Scrubbing)、Audit-Trail。包含 Python (FastAPI) 和 TypeScript (Next.js) 版本,均面向生产环境。 本文是 [FlowKI Club](https://flowki-club.de) 中 [自定义 LLM 应用的安全 Pipeline](https://flowki-club.de/blog/2026-04-19-safety-pipelines-fuer-eigene-llm-apps?utm_source=github&utm_medium=repo&utm_campaign=content-launch-2026-07) 一文的配套 Repo。 ## Pipeline ``` User-Request ↓ [1. Auth + Rate-Limit pre-Check] redis-basiertes Token-Bucket ↓ [2. Input-Sanitization] Length, Encoding, Pattern-Check ↓ [3. Injection-Detection] Pattern-Match -> Llama-Guard-3 -> Moderation-API ↓ [4. Modell-Aufruf] mit System-Prompt-Härtung ↓ [5. Output-Validation] JSON-Schema, Profanity, PII-Scrubbing ↓ [6. Audit-Log] anonymisiert, mit Cost-Tracking ↓ Response an User ``` 每个阶段均采用 fail-safe 机制中止。如果某个 Layer 离线(例如 Llama-Guard),应用会降级至仅使用 Pattern-Matching 模式——绝不会出现“没有任何 Layer 激活”的情况。 ## 实测 Detection-Rates 基于三个 Benchmark 测试(来自 Meta 的 PurpleLlama、AdvBench、自定义匿名数据集): | Benchmark | Pattern-Match | +Llama-Guard-3 | |---|---|---| | PurpleLlama PromptInjection | 41% | 87% | | AdvBench | 38% | 82% | | 自定义数据集 | 53% | 91% | 单独的 Pattern-Match 大约能拦截 40% 的简单 Injection —— 成本低,但远远不够。加入 Llama-Guard-3 作为第二层可以将比率提升至 82-91%,但会增加延迟(在 A100 上为 80ms,在 CPU 上为 1.2s)。 ## 包含内容 - `python/rate_limit.py` + `typescript/rate-limit.ts` — Redis-Token-Bucket,双重维度(Requests/时间 与 Cost/时间) - `python/sanitize.py` — Length-Limit、Encoding-Check、Zero-Width-Space-Removal - `python/injection_detection.py` — Pattern-Match-Layer + Llama-Guard-3-Layer - `python/system_prompt.py` — 加固的 System-Prompt 模板 - `python/output_validation.py` — Pydantic-JSON-Schema + Presidio-PII-Scrubbing - `python/audit_log.py` — 带 Cost-Tracking 的匿名化 Audit-Logging ## 重要设计决策(源自真实的试错经验) - **在下一个 Call 之前而不是当前 Call 之后写入 Cost-Counter。** 防止 100 个并发请求 100 倍地绕过 Cost 限制。 - **不要阻断 User-Input-Echo。** 这会破坏合法的用例(如总结、翻译)。应仅针对 PII/Profanity 进行过滤。 - **不要针对 Topic 使用 Deny-Listen。** 难以维护。替代方案:在 System-Prompt 中进行 Use-Case 定义 + 使用 Allow-Listen。 - **不要记录 Input-Text**,只记录 User-ID-Hash —— 否则你自己就会面临 GDPR 违规问题。 ## 设置 ``` # Python pip install fastapi redis llama-cpp-python presidio-analyzer presidio-anonymizer pydantic # TypeScript npm install @upstash/redis ``` 需单独下载 Llama-Guard-3-8B (Q4_K_M GGUF),例如从 Hugging Face 获取。 ## 法律声明 本 Pipeline 是构建自定义 LLM 应用的起点,并非现成的合规产品。请针对你的具体用例,自行或咨询法律顾问查验 GDPR 要求(如 Log-Retention、Cloud-API 的 Auftragsverarbeitung)。 ## 讨论 请前往 [FlowKI Club Discord](https://flowki-club.de/join?utm_source=github&utm_medium=repo&utm_campaign=content-launch-2026-07) 的 "Hacking & Security" 板块。 ## 许可证 MIT —— 可自由使用、fork 及修改。
标签:AI网关, Naabu, Python, TypeScript, 中间件, 内容安全, 安全插件, 搜索引擎查询, 无后门, 注入检测, 逆向工具