根据《A survey on large language model based autonomous agents》智能体综述文章,Agent核心是需要具备以下几个核心特性与模块:
- Profile模块: Profile 模块的目的主要是做Agent角色认定,回答的核心问题有: 我是谁?我在哪?我该干什么?无论是在当前的人与人之间的协同,还是人与智能体的协同,亦或是智能体与智能体间的协同。
- Memory模块: Memory即记忆模块,主要用来存储、获取、检索信息。
- Planning模块: 制定计划,可以根据过去的行为与目标动态规划下一步的行动。
- Action模块: 执行模块,执行智能体的具体决策。
Profile 模块
角色模块的目的是识别代理的角色。代理通常通过承担特定角色来执行任务,如程序员、教师和领域专家。角色模块通过将代理的配置文件写入提示中,影响LLM的行为。代理配置文件通常包括基本信息(如年龄、性别和职业)、心理学信息(反映代理的个性)和社交信息(详细说明代理之间的关系)。
角色生成策略:
- 手工方法:代理配置文件由人工指定。例如,Generative Agent通过姓名、目标和与其他代理的关系等信息描述代理。
- LLM生成方法:代理配置文件由LLMs自动生成。例如,RecAgent首先创建几个种子配置文件,然后利用ChatGPT生成更多配置文件。
- 数据集对齐方法:代理配置文件从现实世界数据集中获取。例如,[29]根据美国国家选举研究(ANES)中参与者的背景信息为GPT-3分配角色。
Memory 模块
记忆模块在代理架构设计中起着非常重要的作用。它存储从环境中感知到的信息,并利用记录的记忆来促进未来的行动。记忆模块帮助代理积累经验、自我进化,并以更一致、合理和有效的方式行事。
记忆结构:
- 统一记忆:仅模拟人类的短期记忆,通常通过上下文学习实现。例如,RLP和SayPlan使用上下文信息作为短期记忆。
- 混合记忆:明确模拟人类的短期和长期记忆。例如,Generative Agent和AgentSims使用向量数据库实现长期记忆。
记忆格式:
- 自然语言:记忆信息直接使用自然语言描述。例如,Reflexion和Voyager使用自然语言存储体验反馈。
- 嵌入:记忆信息被编码为嵌入向量。例如,MemoryBank和ChatDev将对话历史编码为向量。
- 数据库:记忆信息存储在数据库中。例如,ChatDB和DB-GPT使用数据库作为记忆模块。
- 结构化列表:记忆信息被组织成列表。例如,GITM使用层次树结构存储子目标的动作列表。
记忆操作:
- 记忆读取:从记忆中提取有意义的信息以增强代理的行动。例如,Generative Agent和GITM使用近期性、相关性和重要性评分函数提取信息。
- 记忆写入:将感知到的环境信息存储在记忆中。例如,ChatDB和RET-LLM使用不同的策略处理记忆重复和溢出问题。
- 记忆反思:模拟人类反思能力,生成更抽象、复杂和高层次的信息。例如,Generative Agent和GITM通过反思生成高层次见解。
Planning 模块
规划模块旨在赋予代理类似人类的能力,即将复杂任务分解为更简单的子任务并分别解决。规划模块根据代理在规划过程中是否可以接收反馈分为两类:无反馈规划和有反馈规划。
无反馈规划:
- 单路径推理:最终任务被分解为几个中间步骤,每个步骤只导致一个后续步骤。例如,Chain of Thought(CoT)和Zero-shot-CoT使用推理步骤作为提示。
- 多路径推理:推理步骤被组织成树状结构,每个中间步骤可能有多个后续步骤。例如,Self-consistent CoT(CoT-SC)和Tree of Thoughts(ToT)使用树状推理结构生成计划。
- 外部规划器:利用外部规划器生成计划。例如,LLM+P和LLM-DP使用外部规划器处理PDDL。
有反馈规划:
- 环境反馈:从环境中获取反馈以影响代理的未来行为。例如,ReAct和Voyager使用环境反馈进行计划。
- 人类反馈:直接与人类互动以获取反馈。例如,Inner Monologue使用人类反馈调整其行动策略。
- 模型反馈:利用预训练模型生成反馈。例如,Reflexion和SelfCheck使用模型反馈改进其推理过程。
Action 模块
行动模块负责将代理的决策转化为具体的结果。该模块位于最下游位置,直接与环境交互。行动模块受到角色、记忆和规划模块的影响。
行动目标:
- 任务完成:代理的行动旨在完成特定任务。例如,Voyager和ChatDev中的代理完成任务。
- 沟通:代理的行动旨在与其他代理或真实人类沟通。例如,ChatDev和Inner Monologue中的代理进行沟通。
- 环境探索:代理的行动旨在探索不熟悉的环境。例如,Voyager中的代理探索未知技能。
行动生成:
- 通过记忆回忆行动:行动是根据当前任务从代理记忆中提取信息生成的。例如,Generative Agent和GITM使用记忆信息指导行动。
- 通过计划跟随行动:代理按照其预先生成的计划采取行动。例如,DEPS和GITM中的代理遵循计划。
行动空间:
- 外部工具:利用外部API、数据库和外部模型扩展行动空间。例如,HuggingGPT、ChatDB和ChemCrow使用外部工具。
- 内部知识:依赖LLMs的内部知识指导行动。例如,DEPS、ChatDev和Generative Agent使用LLMs的规划、对话和常识理解能力。
行动影响:
- 改变环境:代理通过行动直接改变环境状态。例如,GITM和Voyager中的代理改变环境。
- 改变内部状态:代理采取的行动改变代理本身。例如,Generative Agent和SayCan中的代理更新记忆。
- 触发新行动:一个代理行动触发另一个行动。例如,Voyager中的代理在收集到所有必要资源后建造建筑物。
通过上述模块的协同作用,基于LLM的自主代理能够模拟人类行为,有效执行多样化任务。