规划是 AI 智能体的一种核心设计模式[译]

规划是 AI 智能体的一种核心设计模式,其中我们利用大语言模型 (LLM) 自主选择一系列步骤,以完成一个较大的任务。比如,如果我们指派一个智能体去网上研究某个主题,我们可能就会用 LLM 帮助它将这个大任务拆分成若干小任务,例如具体研究几个子主题、整合研究成果、以及撰写报告。

很多人在 ChatGPT 刚发布时就体验到了“ChatGPT 时刻”——他们试用了这个工具,并惊喜地发现它的能力远超过了他们对 AI 的预期。如果你还没有体验过这样的“AI 智能体时刻”,我希望你很快就会。我自己就在几个月前的一个现场演示中有过这样的经历,我展示了一个可以使用多种在线搜索工具的研究智能体。

那时,我已经在私下里多次测试过这个智能体,它总是能够利用网络搜索工具来搜集资料并进行总结。但在那次公开的演示中,网络搜索 API 突然报告了一个频率限制的错误,我本以为这次演示会当众失败,心里非常忐忑。出乎意料的是,这个智能体很机智地切换到了我曾经设定但已经忘记的维基百科搜索工具,并成功使用维基百科完成了任务。

这是一个 AI 智能体给我带来的惊喜时刻。我相信,许多还未体验过这样时刻的人们,在未来几个月里也将有机会体验到。看到一个智能体自己决定用你没有预见的方式去解决问题,并且成功了,这真是太美妙了!

有很多任务无法仅通过一个步骤或一个工具就完成。但是,智能体可以自行决定需要执行哪些步骤。举个例子,根据 HuggingGPT 的论文简化的一个例子,如果你想让一个智能体考虑一张男孩的照片,并绘制一个相同姿势的女孩,这个任务可以分为两步:

  • (一)识别男孩照片中的姿势;
  • (二)根据这个姿势来绘制女孩。

一个 LLM 可以被微调或通过少样本提示来生成一个执行计划,例如输出:

{ "tool": "pose-detection", "input": "image.jpg", "output": "temp1" }
{ "tool": "pose-to-image", "input": "temp1", "output": "final.jpg" }

这样的结构化输出定义了需要执行的两个步骤,随后会触发软件依次调用姿势检测工具和姿势转换图像工具来完成这个任务。(这只是一个示例,实际上 HuggingGPT 使用的是另一种格式。)

可以说,很多 AI 智能体的操作不必依赖于复杂的规划。例如,你可能设置一个智能体来多次反思并优化它的输出,这种情况下它的操作步骤是预定好的、一成不变的。但对于那些你不能提前定义清楚步骤的复杂任务,规划功能就显得尤为重要,它允许智能体灵活地确定接下来的行动方案。

规划功能虽然强大,却也使得结果变得不那么可预测。在我的经验中,虽然我能够通过反思和使用工具等设计模式稳定地提升应用性能,规划却还不够成熟,很难预测它的行为。不过,这个领域正在迅速进步,我相信规划的能力不久将得到大幅提升。

如果你想更深入了解如何使用大语言模型来进行规划,我推荐以下读物:

*《思维链提示促使大语言模型进行推理》(Chain-of-Thought Prompting Elicits Reasoning in Large Language Models),Wei 等(2022 年) *《HuggingGPT:用 ChatGPT 及其在 Hugging Face 中的伙伴解决 AI 任务》(HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face),Shen 等(2023 年) *《理解大语言模型智能体的规划:一项调查》(Understanding the planning of LLM agents: A survey),Huang 等(2024 年)