机器之心专栏
作者:邢振昌 (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)
我们的 AI 链生产平台将不同于现有以代码为中心的开发环境,因为 AI 链将由很多没有计算机和编程背景的人开发。因此,我们的最高设计准则是 “以人为本”,体现在三个方面:
首先,我们将 “提示客剑谱”(AI 链工程方法学)无缝地物化到 Sapper IDE 中,使任何人都能有效地应用最佳 AI 链实践和方法。
其次,我们充分利用大语言模型的知识和对话能力,开发智能副驾驶(co-pilots),为非技术人员提供全过程 AI 链开发支持。
第三,我们提供全过程无代码 AI 链分析、设计、开发和部署,让任何人都能轻松将创意转化为 AI 服务。
我们的 AI 链 IDE 可谓是 “AI 服务的孵化器”,因为它的主要功能就是站在基础模型的巨人肩膀上打造 AI 服务。这些服务不仅可以直接满足人们的 AI 链开发需求,还能启发他们去探索更多可能性,并帮助他们创造出更多更优秀的 AI 服务。我们相信,这将会是一个 AI 创新无限的时代,我们的 Sapper IDE 将成为千行百业开启这一无限潜力的 “工兵铁锹”!
我们在Sapper IDE已开发或正在开发多样的AI服务演示,涉及教育,职业培训,创意写作,游戏,软件工程等多个领域。我们也欢迎社区用Prompt Sapper创作更多的创意AI服务,并分享到我们的AI服务市场。
探索视图(Exploration View)
探索视图支持任务探索和初步设计阶段的活动,允许用户获得大致的任务模型,了解任务挑战,以及初步了解任务步骤、工作流、输入 / 输出数据和提示有效性。
如图所示,探索视图的左侧部分是一个聊天机器人(目前封装 GPT-3.5 API),其工作方式与普通聊天机器人(例如,ChatGPT )相同。聊天机器人允许用户与大型语言模型(LLM)进行任何类型的对话。当然,我们假设用户将围绕他们需要开发的 AI 服务进行交谈。与普通聊天机器人不同,探索视图配备了一个基于 LLM(大型语言模型)的副驾驶员,该副驾驶员会自动收集和分析用户与 LLM 之间的对话,以获取可能与后续 AI 链分析、设计和开发相关的任务背景(例如,所需要的功能、用户偏好、需要避免的事项等)。这个副驾驶员本身就是是基于 LLM(目前为 GPT-3.5)构建的 AI 链服务。它以一种不干预的方式工作,并根据用户和 LLM 之间的对话动态记录笔记,如图右侧的 Task Note 面板所示。
设计视图(Design View)
设计视图支持设计阶段的主要活动,并在探索和构建阶段之间起到承上启下的重要作用。因此,它具有两个主要功能:需求分析和 AI 链框架生成,分别由两个基于 LLM 的副驾驶员提供支持。与探索视图中的非干预式副驾驶员不同,设计视图中的两个副驾驶员会积极与用户互动,协助他们进行需求分析和 AI 链框架生成。
需求分析
设计视图的左侧是一个基于 LLM 的需求分析聊天机器人(另一个 AI 链服务)。与探索视图中的自由式聊天机器人不同,需求分析聊天机器人充当不间断的逆向提问者角色,他的工作方式如下:
1) 用户在询问框中输入任务描述(通常是对所需内容的模糊描述)以开始对话。
2) 需求分析聊天机器人根据初始任务描述和探索视图中收集的任务笔记(如果有),通过一系列开放式问题引导用户明确具体任务需求。
3) 需求分析聊天机器人会将用户每轮的回应逐步整合到任务描述中(显示在右上角的任务需求框里)。
当然,如果用户认为他已经有了明确的需求,不需要需求分析聊天机器人的帮助,他可以直接在任务需求框中输入需求。
AI 链框架生成
当用户认为任务需求已经清晰明确时,可以点击任务需求框下方的 “Generate AI Chain Skeleton” 按钮,请求 AI 链框架生成副驾驶生成完成任务所需的主要步骤以及每个步骤的三个候选提示。“Generate AI Chain Skeleton” 工作方式如下:
1) 将任务总体描述转换为主要步骤,并为每个步骤提供名称和描述。
2) 为每个步骤推荐三个候选提示,用户可以在此基础上自行修改。
3) 用户可以手动添加控制流、删除或重新排序步骤等操作。
4) 用户可以使用结构化表单编辑生成的提示,设置步骤的输入和执行引擎。
通过这个流程,用户可以方便地生成 AI 链的框架,以及对生成的框架进行进一步的修改和完善。最后点击设计视图右下角的 “Generate AI Chain” 按钮,SapperIDE 将根据 AI 链框架自动为每个步骤创建工作者并把他们组装一个基于积木块的 AI 链,可以在编程视图中查看、编辑和执行。
编程视图(Block View)
我们使用基于积木块的可视化编程来支持 AI 链的实现、执行和调试。当前的实现是基于开源的 Blockly 项目。在左侧面板中,用户可以访问 Units、Code、Prompts、Variables 和 Engines 工具箱中的积木块用以构建 AI 链。相关积木块介绍请访问我们的文档
(https://www.aichain.online/public/content%20pages/sapperide/blockview.html)。
为了使用户建立和修改工作者更加直观,所有可视化编程操作都可以直接在工作者 / 容器块上触发。单击插槽右侧的 \"+\" 图标可以直接添加或编辑插槽对应的积木块。用户可以从工具箱中拖放块模板将块添加到 AI 链编辑器中,通过在编辑器中拖放块来组装块。用户可以通过单击编辑器右侧的 “+”、“-” 和 “aim” 按钮来缩放编辑器或将所选块放置在编辑器中心。
用户可以通过 “AI Chain Execution” 菜单运行或调试 AI 链。当工作者正在运行时,工作者块左上角的 “bug” 信号灯将亮起。工作者执行期间使用的实际提示和引擎输出将输出到块控制台(Block Console)。执行所需的用户输入将在块控制台中输入。
在调试模式下,工作者将一个接一个地执行。当前工作者完成运行时,执行将被暂停,用户可以检查块控制台中的输出是否符合预期。如果结果符合预期,则可以继续执行下一个工作者。或者,用户可以在提示控制台(Prompt Console)中修改当前工作者的提示,然后重新运行当前工作者。
如果将工作者块放置在输出块中,则其输出将显示在右下角的输出窗口中。此窗口不会显示未放置在输出块中的工作者的输出,也不会显示提示。
块控制台用于帮助 AI 链工程师调试 AI 链,因此包含提示信息和中间执行结果。右下角的输出窗口允许工程师检查最终用户将看到的 AI 链输出。
提示中心(Prompt Hub)
Sapper IDE 的 Prompt Hub(提示中心)提供了一个集中式的提示管理系统,让用户在 AI 链项目之间轻松共享和重用提示。通过 Prompt Builder(提示生成器)和 Prompt Base(提示库)工具箱,用户能创建、编辑、导入和导出提示,使 AI 链项目开发更高效、便捷。
用户可以通过四个方面:上下文、指令、示例和输出格式,以结构化方式创建或编辑提示。这有助于实现更准确的 AI 链项目功能。未来的设计视图将允许用户搜索提示库或获得自动提示推荐,进一步提高开发效率。
Prompt Hub 还支持将提示下载到本地文件或从本地文件上传到 IDE,方便在不同设备间同步提示信息。
引擎管理(Engine Management)
引擎管理功能让用户在 AI 链项目之间轻松共享和重用各类引擎,如基础模型、传统机器学习模型(目前在开发中,敬请期待)和外部 API。IDE 内置了三个基础模型:gpt-3.5-turbo、text-davinci-003、DALL-E,以及 Python 标准 REPL shell。
在 FM Engines(基础模型引擎)工具箱中,用户可灵活创建和配置基础模型引擎,调整参数如 Temperature、Maximum length、Top P、Frequency penalty 和 Presence penalty。点击 “Save Engine to FM Engine”,将引擎保存以供后续编辑或导出到项目。
最后,用户还可将引擎信息下载至本地文件,或从本地文件上传至 IDE。
AI 链项目管理(Project Management)
通过 “Project Management” 菜单,用户可创建新的 AI 链项目,将当前项目下载到本地磁盘,或在 IDE 中打开本地磁盘上的项目。点击 “Download Code” 按钮,用户可将实现 AI 链的后台代码下载至本地磁盘,用于其他软件项目。注意,执行下载的 AI 链代码需要 sapperchain Python 库(目前未开源)。
在“Recent Project”菜单,我们预装了一个演示项目“Hui Xiao Shi”以便于大家上手学习。
用户若想开源他的 AI 链项目,可将项目分享至 AI 链市场(正在开发)。IDE 提供了一个创意副驾驶员,根据任务需求和工作者提示为项目生成简短描述和图片。
现在,IDE 支持将 AI 链作为本地 Web 服务部署,便于手动部署到外部云服务器。后续我们将推出自动云服务部署功能。
Prompt Sapper 的与众不同之处
Prompt Sapper 受很多优秀项目和工具的启发,比如 ChatGPT, AutoGPT, LangChain, no-code AI,以及大量 prompt engineering 文献和工具。但我们与众不同之处在于以下三点:
人与 AI 交互光谱
1. 强调人工智能和人类用户之间的协作智能。如上图所示,它通过 AI 链无缝地将人类智能与人工智能融合,有效地解决复杂问题并实现共同目标。这种协作智能促进了整体效率的提高,降低了错误率,并赋予了人类用户充分利用人工智能潜力的能力。这种独特的方法使 Prompt Sapper 区别于现有的人类驱动的对话机器人(例如 ChatGPT)和以人工智能为主导的代理框架(例如 AutoGPT),凸显了它的创新和独特的价值主张。
2. 对计算和编程技能的更低要求。Prompt Sapper 显著降低了创建符合用户需求的复杂人工智能服务的门槛。它引入了一套基于 LLM 的虚拟产品经理、架构师和提示工程师,以帮助用户获取领域知识、分析任务要求并构建 AI 链。此外,Prompt Sapper 提供直观且用户友好的界面,使用户可以轻松地与人工智能进行交互,并在不需要高级计算或编程技能的情况下原型化 AI 功能。这种方法扩大了从人工智能进步中受益的人群,突显了 Prompt Sapper 在人工智能领域中的独特地位。
3. 系统的 AI4SE4AI 框架。Prompt Sapper 高度重视软件工程和人工智能的紧密集成,致力于创建一个系统化的 AI4SE4AI 框架。在这个框架内,Prompt Sapper 利用人工智能技术,显著提高软件工程过程的效率,例如需求分析、AI 链设计、构建和测试。同时,Prompt Sapper 遵循和扩展了软件工程的最佳实践,以适应由 AI 2.0 和软件 3.0 推动的新软件环境。这个 AI4SE4AI 框架不仅大大提高了人工智能服务的开发效率和项目质量,还支持灵活的服务重用和组装,以及持续改进和优化人工智能服务,以满足不断变化的需求。
下面表格总结了 Prompt Sapper 与重要相关技术的对比,详情请参阅我们的文档(https://www.aichain.online/public/content%20pages/sappervsothers.html)
AutoGPT vs. Prompt Sapper
LangChain vs. Prompt Sapper
No-code AI vs. Prompt Sapper
Prompt Engineering vs. Prompt Sapper
展望未来
我们处于一个令人激动的 AI 和软件工程信息时代,我们共同见证着科技进步如何改变世界。Prompt Sapper 携手基础模型和软件工程,将不断探索 AI 链工程的最佳实践和方法学,推动着 AI 链工程的发展和普及。我们计划采用 “走出去” 和 “引进来” 的方式来打通 AI 链开发和终端用户之间的最后一公里,将 AI 链工程方法学、工具和实践带给更多的开发者和用户,并推动 AI 服务市场和生态系统的发展。我们相信,AI 链工程将会成为未来的核心技术之一,广泛应用于各个领域和行业,为人类创造更多的价值和福利。我们可以想象到,AI 链将能够帮助我们更快速地解决问题,提高工作效率,提供更加个性化的服务,同时推动社会经济迈向更加智能化的未来。