前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9316
  • Google 开源 SAM:零配置的 AI Agent P2P 发现与调用网络
  • Cursor Skills完全指南:格式规范与跨Agent迁移实测
  • OpenAI Codex Skills规范详解:目录结构与官方文档未记载的细节
  • 用Gitea自建Claude Code内部插件市场,团队Skill统一分发
  • Claude Skills规范深度解读:从格式到团队协作
  • 2026年LLM应用架构实战:摆脱if/else链式判断
  • Anthropic CEO:AI天然趋向集中,开源只是转移权力
  • 微软 Copilot 隐藏参数漏洞可被利用窃取密码
  • LangChain 揭示:Agent 效果不佳时换模型是误区,换 Harness 才是关键
  • 三阶段工作流让 AI Agent 保持精准:Research-Plan-Implement
  • 小米MiMo桌面应用即将上线,AI编程助手6月已开源
  • Agent成熟度记分卡:追踪AI Agent可靠性的五个核心维度
  • 模型趋同时代:系统架构比选模型更重要
  • 代码审核功能默认关闭的教训
  • 程序员用 Claude 为 Windows 专用 HP 打印机编写 macOS 驱动
  • NIST AI风险管理框架生产级RAG实战
  • Codex自动探索优化技能:研究-测试-评判闭环
  • AI协作UML编辑器:代码臭味一目了然
  • AI API成本降低95%的实战经验
  • 不同模型Tokenizer成本差异的技术解析
  • 我用低价模型替代OpenAI:生产迁移实录
  • Anthropic单token成本是Vercel均值4.4倍,使用量却占65%
  • career-ops: 在AI编程CLI里做求职管理
  • CI守护失效实录:4个静默失败的检查
  • 不同分词器对中文token计数差异高达20%
  • Claude Code 2.1.234安全升级清单发布
  • LLM 调用成本减半:模型路由与缓存实战
  • AI厂商公开的使用数据可信吗?斯坦福研究者质疑透明度
  • Claude Code引入/design命令:终端内生成UI稿
  • Azure DevOps MCP 服务器 prompt 注入漏洞:AI Agent 如何绕过安全防线窃取数据
  • Ray AI严重漏洞CVE-2025-62593已被主动利用
  • 缺失数据无法被检测:遗漏类错误的技术盲区
  • 我们删掉了向量数据库和图数据库,二者皆删
  • 四大国产模型实战PK: DeepSeek/Qwen/Kimi/GLM真实客户工作对比
  • System Prompt不是安全边界: 重新审视AI应用的信任模型
  • DynamoDB原生向量搜索上线
  • 阿里Qwen:被严重低估的开源模型家族
  • AI代码助手横评:Cursor、Copilot等实用对比
  • MIT深度分析:AI递归自我改进或许不会来得那么快
  • Haystack 3.0管道接入TealTiger治理引擎
  • AI编程代理的脚手架到底有没有用
  • 延迟加载工具schema省21%成本,但有一类任务反而亏了
  • AI基准测试崩溃:Dan Luu揭示评估体系系统性失效
  • 用 Qdrant 给树莓派 AI 集群注入持久记忆
  • AI上下文压缩时平均丢失83%的用户规则
  • L2 Vault: 为 AI Agent 记忆引入 GitOps 版本控制
  • C++ 构建日志三合一工具配合四重门实现 AI 代码合并
  • Next.js App 从 70 分到 PageSpeed 100 的性能修复复盘
  • 无需自建语音栈:用Claude实现检查表单语音填写
  • Token Ledger 08-18:GPT-5.6 Sol降价50%,GLM 5.2降价42%
  • 本地化AI安全扫描引擎:规则引擎优先,LLM仅做结构化推理
  • 已加载 51 / 9316
8.0
热点
AI SCORE
编程提效2026-08-18 18:54

我用低价模型替代OpenAI:生产迁移实录

dev.to · AI#成本优化#API迁移#OpenAI替代
Editor brief · 编辑速览

CTO分享将生产环境从OpenAI迁移到其他低价模型的过程,成本从500美元/月大幅下降,迁移路径简单且已在线上稳定运行。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

