LOADING

加载过慢请开启缓存 浏览器默认开启

Agentic Design Pattern AI代理设计模式学习

零、概述 Overview

我们要让 LLM 一次性根据我们的提示生成一个应用的所有前端代码或一整篇论文,LLM 一次性输出最终 Token,不修改,显然是较为困难并且效果不佳的。但是,如果使用代理设计流(Agent Workflow),让 LLM 按照编排的工作流,多次提示,每个步骤都有优化任务,不断迭代改进输出,类似人拆解复杂任务、收集信息、改进迭代并最终达到满意结果的过程。

以编写文档为例,工作流大致涉及以下步骤:

  1. 撰写文档大纲;
  2. 查询本地知识库或网络收集资料;
  3. 撰写初稿;
  4. 检查初稿并修正不合理之处;
  5. 如此迭代到文档符合要求;

代理设计模式主要包括:

  1. Reflection Pattern:反思模式,LLM 可以通过反思自己的行为成为更有效的代理;
  2. Tool Use Pattern:工具使用模式;
  3. Planning Pattern:规划模式;
  4. Multi-Agent Pattern:多代理模式;

壹、Reflection Pattern

反思模式类似于我们直接与大模型对话,通过不断提示大模型达到我们想要的输出。代理设计模式中,需要将提供反馈的步骤自动化。

比如可以设计 Prompt 如下:

现有以下任务X:略;以下是用于任务X的代码:略;请你仔细检查代码的正确性、风格和效率,并就如何改进它给出建设性的批评和建议;

然后,将之前生成的代码和检查后的反馈一起作为 Context 输入给 LLM,让 LLM 根据反馈建议修改代码;

一个简单的示意图如下:

当然,实际应用中会涉及多次迭代,以获得更高的精度;

应用:SELF-RAG

SELF-RAG 在检索以及生成的过程中引入了自我反思机制,下图直观呈现了它和传统 RAG 的区别:

贰、Tool Use Pattern

代理通过调用 API 来获取预训练模型权重中缺少的额外信息,比如调用 Web 搜索、访问本地知识库、执行代码等等;

叁、Planning Pattern

前面已经提到,复杂的问题往往需要拆解为多个步骤。我们可以事先就搭建好代理工作流,但是在代理规划模式下,Agent 能动态决定需要采取的步骤。

关于任务的分解,主要有以下几种方式:

Chain of Thought(思维链CoT)

通过“逐步思考”实现复杂推理,

可参考内容

[1] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, Wei et al. (2022);

Tree of Thought

在前者的基础上进行了扩展,对于每个步骤生成了多个思考,建立树状结构,然后执行 BFS 或 DFS,通过分类器或多数投票进行评估;

肆、Multi-Agent Collaboration

Multi-Agent Collaboration,即多代理协作,顾名思义,对于一个复杂的任务,拆分成不同的任务,并交给不同代理去做。虽然现在 LLM 的上下文限制不断提升,但对于一个复杂的任务,比如开发一个较为复杂的软件系统,单个 LLM 并不一定能达到较好的效果。而如果像游戏公司一样,将不同部分交给专业的人去做,比如策划、客户端开发、服务端开发、TA、QA、美术等等,让不同的 Agent 完成不同的子任务,可能能达到更好的效果。

可参考内容

[1] Communicative Agents for Software Development, Qian et al. (2023);