一、LLM-based Agent 整体架构
大语言模型 Agent 的构成,主要分为以下 4 个模块:
1. 画像模块:主要描述 Agent 的背景信息
下面介绍画像模块的主要内容和生成策略。
画像内容,主要基于 3 种信息:人口统计信息、个性信息和社交信息。
生成策略:主要采用 3 种策略来生成画像内容:
- 手工设计方法:自行通过指定的方式,将用户画像的内容写入大模型的 prompt 中;适用于 Agent 数量比较少的情况;
- 大模型生成方法:首先指定少量画像,并将其作为示例,进而使用大语言模型生成更多的画像;适用于大量 Agent 的情况;
- 数据对齐方法:需要根据事先指定的数据集中人物的背景信息作为大语言模型的 prompt,进而做相应的预测。
2. 记忆模块:主要目的是记录 Agent 行为,并为未来 Agent 决策提供支撑
记忆结构:
- 统一记忆:仅考虑短期记忆,不考虑长期记忆。
- 混合记忆:长期记忆和短期记忆相结合。
记忆形式:主要基于以下 4 种形式。
- 语言
- 数据库
- 向量表示
- 列表
记忆内容:常见以下 3 种操作:
- 记忆读取
- 记忆写入
- 记忆反思
3. 规划模块
- 无需反馈的规划:大语言模型在做推理的过程中无需外界环境的反馈。这类规划进一步细分为三种类型:基于单路的推理,仅使用一次大语言模型就可以完整输出推理的步骤;基于多路的推理,借鉴众包的思想,让大语言模型生成多个推理路径,进而确定最佳路径;借用外部的规划器。
- 带有反馈的规划:这种规划方式需要外界环境提供反馈,而大语言模型需要基于环境的反馈进行下一步以及后续的规划。这类规划反馈的提供者来自三个方面:环境反馈、人类反馈和模型反馈。
4. 动作模块
- 动作目标:有些 Agent 的目标是完成某个任务,有些是交流,有些是探索。
- 动作生成:有些 Agent 是依靠记忆回想生成动作,有些是按照原有计划执行特定的动作。
- 动作空间:有些动作空间是工具的集合,有些是基于大语言模型自身知识,从自我认知的角度考虑整个动作空间。
- 动作影响:包括对环境的影响、对内在状态的影响,以及对未来新动作的影响。
以上是 Agent 的整体框架,更多内容可参考下述论文:
Lei Wang, Chen Ma, Xueyang Feng, Zeyu Zhang, Hao Yang, Jingsen Zhang, Zhiyuan Chen, Jiakai Tang, Xu Chen, Yankai Lin, Wayne Xin Zhao, Zhewei Wei, Ji-Rong Wen:A Survey on Large Language Model based Autonomous Agents. CoRR abs/2308.11432 (2023)
二、LLM-based Agent 重点&难点问题
当前大语言模型 Agent 的重点和难点问题主要包括:
1. 如何提升 Agent 的角色扮演能力
Agent 最重要的功能是通过扮演某种角色,来完成特定的任务,或者完成各种各样的模拟,因此 Agent 的角色扮演能力至关重要。
(1)Agent 角色扮演能力定义
Agent 角色扮演能力分为两个维度:
- 角色和 Agent 行为关系
- 角色在环境中演化机制
(2)Agent 角色扮演能力评估
定义了角色扮演能力之后,接下来要对 Agent 角色扮演能力,从以下两个方面进行评估:
- 角色扮演评估指标
- 角色扮演评估场景
(3)Agent 角色扮演能力提升
在评估的基础上,需要进一步对 Agent 的角色扮演能力进行提升,有如下两种方法:
- 通过 Prompt 提升角色扮演能力:该方法本质是通过设计 prompt 来激发原有大语言模型的能力;
- 通过微调提升角色扮演能力:该方法通常是基于外部的数据,重新对大语言模型进行 finetune,来提升角色扮演能力。
2. 如何设计 Agent 记忆机制
Agent 和大语言模型最大的不同在于,Agent 能够在环境中不断进行自我演化和自我学习;而这其中,记忆机制扮演了非常重要的角色。从 3 个维度来分析 Agent 的记忆机制:
(1)Agent 记忆机制设计
常见有以下两种记忆机制:
- 基于向量检索的记忆机制
- 基于 LLM 总结的记忆机制
(2)Agent 记忆能力评估
对 Agent 记忆能力的评估,主要需要确定以下两点:
- 评估指标
- 评估场景
(3)Agent 记忆机制演化
最后需要对 Agent 记忆机制演化进行分析,包括:
- 记忆机制的演化
- 记忆机制的自主更新
3. 如何提升 Agent 推理/规划能力
(1)Agent 任务分解能力
- 子任务定义和拆解
- 任务执行最优顺序
(2)Agent 推理和外界反馈融合
- 设计推理过程中外界反馈的融入机制:让 Agent 和环境形成互相交互的整体;
- 提升 Agent 对外界反馈的响应能力:一方面需要 Agent 真实应对外界环境,另一方面需要 Agent 能够对外界环境提出问题并寻求解答方案。
4. 如何设计多 Agent 高效协同机制
(1)多 Agents 合作机制
- Agents 不同角色定义
- Agents 合作机制设计
(2)多 Agents 辩论机制
- Agents 辩论机制设计
- Agents 辩论收敛条件确定
三、基于大语言模型的用户行为模拟智能体
下面会举几个 Agent 的实际案例。首先是基于大语言模型的用户行为模拟智能体。该智能体也是大语言模型智能体与用户行为分析相结合的早期工作。该工作中,每个 Agent 分为三个模块:
1. 画像模块
对不同的 Agent 指定不同的属性,比如 ID、姓名、职业、年龄、兴趣以及特征等。
2. 记忆模块
记忆模块包括三个子模块
(1)感受记忆
(2)短期记忆
- 将客观观测到的 raw observation 进行处理后,生成信息量更高的观测,将其存放到短期记忆中;
- 短期记忆内容的存储时间比较短
(3)长期记忆
- 短期记忆的内容经过反复的触发和激活后,会自动传入到长期记忆中
- 长期记忆内容的存储时间比较长
- 长期记忆的内容会根据现有的记忆进行自主的反思以及升华提炼。
3. 动作模块
每个 Agent 可以执行三种动作:
- Agent 在推荐系统中的行为,包括看电影、查找下一页以及离开推荐系统等;
- Agent 之间的对话行为;
- Agent 在社交媒体发帖的行为。
在整个模拟过程中,一个 Agent 在每一轮动作中均可自由地、不受外界干预地选择三种动作;我们可以看到不同 Agent 之间会相互对话,也会在社交媒体或者推荐系统中自主地产生各种各样的行为;通过多轮模拟之后,可以观察到一些有趣的社会现象,以及用户在网络上行为的规律。
更多内容可参考下述论文:
Lei Wang, Jingsen Zhang, Hao Yang, Zhiyuan Chen, Jiakai Tang, Zeyu Zhang, Xu Chen, Yankai Lin, Ruihua Song, Wayne Xin Zhao, Jun Xu, Zhicheng Dou, Jun Wang, Ji-Rong Wen:When Large Language Model based Agent Meets User Behavior Analysis: A Novel User Simulation Paradigm
四、基于大语言模型的多智能体软件开发
下一个 Agent 的例子是使用多 Agent 进行软件开发。这篇工作也是早期多Agent 合作的工作,其最主要的目的是利用不同 Agent 开发一款完整的软件。因此可将其看作一个软件公司,不同的 Agent 会扮演不同的角色:一部分 Agent 负责设计,包括 CEO、CTO、CPO 等角色;一部分Agent 负责编码,还有一部分 Agent 主要负责测试;此外,还会有一部分 Agent 负责撰写文档。这样,不同 Agent 负责不同的工作;最后再将 Agent 之间的合作机制,通过交流的方式进行协同和更新,最终完成一个软件完整的开发过程。
五、LLM-based Agent 未来方向
大语言模型的 Agent 目前可以分为两大方向:
- 解决特定任务,如 MetaGPT、ChatDev、Ghost、DESP 等
这类 Agent 最终应是一个和人类正确价值观对齐的“超人”,其中有两个“限定词”:
对齐正确的人类价值观;
超越常人能力。 - 模拟现实世界,如 Generative Agent、Social Simulation、RecAgent等
这类 Agent 所需要的能力,和第一类是截然相反的。
允许 Agent 呈现多样的价值观;
希望 Agent 尽量符合普通人,而不是超越常人。
此外,目前大语言模型 Agent 存在以下两个痛点:
- 幻觉问题
由于 Agent 需要跟环境进行不断交互,因此每个步骤的幻觉都会被累加,即会产生累积效应,让问题变得更加严重;因此大模型的幻觉问题在这里需要得到进一步的重视。其解决办法包括:
设计高效的人机协作框架;
设计高效的人类干预机制。 - 效率问题
在模拟过程中,效率是个非常重要的问题;下表总结了不同 Agent 在不同API 数量下的耗时。
以上就是本次分享的内容,谢谢大家。