三个月前我打开基础设施账单,差点没背过气去。我们每月在 OpenAI 上烧掉大约 500 美元,做的事情说实话就是一个 glorified 内部聊天机器人和几个分类任务。没什么特别的。没有 GPT-4o Vision 流水线。没有大规模的 embeddings 工作负载。只是少量 API 调用做文档摘要和一些结构化提取。500 美元就买这些。

我是一家种子轮创业公司的 CTO。我的工作是延长 runway、保持团队快速迭代。在一个厂商、一个产品入口上每月花 500 美元,这不叫延长 runway。这叫烧钱。于是我做了一件任何理性的 CTO 看到账单上某一行独霸天下时都会做的事:开始比价。

这次比价之后发现的东西,就是你正在读这篇文章的原因。有一整类前沿级模型可以通过 Global API 获得,成本只是 OpenAI 收费的一小部分,而且迁移路径简单得让我写出来都觉得有点蠢。但我们团队成功上线了,账单降下来了,我想其他创始人可能也想跳过我那三周困惑的 Slack 讨论。

这就是完整的故事。

没人想谈的厂商锁定问题

在我们进入价格表格之前,我要先明确一件事。成本很重要,但厂商锁定才是我启动这个项目的真正原因。OpenAI 的 SDK 很好用。他们的模型很出色。但我们做出的每一个硬编码 api.openai.com/v1 的架构决策,都让谈判变得更难、A/B 测试变得更难、如果定价变化或质量下降想抽身也更难。

当你的创业公司规模化运行时,你的 LLM 账单不是恒定的。它随着使用量、随着实验、随着你加上去的下一个产品入口而增长。你在第二周选的提供商,在第八个月未必还是正确的选择。我经历过足够多的厂商周期,知道唯一明智的默认值是:保持抽象层薄薄的,上游可以自由切换。

所以这里的真正目标不仅仅是"在 OpenAI 上省钱"。而是"构建一个更换提供商只需改配置、不需要花三个月重写的系统"。接下来所有内容都服务于这个目标。

那通电话背后的成本计算

让我把当时面对的数字摆出来。我直接从 Global API 的定价页和 OpenAI 的定价页同一天拉的数据,这样能保证是同类对比。所有数字都是每百万 token。

OpenAI 的 GPT-4o:输入 $2.50,输出 $10.00。OpenAI 的 GPT-4o-mini:输入 $0.15,输出 $0.60。比 GPT-4o 便宜约 16.7 倍。

然后是 Global API 上的替代品:DeepSeek V4 Flash:输入 $0.18,输出 $0.25。比 GPT-4o 便宜 40 倍。Qwen3-32B:输入 $0.18,输出 $0.28。便宜 35.7 倍。DeepSeek V4 Pro:输入 $0.57,输出 $0.78。便宜 12.8 倍。GLM-5:输入 $0.73,输出 $1.92。便宜 5.2 倍。Kimi K2.5:输入 $0.59,输出 $3.00。便宜 3.3 倍。

再读一遍。DeepSeek V4 Flash,每百万输出 token 只需 $0.25,比 GPT-4o 便宜四十倍,而在我们的内部评估中,在我们在意的 workloads 上质量相当。四十倍。

如果我们在 OpenAI 上每月花 $500,换成 DeepSeek V4 Flash 大约只需 $12.50。这不是四舍五入的误差。这是能不能雇一个实习生的差别。

当然,我不会假装 DeepSeek V4 Flash 在任何任务上都是 GPT-4o 的即插即用替代品。不是的。我们有一条特定的 pipeline 确实需要 GPT-4o 的推理质量,我们仍然为此付费。但对于那 90% 的调用——提取、摘要、分类和 JSON 结构化——更便宜的模型碾压它。而在规模化时,那 90% 才是账单的主体。

架构决策:即插即用兼容性胜出

这里我差点掉进一个兔子洞。我的第一反应是构建一个内部的"模型路由器"服务来抽象掉提供商。聪明吧?多云、厂商无关、所有流行词。

