Prompt Sapper:基础模型的灵魂伴侣,AI服务的创新工场
机器之心 2023-05-05 13:06 发表于河南
机器之心专栏
作者:邢振昌 (CSIRO's Data61)、黄箐 ( JXNU)、程煜 ( JXNU)
澳大利亚 Data61 的 SE4AI 团队和江西师范大学智能化软件工程实验室联合打造全球首款 AI 链(AI chain)无代码生产平台 Prompt Sapper,及相应的方法学和 AI 服务市场。基础模型(foundation models)带来了前所未有的 AI “操作系统” 效应和全新的人工智能交互方式,激发了 AI 服务开发与应用的创新之潮。Prompt Sapper 应势而生,致力于重塑软件领域格局,打造人与 AI 协作智能的平台,以释放每个人的 AI 创新潜能,创造人人皆 AI 创新大师的未来!
- 项目链接: https://github.com/AI4FutureSE
- AI 链主网站: https://www.aichain.online/
- Sapper IDE: https://www.promptsapper.tech/
- AI 服务市场:https://www.aichain.store/
构建在 AI “操作系统” 上的 AI 链(AI chain)应用AI 服务代表了一种我们称为构建在基础模型之上的 AI 链(AI Chain)应用。AI 链应用是一种新型的软件产品,他们按照特定的工作流程组装多次基础模型调用(也可能同时调用传统机器学习模型,外部数据或 APIs),从而提供某种特定的 AI 服务。这些基础模型包括当前非常热门的生成式预训练大语言模型比如 GPT-4、图像生成模型 DALL-E 等。我们可以将这些基础模型类看作 AI “操作系统”,就如同个人电脑时代的 Windows、Linux 和 MacOS,以及移动应用时代的 iOS 和 Android。正如我们曾经调用传统操作系统 APIs 开发软件应用和服务,如今我们可以通过组装对基础模型的多次调用来开发 AI 应用和服务。基础模型解锁软件 3.0然而,如上图所示, 传统操作系统调用和基础模型调用之间存在一个本质区别。即使自然语言是我们表达需求的最自然方式,在软件 1.0/2.0 范式中,人们不得不使用计算机语言(如 Java、Python、JavaScript 等)与计算机交互,专注于解决问题(算法,数据,模型架构,特征等)。现在,一切发生了翻天覆地的变化!基础模型为我们解锁了软件 3.0 范式,一种全新的自然语言编程方式 — 提示编程 ,以及基于提示编程的 AI 链工程。在软件 3.0 范式中,人们可以用自然语言描述他们需要解决的问题,而基础模型则能理解并执行这些自然语言指令。这一进步让人们能够以更直观、更自然的方式与 AI 互动,进一步拓宽了我们在创新和解决问题上的可能性,将 AI 的力量带给了更广泛的受众,实现了 AI 平民化的愿景。软件 3.0 优势在于为人们带来前所未有的 AI 交互体验和智能应用。但我们相信,软件 3.0 并不会完全取代软件 1.0/2.0。相反,这三种范式将在未来相互补充并共存。在各自的优势领域,它们将发挥各自的作用,共同推动技术进步和创新。这种协同发展有望让我们更好地解决复杂问题,释放更多的创新潜能。我们的 Sapper IDE 支持三种范式的工作者(worker),详情见 “提示客剑谱”(Promptmanship)。AI 2.0(基础模型)赋能软件 3.0(提示编程 + AI 链工程)
机器学习和软件工程演化如上图所示,机器学习技术的发展经历了从最早期的特征工程、神经网络架构工程,到预训练微调范式的目标工程,再到近期的提示 / AI 链工程的演进。尽管神经网络和预训练微调正在逐渐降低利用 AI 的门槛,但人们仍然面临着单领域、多模型孤岛效应的挑战。也就是说,AI 1.0 时代缺乏一个 AI “操作系统” 模型来支持 AI 应用的开发、组装和生态系统。而基础模型则具备跨领域知识,能够通过情景学习(in-context learning)适应各种复杂的任务,为我们带来了期待已久的 AI “操作系统” 平台。李开复将这一平台化的 AI 称为 AI 2.0。他认为,聊天工具和图文创作仅仅是 AI 2.0 的冰山一角,我们不应限制对 AI 2.0 潜力的想象。基础模型推动了自然的人与 AI 交互方式,开启了软件工程领域崭新的一页 — 软件 3.0 时代。在这个时代中,以提示编程和 AI 链应用为核心,我们将迎来更加开放和民主的 AI 服务开发和应用环境。Andrej Karpathy 认为,新兴的提示编程具有将 “程序员” 人数扩大到 15 亿的潜力。在就业市场上,出现了诸如 “AI 提示工程师”、“法律提示工程师” 等职位,预示着这一发展趋势正在成为现实。
AI 链工程(SE4AIChain): 愿景与目标
我们的愿景是通过生成式 AI 重塑软件格局。我们正处在将基础模型的能力演变成人工智能助手的构建阶段,这个阶段存在两个非常现实的机会:1. 让人人能够创建个性化的智能体,2. 让人们可以分享和雇佣智能体服务。这样可以让更广泛大众参与到 AI 大潮并从中受益。基础模型和提示编程具有广阔的前景,然而当前的提示编程状态就像 60 多年前软件工程出现前个人英雄主义式的编程一样。基于基础模型的 AI 服务开发远远超出仅仅写出耀眼的提示词,这就像系统化软件工程和随意编程之间的差别一样。因此,我们致力于打造一套系统的 AI 链工程基础设施作为基础模型的灵魂伴侣,重塑软件领域格局,以释放 AI 2.0 的全部潜力。我们的 AI 链工程基础设施是一套 AI4SE4AI 框架(AI-powered software engineering infrastructure for AI),包括一套系统的 AI 链工程方法,我们称之为 “提示客剑谱”,以及相应的开发和部署工具,作为这个方法论的配套兵器。为实现这个愿景,我们提出了以下三个目标:第一,从软件工程的视角总结泛化提示工程的最佳实践,将提示工程置于软件工程的整体框架下,补充被忽视的重要软件工程方法(例如软件过程,系统设计,测试),从而形成系统化的 AI 链方法论(第一版已发布)。第二,研发 AI 链集成开发环境,支持从想法到服务的全过程 AI 链开发,并通过物化 AI 链方法论,为普通人开发高质量 AI 服务提供 “润物细无声” 的支持(第一版已上线)。第三,研发 AI 服务市场,推进 AI 服务生态系统的发展,并研发负责任的 AI 链工程方法和技术,以增强 AI 服务的透明性、责任性和安全性(AI 服务市场 beta 版已上线)。我们致力于建立一个开放、协作、安全、可持续的 AI 链生态系统,为千行百业提供数字化、智能化转型升级的支持,让他们在 AI 新时代中发挥自己的创造力和智慧,并从中获益,实现人机共生的美好愿景。Promptmanship(提示客剑谱):为 AI 链应用量身定制的软件工程方法软件工程在几十年的发展中积累了大量有效的方法和实践,其中许多理念和经验可以被应用到 AI 链工程中。然而,随着基础模型带来的人与 AI 交互方式的变革,我们需要审视和调整传统的软件工程方法和实践,以适应新兴的以人为中心的自然语言编程范式。一方面,大语言模型(如 GPT-4)编码了海量知识并具备强大的对话能力,我们可以利用它们来帮助 AI 链工程师获得任务知识、理解问题以及获得解决问题的灵感。同时,为减轻大语言模型难以避免的错误和幻觉的影响,我们需要对模型能力有足够深入的理解(所谓 mechanical sympathy),并采用有效的提示设计。另一方面,大语言模型不仅改变了谁可以开发 AI 服务,而且深刻地改变了可以开发哪些 AI 服务。这需要我们将过去以代码为中心的开发工具转变为以人为中心的工具,使普通人可以专注于解决问题,更直观地分析、设计、搭建和评估 AI 链。
Promptmanship(提示客剑谱):为 AI 链应用量身定制的软件工程方法因此,AI 链工程需要在传统软件工程方法和实践的基础上,结合大语言模型的优势,发展出一套更适应以人为中心的自然语言编程范式的开发方法和工具,以提高 AI 链的开发效率和质量。上图展示了我们基于大量文献、社区分享经验以及我们自身实践而提出的 AI 链工程方法学。我们将 AI 链的功能单元定义为 “工作者”(worker)。AI 链除了涉及传统软件概念(例如需求、对象组合与协作、对象角色),还包括 AI 链特有的概念。例如,我们区分了三种工作者类型(对应三种软件范式:Software 1.0/2.0/3.0)、四层推理能力递增的工作者 - AI 交互模式,工作者构型(worker stereotype),以及提示设计模式。我们认为 AI 链工程是一个快速原型(Rapid Prototyping)的过程,包括四个迭代阶段:探索、设计、构建和部署。每个阶段都包括并发的活动(受统一软件过程(Rational Unified Process)启发),包括任务建模、系统设计(需求分析,任务分解、AI/non-AI 关注点分离、工作流演练)、AI 链实现和测试,但不同阶段有不同的侧重(由相应条高度展示)。不同活动会生成或者精化不同的 AI 链概念(有概念下方蓝色区间展示)。与所有活动伴生,我们提出了一个 “魔法增强魔法” 的活动,利用大语言模型的知识和对话能力,帮助 AI 链工程师获取任务知识、进行需求获取和分析,并获得对模型能力的理解(mechanical sympathy)。
在 AI 链中,软件 3.0 工作者的 "大脑" 就是他的自然语言提示。这些提示需要清晰地定义工作者的角色和功能。有效的提示需要创造力和实验,但与传统编程一样,可以通过惯用语和模式进行改进。大量文献和博客提出了许多提示技巧。基于这些提示技巧和我们自身的实战经验,我们总结出了四个方面的提示设计模式(见上表):工作者构型,提示注意事项,提示设计方面,和提示装饰。工作者构型:我们定义了九种工作者元角色:输入重写器、分割器、逆向提问人、规划师、信息询问者、执行官、汇总器、状态检测仪和验证器。为了提高 AI 链和工作者的可调试性、重用性和组装性,我们建议每个工作者遵循单一功能原则,担任一个独特的角色。当然,一个工作者可以同时兼具多个角色,但需要注意的是,一身多则的工作者可能成为 “史诗” 级的工作者,不仅什么都干不好,而且很难优化和控制。提示注意事项:包括三个会影响提示性能的通用事项:Grice 会话原则、术语解释、提示委员会。提示设计方面:需要考虑语境(包括输入、术语解释、拟人化,和其他限定等)、指令、示例、输出格式以及内容形式(自由文本、半结构化文本、代码风格文本)。对于功能简单的工作者,他们并不需要包括所有方面,比如简单加法问题可以把输入数字放到问题中(例如,“请计算 5+2” 或者 “5+2 等于几?”),也不需要语境、示例和输出格式。但对于功能复杂的工作者,最好以半结构化甚至代码形式区分表述不同设计方面和信息。除此之外,指令可以包括一定的控制逻辑,但复杂控制逻辑最好以明确的协作工作者和工作流方式表示。提示装饰:不是工作者核心功能,但他们可以通过 "大声思考" 方式提升模型推理能力(自问自答、反思),或是更好地定制模型行为和输出(拟人化、语境控制)。我们想提醒大家,这些提示模式并不能替代创造力和实验。此外,他们只是战术层面的优化。对于难度较大的任务,往往需要考虑到战略层面的 AI 链系统设计。AI 链生产平台(Sapper IDE)