开发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调用有存在场景:原型验证、个人工具、完全开放的无限制服务。但一旦涉及用户账户、付费墙、竞争壁垒或成本控制,服务端就是唯一严肃选项。
这不是"各有优劣"的技术选型,是生产环境的硬性约束决定的。
热门跟贴