MarsDawn 已在 Mac App Store 上架

四种 agent 设计模式,各自会交给你什么文件

2024 年 3 月,Andrew Ng 在他的电子报 The Batch 介绍了四种 AI agent 的设计模式:reflection(反思)、tool use(使用工具)、planning(规划)和 multi-agent collaboration(多 agent 协作)。大家通常从开发者的角度谈它们,当成让模型表现更好的方法。这篇换个方向看:如果你用的 agent 是照这些模式做的,最后会有什么东西落进你的文件夹?你该先读哪里?

四种模式是 Andrew Ng 提出的。每种模式通常会交给你什么文件、该检查什么,是我们自己的推论。这两件事他都没有写,他在这个系列里也没有主张要人工审阅。

四种模式,简单说

Ng 在〈Agentic Design Patterns Part 1〉里介绍了这四种模式。简单说:reflection 是模型回头检查自己的成果,再加以改进;tool use 是让模型能呼叫网络搜寻、执行代码之类的工具;planning 是模型自己拟出多步骤的计划再执行;multi-agent collaboration 是好几个 agent 分工、互相讨论。

他在 Part 1 用一个代码基准测试 HumanEval 说明这些模式的效果,数据是他的团队整理多个研究团队的结果:“GPT-3.5 (zero shot) was 48.1% correct. GPT-4 (zero shot) does better at 67.0%. However, the improvement from GPT-3.5 to GPT-4 is dwarfed by incorporating an iterative agent workflow. Indeed, wrapped in an agent loop, GPT-3.5 achieves up to 95.1%.”(GPT-3.5 在 zero-shot 下的正确率是 48.1%,GPT-4 在 zero-shot 下好一些,是 67.0%。但和加入迭代式 agent 工作流程相比,从 GPT-3.5 换到 GPT-4 的进步就显得微不足道:放进 agent 循环后,GPT-3.5 最高可达 95.1%。)这些数字只针对一个代码基准测试,95.1% 是最好的情况("up to",最高可达)。它们说明 agent 工作流程能提升产出质量,但完全没有谈到谁来检查。

以下“交给你什么文件”和“该检查什么”,都是我们的解读,不是 Ng 的。实际的 agent 通常会混用好几种模式。一个 coding agent 可能在同一次工作里规划、跑工具、再检查自己的成果,所以四种文件你常常会一次全收到。

1. Reflection:一份已经自己审过的草稿

Ng 谈 reflection 的那篇,把它说成是把原本由人给的反馈自动化:“What if you automate the step of delivering critical feedback, so the model automatically criticizes its own output and improves its response?”(如果把提出批评性反馈这一步自动化,让模型自动批评自己的产出、改进它的回答呢?)

通常会交给你:一份改过的文件,有时附上一段自我检查,或是“边界情况都再确认过了”之类的句子。

该检查什么:拿结果对照“你”的要求,不是对照 agent 自己的批评。自我检查也会出错。Chip Huyen 写道:“An interesting mode of planning failure is caused by errors in reflection. The agent is convinced that it’s accomplished a task when it hasn’t.”(有一种有趣的规划失败,是反思出错造成的:agent 深信自己已完成任务,但其实并没有。)Lilian Weng 在 2023 年 6 月(当时任职 OpenAI)于她的博客 Lil’Log 谈到当时的模型:“The lack of expertise may cause LLMs not knowing its flaws and thus cannot well judge the correctness of task results.”(缺乏专业知识可能使 LLM 不知道自己的缺陷,因而无法妥善判断任务结果的正确性。)她描述的那项研究里,LLM 对结果的评估和人类专家的评估并不一致。文件里写“已验证”的话,自己挑一项查。

2. Tool use:一份“跑了什么”的报告

通常会交给你:一份总结,说 agent 跑了什么、搜了什么、得到什么结果。“跑完测试:全部通过。”一张结果表格。它找到的一串链接。

