base_url 与网关是什么
多数 SDK 允许把基础地址指向自建服务,这就是网关接入的入口。网关在业务与上游模型之间承担统一鉴权、供应商路由、配额限流、用量统计与审计、参数适配等职责,让业务代码只认一套协议。好处是换模型、换供应商、加降级策略时改动集中在网关一处;代价是多了一跳,需要自己保证可用性与性能。
基本信息
| 作用 | 把客户端的请求地址指向自建网关 |
|---|---|
| 接入方式 | 初始化客户端时替换基础地址,或配置环境变量 |
| 核心价值 | 统一鉴权、路由、配额与用量统计 |
| 协议要求 | 对外提供兼容的请求与返回结构 |
| 代价 | 多一跳网络与额外的运维责任 |
| 常见风险 | 网关成为单点,配置错误会全量影响业务 |
网关能做什么
| 能力 | 说明 | 收益 |
|---|---|---|
| 统一鉴权 | 业务只带内部令牌,上游密钥由网关持有 | 密钥不外泄,轮换只改一处 |
| 供应商路由 | 按模型名或规则转发到不同上游 | 业务无需感知供应商差异 |
| 降级与重试 | 上游异常时切备用线路 | 提高整体可用性 |
| 配额限流 | 按调用方或功能维度限制速率 | 防止单方占用全部额度 |
| 用量统计 | 按调用方与功能累计 token 与费用 | 成本归因清晰 |
| 内容审计 | 记录请求与响应,做敏感信息检查 | 满足审计与合规要求 |
典型使用场景
- 多供应商混跑:同一业务按任务类型路由到不同模型
- 成本归因:按团队与功能拆分账单,找到最贵的链路
- 密钥治理:业务侧不再直接接触上游密钥
- 统一降级:主线路限流或故障时自动切换备用线路
- 合规审计:集中留存调用记录,便于事后核查
把客户端指向网关
把客户端指向网关
from openai import OpenAI
client = OpenAI(
base_url="https://gw.example.com/v1", # 指向自建网关而非官方地址
api_key=internal_token, # 网关签发的内部令牌
)
# Node 侧等价:new OpenAI({ baseURL, apiKey })
# 网关侧再按模型名转发到不同上游,业务代码保持不变
# 环境变量方式:设置基础地址变量即可,无需改代码网关路由配置示意
网关路由配置示意
routes:
- match: { model: "small-*" } # 轻任务路由到小模型
upstream: vendor-a
- match: { model: "reason-*" } # 难题路由到推理模型
upstream: vendor-b
fallback: [vendor-b, vendor-a] # 上游异常时的备用顺序
limits: { rpm: 600, tpm: 200000 } # 出站侧统一限速网关要按关键路径对待:加监控、做多实例、配健康检查与超时,否则它一旦出问题,全部模型调用一起中断。
网关里不要做有损转换:静默丢弃不支持的参数会让业务侧以为生效了,实际行为与预期不符,排查成本极高。