LLM gateway
一、介绍
在 Java 中实现 LLM Gateway,通常是构建一个统一的 API 层/网关服务,将来自不同 LLM(如 OpenAI GPT、Anthropic Claude、本地 LLM 等)的请求进行封装和转发,提供统一的接口、鉴权、限流、日志、模型路由等功能。
1. LLM Gateway 的目标
统一接口:屏蔽不同 LLM 平台(OpenAI、Anthropic、本地模型等)的差异。
安全管理:提供统一的鉴权、Token 管理、限流。
模型路由:根据模型 ID 或策略自动选择不同的 LLM 后端。
日志和监控:记录每次调用、耗时、Token 消耗。
可扩展:支持添加新的模型提供商。
2. 技术选型
在 Java 中可使用以下技术:
Spring Boot (WebFlux/Servlet):实现 HTTP API 层。
WebClient / OkHttp:作为 HTTP 客户端调用 LLM API。
Reactor (WebFlux):适用于流式输出(SSE/流式推送的响应)。
Redis / Caffeine:做 Token 缓存、限流。
OpenAPI (Swagger):统一接口文档。
3. 核心架构设计
模块划分:
API 层:接收请求(/v1/chat/completions)。
Auth 鉴权:校验用户 Token 或 Key。
Router 路由:根据
model
或策略选择对应 LLM 提供商。LLM Provider:封装各家 LLM API 的调用(OpenAI、Claude、Local)。
日志/监控模块:记录调用数据。
[Client] ---> [LLM Gateway API] ---> [Router] ---> [OpenAI API / Claude API / Local LLM API]
|
[Auth / Rate Limit / Logging / Monitoring]
4. 附加功能
鉴权:使用 Spring Security + JWT 校验用户身份。
限流:使用 Bucket4j 或 Redis 做请求限流。
监控:使用 Micrometer + Prometheus 收集调用指标。
缓存:对于相同请求可用 Redis 缓存减少 Token 消耗。