- Transformer基础
- 常用的大语言模型
- 行业大语言模型
- 大语言模型评估
- 数据构造与清洗
- 分词器构造
- 大语言模型的微调
- 基于PEFT的LLaMA模型微调
- 基于人类反馈的强化学习框架
- 前沿偏好对齐方法
- 基于DPO的偏好对齐实战
- GPTs初体验
- GPTs的初阶使用
- GPTs的高阶使用
- 公开数据集
- 主流方法
- Text2SQL任务实战
- 角色扮演
- 角色扮演实战测试
- 基于Baichuan的角色扮演模型微调
- 对话要素抽取
- 对话要素抽取实战测试
- 基于Qwen的对话要素抽取模型微调
- Agent概述
- Agent的主要模块
- Agent的行为决策机制
- 主流Agent框架
- 基于知识库问答
- 向量数据库
- 基于知识库的大型语言模型问答实战
- AutoGPT概述
- LangChain概述
- 使用LangChain构建AutoGPT
- 运行AutoGPT
2023年以来,开源社区涌现了很多Agent框架,这些框架提供了构建Agent的能力,这意味着你无须从零开始开发。这些框架不仅提高了开发效率,还允许你定制满足特定需求的Agent。使用这些主流框架,可以迅速构建和部署高度个性化的Agent,从而满足各种复杂的应用场景和需求。主流的LLM的Agent框架包括LangChain框架、LlamaIndex框架、AutoGPT框架、AutoGen框架和SuperAGI框架等。这些框架为开发者提供了构建Agent的便利途径,每个框架都有其独特的特点和适用场景。选择哪个框架主要取决于你的特定需求和流程。
1. LangChain框架
LangChain框架为开发者提供了一系列功能丰富的Agent组件,包括基于规则的Agent,它们严格遵循预设的规则来执行任务,以及自主Agent,它们能够自主做出决策和行动。此外,工具Agent则具备调用外部工具或API执行特定操作的能力。
使用LangChain的Agent模块的最大优势是利用LangChain各大模块快速组合。LangChain是基于LLM的应用程序的通用框架,包含了构建LLM应用程序的所有基本模块,例如由LangChain封装的LLM的API及其数据接口、工具和工具包模块,在一个框架内能够快速构建使用LLM选择一系列行动的Agent。一个对Agent技术一无所知的非编程人员想要构建一个Agent,最快的方式是使用LangChain的Agent模块。
LangChain的代理执行器(AgentExecutor)是构建Agent的主要模块,代理执行器可看作管理Agent行为的“项目经理”。LangChain框架中的Agent模块主要包括以下要素。
·Agent组件:负责决定下一步采取哪个步骤的链组件,由给LLM的提示驱动。输入包括工具描述、用户输入和之前执行的步骤。
·代理执行器:代理的运行时环境。它负责调用代理,执行其选择的操作,将操作结果反馈给代理,并重复这一过程。例如,执行器可以启动代理来处理用户的天气查询请求,执行必要的API调用,并将结果传递回Agent组件。
·工具(Tools):代理可以调用的函数。需要向代理提供正确的工具,并以对代理最有帮助的方式描述这些工具。
·工具包(Toolkits):为了完成常见任务,代理可能需要一组相关工具。工具包是特定目标需要的3~5个工具的组合。
1. 快速入门
按照以下步骤使用LangChain构建和运行自定义Agent,例如本示例目标是创建一个
会计算单词长度的Agent。
步骤1:加载语言模型,采用ChatOpenAI模块与LLM交互。
步骤2:定义工具的python函数。
步骤3:创建提示模板,包含系统指令、用户输入和agent_scratchpad。
步骤4:构建和配置Agent。结合LLM、工具和提示词模板创建Agent。使用OpenAI-FunctionsAgentOutputParser将输出消息转换为Agent动作。
步骤5:运行Agent。
2. 应用范围
LangChain的Agent模块的主要优势在于,它为开发者提供了一系列预构建的Agent和大量工具组件。这使得开发者能够像搭建积木一样直接调用这些工具,而无须从头开始构建。LangChain提供了一套Agent构建协议,对初学者尤其有帮助。通过遵循这套协议并参考LangChain的自定义Agent教程,开发者可以定制自己的Agent。
LangChain的Agent应用范围广泛,包括规则驱动任务(如天气预测)、自主决策与动态环境互动(如实时图像分析)、与大型语言模型的交互,以及结合视觉、语言和行动模型的复杂任务(如机器人操作)。这些应用展示了Agent在多个领域的强大潜力和实用价值。
2.LlamaIndex框架
LlamaIndex框架的优势是构建复杂的数据查询Agent。在数据查询中,LlamaIndex的查询引擎可以作为Agent结构中的工具使用。例如,可以使用向量存储查询引擎来检索嵌入式数据,或者利用图形数据结构的查询引擎来执行比较和对比分析。
通过使用不同复杂度的Agent来处理实际数据任务(如金融分析)。这些Agent分为更复杂的ReAct代理和简单的路由代理。ReAct代理能够通过迭代推理和分解输入来处理复杂的数据查询,特别是在使用高级LLM(如GPT-4)时。而简单Agent则直接选择工具来回应查询,适用于较简单的模型。
1. 快速入门
LlamaIndex框架的Agent模块主要是封装了LangChain的Agent模块,所以对于LangChain非常熟悉的开发者,上手非常快。但LlamaIndex框架侧重于内置的数据处理和检索的助理实现,对于构建复杂的数据分析的Agent有参考意义。下面的代码展示了一个使用内置检索工具的Agent,LLM使用的是OpenAI。
步骤1:安装LlamaIndex的python包。
步骤2:导入内置检索工具的Agent,即OpenAIAssistantAgent。
步骤3:实例化OpenAIAssistantAgent,并且设置penAIAssistantAgent的名称、提示词的指令、指定retrieval类型的内置工具、上传的用户文件位置、用户名称。我们获得一个名为“SEC分析师”内嵌OpenAI检索工具、用于分析SEC文件的QA Agent。
由于调用OpenAI相关工具,在完成配置后便可以测试该助手,把它与上传的用户文件结合并使用内置的OpenAI检索工具来测试,测试代码如下。
该代理使用内嵌的OpenAI检索工具和上传的文件“data/10k/lyft_2021.pdf”。当询问“2021年Lyft的收入增长如何?”时,Agent会检索上传的文件并回复结果,指出Lyft的收入在2021年增长了8.436亿美元,即36%。
2. 应用范围
LlamaIndex框架主要面向需要构建复杂数据查询代理的专业人员,例如数据科学家、金融分析师和软件开发者。它特别适用于需要执行深入分析的领域,如金融分析、市场研究和大数据处理。通过提供不同复杂度的代理,如ReAct代理和简单路由代理,LlamaIndex可以处理从基本信息检索到复杂数据合成的多种任务。高级代理适合执行迭代推理和复杂查询,而简单代理更适用于直接的、结构化的数据查询。
3. AutoGPT框架
AutoGPT灵感来源于OpenAI发布的GPT-4模型,它通过不断让LLM决定行动并将结果反馈到提示中,迭代地实现目标。AutoGPT作为一种通用代理,并不专注于特定任务,而是旨在执行计算机上的多种任务。虽然用户仍需授权每个操作,但项目的发展将使这个代理更加自主,只在特定行动中需要用户同意。
AutoGPT在受到广泛关注后,开发者迅速推出了低代码平台AutoGPT Forge。这个平台旨在帮助用户更加便捷地构建和使用AutoGPT,无须深入了解复杂的编程和配置过程。AutoGPT Forge提供了一个直观、易于使用的界面,使得用户能够轻松自定义和部署AutoGPT。
1. 快速入门
AutoGPT Forge提供了一个全面的模板,用于构建自己的AutoGPT。这个模板不仅包括设置、创建和运行智能体的环境,还整合了基准测试系统和前端界面,以便于Agent的开发和性能评估。AutoGPT Forge在AutoGPT生态系统中扮演着关键角色,是创建Agent的基础。它被设计为与Agent协议、基准测试系统和AutoGPT前端集成,形成一个协调一致的开发环境。
AutoGPT Forge的使用要求和方法如下。
1)系统要求:支持Linux(基于Debian)、Mac和Windows子系统(WSL)。
2)设置Forge环境:首先,在GitHub上创建(fork)仓库,然后克隆到本地系统。安装必要的依赖,并设置GitHub访问密钥。
3)创建Agent:使用命令./run agent create YOUR_AGENT_NAME创建Agent模板。
4)运行Agent:使用命令./run agent start YOUR_AGENT_NAME运行Agent,通过http://localhost:8000/访问前端,并使用Google或GitHub账号登录。
2. 应用范围
AutoGPT Forge使开发者能够遵循标准化的框架,极大地简化了开发流程。它消除了编写样板代码的需求,允许开发者将精力直接投入到打造Agent的“大脑”中。
通过专注于增强Agent的智能和功能,开发者能够充分利用AutoGPT的潜力创建出高效、创新和先进的Agent。
4. AutoGen框架
AutoGen是由微软、宾夕法尼亚州大学和华盛顿大学的合作研究支持研发的开源多代理的框架,旨在通过多代理对话简化和优化基于LLM的应用开发,它允许开发人员通过可以相互对话的多个代理来构建LLM应用程序,以完成任务。使用AutoGen,开发者还可以灵活定义代理互动行为。自然语言和计算机代码都可以用来为不同应用程序编写灵活的对话模式。AutoGen作为一个通用框架,用于构建各种复杂和LLM 能力多样化的应用程序,涵盖数学、编程、问题解答等领域。图8-4展示了AutoGen
通过多代理对话启用多样化的基于LLM的应用程序。AutoGen代理是可对话的、可定制的,并且可以基于LLM、工具、人类,甚至它们的组合来进行定制,也可以通过对话来解决任务,并支持灵活的对话模式。
(图片来源:https://arxiv.org/abs/2308.08155)
AutoGen提供了一个基于基础模型的高级抽象,以实现强大、可定制和可对话的Agent。这些Agent能够整合LLM、工具和人类输入,通过自动化代理聊天来自主执行任务或在人类反馈下执行任务(图8-5展示了在程序执行期间来自两个代理系统的自动化聊天,代码代理理解用户代理的任务用意,由代码助理写代码执行完成任务)。它主要有以下3个特点。
1)组件式开发。在AutoGen中,Agent被设计为可对话和可定制,使得它们能够整合LLM、人类、工具或相互组合。
2)多样化对话模式。AutoGen支持各种自主水平和人类参与模式的对话,允许Agent根据不同输入问题实例进行动态对话。这种灵活性使得AutoGen特别适用于复杂应用,其中交互模式无须预先确定。
3)应用范围广泛。AutoGen框架可用于多种应用,包括代码生成、执行和调试,多Agent协作,以及代理教学与学习等领域。
1. 快速入门
AutoGen可以通过pip install pyautogen安装。对于代码执行,建议安装python docker包,并使用Docker环境。AutoGen通过多代理对话框架实现下一代LLM应用,提供了可定制、对话式的代理,这些Agent集成了外部工具和人类输入。
以下是一个代理对话示例,展示了如何使用AutoGen进行任务解决,先导入内置的Agent模块和配置文件:
以下示例展示了3个代理如何通过自动化对话来共同解决任务。
2. 应用范围
AutoGen在代码生成、执行和调试领域的应用范围广泛,具体包括以下几个方面:
1)自动任务解决。AutoGen可用于自动化完成各种任务,包括编写代码、执行代码、调试代码,以及获取人类反馈。例如,AutoGen可用于自动生成和执行机器学习模型、自动调试软件程序,以及回答用户关于代码的问题。
2)多智能体协作。AutoGen可用于让多个智能体协同工作以完成复杂任务。例如,AutoGen可用于让多个GPT-4代理一起玩国际象棋,或者让多个编码和规划Agent一起优化供应链。
3)应用程序。AutoGen可用于开发各种应用程序,包括游戏、聊天机器人,以及供应链优化工具。例如,AutoGen可用于开发一个由GPT-4驱动的国际象棋游戏,或者开发一个可以自动学习的聊天机器人。
4)工具使用。AutoGen可用于使用各种工具,包括网络搜索、OpenAI函数,以及LangChain提供的工具。例如,AutoGen可用于通过网络搜索获取数据,或者使用OpenAI实用函数生成文本。
5)代理教学与学习。AutoGen可用于教授代理新技能。例如,AutoGen可用于通过自动化聊天教授代理如何编写代码。
5. SuperAGI框架
SuperAGI框架是一个开源自主Agent框架,它使开发者能够轻松构建、管理和运行多功能的自主代理。SuperAGI框架的Agent以其高度可定制性和可视化界面而著称,提供了一系列定制选项,包括目标、指令和工具选择等,以满足不同的应用需求。框架支持多样化的代理类型,如基于ReAct的代理、固定任务和动态任务代理,以适应各种复杂场景。此外,它强调强大的工具集成,支持多种工具和数据库,增强代理的性能和效率。图形用户界面的设计使得用户能够直观访问和交互代理,而性能追踪功能则确保了代理性能的持续优化和令牌使用的有效管理。
1. 快速入门
在SuperAGI的网页端,可以通过SuperAGI框架的配置选项获得定制的可视化Agent。常用的配置选项如下。
1)名字和描述:用于标识Agent,帮助开发者理解所工作的代理。
2)目标(Goals):代理的期望成果或目标,决定代理的行为方向。
3)指令(Instructions):为代理提供行动指南,帮助其朝目标前进。
4)模型(Models):选择适合部署的大型语言模型,如GPT-4。
5)工具和工具包(Tools & Toolkits):为代理选择所需的工具或工具包,以优化工作流程。
6)高级选项(Advanced Options):包括代理类型、资源添加、约束、迭代次数等,用于深度定制代理行为。
7)权限类型(Permission Type):设置代理的自主决策程度,如完全自主或需要人工确认。
另外,还可以通过本地部署定制Agent。
步骤1:克隆SuperAGI仓库。打开终端,输入以下命令克隆SuperAGI仓库。这时会在当前目录创建一个名为SuperAGI的文件夹,其中包含SuperAGI的源代码和配置文件。
步骤2:配置SuperAGI,切换到克隆的仓库目录。
复制模板配置文件:
编辑config.yaml文件,根据需要进行配置。例如,可以调整内存和GPU资源的使用设置。
步骤3:安装Docker。确保系统已安装Docker,如果没有,请下载并安装适用于你的操作系统的Docker Desktop。
步骤4:启动SuperAGI,在SuperAGI目录中运行以下命令启动SuperAGI服务。此命令会根据Docker Compose配置文件启动SuperAGI所需的容器。这可能需要几分钟的时间。
步骤5:访问SuperAGI界面。打开你的网络浏览器,访问以下地址:
http://localhost:3000。
2. 应用范围
SuperAGI框架的优势在于提供各种Agent模板,用户可以搜索并使用这些模板快速创建自己的Agent。SuperAGI特别适合于自动化商业流程,以提高效率和降低成本。
SuperAGI框架内封装的工具和工具包组件增强了应用的智能和自主性,支持多个Agent的并行运行以提高生产力。此外,Agent通过学习和调整轨迹不断提升性能。
其核心优势还包括一个可视化的Agent配置界面(如图8-6所示),允许用户零代码构建Agent,并提供管理令牌使用和资源的工具,优化Agent性能。
SuperAGI框架的Agent应用范围广泛,特别适合非编程人员使用,可视化编辑界面降低了构建Agent的难度。这些Agent主要服务于个人需求,如个人助手、数据分析、日常任务自动化等应用。图8-7展示了SuperAGI管理所有Agent的资源消耗情况。