- Transformer基础
- 常用的大语言模型
- 行业大语言模型
- 大语言模型评估
- 数据构造与清洗
- 分词器构造
- 大语言模型的微调
- 基于PEFT的LLaMA模型微调
- 基于人类反馈的强化学习框架
- 前沿偏好对齐方法
- 基于DPO的偏好对齐实战
- GPTs初体验
- GPTs的初阶使用
- GPTs的高阶使用
- 公开数据集
- 主流方法
- Text2SQL任务实战
- 角色扮演
- 角色扮演实战测试
- 基于Baichuan的角色扮演模型微调
- 对话要素抽取
- 对话要素抽取实战测试
- 基于Qwen的对话要素抽取模型微调
- Agent概述
- Agent的主要模块
- Agent的行为决策机制
- 主流Agent框架
- 基于知识库问答
- 向量数据库
- 基于知识库的大型语言模型问答实战
- AutoGPT概述
- LangChain概述
- 使用LangChain构建AutoGPT
- 运行AutoGPT
使用LangChain构建一个AutoGPT
本章将深入探讨如何使用LangChain框架来构建AutoGPT,这是一种新型的自主Agent。第8章已经简单介绍了LangChain和AutoGPT两个框架的基础知识,它们都可以用于构建Agent。本章选择使用LangChain构建一个简单原始的AutoGPT,以便更深入地理解Agent的各大模块以及决策和行动机制。本章不仅涵盖了AutoGPT的概念和功能,还深入探讨了如何通过代码实践将这一理念转化为现实。
10.1 AutoGPT概述
AutoGPT是一个基于LLM的实验性地创建自主代理逻辑的开源框架,它允许用户利用LLM作为代理的“智能大脑”,对目标进行规划和任务分解,并且使用工具与外部数据进行互动,存储记忆并循环执行任务直至完成目标。其核心任务是自动执行目标任务,例如,把目标设置为“写一份今天北京的天气报告”,在这个代理执行任务的过程中,不需要向代理提供详细的步骤说明;相反,只需给出一句话的目标任务描述,代理就会自己弄清楚如何完成,并迅速执行必要的命令。它自主地将任务串联起来,以实现用户设定的目标任务。它旨在提供一种更智能、更自动化的方式来处理和执行任务。
1. AutoGPT的特点
AutoGPT具有以下5个特点:
1)自主执行任务。AutoGPT设计用来自主地执行复杂的任务。这意味着它能够在最少的人类干预下工作。对于ChatGPT产品,用户需要为每个想要完成的任务提供具体的提示。相比之下,AutoGPT能够自我生成所需的提示(提示引擎),自主地执行一系列相关的任务。自主执行任务对应的是Agent系统的核心模块之LLM模块,自主代理是由LLM驱动的一个系统。
2)规划和任务分解。AutoGPT的关键功能之一是能够将一个大型、复杂的目标任务分解成更小、更可管理的子任务。这一过程类似于人类解决问题时的步骤,其中一个大目标会被分解成更小的、更具体的步骤。AutoGPT利用这种方法自动执行这些子任务,从而实现最终目标。规划和任务分解对应的是Agent系统的核心模块之Planning模块。
3)使用互联网和工具的能力。AutoGPT不仅能够分解任务,还能够利用互联网和其他可用工具来完成这些任务。这可能涉及搜索信息、生成内容或执行特定的在线操作,这些操作通常会结合使用GPT-4或GPT-3.5的能力。使用互联网和工具的能力对应的是Agent系统的核心模块之Tools模块。
4)自动循环。AutoGPT在实现目标的过程中可能会进行多次迭代和自我调整。这意味着它可以在执行任务时根据需要修改其行动方案,类似于一个自动循环,直到达到最终目标任务。自动循环对应的是Agent系统的核心模块之Feedback模块。
5)记忆功能。AutoGPT通过使用外部记忆模块来增强GPT模型的记忆能力,它可以帮助Agent回顾过去对话内容和执行任务。AutoGPT使用嵌入、向量存储和搜索功能为Agent储备长期记忆。记忆功能对应的是Agent系统的核心模块之Memory模块。
总的来说,AutoGPT通过结合LLM驱动的提示引擎、记忆模块、工具及高效的命令和响应解析机制,自动循环执行任务实现了目标任务。这样的架构使得AutoGPT可以自主完成目标任务,并且具有与外部世界交互的能力。
2. AutoGPT的运行机制
下面通过AutoGPT的Python实现的源码(仓库autogpt/core/agent/simple.py),展示它如何实现自我生成所需的提示并自主执行一系列相关的任务,通过代码展示,AutoGPT的运行机制浮出水面。以下为简化的源代码示例,旨在帮助理解AutoGPT的运行机制:
1)系统配置和任务设置。代码中定义了AgentConfiguration和AgentSettings类,AgentConfiguration类用于配置Agent的目标、角色、任务循环次数等。这为Agent提供了执行任务所需的初始参数和目标。
2)任务生成和规划。SimpleAgent类的build_initial_plan方法负责生成初始任务计划。它通过调用_planning对象的make_initial_plan方法,根据Agent的名称、角色和目标创建一个任务列表。这些任务随后被添加到任务队列中,以便进一步处理build_initial_plan。
3)能力(在LangChain框架中称为工具和工具包的使用)的选择和任务评估。determine_next_ability方法从任务队列中选取一个任务,并通过
_evaluate_task_and_add_context方法对其进行评估。这个过程可能包括确定是否有足够的上下文信息来开始任务,并选择适合完成该任务的“工具能力”。
4)执行任务。一旦确定了下一个要执行的能力,execute_next_ability方法将被调用来执行它。这涉及调用相应能力的方法,并处理其结果,包括更新任务状态和记忆系统。
5)任务和记忆更新。_update_tasks_and_memory方法用于在执行能力后更新当前任务的状态和Agent的记忆系统。这可能包括总结新知识、存储知识和总结在记忆中,并评估任务是否完成。
以上5个步骤显示了AutoGPT是如何通过内置的任务规划、评估和执行机制,以及与GPT-4模型的交互来自动执行任务的。它通过生成和评估任务、选择和执行能力、更新任务状态和记忆,来自主地完成复杂任务。