大语言模型智能体简介
大语言模型(LLM)智能体,是一种利用大语言模型进行复杂任务执行的应用。这种智能体通过结合大语言模型与关键模块,如规划和记忆,来执行任务。构建这类智能体时,LLM充当着控制中心或"大脑"的角色,负责管理完成任务或响应用户请求所需的一系列操作。这种智能体的构建,需要依赖于规划、记忆以及工具使用等关键模块。
想象一下,如果我们想要创建一个系统,能够回答如下问题:
在2023年,美国的平均每日卡路里摄入量是多少?
上述问题可能直接通过一个已经掌握了所需知识的LLM来得到回答。如果LLM缺乏回答这个问题的具体知识,我们可以采用一个简单的基于检索增强生成(RAG)系统,使LLM能够访问健康相关的信息或报告。对于更加复杂的问题,比如:
在过去的十年中,美国成年人的平均每日卡路里摄入量的趋势如何变化?这种变化对肥胖率有何影响?能否提供一个图表来展示这段时间内肥胖率的趋势?
仅凭LLM可能不足以解答这类复杂问题。虽然结合LLM与外部知识库可以形成RAG系统,但这样做仍可能不足以应对复杂的查询。因为,这类问题要求LLM将任务拆分为可以通过使用工具和操作流程解决的子任务,以实现最终的回答。构建一个能够访问搜索API、健康相关出版物及公共/私人健康数据库的LLM智能体,可能是一个解决方案,以便提供与卡路里摄入和肥胖相关的信息。
大语言模型智能体框架简介
通常,一个大语言模型智能体框架包含以下核心部分:
- 用户请求 - 表达用户的问题或请求
- 智能体/大脑 - 作为协调者的智能体核心
- 规划- 助于智能体为未来行动做规划
- 记忆 - 管理智能体的历史行为和经验
通过这些组成部分的协同工作,大语言模型智能体能够处理从简单到复杂的各种请求,不仅能够提供直接的答案,还能解决需要深度分析和多步骤操作的问题。这种智能体的能力,使其在处理复杂信息查询、数据分析和可视化表示等方面具有巨大潜力。
智能体
一款具备广泛应用能力的大语言模型 (LLM) 充当了整个系统的中枢大脑、智能体模块或是协调者角色。通过设计一个含有操作方法和可用工具详细信息的提示模板来启动这个组件。
尽管不强制,但我们还是可以为智能体设定一个具体角色或者塑造一个人格,以明确其职能。这种设定通常包含在提示中,涵盖角色详情、性格、社交及人口统计等信息。
规划
无反馈规划
规划模块的作用是将用户请求拆分成智能体能够单独解决的若干步骤或子任务。这对于智能体更准确地理解问题和找到可靠解决方案至关重要。规划模块将借助LLM拆分出详尽的计划,包括解答用户问题所需的子任务。常见的任务分解技术包括思路链 (Chain of Thought) 和思路树 (Tree of Thoughts),它们分别代表了单路径推理和多路径推理。
有反馈的规划
之前提到的规划模块未涉及反馈,这在解决复杂任务时面临长期规划的挑战。为应对此挑战,可以采用一种机制,让模型基于过去的行动和观察迭代地反思和调整执行计划。其目的是纠正过去的错误并提升结果质量,这在处理复杂的现实任务时尤其关键,其中试错法是解决问题的关键步骤。两种著名的反思或评估机制方法包括 ReAct 和 Reflexion。
以 ReAct 为例,它将推理与行动结合起来,通过在思考(Thought)、行动(Action)和观察(Observation)这一系列步骤之间交替进行(重复 N 次),帮助大语言模型解决复杂任务。ReAct 通过观察形式从环境中获取反馈。其他反馈类型还可以包括人类和模型反馈。
内存
智能体的内存模块负责记录其内部日志,涵盖了先前的思考、行为及对环境的观察,也包括与用户的所有互动。在大语言模型智能体的研究文献中,主要区分为两种内存类型:
- 短期内存 - 涉及智能体当前状态的上下文信息,通常通过上下文内学习实现。由于上下文窗口的限制,这种内存是有时限和容量限制的。
- 长期内存 - 存储智能体过去的行为和思考,这部分信息需要在长时间内被保留并能够被回忆起来。通常通过连接至快速、可扩展的外部向量存储库来实现,以便在需要时为智能体提供相关信息。
通过结合短期内存和长期内存,混合内存系统能够增强智能体的长期推理和经验积累能力。
工具
LLM 智能体通过工具与外界环境互动,这些工具包括 Wikipedia 搜索 API、代码解释器和数学引擎等。工具的范畴也涵盖数据库、知识库和外部模型。智能体利用这些工具执行任务,通过工作流程获取信息或完成子任务,以满足用户的需求。例如,在处理健康查询时,代码解释器就是一个能够执行代码并生成所需图表信息的工具。
LLM 以多种方式使用这些工具:
- MRKL 结合了 LLM 和专家模块,后者可以是其他 LLM 或特定功能的符号系统(如计算器或天气 API)。
- Toolformer 对 LLM 进行微调,使其能够使用外部工具 API。
- 函数调用(Function Calling)功能增强了 LLM 的工具使用能力,它定义了一套工具 API 并将其作为请求的一部分提供给模型。
- HuggingGPT 利用 LLM 作为任务规划器,通过连接各种现有的 AI 模型(根据描述)来解决 AI 任务。
大语言模型智能体的应用领域
本节将介绍几个大语言模型智能体因其出色的复杂推理和常识理解能力而在不同领域和案例中得到有效应用的实例。
著名的大语言模型智能体
-
Ma 等人的研究探讨了会话式 AI 智能体在提供心理健康支持方面的效用,指出这类智能体能助人减轻焦虑,但有时也可能输出有害信息。
-
Horton 通过给予基于大语言模型(LLM)的智能体以"资产、偏好及个性",模拟人类在经济行为场景中的决策过程。
-
生成式 AI 智能体和 AgentSims 都致力于在虚拟小镇环境中重现人类的日常生活,通过搭建多元化的智能体完成此目标。
-
盲审利用多个语言模型模拟法官的判决过程,其对现实世界最高法院裁决的预测准确度高于随机水平。
-
Ziems 等人展示了能够辅助研究人员进行文献综述、脚本编写和关键词提取等任务的智能体。
-
ChemCrow 描述了一个专注于化学领域的大语言模型智能体,该智能体能够独立规划并执行驱虫剂、有机催化剂的合成及新型色素的开发。
大语言模型智能体工具
下面列出了一些在构建大语言模型智能体过程中常用的重要工具和框架:
- LangChain:一个开发基于语言模型的应用程序和智能体的框架,旨在简化语言模型的应用开发流程。
- AutoGPT:提供了一套工具,帮助开发者构建 AI 智能体,简化了AI智能体的开发工作。
- Langroid:通过多智能体编程,将智能体作为核心组件,通过消息交互协作完成任务,简化了大语言模型应用的构建过程。
- AutoGen:一个使多个智能体能够交流协作解决问题的大语言模型应用开发框架,推动了智能体之间的对话和任务解决能力。
- OpenAgents:一个开放的平台,用于在实际环境中使用和托管语言智能体,促进了语言智能体的广泛应用。
- LlamaIndex:一个连接自定义数据源与大语言模型的框架,扩展了大语言模型的应用场景。
大语言模型智能体的评估
与评估大语言模型本身相似,对大语言模型智能体的评估也是一项充满挑战的任务。常用的评估方法包括:
- 人工评注:涉及人类评价者直接就应用中重要的各个方面对大语言模型的输出进行评分,这些方面包括诚实性、有用性、参与度、公正性等。
- 图灵测试:通过让人类评价者比较真实人类和智能体的输出结果来进行评估,如果结果无法区分,则意味着智能体达到了与人类相似的表现水平。
- 量化指标:精心设计的量化指标用来反映智能体的质量,包括任务完成度指标、与人类相似度指标及效率指标等。
- 评估协议:这指的是确定如何应用这些量化指标的常见评估流程,例如真实世界模拟、社交评估、多任务评估和软件测试等。
挑战
大语言模型(LLM)智能体正处于发展初期,构建它们的过程中仍面临诸多挑战和限制:
- 角色适应能力:LLM 智能体在特定领域内有效执行任务通常需要适配特定角色。针对 LLM 较弱的角色识别能力,可以通过针对性地微调 LLM,使用反映罕见角色或心理特征的数据来增强其性能。
- 长期规划与有限上下文长度:基于长时间历史的规划是一大挑战,可能导致错误累积,智能体难以自我纠错。同时,LLM 支持的上下文长度有限,这可能制约智能体的功能,比如限制其利用短期记忆的能力。
- 广泛的人类价值对齐:使智能体与多元化的人类价值观保持一致同样具有挑战性,这在传统 LLM 中也是一个普遍问题。一种可能的解决方法是通过设计先进的提示策略来调整 LLM,以便更好地对齐人类价值。
- 提示的稳定性与可靠性:LLM 智能体可能涉及设计多个提示来支持不同功能模块,如记忆和规划,而对提示微小变化的高敏感度常导致可靠性问题。整个提示框架的设计使其更易受到稳定性问题的影响。
- 知识界限:控制 LLM 的知识范围具有挑战性,这直接影响模拟活动的有效性。LLM 内部的知识可能携带偏见或使用用户不熟悉的信息,这在特定环境下可能影响智能体的表现。
- 效率:LLM 智能体的操作涉及大量请求处理,这可能影响其行动的效率,因其高度依赖于 LLM 的推理速度。同时,在部署多个智能体时,成本也成为了一个需要考虑的因素。
结论
大语言模型智能体代表了AI领域中一个令人兴奋的发展方向,它们结合了大语言模型的强大能力与智能体框架的灵活性。虽然目前这一领域还面临诸多挑战,但随着研究的深入和技术的进步,我们可以期待看到更加先进和实用的大语言模型智能体应用在各个领域中涌现。
无论是辅助科学研究、提供心理健康支持,还是模拟经济行为,大语言模型智能体都展示了其巨大的潜力。随着工具和框架的不断完善,开发和部署这些智能体也变得越来越简便,这将推动更多创新应用的出现。