深入浅出 AI 智能体(AI Agent)
随着人工智能技术的飞速发展,智能体(AI Agents)正逐渐成为人与大模型(如大语言模型)交互的主要方式。智能体是能够执行任务、解决问题并提供服务的 AI 系统,它们通过模拟人类的行为和决策过程,使得与大模型的交互更加自然、高效和个性化。
智能体作为人与大模型交互的桥梁,不仅提高了交互的效率和质量,还扩展了大模型的应用范围。随着技术的不断进步,智能体将更加深入地融入我们的日常生活,成为不可或缺的智能伙伴。
智能体是什么
智能体(英文名:AI Agent 或 AI Bot)是指能够感知其环境并采取行动以实现某种目标的实体。智能体可以是软件程序、机器人、或其他形式的系统。
在商业和技术应用中,智能体(AI Bot)的概念也被用来描述那些能够执行特定任务的自动化系统,它以云为基础,以 AI 为核心,构建了一个立体感知、全域协同、精确判断、持续进化和开放的智能系统,智能体(AI Bot)在企业服务、游戏开发、机器人控制、智能家居、自动驾驶汽车、金融分析、医疗诊断等多个领域都有广泛应用。智能体(AI Bot)由 4 个关键部分组成,分别是:规划(Planning)、记忆(Memory)、工具(Tools)、行动(Action)。智能体(AI Bot)具有自治性(Autonomy) 、反应性(Reactive)、主动性(Proactive)、社会性(Social)、进化性等基本特性。
图 1:由大模型驱动的智能体系统
如上图所示,在基于大模型的智能体中,大模型的充当着智能体的 “大脑” 的角色,同时还有 3 个关键部分:
规划(Planning): 智能体会把大型任务分解为子任务,并规划执行任务的流程;智能体会对任务执行的过程进行思考和反思,从而决定是继续执行任务,或判断任务完结并终止运行。
记忆(Memory):短期记忆,是指在执行任务的过程中的上下文,会在子任务的执行过程产生和暂存,在任务完结后被清空。长期记忆是长时间保留的信息,一般是指外部知识库,通常用向量数据库来存储和检索。
工具使用(Tool use):为智能体配备工具 API,比如:计算器、搜索工具、代码执行器、数据库查询工具等。有了这些工具 API,智能体就可以是物理世界交互,解决实际的问题。
智能体的特点主要包括:
自然语言理解与对话管理 :智能体通过先进的自然语言处理技术,能够理解用户的指令和需求,以自然语言的形式与用户进行交流。这种交流方式不仅包括简单的问答,还能进行复杂的对话,理解上下文和用户的意图。
个性化服务 :智能体能够根据用户的历史交互数据和偏好,提供个性化的服务和建议。这种个性化不仅体现在内容推荐上,还能在交互方式、语言风格等方面进行调整,以适应不同用户的需求。
任务自动化 :智能体能够自动化执行一系列任务,从简单的数据检索到复杂的决策支持。它们可以处理电子邮件、安排日程、管理项目,甚至在某些情况下,能够进行创造性的工作,如设计、编程等。
学习和适应 :智能体具备学习和适应的能力,它们可以通过机器学习算法不断优化自己的性能,以更好地满足用户的需求。这种学习能力使得智能体能够随着时间的推移而变得更加智能和高效。
多模态交互 :除了文本交互,智能体还能够处理图像、声音等多种类型的数据,实现多模态交互。这使得智能体能够更全面地理解和响应用户的需求,提供更丰富的交互体验。
智能体能做什么
相信看到这里,我们已经对智能体有了基本的认识。如果你还觉得智能体这个概念有点抽象,没关系,现在我们来结合下具体的场景,看看智能体能为我们解决什么实际问题。
专业领域智能问答专家
我们可以利用知识库和工作流编排工具,让智能体成为某个领域的专家,最大化利用用户私域知识库的价值,提供详尽且准确的回答。例如我们创建一个收录了公开的金庸小说知识库,把一本数万字的小说进行分段处理并向量化处理后,输入给智能体,我们看看会发生什么情况吧:
我们首先创建一个 “金庸武侠小说” 知识库,直接将小说的 txt 文本或 PDF 文档上传,如下图所示。
图 2:创建武侠小说知识库
几分钟后,文件进行分段处理并进行向量化,这个过程是转化为计算机理解的语言,方便识别和检索我们之前上传的文本信息。我们点击 “金庸 - 笑傲江湖.txt”,查看小说已经被分成了 4572 个段落。
图 3:知识库处理后的详情
创建完知识库后,我们接着创建智能体 Bot,取名为 “令狐冲”,并添加之前创建的 “金庸武侠小说” 知识库。
图 4:创建智能体 Bot
接下来,我们来运行一下看看我们的智能体的回答效果,我们输入一个问题 “令狐冲的独孤九剑都有哪些具体的招式?”
图 5:测试智能体
从回答结果看,智能体首先调用了知识库工具,从知识库中检索相关信息,再让大模型总结输出答案。这比起直接让大模型回答,所获取的回答内容更精准和详实。
以上演示了一个智能体在处理专业领域知识的过程和效果,是不是超级简单有趣?下面让我们智能体在行业资讯智能整理与获取方面的应用场景吧。
行业资讯智能整理与获取
智能体可以将新闻检索、网页抓取等插件能力编排进工作流,将内容整理提炼形成特定格式的资讯,高效获取行业的最新信息。
首先,创建一个 “搜索新闻” 的工作流,如下图所示:
图 6:创建智能体工作流
接下来,我们直接调试工作流,可以看到不仅获得了最新的新闻,还可以进行数据格式整理,以便输出更好的阅读体验。
图 7:调试智能体工作流
角色扮演与风格创作
智能体还可以将优秀的文案创作方法论编排进提示词模板,让 AI 智能体按照用户的写作手法创作内容,用于角色创作、营销文案、宣发演讲稿等场景。例如:创作小红书体的营销种草文案、演讲稿等。下面我们以一个角色扮演的例子,看看为智能体添加了角色扮演风格的提示词 Prompt 后,大模型的回答效果。以下是我们准备的角色扮演设定:
为智能体添加以上提示词设定后,我们再来试下对话效果:
图 8:调试智能体工作流
是不是很神奇,添加了角色设定后的智能体的回答不再像一般的大模型回答那么生硬,仿佛像一位真实的朋友在和我们聊天,TA 有拟人话的回答,甚至有表情旁白,你是不是也想有个属于自己的 AI 伴侣了?
看到这里,相信你对智能体的能力有了更具象的了解。下面我们再来总结下智能体的关键构成吧。
智能体的关键构成
在基于大模型的智能体中,大模型充当着智能体的 “大脑” 的角色,同时还有 3 个关键部分:规划(Planning)、记忆(Memory)、工具使用(Tool use)
图 9:智能体的关键构成
规划(Planing)
规划,可以为理解观察和思考。如果用人类来类比,当我们接到一个任务,我们的思维模式可能会像下面这样:
我们首先会思考怎么完成这个任务。
然后我们会审视手头上所拥有的工具,以及如何使用这些工具高效地达成目的。
我们会把任务拆分成子任务(就像我们会使用项目管理做任务拆分)。
在执行任务的时候,我们会对执行过程进行反思和完善,吸取教训以完善未来的步骤
执行过程中思考任务何时可以终止
这是人类的规划能力,我们希望智能体也拥有这样的思维模式,因此可以通过 LLM 提示工程,为智能体赋予这样的思维模式。在智能体中,最重要的是让 LLM 具备这以下两个能力(子任务分解和反思完善):
1. 子任务分解
通过 LLM 使得智能体可以把大型任务分解为更小的、更可控的子任务,从而能够有效完成复杂的任务。
思维链(Chain of Thoughts, CoT)
思维链(Chain of Thought,CoT)是一种在自然语言处理(NLP)领域中用于提高模型推理能力的技术。它通过让模型在生成最终答案之前,先输出一系列中间思考步骤,从而使得模型的决策过程更加透明和可解释。这种技术在解决需要多步推理的问题时特别有效,例如数学问题、逻辑推理问题等。
思维链技术的应用案例
数学问题解决 :在解决数学问题时,模型可以先输出解题步骤,如列出方程、计算过程等,最后给出答案。这有助于提高模型的准确性和可解释性。
逻辑推理 :在逻辑推理任务中,模型可以先输出推理过程,如前提条件、中间结论等,最后得出最终结论。这有助于模型在复杂逻辑问题上的表现。
文本理解 :在文本理解任务中,模型可以先输出对文本的初步理解,如关键词提取、句子结构分析等,最后给出对文本的完整理解。这有助于提高模型在文本理解任务上的准确性和深度。
以下是一些思维链的 prompt 例子:
通过这种方式,思维链的 prompt 可以帮助模型更系统地分析和解决问题,而不是直接给出答案。
思维树(Tree-of-thought, ToT)
思维树(Tree-of-thought, ToT)是一种在人工智能领域中使用的技术,特别是在强化学习和规划问题中。它是一种基于模型的决策方法,其中智能体构建一个可能的行动和结果的树状结构来评估和选择最佳的行动方案。
当前的大模型仍然是以从左到右的方式逐一做出 token 级的决定,这样一个简单的机制是否足以让 LM 朝着一般问题解决者的方向发展?
研究表明,人有两种参与决策的模式 -- 快速、自动、无意识的模式("系统 1")和缓慢、慎重、有意识的模式("系统 2")。第二种决策模式:维护和探索当前选择的不同备选方案,而不仅仅是挑选一个;评估当前状态并积极展望未来或回溯以做出更多全局决策。这可能会对当前模型决策的方式提供借鉴意义。
现有的大模型解决问题的缺陷主要有两个:
在局部,没有探索思维过程中的不同延续 -- 类似于树的分支。
在全局范围内,没有纳入任何类型的规划、前瞻或回溯,以帮助评估这些不同的选择 -- 而启发式指导的搜索是人类解决问题的特征。
思维树 ToT 则允许模型探索多种思想推理路径,把所有问题都看作是在一棵树上的搜索,树上的每个节点都代表着一个状态(输入的部分解决方案和截至目前为止的思想序列)。
思维树(Tree-of-thought, ToT)是对思维链(Chain of Thought,CoT)的进一步扩展,在思维链的每一步,推理出多个分支,拓扑展开成一棵思维树。使用启发式方法评估每个推理分支对问题解决的贡献。选择搜索算法,使用广度优先搜索(BFS)或深度优先搜索(DFS)等算法来探索思维树,并进行前瞻和回溯。
2. 反思和完善
智能体在执行任务过程中,通过 LLM 对完成的子任务进行反思,从错误中吸取教训,并完善未来的步骤,提高任务完成的质量。同时反思任务是否已经完成,并终止任务。
ReAct
ReAct(Yao et al. 2023) ,《ReAct: Synergizing Reasoning and Acting in Language Models》 这篇论文提出一种用于增强大型语言模型的方法,它通过结合推理(Reasoning)和行动(Acting)来增强推理和决策的效果。
推理(Reasoning): LLM 基于「已有的知识」或「行动(Acting)后获取的知识」,推导出结论的过程。
行动(Acting): LLM 根据实际情况,使用工具获取知识,或完成子任务得到阶段性的信息。
为什么结合推理和行动,就会有效增强 LLM 完成任务的能力?ReAct 的论文例子通过与简单的百科 API 交互,克服了思维链推理中常见的幻觉和错误传播问题,并生成类似人类的任务解决轨迹,比没有推理痕迹的基线更具可解释性。
如图所示:(1)比较 4 种提示方法,(a)标准方法、(b)思维链(CoT,仅推理)、(c)仅动作、(d)ReAct(推理 + 动作)等,解决 HotpotQA(Yang2018)问题;(2) 比较 2 个提示方法,(a) 仅动作、和 (b) ReAct,去解决 一个 AlfWorld 游戏(Shridhar 2020b)。在这两个方法中,省略提示中的上下文示例,仅显示模型(Act,Thought)和环境(Obs)生成的任务解决轨迹。
记忆(Memory)
智能体的记忆(Memory)是其存储和回忆信息的能力,这对于智能体的学习、决策和适应环境至关重要。智能体的记忆可以分为不同类型,每种类型在智能体的运作中扮演着不同的角色。
一、记忆的类型
短期记忆
短期记忆也被称为工作记忆,它能够暂时存储智能体在当前任务处理过程中所需的信息。例如,当智能体在解决一个数学问题时,它可能会将中间计算结果存储在短期记忆中,以便后续步骤使用。短期记忆的容量通常有限,并且信息在一段时间后可能会被遗忘。
长期记忆
长期记忆可以存储智能体在过去的经验、知识和学习中获得的信息。这包括已经学习到的模式、规则、概念等。长期记忆的容量相对较大,并且信息可以在较长时间内保存。智能体可以通过回忆和检索长期记忆中的信息来解决新的问题或应对新的情况。
二、记忆的存储方式
分布式存储
信息以分布式的方式存储在智能体的神经网络或其他数据结构中。这种存储方式使得信息可以通过多个节点或连接进行表示,提高了记忆的鲁棒性和可扩展性。例如,在深度学习中,神经网络的权重和连接可以被视为一种分布式的记忆形式,它们存储了从训练数据中学习到的知识。
关联存储
信息以关联的方式存储,即通过建立不同信息之间的联系来进行存储。当智能体回忆某个信息时,它可以通过关联的线索来检索相关的信息。例如,当你回忆起一个人的名字时,可能会通过与这个人相关的外貌特征、职业、共同经历等线索来帮助你想起他的名字。
层次存储
信息按照层次结构进行存储,从具体的实例到抽象的概念逐步构建。这种存储方式有助于智能体对信息进行组织和分类,提高信息的检索效率。例如,在一个图像识别智能体中,图像可以按照不同的类别和层次进行存储,从具体的物体到抽象的概念,如动物、植物、交通工具等。
三、记忆的更新和遗忘
学习与更新
智能体可以通过不断地学习和经验积累来更新自己的记忆。当智能体遇到新的情况或任务时,它可以将新的信息整合到已有记忆中,或者形成新的记忆。例如,在强化学习中,智能体通过与环境的交互不断调整自己的策略和记忆,以获得更好的奖励。
遗忘机制
为了避免记忆过载和保持信息的有效性,智能体需要具备一定的遗忘机制。遗忘可以是主动的,也可以是被动的。主动遗忘是指智能体根据一定的策略主动删除一些不重要或过时的信息。被动遗忘则是由于时间的推移或信息的不使用而导致的自然遗忘。例如,智能体可以根据信息的使用频率或重要性来决定是否遗忘某些信息。
四、记忆的作用
问题解决
智能体可以利用记忆中的知识和经验来解决新的问题。通过回忆过去类似的问题和解决方案,智能体可以快速找到解决当前问题的方法。例如,一个智能客服系统可以利用过去的对话记录和解决方案来回答用户的问题。
学习和适应
记忆是智能体学习和适应新环境的基础。通过存储和回忆过去的经验,智能体可以不断调整自己的行为和策略,以更好地适应变化的环境。例如,一个自动驾驶汽车可以通过记忆过去的路况和驾驶经验来提高自己的驾驶安全性和效率。
预测和规划
智能体可以利用记忆中的信息进行预测和规划。通过分析过去的事件和趋势,智能体可以预测未来的情况,并制定相应的规划。例如,一个天气预报智能体可以利用过去的气象数据和模型来预测未来的天气情况。
智能体的记忆是其智能行为的重要组成部分。通过合理的存储、更新和利用记忆,智能体可以更好地解决问题、学习和适应环境,并进行预测和规划。
工具使用(Tool use)
LLM 是数字世界中的程序,想要与现实世界互动、获取未知的知识,或是计算某个复杂的公式等,都离不开不工具。所以我们需要为智能体配备各种工具以及赋予它使用工具的能力。
在智能体中,工具就是函数(Function),工具使用就是调用函数(Call Function)。在 LLM 中实现函数调用,使用到 LLM 的这个能力: Function Calling
大语言模型(Large Language Models, LLMs)中的 Function Calling 机制是指模型能够调用外部函数来执行特定任务或获取所需信息的一种能力。通过 API 调用 LLM 时,调用方可以描述函数,包括函数的功能描述、请求参数说明、响应参数说明,让 LLM 根据用户的输入,合适地选择调用哪个函数,同时理解用户的自然语言,并转换为调用函数的请求参数(通过 JSON 格式返回)。调用方使用 LLM 返回的函数名称和参数,调用函数并得到响应。最后,如果需求,把函数的响应传给 LLM,让 LLM 组织成自然语言回复用户。
功能与目的
增强功能性:通过调用外部函数,LLMs 可以执行超出其原始训练范围的任务,例如查询数据库、执行计算、调用 API 等。
提高准确性:对于需要实时数据或专业知识的任务,模型可以通过调用相应的函数来获取最新信息,从而提高其输出的准确性。
扩展能力边界:LLMs 原本仅基于其训练数据进行推理和生成文本,但通过 Function Calling,它们可以超越这些限制,执行复杂的任务。
工作原理
函数注册:首先,需要将外部函数注册到模型的环境中。这通常涉及定义函数的签名(名称、参数类型和返回类型)。
意图识别:当模型生成文本时,它会尝试理解用户请求的意图,并决定是否需要调用某个函数。
参数提取:如果需要调用函数,则模型会从生成的文本中提取必要的参数。
函数调用:模型会调用相应的函数,并传入提取的参数。
结果处理:函数执行完成后,返回结果给模型,模型根据结果生成进一步的回应。
实现方式
API 接口:通过调用 RESTful API 或 gRPC 服务来获取信息或执行任务。
库函数调用:直接调用本地安装的库函数。
自定义脚本:执行自定义脚本来完成特定操作。
数据库查询:查询数据库来获取存储的数据。
应用场景
信息查询:如天气预报、新闻摘要等实时信息获取。
数据处理:执行数学运算、统计分析等。
外部服务集成:与支付系统、地图服务等第三方服务交互。
代码执行:生成并执行简单的代码片段来解决问题。
通过 Function Calling 机制,LLMs 能够更好地服务于实际应用场景,提高了其在现实世界中的价值。function calling 具体工作流程如下图所示:
Function Calling 示例
假设有一个语言模型,用户请求生成一个简单的 Python 程序来计算两个数的和。模型不仅生成代码,还通过 Function Calling 机制调用一个函数来验证代码的正确性。
在这个例子中,Function Calling 机制可以调用一个验证函数来检查add_numbers
函数的正确性,并返回验证结果。
Function Calling 为大语言模型的应用提供了极大的灵活性和功能性,使得模型能够直接与外部系统交互,执行复杂的任务,而不仅仅是生成静态文本。这种能力在构建智能助手、自动化工具和交互式应用中尤其有价值。
AI 智能体开发平台
如果你想要开发一个 AI 智能体(AI 应用),已经比大模型爆发的初期方便太多了,随着 AI 应用需求的持续火热,智能体开发平台层出不穷。比如 Botnow 智能体开发平台,Botnow 抽象和封装那些被高频使用的模块,如记忆能力、规划能力、RAG 能力、大模型调用等。在 Botnow 智能体开发平台,用户可以通过插件、知识库、工作流等方式快速、低门槛打造高质量的智能体,并支持发布到第三方平台,同时也支持 API 调用和 Web SDK。
展望
随着大型语言模型(LLM)的迅速发展,其支持的上下文长度不断增加,参数规模日益庞大,推理能力也随之显著增强。这使得基于此类先进模型构建的智能体(AI Agents)的能力边界不断被突破。借助智能体技术,我们已经能够开发出诸如 Copilot 和 Botnow 等多样化的 AI 应用,这些应用正逐渐成为我们日常生活和工作中不可或缺的一部分。可以预见,AI 应用将迅速且彻底地重塑我们熟悉的软件形态及交互模式,并大幅提升人类的工作效率。
评论