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

自托管 LLM 网关:兼容 OpenAI 接口,集成 RBAC 与服务器端工具

一款单二进制、SQLite 存储的自托管 LLM 网关,兼容 OpenAI API,支持 OIDC 登录、RBAC 权限…

2026.07.06 · 周一6 分钟阅读

一款名为「LLM Gateway」的自托管项目近期在开发者社区引起关注。它以单个二进制文件提供完整服务,使用 SQLite 存储状态,定位是为私有化部署场景提供一个兼容 OpenAI 接口的反向代理,同时附带功能丰富的聊天界面。

项目定位与核心能力

该项目本质上是一个 OpenAI 兼容的反向代理,但叠加了企业级常用能力。它暴露 POST /v1/chat/completions(支持流式与非流式)、POST /v1/embeddingsPOST /v1/audio/transcriptions 以及 GET /v1/models 等接口,任意 OpenAI SDK 均可直接对接。

在后端层面,网关引入了「上游池」概念,将 chat / transcription / embedding 等不同类型的模型按命名池管理:

  • 池内后端按轮询或最小在飞数(least-in-flight)做负载均衡
  • 每后端独立健康探针
  • 实时从各后端 /models 端点发现模型,无需改配置即可路由到新加载的模型
  • 支持模型别名(alias)与回退(fallback),客户端只需使用稳定别名即可在模型切换或后端宕机时透明切换

认证与权限控制

网关在认证方面覆盖三层机制:

  • OIDC 登录:浏览器跳转到外部身份提供商完成登录,网关再签发自有 gwk_… API 令牌;提供商密钥仅从环境变量读取
  • 每用户令牌:令牌以 SHA-256 哈希存储,可撤销;可绑定特定角色
  • RBAC 角色:由 OIDC 声明映射而来,决定每个用户可调用哪些模型以及哪些服务器端工具

用户在 /tools 页面可自行开关各自被授予的工具权限。

服务器端工具调用

区别于常见 OpenAI 兼容代理,项目的核心卖点是「在补全中途执行服务器端工具」:模型请求搜索网页、读取附件 PDF、渲染文档或查询知识库时,网关会代为执行并把结果回填给模型,客户端最终只收到一次普通补全。这一行为在原始 API 与内置聊天 UI 下完全一致。

内置工具按类别组织,主要包括:

  • Web 与检索search_web(SearXNG 或 Brave)、fetch_urlwikipedia
  • 文档fetch_attachment(对 PDF 采用两层处理:先抽文本层,扫描页则栅格化后交给视觉模型)、upload_attachmenttypst_*(基于 Typst 模板生成 PDF/PNG)
  • 记忆rememberrecall,跨会话持久化用户偏好与项目信息
  • 网络与运维dns_lookupwhois_lookuptls_certlookup_ip
  • 位置get_user_location(IP 粗定位或浏览器精确定位)
  • 工具集convert_currency(按 ECB 汇率)、get_current_timestampcompany_echo
  • 知识库rag_list_collectionsrag_search,可搜索运维预先索引的代码库或语料
  • 集成:以 mcp__<server>__* 命名前缀调用桥接的 MCP 服务器工具,避免不同服务器之间的命名冲突
  • 技能read_skill,按需加载运维侧安装的 Skill 包

聊天 UI 与附加能力

内置聊天界面是服务端渲染的、移动端友好的 Web 应用,关键特性包括:

  • 多对话历史持久化
  • token 级流式输出
  • 文件附件支持(含 S3 接入)
  • 断线重连后可继续同一会话(每轮都即时写入 SQLite)

围绕聊天体验,项目还提供两项较有特色的能力:

  • Agent Skills:把一份 SKILL.md(或 .skill 压缩包)放进网关,聊天模型可按需加载,用于遵循品牌规范、写作风格或领域内的业务流程,类似渐进式披露,无需微调;管理界面 /admin/skills 支持热更新,按角色 RBAC 控制
  • Scheduled actions:用户可设置定时提示(小时/日/周/月或原始 cron 表达式),每个任务按各自时区触发;UI 提供 cron 构建器并实时显示下次运行时间,每次执行都会开启一段可回看的新对话

集成与部署

在第三方系统集成上,项目提供「按用户 MCP 连接器」:

  • 管理员预置 MCP 服务器目录(Google Workspace、GitHub、Atlassian、GitLab 等)
  • 每个用户在 /integrations 用自有账号连接(OAuth 或用户自填令牌,支持动态客户端注册)
  • 令牌加密存储,后台刷新
  • 连接后,服务器工具会以用户自身权限暴露给模型

部署方面支持本地开发、单二进制运行、容器 + systemd 生产部署,以及 Docker Compose 方案。CLI 子命令统一为 gw

该项目以功能密度见长,将网关、认证、工具、UI、调度与集成打包到一套单体服务中,适合希望在一个进程内构建私有 ChatGPT 式入口的团队或开源爱好者。

信源