LLM 代理
基于 LLM 的代理,以下简称为 LLM 代理,涉及使用将 LLM 与规划和记忆等关键模块相结合的架构来执行复杂任务的LLM应用。在构建LLM代理时,LLM充当主要控制器或“大脑”,控制完成任务或用户请求所需的操作流程。LLM代理可能需要规划、记忆和工具使用等关键模块。
为了更好地激发LLM代理的实用性,假设我们有兴趣构建一个系统,可以帮助回答以下问题:
美国2023年的平均每日卡路里摄入量是多少?
上述问题可能可以使用已经具备回答问题所需知识的LLM来回答。如果LLM没有相关知识来回答问题,可以使用简单的RAG系统,其中LLM可以访问与健康相关的信息或报告。现在让我们给系统一个更复杂的问题,如下所示:
在过去十年中,美国成年人的平均每日卡路里摄入量的趋势如何变化,这可能对肥胖率产生什么影响?此外,您能提供在此期间肥胖率趋势的图形表示吗?
要回答这样的问题,仅仅使用LLM是不够的。您可以将LLM与外部知识库结合起来形成一个RAG系统,但这仍然可能不足以回答上面复杂的查询。这是因为上面复杂的问题需要LLM将任务分解为子部分,可以使用工具和操作流程来解决,从而得到期望的最终响应。一个可能的解决方案是构建一个LLM代理,该代理可以访问搜索API、与卡路里摄入量和肥胖有关的出版物以及公共/私人健康数据库,以提供与卡路里摄入量和肥胖相关的信息。
此外,LLM将需要访问一个“代码解释器”工具,该工具有助于获取相关数据以生成有用的图表,帮助理解肥胖趋势。这些是假想LLM代理的可能高级组件,但仍然有重要考虑因素,如制定计划以解决任务和可能访问帮助代理跟踪操作流程状态、观察和整体进展的记忆模块。
LLM 代理框架
一般来说,LLM代理框架可以包括以下核心组件:
- 用户请求 - 用户问题或请求
- 代理/大脑 - 充当系统协调员的代理核心
- 规划 - 协助代理规划未来行动
- 记忆 - 管理代理的过去行为
代理
具有通用功能的大型语言模型(LLM)充当系统的主要大脑、代理模块或协调员。该组件将使用包含有关代理操作方式和其将访问的工具(以及工具详细信息)的提示模板来激活。
虽然不是强制性的,代理可以被描述或分配一个角色来定义其角色。这些描述信息通常写在提示中,可以包括特定细节,如角色详细信息、个性、社交信息和其他人口统计信息。根据[Wang等人,2023年],定义代理配置文件的策略包括手工制作、LLM生成或数据驱动。