前言
随着企业 AI 应用的深入,一个常见的场景开始浮出水面:多个团队、多个项目、多个模型------但 API Key 的管理却乱成一团。
本文分享我们在构建多租户 API 网关时的一些实践和思考。
一、痛点:Key 管理的失控
当团队规模从几个人扩展到几十人时,Key 管理的痛点就来了:
-
一人一 Key,满天飞------每个开发者注册各自平台的账号,Key 散落在各个项目中
-
费用无法追溯------月底对账时,不知道哪个项目花了多少钱
-
权限失控------离职员工的 Key 没有回收机制
-
资源争抢------一个 Key 被多个服务共用,高频调用导致限流
二、解决方案:多租户 API 网关
架构分层:用户层 → 租户层 → 网关层 → 模型层
每个租户(团队/项目)拥有独立的空间,通过统一的网关访问底层模型资源。
核心设计:
- 租户隔离
每个租户有独立的:
-
API Key(可创建多个)
-
配额管理(月度/日度限制)
-
调用日志
-
费率设置
- 统一认证
所有请求通过单一入口认证,网关负责:
-
Key 有效性校验
-
租户身份识别
-
调用频率控制
-
计费记录
- 智能路由
网关根据请求自动选择最优模型:
-
按成本优先(免费/低价模型先试)
-
按能力匹配(简单任务用小模型,复杂任务用大模型)
-
自动容灾(模型不可用时切备线)
三、实战代码片段
- 租户认证中间件(Node.js)
// 租户级别的限流 const tenantRateLimiter = (tenant) => { return rateLimit({ windowMs: 60 * 1000, max: tenant.tier === 'premium' ? 1000 : 100, keyGenerator: (req) => req.tenant.id, handler: (req, res) => { res.status(429).json({ error: '配额超限,请升级套餐或等待重置' }); } }); };
// 请求认证 app.use('/v1/*', async (req, res, next) => { const apiKey = req.headers'authorization'?.replace('Bearer ', ''); const tenant = await validateKey(apiKey); if (!tenant) { return res.status(401).json({ error: '无效的 API Key' }); } req.tenant = tenant; next(); });
- 多模型路由策略(Python)
class ModelRouter: def init(self): self.models = { 'gpt-4o': {'cost': 5, 'capability': 10, 'available': True}, 'claude-3': {'cost': 3, 'capability': 9, 'available': True}, 'deepseek': {'cost': 1, 'capability': 7, 'available': True}, }
def route(self, request, tenant_tier='basic'): # 免费租户优先用低成本模型 if tenant_tier == 'free': return 'deepseek'
根据任务复杂度选择 complexity = self._estimate_complexity(request) candidates = m for m, info in self.models.items() if info\['capability' >= complexity and info'available' ] if not candidates: return None
成本优先 return min(candidates, key=lambda m: self.modelsm'cost')
def _estimate_complexity(self, request): content = request.get('messages', {})-1.get('content', '') return min(10, len(content) // 100)
四、收益对比
Key 数量:人手多个混乱 → 每人/项目一个,清晰 费用追溯:无法追踪 → 精确到租户 故障恢复:手动切换 → 自动容灾 < 5s 运维成本:高(每周处理 Key 问题)→ 低(基本无运维)
五、总结
多租户 API 网关不是锦上添花,而是从"能用"到"好用"的关键一步。如果你的团队正在面临 Key 管理混乱、费用无法追踪等问题,是时候考虑统一网关方案了。
当然,如果不想自己造轮子,也可以直接使用现成的聚合平台如 AI·API(https://api-aiapi.cn),开箱即用。
--- AI·API 平台团队原创