AI 应用和传统后端有什么不同?不确定性带来的 8 个工程问题
AI 应用仍然需要传统后端的鉴权、数据库、缓存和可用性能力,但它多了一层概率性组件:同一输入可能得到不同输出,正确性需要样例评估,延迟和资源消耗也随上下文与生成长度变化。工程重点因此从“接口是否返回”扩展为“输出是否可接受、可解释、可控并可回归”。
先说结论
不要把 AI 应用理解成完全不同的软件工程,也不要把模型当成普通 RPC。正确做法是:
- 用传统后端保证确定性边界:身份、权限、事务、幂等、数据约束;
- 用 AI 工程方法管理不确定性:评估集、结构校验、引用、人工复核、预算和降级;
- 把模型输出当作不可信候选结果,而不是权威事实或可直接执行的命令。
适合谁,不适合谁
本文适合已有 API、微服务或数据系统经验,正在设计 RAG、Agent、智能客服、抽取与生成类应用的开发者。
本文不是“传统后端已经过时”的论证。对于规则稳定、结果必须完全确定、普通查询即可解决的问题,传统程序通常更便宜、更容易测试,也更应优先使用。
八个工程问题
1. 正确性从布尔值变成多维度
传统接口常用状态码和精确断言判断结果。AI 输出还要评估事实性、完整性、相关性、格式、安全性和业务可接受度。不同维度可能互相冲突,例如更完整的回答可能更慢。
2. 测试从固定期望扩展到评估集
单元测试仍用于解析器、权限和路由;模型行为则需要包含正常、边界、对抗和历史故障样例的评估集。断言应关注业务不变量,不必对自由文本逐字匹配。
3. 输入不只是请求参数,而是上下文
系统指令、历史消息、检索文档和工具结果共同影响输出。上下文必须有来源、优先级、长度预算和信任等级,不能把外部文档当成系统指令。
4. 延迟分成首片段与完整生成
传统后端常关注总响应时间;生成式应用还要区分首片段等待、生成时长、工具调用等待和校验时间。流式响应改善感知,但也引入断流与半成品处理。
5. 资源消耗随输入输出变化
同一接口的消耗与上下文、生成长度、重试和工具循环相关。必须在请求前限制预算,在请求后记录实际用量,并为异常循环设置停止条件。
6. 外部依赖的语义会变化
模型或 Prompt 改动可能不改变 HTTP 契约,却改变分类边界、语气和拒答行为。因此升级要经过离线评估、灰度和可回滚版本管理。
7. 安全边界包含自然语言攻击
除了注入、越权和敏感数据泄漏,还要处理提示注入、恶意文档和危险工具参数。模型不能自行授予权限,工具层必须重新鉴权和校验。
8. 故障不总是显式异常
最危险的失败可能返回 200:引用不存在、答案看似合理但事实错误、分类字段合法但业务含义错误。因此监控既要看系统指标,也要看输出质量与用户反馈。
架构决策表
| 问题 | 优先使用确定性代码 | 可以使用模型 | 必须增加的护栏 |
|---|---|---|---|
| 身份与权限 | 是 | 否 | 服务端鉴权、最小权限 |
| 金额和配额计算 | 是 | 仅解释 | 权威数据源、范围校验 |
| 文本分类与抽取 | 规则稳定时 | 边界复杂时 | Schema、评估集、人工复核 |
| 知识问答 | 精确查询优先 | 需要综合表达时 | 检索引用、无答案策略 |
| 工具选择 | 固定流程优先 | 工具多且路径开放时 | allowlist、参数校验、审批 |
| 用户可见文案 | 模板可满足时 | 需要个性化时 | 安全过滤、事实校验 |
判断标准不是“能不能用模型”,而是模型带来的收益是否值得承担额外的不确定性、延迟、观测和治理成本。
一条可落地的工程链路
请求
→ 确定性鉴权与限流
→ 上下文构建与数据分级
→ 模型路由与预算检查
→ 生成或工具选择
→ Schema 与业务规则校验
→ 必要的人工审批
→ 幂等提交
→ 质量反馈与评估集回流这条链路把概率性决策夹在确定性边界中。即使模型输出失败,系统也能明确返回失败、降级为搜索结果或进入人工队列,而不是继续执行未知动作。
发布和观测边界
- 版本:同时记录 Prompt、Schema、检索配置、模型路由和应用版本。
- 测试:传统单元/集成测试与模型评估并行,不能互相替代。
- 监控:系统侧看错误、超时、首片段、总耗时和用量;质量侧看校验失败、无答案、引用、人工驳回和用户反馈。
- 降级:模型不可用时,可返回搜索结果、固定流程或人工处理;不能绕过鉴权与校验。
- 回滚:回滚单位应包含 Prompt、路由和 Schema 的兼容组合,避免只切模型造成格式不匹配。
常见误区与失败边界
- 把 temperature 设低就认为确定:概率变化不等于业务正确性保证。
- 只做传统接口测试:HTTP 成功无法覆盖幻觉、引用和语义偏移。
- 把所有流程改成 Agent:固定规则被开放式决策替代后,成本和风险都会上升。
- 让模型决定权限:自然语言判断不能替代服务端授权。
- 出现质量问题只改 Prompt:数据、检索、Schema、工具和验收标准也可能是根因。
当任务没有可定义的“可接受输出”或无法构造任何评估样例时,不应急于自动化上线;先缩小任务或保留人工流程。
可执行检查清单
- [ ] 明确哪些步骤必须确定性执行,哪些允许模型参与
- [ ] 为模型输出定义可接受标准和失败结果
- [ ] 权限、金额、资源存在性由服务端重新校验
- [ ] 建立覆盖边界与历史故障的评估集
- [ ] 记录 Prompt、Schema、模型和检索版本
- [ ] 分开监控首片段、完整响应、工具和校验耗时
- [ ] 为请求、重试和 Agent 循环设置预算
- [ ] 准备不依赖模型的降级路径
- [ ] 发布支持灰度、停止和兼容回滚
下一步
在 AI 工程化专题 中可以继续补齐可靠性能力。下一步阅读 LLM 成本控制,把上下文、缓存、模型路由和降级转化为可执行预算,而不是上线后只看总账单。