Anthropic 的指南把工具结果说成 agent 自我检查的依据:“During execution, it's crucial for the agents to gain “ground truth” from the environment at each step (such as tool call results or code execution) to assess its progress.”(执行过程中,agent 必须在每一步从环境取得“ground truth”,例如工具呼叫的结果或程序执行的结果,用来评估自己的进度。)这个检查发生在 agent 内部。到你手上的,是 agent 对这些结果的转述。

该检查什么:每个宣称都要追得回你看得到的输出。挑总结里的一个数字,对照真正的输出;点开其中一个链接看看。

3. Planning:plan.md

通常会交给你:一份计划、一份规格,或一份 agent 做完一项就勾一项的待办清单。

Ng 在 Part 4 对这个模式讲得很坦白:

“On one hand, Planning is a very powerful capability; on the other, it leads to less predictable results. In my experience, while I can get the agentic design patterns of Reflection and Tool Use to work reliably and improve my applications’ performance, Planning is a less mature technology, and I find it hard to predict in advance what it will do.”

(一方面,规划是非常强大的能力;另一方面,它会导致较难预测的结果。就我的经验,Reflection 和 Tool Use 这两种模式我都能让它们稳定运作、提升应用程序的表现,但 Planning 还是比较不成熟的技术,我很难事先预测它会怎么做。)

他也很乐观:“But the field continues to evolve rapidly, and I'm confident that Planning abilities will improve quickly.”(不过这个领域持续快速发展,我相信规划能力很快就会进步。)

该检查什么:在执行前审计划,用〈五分钟审完一份 agent 计划〉的方法:看架构、查一个宣称、找出回不去的步骤、看图表、看影响范围。agent 中途改写计划的话,拿它和你核准的版本比对;如果有用 git,git diff plan.md 就看得到改了什么。在 MarsDawn 里,“大纲”标签页让你一眼看出长计划的架构;计划被改写时会重新加载,停在你原本读到的位置,前提是你自己没有未储存的修改。

4. Multi-agent collaboration:好几份文件,好几个作者

通常会交给你:一个 agent 写的规格、另一个写的实作笔记、第三个写的审查意见,还有它们之间互相交接的摘要。有时每个 agent 各自在自己的分支或 worktree 里工作。

该检查什么:交接的地方。一个 agent 在总结另一个的成果时,看有没有哪条需求没被带过去。找出彼此矛盾的两份文件,在任何人接着往下做之前,先决定哪一份才算数。在 MarsDawn 里,用“文件 ▸ 打开文件夹⋯”(⇧⌘O)打开它们共用的文件夹:agent 写出新文件,大约一秒内就会出现在“文件”标签页;如果是 git 检出,清单上方会标出分支或工作树,两个窗口就算开着不同分支上同名的文件,也不会搞混。成果要交给不读 Markdown 的人时,可以看〈把 agent 写的东西交出去,不用教对方 Markdown〉。

一览表

模式(Ng 提出)通常会交给你(我们的推论)先读哪里(我们的建议)
Reflection 反思一份改过的草稿,可能附自我检查对照你自己的要求;挑一个“已验证”自己查
Tool use 使用工具一份“跑了什么、得到什么”的报告挑一个宣称,追回真正的输出
Planning 规划plan.md、规格、待办清单执行前的五分钟审阅
Multi-agent collaboration 多 agent 协作好几个 agent 写的好几份文件,可能分散在不同分支交接的地方,以及哪一份才算数

上面引用的作者都没有提到 MarsDawn,也没有推荐 MarsDawn 或任何 Markdown 工具。MarsDawn 里没有 AI 模型:它不知道一份文件是哪种模式产生的,也不会替你做这些检查。它负责让这些文件在你检查的时候保持好读。

试试看

MarsDawn 已在 Mac App Store 上架。另外还有免费的 marsdawn 命令行工具:

brew install redtear1115/tap/marsdawn

它不需要 app 就能把 Markdown 导出成 PDF,详见〈Markdown 转 PDF 工具〉。

命令行工具 · 买之前先看:MarsDawn 做不到的事

接下来

资料来源