第一件事:模型切换太折腾了
某个智能客服项目,一开始用的是GPT-4,效果确实好,但太贵了。后来听说Claude便宜点,想切过去试试。结果打开代码一看,头都大了:
- OpenAI的调用是
openai.chat.completions.create - Claude的是
anthropic.messages.create - 参数结构也不一样,Claude还要传
max_tokens
代码里有几十个地方调AI,改了一下午,差点没累死。更坑的是,后来还想试试文心一言,又是一套新的API格式…
第二件事:账单突然暴涨
但是费用高得离谱。查了半天才发现:
- 测试团队疯狂调API,把生产环境的额度用光了
- 很多重复的问题,比如"怎么退货",每天被问几百次,但没有缓存
- 有个开发调试时忘了删日志,每次请求都调了两遍
第三件事:服务说挂就挂
今年OpenAI宕机了几次,每次都把我们害惨了:
- 凌晨4点,告警响了
- 客户投诉涌进来
- 我盯着OpenAI状态页面干着急
- 产品问:“为啥不搞个备用的?”
- 我:“…”
这些事儿相信很多做AI应用的朋友都遇到过。后来我了解到AI Gateway能解决这些问题,抱着试试看的心态用上了,没想到还真管用。

AI Gateway到底是个啥?
简单说,AI Gateway就是一个中间层,站在你的应用和各个AI服务商之间,帮你干这些脏活累活:
- 统一API入口:你用OpenAI的格式写代码,Gateway帮你转成Claude、文心一言的格式
- 智能缓存:重复的问题直接返回缓存,不花钱
- 自动故障转移:主模型挂了自动切备用
- 监控和成本分析:花了多少钱、谁用的、哪用的,一目了然
- 限流和权限:给不同团队分配配额,不让测试把生产搞崩
听起来有点抽象?给你看个实际的例子。
先给你看效果:我的代码变成了这样
之前,我要在代码里处理多个模型:
// 一会儿用OpenAI,一会儿用Claude,代码乱得一批
if (useOpenAI) {
const openai = new OpenAI({apiKey: 'sk-xxx'});
const response = await openai.chat.completions.create({
model: "gpt-4",
messages: [{role: "user", content: "你好"}]
});
} else {
const anthropic = new Anthropic({apiKey: 'sk-ant-xxx'});
const response = await anthropic.messages.create({
model: "claude-3-5-sonnet-20241022",
max_tokens: 1024,
messages: [{role: "user", content: "你好"}]
});
}
现在,我只需要用OpenAI的格式写代码,Gateway搞定一切:
// 就改了3行代码,清爽多了
const openai = new OpenAI({
apiKey: '随便填',
baseURL: "http://localhost:8787/v1", // 指向Gateway
defaultHeaders: {
'x-portkey-config': JSON.stringify(config) // 配置文件里写清楚用哪个模型
}
});
// 后面代码一行不变
const response = await openai.chat.completions.create({
model: "gpt-4",
messages: [{role: "user", content: "你好"}]
});
想切到Claude?改一下配置文件就行,不用动业务代码。是不是省心多了?
我用的三个核心功能,确实解决了问题
功能1:统一API入口,再也不用改代码了
这个功能对我来说最实用。我现在还是用熟悉的OpenAI SDK写代码,但通过Gateway可以调用:
- 文心一言、通义千问、讯飞星火(国内的大模型)
- Claude、Gemini(国外的)
- 甚至本地部署的模型
想换模型?改个配置就行,不用改代码。这点对我这种不想改业务逻辑的人来说太重要了。
功能2:智能缓存,帮我省了不少钱
这个功能是真省钱。原理很简单:同样的问题,第一次问过之后,Gateway记下来,第二次再问直接返回缓存,不调API。
我们客服场景下,用户经常问:
- “怎么退货?”
- “运费多少?”
- “发票怎么开?”
这些问题答案基本不变,开了缓存之后,这部分请求的成本直接降到0。算了一下,大概帮我省了30%左右的费用。
要注意的是,实时性要求高的问题别缓存,比如"今天天气怎么样",缓存了就不对了。
功能3:自动故障转移,再也不用半夜爬起来了
这个功能救了我好多次。我现在配置的策略是:
- 先用文心一言(主要用国内的,稳定)
- 如果文心一言挂了,自动切到通义千问
- 通义千问也挂了,最后用Claude兜底
整个过程自动化,用户根本感觉不到。之前OpenAI宕机那次,要是有这个功能,我就不用凌晨爬起来改代码了。
市面上的方案对比
现在AI Gateway的方案挺多的,我试过几个,给你说说我的感受:
方案1:Cloudflare AI Gateway - 上手最快
优点:
- 完全免费
- 不用部署,注册账号就能用
- 改个baseURL就行,5分钟搞定
缺点:
- 数据会经过Cloudflare的服务器
- 支持的模型相对少
适合:个人项目、小团队快速验证
方案2:Portkey Gateway - 功能最全
优点:
- 开源,可以私有部署
- 支持200+模型,国内国外都有
- 功能最全,缓存、故障转移、监控都有
缺点:
- 本地部署需要一点点运维知识
适合:需要私有化部署的团队
方案3:阿里云Higress - 国内企业首选
优点:
- 国内访问快
- 无缝对接阿里云的通义千问、PAI平台
- 阿里内部在用,稳定
缺点:
- 主要针对阿里云生态
适合:已经在用阿里云的企业
实战:10分钟搭一个AI Gateway
说了这么多,咱们直接动手。我选Portkey做示范,因为本地就能跑,不用注册账号。
第一步:启动Gateway
打开终端,运行:
npx @portkey-ai/gateway
看到这个提示就成功了:
🚀 AI Gateway running on http://localhost:8787
第二步:写个配置文件
创建一个 config.json,配置一下故障转移:
{
"retry": { "count": 3 },
"strategy": { "mode": "fallback" },
"targets": [
{
"provider": "openai",
"api_key": "你的OpenAI Key",
"override_params": {"model": "gpt-3.5-turbo"}
},
{
"provider": "anthropic",
"api_key": "你的Claude Key",
"override_params": {"model": "claude-3-haiku-20240307"}
}
]
}
第三步:改你的业务代码
const OpenAI = require('openai');
const fs = require('fs');
const config = JSON.parse(fs.readFileSync('./config.json'));
const client = new OpenAI({
apiKey: 'placeholder',
baseURL: "http://localhost:8787/v1",
defaultHeaders: {
'x-portkey-config': JSON.stringify(config),
'x-portkey-cache': 'simple' // 开启缓存
}
});
async function chat(prompt) {
const response = await client.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [{role: "user", content: prompt}]
});
return response.choices[0].message.content;
}
chat("你好").then(console.log);
就这么简单!现在你的代码已经有了:
- 自动故障转移
- 智能缓存
- 统一API入口
我的几点心得
心得1:开发测试生产环境要分开
一开始图省事,都用一个配置,结果测试团队把生产环境的配额耗光了。
建议:
- 开发环境:用便宜的模型,甚至本地模型
- 测试环境:用中等模型,配额少一点
- 生产环境:用好模型,配置故障转移
心得2:成本控制要从一开始就做
等账单出来再看就晚了。这几点我觉得比较重要:
- 高频问题一定要开缓存
- 给每个团队分配月度配额
- 每周看一次监控,找出浪费的地方
心得3:备用模型要选同级别的
图省钱,配置了GPT-4 fallback到GPT-3.5。结果GPT-4偶尔限流时,自动切到GPT-3.5,生成质量暴跌。
建议:备用模型选同级别的,比如GPT-4 → Claude 3.5 Sonnet → Gemini Pro,不要降级。
总结一下
AI Gateway不是什么高深技术,说白了就是帮你解决这些问题:
- 多模型切换太麻烦 → 统一API入口
- 成本失控 → 监控+缓存
- 服务不稳定 → 自动故障转移
要不要上?我觉得:
- 如果你只接一个模型,业务量不大 → 暂时不用
- 如果你接了2个以上模型,或者对稳定性有要求 → 值得一试
反正Portkey和Cloudflare都是免费的,花10分钟试试,万一有用呢?
常见问题
问:AI Gateway会增加延迟吗?
答:会有一点,但通常可以忽略。而且如果开启缓存,命中缓存的请求会更快。
问:免费版够不够用?
答:个人项目和小团队完全够用。Cloudflare完全免费,Portkey开源版也免费。
问:数据安全吗?
答:如果对数据安全要求高,可以用Portkey私有部署,数据都在自己服务器上。
467



被折叠的 条评论
为什么被折叠?



