Aishwarya-G-M/secure-llm-gateway

GitHub: Aishwarya-G-M/secure-llm-gateway

基于 FastAPI 的 LLM 安全代理网关,通过对 prompt 输入和模型输出执行双向检查与策略拦截,缓解 OWASP 类型的 LLM 应用安全风险。

Stars: 0 | Forks: 0

# Secure LLM Gateway — 工程 README Secure LLM Gateway 是一个基于 FastAPI 的代理,它会检查 prompt 和模型响应,应用安全策略,并拦截或净化不安全的交互,从而降低 OWASP 类型的 LLM 风险。 ## 概述 该服务被设计为位于 LLM 客户端前方的控制层,而不是一个简单的透传 API。其核心理念是:用户输入和模型输出都属于攻击面,因此 gateway 必须在将响应返回给调用方之前,对其进行验证、检查并执行策略。 本文档重点介绍架构演进、设计选择以及系统当前形态背后的逻辑。这里使用了 Mermaid 图表,因为 GitHub Markdown 原生支持 Mermaid 代码块,这使得架构图在仓库文档中具有良好的可读性和可维护性。[1][2] ## 当前端点形态 | 端点 | 用途 | |---------|---------| | `GET /` | 基础的根/存活探测响应。 | | `GET /health` | 运维健康响应,包含运行时间、应用版本、prompt 版本以及 inspector 的就绪状态。 | | `GET /metrics` | 用于 gateway 可观测性的指标端点。 | | `POST /chat` | 主要的安全 gateway 执行路径。 | ## 设计目标 - 在客户端和模型调用路径之间设立安全控制点。 - 将 prompt 输入和模型输出均视为可检查的攻击面。 - 保持策略逻辑的外部化和可演进性,而不是永久硬编码。 - 通过健康检查、指标和结构化决策支持系统的运维可见性。 - 保持系统的高可扩展性,以便在最小化破坏的前提下替换 LLM 客户端和 AI 防护层。 ## 架构演进 理解该系统的一个有效方式是将其视为一系列深思熟虑的架构升级。将架构记录为“初始状态+后续演进”是一种推荐的文档编写模式,因为它不仅解释了系统现在的样子,还说明了当前设计是如何形成的。[3][4] ### 阶段 1 — 模型调用前的硬编码规则检查 第一个版本在将请求发送给 LLM 客户端之前,使用了硬编码的规则检查层(主要是基于 regex 的检查)。其流程简单实用:检查输入,如果允许则调用模型,并将模型响应返回给调用方。 ``` flowchart LR A[Caller] --> B[Gateway API] B --> C[Hard-coded Rule Inspector] C -->|Allow| D[LLM Client] C -->|Block| E[Blocked Response] D --> F[LLM Provider] F --> G[Model Output] G --> H[Return Response to Caller] ``` #### 为什么这种设计是合理的 这是从空白仓库到一个具备实际意义的安全 MVP 的最快路径。它尽早确立了核心产品理念:模型不应被直接暴露,请求必须首先经过安全决策层。 #### 局限性 - 不修改代码,规则就难以演进。 - 检查主要侧重于请求输入。 - 对于一个注重安全的 gateway 来说,对输出的处理过于信任。 ### 阶段 2 — 针对
标签:AI网关, API安全, AV绕过, FastAPI, JSON输出, 代理服务, 内容审查, 知识图谱, 逆向工具