我很高兴向大家发布《AI 工程技能地图》。如今,AI 让我们能够以与 2022 年截然不同的方式构建软件。任何掌握相关技能、能够利用这一转变的人,都将迎来大量令人振奋的项目与就业机会。然而,围绕 AI 的信息环境充满噪声与炒作,究竟哪些技能最值得学习?我和团队一直在综合梳理一份 AI 工程技能地图,希望帮助:(一)开发者确定学习重点;(二)雇主招聘具备相应技能的开发者。
我们分析了超过 10,000 条招聘信息,对 AI 专家、招聘经理和招聘人员进行了数十次结构化访谈,通过调查收集数据,并综合其他线上资料。由此得出最重要的四项 AI 工程技能:
- 构建与部署 AI 应用
- 软件工程基础
- 使用编程智能体
- 定义构建方向
你可以把我们的过程粗略理解为:在由海量职位信息和专家访谈组成的数据集上进行聚类,以找出不仅在今天重要、在不久的将来也同样重要的技能。
先说明一下术语:我讨论的是 AI 工程技能,而不是“AI 工程师”这一职位,也就是以构建 AI 系统为工作的人员,因为前者的范围要广得多。如今,所有开发者都应该知道如何使用云服务,但只有一小部分人的职位名称是“云工程师”。同样,所有开发者,包括全栈工程师、数据工程师、DevOps 工程师、机器学习工程师,当然也包括 AI 工程师,都需要掌握 AI 工程技能。
构建与部署 AI 应用。AI 应用与非 AI 应用的关键区别在于,前者的输出具有不可预测性。当你向 LLM 输入提示词时,并不知道会得到什么结果;当你训练深度学习算法时,也不知道它会对新样本作出怎样的预测。相比之下,传统软件的行为更加可预测。
擅长构建与部署 AI 应用的人,不仅理解 AI 的基础构件,例如 LLM、上下文工程、RAG、智能体工作流、机器学习和深度学习,更重要的是,他们知道如何使用统计方法来衡量、引导和治理 AI 系统,使其行为更加可预测。实现这一点的一项核心技能,是懂得如何严谨地推动评测与错误分析闭环。
软件工程基础。深入理解软件的工作原理,才能更高效地构建软件。软件工程需要在成本、可扩展性、可靠性、速度等因素之间作出权衡,安全与隐私则会进一步增加复杂度。
理解软件工程基础,能让你首先意识到存在哪些权衡,进而在选择软件栈、设计系统架构、设计数据存储和测试等方面作出更好的决策。相比之下,缺乏经验的开发者可能通过氛围编程拼出一个方案,却不知道编程智能体正在替他作出哪些权衡;这些权衡往往并不理想,因为开发者不知道该向智能体提供什么上下文。掌握软件工程基础,能让你使用准确的软件工程语言引导编程智能体,从而作出合理取舍。
使用编程智能体。高效运用智能体编程,如今已经成为每位开发者的一项关键技能。掌握这项技能,意味着你对智能体的工作方式拥有良好的心智模型。你了解它们的局限以及规避方法,也能迅速引导它们,知道何时应该介入、何时应该放手,从而构建稳健的软件,而不浪费过多时间或 token。
这要求你知道如何管理编程智能体的上下文,如何在规划与执行之间取舍,以及如何通过提供验证器或评测,帮助智能体自主完成闭环。你还需要知道如何依据清晰的规格开展工作,以及什么时候不值得为此费心;如何编排多个智能体协同工作;还要避免智能体搞坏生产数据库之类的风险。由于智能体编程发展迅速,熟练使用编程智能体不仅意味着掌握前沿实践,还意味着建立一套持续尝试新工具的习惯,并随着最佳实践变化不断演进自己的工作流。
定义构建方向。在规格明确的情况下,编程智能体正快速提升按规格交付的能力。因此,工程师的工作正在转向决定规格中应该包含什么。工程师不应再期待拿到一份像素级完美的设计,然后只负责实现。相反,高效的 AI 工程要求你具备产品判断力,并理解业务背景和客户目标,从而参与定义并推动要构建的产品。
AI 也让你有机会承担比过去更大的责任,拥有更强的主动权。你可以识别有价值的问题与机会,并以负责任的方式执行,把握这些机会。要利用好这项机会,你需要知道如何推动项目向前。例如,什么时候应该快速构建 MVP 交给用户测试,什么时候应该放慢速度,投入更多时间进行更加审慎的构建。
所有这些技能的底层,都是持续学习的心态。AI 仍在快速变化,因此我们每个人都必须不断学习、不断演进自身技能,采用新兴的最佳实践。
DeepLearning.AI 的首要使命,是帮助开发者获得这些 AI 工程技能。关于这四项技能,我还有更多内容想分享。接下来,我会在后续文章中逐一展开,并发布一份更详细的 AI 工程技能地图。展望 AI 工程的发展方向,我对我们所有人未来能够构建出的成果感到无比兴奋。希望你也能在这个未来中扮演令人振奋的角色。