如何停止为神经网络编写适配器并掌控 Token 成本
最近,我在重写 Claude 集成到新版本客户端,突然想到了一些事情。有一天客户要求接入 GPT-4o,另一天又要求接入 Anthropic,一周后财务部门就会问测试费用中那几百美元的账单是怎么来的。每次我都得添加错误处理逻辑、管理密钥、手动计算 Token 费用。
这个重复性的工作可以通过 The Open Co 团队的 LLM Gateway 来解决。该项目作为一个统一的 API 网关,接收标准 OpenAI 格式的调用请求,并将其路由到相应的提供商。
一个请求,适配任意模型
核心概念很简单。你无需集成多个 SDK,只需向本地或云端网关发送一个 HTTP 请求。控制器会自动识别目标提供商、转换格式并返回响应。
目前支持的主流提供商包括:
- OpenAI
- Anthropic
- Google Vertex AI
- 其他具有兼容 API 的服务
以下是标准网关请求的样子:
curl -X POST https://api.llmgateway.io/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $LLM_GATEWAY_API_KEY" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "Hello, how are you?"}
]
}'
如果你需要切换到 Claude 3.5 Sonnet,应用程序中的 JSON 结构保持不变,只需更改请求体中的模型名称即可。
成本追踪和延迟指标
当多个服务或开发人员使用神经网络时,控制限额变得困难。有时候有人运行了一个包含错误提示词的脚本,形成无限循环,一小时内就烧掉了一个月的预算。
网关负责处理追踪工作。每笔交易都会保存到数据库,系统自动计算:
- 输入和输出 Token 数量
- 每次调用的总成本
- 模型响应时间
- 按密钥和项目汇总的总体统计
通过 Web 面板,你可以查看现成的图表,立即看出哪个具体模型消耗了大部分预算。
项目结构与 Docker 部署
作者使用 TypeScript 构建了一个 monorepo。底层使用了成熟可靠的技术:
- Hono 处理 API 请求代理
- Next.js 管理 Web 界面和 Playground
- Drizzle ORM 与 PostgreSQL 和 Redis 数据库协作
- TypeScript 确保组件的端到端类型安全
你可以通过 Docker 在几分钟内部署自己的服务。作者已经组装好了包含主要组件的现成镜像。
docker volume create llmgateway_postgres
docker volume create llmgateway_redis
docker run -d \
--name llmgateway \
--restart unless-stopped \
-p 3002:3002 \
-p 3003:3003 \
-p 3005:3005 \
-p 3006:3006 \
-p 4001:4001 \
-p 4002:4002 \
-v llmgateway_postgres:/var/lib/postgresql/data \
-v llmgateway_redis:/var/lib/redis \
-e AUTH_SECRET="$(openssl rand -base64 32 | tr -d '\n')" \
-e GATEWAY_API_KEY_HASH_SECRET="$(openssl rand -base64 32 | tr -d '\n')" \
ghcr.io/theopenco/llmgateway-unified:latest
文档中的一个小细节:不要直接将主机上的文件夹挂载到 /var/lib/postgresql/data 中。由于容器中 PostgreSQL 权限初始化的特殊性,进程可能会崩溃。上面命令中的命名卷可以避免这个问题。
如果你想先不部署就体验系统,开发者提供了云端版本,地址是 llmgateway.io。
免费版限制
该仓库采用双许可证模式。主代码采用 AGPLv3 发行,但源代码中的某些文件夹属于 Enterprise 版本。
免费开源版本中,调用历史保留 30 天。如果你需要无限期的日志保留、高级用户计费或组织内的团队隔离,则需要购买商业许可证。
谁将从这个工具中受益
如果你的应用程序每天只向单个模型发起三次请求,就没有必要设置单独的代理。你只是在增加一个额外的故障点,并带来微不足道的网络延迟。
网关在以下场景中会大显身手:
- 项目使用来自不同提供商的模型
- 需要跨不同服务透明追踪 Token 成本
- 需要在自有环境中部署代理
- 计划在故障时快速切换到备用模型
你可以在 GitHub 上试用该项目。README 相当简洁,但即使没有冗长的说明文档,这个项目也很容易理解。
相关项目