然后我想起来我运营的是一家创业公司,不是什么超大规模厂商。在你还没有规模问题的时候就去构建抽象层,是花六周工程时间解决一个你还没有的问题的好方法。

正确答案几乎总是一个无聊的答案。OpenAI 的 Python SDK、JS SDK、Go SDK、Java SDK——它们都支持自定义 base URL。协议是 OpenAI 兼容的。这意味着如果一个提供商讲的是 OpenAI 的 wire 格式,我只需要改两个值就能切换端点:API key 和 base URL。就这样。两行代码。

所以我最终采用的架构是:

在环境变量中集中管理 base URL 和 API key。

使用现有的 OpenAI 客户端库,只是指向 Global API。

按使用场景选模型,而不是按厂商。

每季度重新评估。

没有自定义路由器。没有聪明的代理。没有多租户网关。只有配置。等我们在生产环境里有五个提供商、需要动态分发流量的时候,我们再构建那个智能抽象层。

实际迁移:我改了哪些地方、哪里出了问题

我来走一遍我们实际代码库里的 diff 是什么样的。我们后端服务用 Python、边缘函数用 TypeScript,所以我两个都展示。

Python 迁移。before 和 after 并排:

from openai import OpenAI

client = OpenAI(api_key="sk-...")

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Summarize this doc..."}],
    temperature=0.7,
    max_tokens=500,
)
# After: Global API, same SDK
from openai import OpenAI

client = OpenAI(
    api_key="ga_xxxxxxxxxxxx",
    base_url="https://global-apis.com/v1"
)

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "Summarize this doc..."}],
    temperature=0.7,
    max_tokens=500,
)

这就是 Python 里的全部迁移。改了两行。SDK 调用签名完全相同。流式输出可用。Function calling 可用。JSON mode 可用。我用新端点跑了我们现有的测试套件,每一个测试都过了。

TypeScript 迁移,用于我们的 Next.js 边缘函数:

// Before
import OpenAI from 'openai';
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

const response = await client.chat.completions.create({
  model: 'gpt-4o',
  messages: [{ role: 'user', content: prompt }],
});
// After
import OpenAI from 'openai';
const client = new OpenAI({
  apiKey: process.env.GLOBAL_API_KEY,
  baseURL: 'https://global-apis.com/v1',
});

const response = await client.chat.completions.create({
  model: 'deepseek-v4-flash',
  messages: [{ role: 'user', content: prompt }],
});

相同的模式。相同的 SDK。相同的调用形状。唯一变化的是 baseURL 和模型名称。

对于我们处理批处理的 Go 服务,我们用了官方 go-openai 客户端,切换同样无痛——改配置、把 BaseURL 指向 Global API,搞定。

对于我们的 Java 摄取 worker,和 OpenAI Java SDK 的故事一样。构造函数接收一个 duration 和一个 base URL,你就在那里填上 https://global-apis.com/v1。

对于那些在终端里讨生活的工程师们,这是等效的 curl:

curl https://global-apis.com/v1/chat/completions \
  -H "Authorization: Bearer ga_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Hello"}]}'

相同的 headers。相同的 body。相同的响应格式。我再怎么强调都不为过:这次迁移实际移动的代码量真的很少。

什么可用、什么不可用、什么我得重建

对于那些粗糙的边缘我要坦诚,因为任何评估此事的 CTO 都需要知道摩擦点在哪里。

与 OpenAI 表现完全相同的功能:

Chat completions。相同的 API,相同的响应结构。

通过 SSE 流式输出。即插即用。

Function calling。相同的 tool/function schema。

通过 response_format 的 JSON mode。

Vision。像 Qwen-VL 这样的模型以相同格式接受图片输入。

目前不可用(或按设计不可用)的功能:

微调。截至目前通过 Global API 不可用。如果你需要微调模型,那是留在 OpenAI 或构建自己训练流水线的真正理由。

Assistants API。thread/run/tool-retrieval 抽象是 OpenAI 特有的。如果你依赖它,你需要构建等效的东西。

TTS 和 STT。使用专用服务如 ElevenLabs 或 Whisper 托管。

Embeddings 列在即将推出中。

