AI 应用和非 AI 软件的关键区别在于:前者的输出更难预测。你无法提前知道 LLM 会输出什么,也无法预知一个监督学习算法会做出什么预测。正因为这种不确定性,构建 AI 系统是一个比构建传统软件更加迭代的过程——很难提前规划好整个流程。熟练的 AI 工程师会反复地构建一小段软件、检查它、再决定下一步要尝试什么,这一系列步骤高度依赖于中间结果。能够熟练地判断下一步该做什么,才能让你基于不可靠的 AI 组件构建出可靠的软件系统。这需要掌握:
依我的经验,区分"擅长构建 AI 系统的人"和其他人的最重要特质,就是能否驱动一套严谨的评估/错误分析循环来推动开发。这能让你反复把精力集中在更可能有成效的方向上。我发现这是一项很难精通的技能,因为最佳方法因项目而异,甚至会随项目所处阶段的不同而变化。
构建好的评估体系是一项深厚的技术能力。你可能需要查看系统的运行轨迹(traces)和输出、做探索性数据分析,并结合产品和业务洞察来决定该测量什么。你还应该理解各种评估选项的菜单——什么时候用确定性(基于代码)的评估,什么时候用"LLM 当裁判"(LLM-as-a-judge),什么时候需要人工介入(human in the loop),以及如何评估你的评估方法本身,以便不断改进它们。这些评估结果会反过来推动一个迭代过程,让后续开发更加系统化,而不是随机摸索。
5. 生产环境运维(Operating in production)
运维 AI 软件和运维传统软件不同,因为它存在不可预测性、成本和延迟等问题。首先,你要懂得如何建立可观测性机制,来理解系统在真实使用场景下的表现。你需要追踪性能表现、检测漂移(drift),并对模型故障和安全事件(比如对抗性提示注入)快速做出响应。建立回归测试和 CI/CD 流程,比传统软件需要更多的统计评估手段,测试投入的力度也应当与犯错的风险相匹配。此外,了解如何选择合适的技术组合——比如模型选型优化、蒸馏(distillation)和微调、以及智能体工作流的简化——来优化成本和延迟也很重要,尤其是当你的应用要服务大量用户时。
6. 机器学习基础(Machine learning foundations)
现代 LLM 是用机器学习技术构建的,包括监督学习和强化学习。我认识的每一位擅长用 LLM 构建系统的工程师,都对机器学习和深度学习有一定深度的理解。此外,许多应用仍然需要你懂得如何使用机器学习模型——无论是别人训练好的模型,还是你自己训练的模型。这需要了解主流的机器学习和深度学习模型,以及在准确率、训练速度、推理速度等方面的权衡取舍,并懂得如何为训练和评估这些模型设计所需的数据。机器学习中"偏差/方差(bias/variance)"、错误分析、数据工程这些概念——都是应对输出不确定系统的核心思维框架——对于 AI 系统开发中的一系列决策依然至关重要。
要精通构建和部署 AI 系统,有很多东西要学。这是一个技术深度很高的领域。但你学到的每一点,都会让你在 AI 工程上做得更好,构建出更精彩的应用。与这些技能相辅相成的,是软件工程能力。我会在下一封信里详细讲讲这个话题。