基于大模型的 Agent 任务规划:10 种主流策略解析
引言
基于大模型的 Agent 基本组成通常包含规划(Planning)、工具(Tools)、执行(Action)和记忆(Memory)四个方面。本节将从 Agent 的概念、ReAct 框架、示例以及一些论文思路来具体聊下任务规划的话题,同时会辅以代码帮助理解。
人是如何做事的?
在日常工作中,我们通常将一项任务拆解成几个步骤:制定计划、执行计划、检查结果,然后将成功的作为标准,未成功的则留待下一次循环解决。这种方法已经被证明是高效完成任务的经验总结,即 PDCA 模型。
PDCA 由美国质量管理专家休哈特博士提出,由戴明采纳宣传,又称戴明环。基于 PDCA 模型可以将一般项目分为四个阶段:Plan(计划)、Do(执行)、Check(检查)、Act(处理)。把一件事情做出计划、然后实施计划、检查计划分析哪些出现了问题并提出解决方案、然后成功的纳入标准,不成功的进入下一个循环去解决,循环往复,从而形成一套标准化的流程。
Agent 是怎样工作的
Agent 的执行过程与人做事的方式类似,其中最有名的就是 ReAct 框架的思路。它来自论文《ReAct:在语言模型中协同推理与行动》。作者发现让 Agent 执行下一步行动的时候,加上大模型自己的思考过程,并将思考过程、执行的工具及参数、执行的结果放到提示词中,就能使得模型对当前和先前的任务完成度有更好的反思能力,从而提升模型的问题解决能力。
Thought: … Action: … Observation: … …(重复以上过程,即表示 ReAct 的工作过程)
构建 Agent 基础
下面通过代码构建一个最基本的 Agent。这里有必要提前了解几个关键概念,有助于更好地理解 Agent 的工作过程。
定义工具
定义 Agent 要调用的工具,例如计算句子中不同汉字的数量。
def count_unique_chinese_characters(sentence):
"""用于计算句子中不同汉字的数量"""
unique_characters = set()
for char in sentence:
if '\u4e00' <= char <= '\u9fff':
unique_characters.add(char)
return len(unique_characters)
定义 Agent
使用 LangChain 框架构建 Agent,处理用户输入、大模型输出及对输出内容解析。
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003", temperature=0)
tools = [
Tool(
name="Count Unique Characters",
func=count_unique_chinese_characters,
description=
)
]
agent = initialize_agent(tools, llm, agent=, verbose=)


