桃子桃子快讯
返回首页
工具

Gavio:面向生产 LLM 应用的开源拦截器管道

一款跨 Python、Java、JavaScript 的开源 AI 网关,以可组合拦截器为 LLM 调用统一提供 PII…

2026.07.04 · 周六4 分钟阅读

Show HN 上出现了一款名为 Gavio 的开源项目,作者将其定位为「生产级 AI 网关的开放标准」。它位于应用与任意 LLM 服务商之间,通过一条可组合的拦截器链,把 PII 脱敏、密钥扫描、重试、限流、缓存、成本追踪、审计日志等常见生产诉求一次性封装好,并声称在 Python、Java、JavaScript 三套 SDK 中保持行为一致。

核心定位与特性

Gavio 试图解决的是团队在接入 LLM 时反复「重造轮子」的问题:出站前脱敏 PII、遇 429 限流时重试、主服务商不可用时回退到备选、记录审计轨迹、控制调用成本。官方文档将这些能力拆成可插拔的拦截器(Interceptor),按需组合即可。

其主要特性包括:

  • 服务商无关:支持 OpenAI、Anthropic、Gemini、Azure、Ollama 以及 Mock 适配器,切换服务商只需修改配置。
  • 零强制依赖:核心使用标准库 HTTP,不引入任何厂商 SDK。
  • 开发模式:内置 Mock 服务商,无需 API Key、无需联网即可在本地运行整条流水线。
  • 审计默认开启:每次调用都生成元数据 + SHA-256 内容哈希记录,原始文本永不落盘。
  • Inspector 可视化:开发态提供实时链路追踪、逐拦截器瀑布图、PII 脱敏 diff 与流水线检查,监听本地 7411 端口。
  • 生产态能力:多智能体调用图、会话视图、轨迹回放与改写重发、RED 指标、哈希链校验、PII 清洗后的轨迹导出为测试用例。

项目当前版本为 v0.9.0,自 v0.2.0 起保持 Semver 稳定性,1.0 之前部分 API 仍可能调整。

架构与数据模型

Gavio 由薄核心(Gateway + InterceptorChain + 请求/响应模型)构成。一次请求依次流经「预处理」管道、命中 Provider Adapter,再逆向流过「后处理」管道。拦截器需实现 before() / after() / onError() 三个钩子,顺序由开发者显式声明,例如 PII 脱敏必须在审计之前,审计必须最后执行,以保证记录到的是其他拦截器全部生效后的真实结果。

执行策略(缓存、重试、熔断、负载均衡、回退)包裹在 Provider Adapter 之外:缓存命中或熔断器开启时,请求会完全短路,不再访问服务商。

审计记录只保存元数据:提示词与响应以 SHA-256 哈希形式存储,仅记录 PII 实体类型与计数,不记录原始值;记录之间通过哈希链(编号 F-OBS-02)串联,任何篡改都可被检测。核心数据模型(GavioRequest / GavioResponse / AuditRecord)由 spec/ 中的 JSON Schema 统一定义,三语言共享测试向量强制对齐。

快速上手

以 Python 开发模式为例,启用 PiiGuard 后向包含邮箱地址的提示词发起请求,输出会保留原始邮箱,同时审计记录中可见 EMAIL 实体被识别并脱敏的痕迹。JavaScript 与 Java 用法结构对称,仅 API 风格随语言习惯不同。

安装命令如下:

  • Python 3.10+:pip install gavio,可选 gavio[redis] 提供分布式缓存后端,gavio[presidio] 等增强将在后续版本加入。
  • JavaScript(Node 18+):npm install gavio
  • Java 17+(Maven):io.github.manojmallick:gavio-core:0.9.0

项目状态与适用场景

Gavio 以 monorepo 形式组织,三个 SDK 版本号同步锁定,分别发布到 PyPI、npm 与 Maven Central,互不耦合。对于需要在多个语言栈中保持一致的 LLM 调用治理、或希望在合规与可观测性上「开箱即用」的团队,它提供了一个低门槛的尝试入口;但作为 v0.9.x 的早期项目,是否能进入生产关键链路,仍需观察其在真实负载下的稳定性与社区维护节奏。

信源