对于我们来说,那份"不可用"列表里唯一有影响的是 Assistants API,而且我们早在六个月前就已经转向更简单的 function-calling 方案了。所以我们没有任何阻碍。

如果你的技术栈重度依赖 Assistants 或微调,你的迁移计算会不一样。但对于 80% 的场景——公司使用原生 chat.completions 加几个模型——这是一个干净的切换。

生产上线:我是如何在不烧毁任何东西的情况下完成的

我坚信生产迁移要在 feature flag 后面发生。这是我用的上线计划:

第一周:建立 Global API 账号。生成 API key。在新端点上配置一个 staging 环境。用 DeepSeek V4 Flash、Qwen3-32B 和 GLM-5 在真实生产 trace 上跑我们整个评估套件。看输出。看延迟。看失败模式。

第二周:按使用场景选模型。我们的提取 pipeline 迁移到了 DeepSeek V4 Flash,因为它又快又便宜。我们的摘要 pipeline 迁移到了 Qwen3-32B,因为其 prose 质量稍好。一个高风险的推理任务留在 GPT-4o 上,因为我们确实需要它。

第三周:影子模式。在生产环境中,对每个请求同时发给 OpenAI 和 Global API。比较输出。记录分歧。我们跑了五天,我们结构化提取 pipeline 上的分歧率低于 3%。很舒服。

第四周:切换。我们翻转了默认值。旧的提供商保持热备用于回滚。监控了一周的错误率和 p99 延迟。

第五周:删除了 OpenAI 备用。账单从 $487 降到了 $14。工程师们用办公室那杯一般的咖啡庆祝了一番。

我最引以为傲的部分:零停机、零客户可见的回归,以及该行费用减少了 97%。

规模化教训:如果可以的话我希望第一天就知道的事

有几件事我学到了,想告诉过去的自己:

第一,不要过早抽象。两行代码的切换就是迁移。当你有真正的理由时再构建智能路由器。过早抽象是创业公司的杀手。

第二,模型选择是按使用场景,而不是按公司。"我们是一家 GPT-4o 店"不是策略。"我们用 DeepSeek V4 Flash 做提取、用 Qwen3-32B 做 prose、用 GPT-4o 做那件确实需要它的活"才是策略。

第三,评估驱动的迁移是唯一的迁移。不要选最便宜的模型。选最便宜的、且能通过你评估的模型。"又便宜又烂"和"又便宜又好"之间的区别,在于你有没有去做测量。

第四,避免厂商锁定不是偏执。这只是好的架构。当 OpenAI 涨价的那天、当竞争对手推出更好东西的那天、当他们 API 宕机的那天——你想用配置变更来响应,而不是六周的迁移项目。

第五,Global API 让你通过一个端点访问 184 个模型。光这一点就值回这次迁移。当你在发布 AI 产品时,模型多样性是一个战略资产。

用大白话说明 ROI

让我把数字摆出来,这样我的 CFO 就不会骂我了。我们在 OpenAI 上每月花大约 $500。现在我们在相同工作负载上每月花大约 $14 在 Global API 上,加上每月大约 $80 在 GPT-4o 上做那件确实需要它的活。总计:$94。我们从 $500 降到了 $94。这是一个占基础设施支出 8% 的项目减少了 81% 的成本。

按年算,大约节省了 $4,800 的 burn。对于一家种子轮创业公司来说,这是多一个月的 runway。这是多一个 sprint 的功能。这是我们可以推迟但不会取消的另一次招聘。ROI 在这里不是抽象的。它是公司实实在在多活的几个月。

而我们做到这些,每个服务只改了两行代码。

我会对另一个 CTO 说什么

如果你现在正盯着你的 OpenAI 账单,想知道这值不值得花时间,这是我真诚的想法:是的,但要严谨。拉出你真实的用量。按使用场景分类。每个使用场景选一个模型。为每个模型运行评估。确保你的质量不下降。然后——只有在那时——才做切换。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
不同模型Tokenizer成本差异的技术解析
下一篇
Anthropic单token成本是Vercel均值4.4倍,使用量却占65%