开发Logicvisor时,我面临一个基础架构决策:AI调用到底放哪?

这个工具用AI审阅算法代码,分析时间/空间复杂度,给出面试前的技术反馈。听起来简单,但这个问题我花了很长时间思考——而很多开发者做决定太快,通常选"最快能跑起来"的方案。

打开网易新闻 查看精彩图片

我想聊聊实际权衡,以及为什么对Logicvisor和大多数生产项目来说,答案其实从没悬念。

两种方案的本质区别

当应用需要调用AI模型(Gemini、Claude、GPT等),HTTP请求必须从某处发出:

• 客户端:浏览器直接调用AI提供商API
• 服务端:浏览器调你的服务器,服务器再调AI提供商

就这一个选择,后果却天差地别。

客户端方案的优势

公平地说,客户端调用不只是偷懒:

1. 零后端开销:原型、MVP或周末项目,专门搭服务器代理AI调用纯属多余
2. 少一次网络跳转:客户端→AI提供商是直线,经服务器则路径更长,地理距离会放大延迟
3. 开发迭代快:改prompt、刷新页面、看结果,不用部署重启,探索阶段价值显著
4. 纯客户端工具够用:不碰数据库、不需要用户会话、无敏感业务逻辑的场景(个人效率工具、浏览器插件、内部小工具)完全适用

但生产环境就崩了。

生产环境的三座大山

API密钥泄露

浏览器发请求,API密钥必须在请求里——提供商要认证你。密钥暴露在客户端等于公开邀请滥用,攻击者拿到就能盗刷你的额度。

无法保护业务逻辑

prompt工程是核心竞争力。客户端调用意味着竞争对手右键"检查"就能抄走你的prompt设计,甚至直接调用你的密钥做同样的事。

没有访问控制

怎么限制用户调用次数?怎么防止单个用户刷爆额度?客户端方案下,这些基本防护全部失效。

服务端方案的核心收益

迁移到服务器后,问题逐一解决:

密钥安全:只存服务器,客户端永不接触
逻辑保护:prompt设计、后处理流程全部隐藏
精确管控:按用户配额、速率限制、审计日志,全部可实现
成本透明:知道谁在用什么、用多少,而不是月底看账单傻眼

延迟?确实存在。但现代服务器部署可以靠近AI提供商区域,差距往往可接受。相比安全失控和成本黑洞,这点代价不值一提。

Logicvisor的实际情况

这个工具需要用户登录、保存代码历史、按订阅层级限制调用次数。这些需求客户端方案根本满足不了。

更关键的是,prompt设计直接决定输出质量——这是产品护城河,不可能拱手让人。

所以决策过程其实是:先列出生产级需求,再看客户端方案能覆盖几项。答案是零。

结论

客户端AI调用有存在场景:原型验证、个人工具、完全开放的无限制服务。但一旦涉及用户账户、付费墙、竞争壁垒或成本控制,服务端就是唯一严肃选项。

这不是"各有优劣"的技术选型,是生产环境的硬性约束决定的。