- Transformer基础
- 常用的大语言模型
- 行业大语言模型
- 大语言模型评估
- 数据构造与清洗
- 分词器构造
- 大语言模型的微调
- 基于PEFT的LLaMA模型微调
- 基于人类反馈的强化学习框架
- 前沿偏好对齐方法
- 基于DPO的偏好对齐实战
- GPTs初体验
- GPTs的初阶使用
- GPTs的高阶使用
- 公开数据集
- 主流方法
- Text2SQL任务实战
- 角色扮演
- 角色扮演实战测试
- 基于Baichuan的角色扮演模型微调
- 对话要素抽取
- 对话要素抽取实战测试
- 基于Qwen的对话要素抽取模型微调
- Agent概述
- Agent的主要模块
- Agent的行为决策机制
- 主流Agent框架
- 基于知识库问答
- 向量数据库
- 基于知识库的大型语言模型问答实战
- AutoGPT概述
- LangChain概述
- 使用LangChain构建AutoGPT
- 运行AutoGPT
Agent包含什么?如何定义一个Agent?Lilian Weng的博客“LLM Powered Autonomous Agents”清晰地定义了LLM驱动的Agent系统的核心模块。
(1)LLM模块
LLM模块是Agent的核心,负责处理用户输入、生成响应、执行操作等,相当于Agent的“大脑”。因为Agent不是按预设路径行动的,而是根据实时情况来动态调整其行为策略,所以LLM模块不仅是处理和生成响应的工具,而是作为一个动态的推理引擎,关键在于决定如何与外部世界互动。LLM模块在处理复杂交互和决策中处于核心地位。
(2)Planning模块
Planning模块负责制订Agent的行动计划,包括将大型任务分解为多个子目标,以及对过去的行动进行反思和改进。Agent在处理多跳任务时,其灵活性和能力需要强大的Planning模块的支持。这意味着Planning模块不仅制订行动计划,还需要能够根据代理的经验和环境变化进行适应和调整。
(3)Memory模块
Memory模块用于存储Agent的记忆,包括短期记忆(用于存储当前会话中的数据)和长期记忆(用于存储长期的数据)。记忆不仅仅是被动的信息存储,而是一个动态、可访问且可更新的系统,Memory模块被视为一种高度动态的系统。这个系统的3个特征是:动态性、可访问、可更新。动态性意味着记忆不是静止不变的,而是随着时间和环境的变化而持续演变。在Agent的上下文中,这种动态性使得记忆能够适应新的情况和需求,从而更好地支持Agent的任务执行和决策过程。可访问表示代理能够根据需要检索和使用存储在记忆中的信息。可更新指的是记忆系统不仅能存储过去的信息,还能根据新的经验和数据进行更新。这种特性允许智能代理从其交互和经验中学习,不断调整其知识库和行为模式。代理能够根据新的观察或反馈更新其记忆,从而提高对未来情况的适应能力和决策质量。
(4)Tools模块
Tools模块是Agent可以使用的工具。这个模块不仅包括LLM本身的语言功能,还包括各种外部工具,如通过API调用的数据源、计算资源和其他服务。Tools模块的核心在于为Agent提供必要的资源和能力,使其能够执行更加复杂和多样化的任务。在使用Tools模块时,Agent代理需要展现出高度的上下文意识和决策能力。这意味着Agent不仅要能够识别何时使用哪个工具,还要能够根据特定任务或情境选择最合适的工具。例如,Agent可能会根据任务的复杂性或所需的特定信息类型,决定是使用内部的LLM功能还是调用外部API。有效地使用工具不仅包括选择正确的工具,还包括如何高效地利用这些工具。这可能涉及优化工具调用的方式、减少不必要的工具使用,以及如何整合多个工具的输出以得到最佳结果。Agent在使用Tools模块时,应避免资源浪费并确保任务执行的高效性。
(5)Feedback模块
Feedback模块是Agent从用户处获得的反馈,可以帮助Agent改进性能、提高准确性。准确性是衡量一个Agent优劣的标准之一。特别是如何使代理在不同环境下可靠地运行,是人们日益增长的需求。Feedback模块通过分析用户反馈来识别和修正代理的缺陷或不足之处。例如,如果用户反馈指出代理在某些任务上表现不佳,开发者可以利用这些信息来调整代理的行为或增强其能力。
综合Lilian Weng所做的上述模块定义,一个Agent的定义涉及多个层面,如图8-1所示。它是一个集成了LLM(包含在图8-1的Agent方块内,Agent的语言能力)、Planning、Memory、Tools和Feedback等模块的系统。这些模块共同协作,使Agent 能够自主执行任务、学习并改进其行为。