本专栏将探索AI Agents、设计以及实际应用。
本系列文章内容:
- 简介(本文)
- 从零开始构建一个Agent
- AI Agent框架
- AI Agent的类型
- 工作流程与代理
- Agent架构
- Multi-Agent系统
- 短期和长期记忆
- 代理式检索增强生成(Agentic RAG)
- 代理防护机制(Agentic Guardrails)
- 模型上下文协议(Model Context Protocol,MCP)
- 评估
随着大语言模型(Large Language Models,LLMs)的出现,人工智能实现了巨大的飞跃。这些强大的系统彻底改变了自然语言处理领域,但当它们与 “智能体能力”(即推理、规划和自主行动的能力)相结合时,其真正的潜力才得以释放。这正是大语言模型代理(LLM Agents)发挥作用的地方,它代表了我们与人工智能交互和利用人工智能的方式发生了范式转变。
本博客旨在全面概述人工智能代理,深入探讨其特点、组件和类型,同时探索它们的发展历程、面临的挑战以及潜在的未来发展方向。
让我们首先了解从大语言模型到人工智能代理的演变过程。
1. 从大语言模型(LLMs)到人工智能代理
大语言模型应用的形式演变是我们在现代应用中所见过的发展速度最快的领域之一。
1.1 从传统聊天机器人到由大语言模型驱动的聊天机器人
聊天机器人并不是什么新鲜事物;在 “生成式人工智能(generative AI,gen AI)” 这个术语出现之前,你可能就已经在某个网站上与聊天机器人进行过交互了。在生成式人工智能出现之前的传统聊天机器人,与如今由人工智能驱动的对话代理有着本质的区别。以下是它们通常的运行方式:
- 基于启发式的回复:
- 传统聊天机器人基于规则逻辑(“如果-那么” 语句)运行。
- 仅限于预定义的规则,无法处理复杂或模糊的查询。
- 固定回复:
- 回复是静态且预定义好的。
- 通过检测特定的关键词或短语来触发。
- 缺乏灵活性和对话深度。
- 转接人工:
- 总是会有一个 “联系人工客服” 的按钮,用于处理未解决的查询。
- 处理复杂问题时,人工干预仍然至关重要。
1.2 大语言模型驱动的聊天机器人简介
- ChatGPT 的推出:2022 年 11 月 30 日,OpenAI 推出了由 GPT-3.5 驱动的 ChatGPT,这是首个主流的大语言模型应用。ChatGPT 保留了人们熟悉的聊天机器人界面,但背后是基于在海量互联网语料库上训练的先进大语言模型技术。
- Transformer 架构:GPT(生成式预训练变换器,Generative Pre-trained Transformer)基于谷歌在 2017 年推出的 Transformer 架构。它使用自注意力机制来分析输入序列,能够更深入地理解上下文。
- 大语言模型的能力:与传统聊天机器人不同,大语言模型能够生成类似人类语言、与上下文相关且新颖的文本。其应用场景包括代码生成、内容创作、增强客户服务等等。
- 局限性:
- 个性化:在长时间的对话中,难以保持一致的个性化交互。
- 幻觉问题:可能会产生在事实层面上不正确但逻辑连贯的回复,其输出是基于概率而非经过验证的知识生成的。
- 解决局限性的方法:
- 像检索增强生成(Retrieval-Augmented Generation,RAG)这样的技术正在被探索,以使输出基于可靠的外部数据。
- 这些进展旨在减少不准确的情况,并提高由大语言模型驱动的系统的稳健性。
1.3 从大语言模型驱动的聊天机器人到检索增强生成(RAG)聊天机器人和人工智能代理
- 检索增强生成(RAG)聊天机器人:检索增强生成(Retrieval-Augmented Generation,RAG)将外部数据检索与大语言模型的能力相结合,以生成准确且基于上下文的回复。
- 知识来源:
- 非参数知识:从互联网或专有数据库等外部来源检索的实时数据。
- 参数知识:大语言模型在训练过程中嵌入的知识。
- 优势:减少幻觉问题,提供最新信息,并确保回复是可验证的。
- 提示工程:诸如上下文学习(单次学习、少次学习)、思维链(chain-of-thought,CoT)和反应式行动(ReAct)等技术,通过引导大语言模型的推理和输出生成,提高了回复质量。
- 知识来源:
- 人工智能代理:人工智能代理是由大语言模型发展而来,增强了工具使用、多步骤规划和推理能力。
- 工具使用:大语言模型可以通过分析任务并通过结构化模式(例如 JSON)分配参数,以编程方式调用预定义的函数或应用程序编程接口(APIs)。
- 环境:人工智能代理在迭代执行环境中运行,能够根据反馈进行动态决策和持续适应。
- 智能代理系统:这些是具有自主代理的计算架构,能够集成多个系统组件、做出决策并实现目标。
- 代理式检索增强生成(Agentic RAG):
- 将大语言模型的推理、工具使用和规划能力与语义信息检索相结合。
- 实现能够分解任务、执行复杂查询并利用工具解决问题的动态系统。
从大语言模型驱动的聊天机器人到检索增强生成(RAG)聊天机器人和人工智能代理的转变,代表着向更智能、自适应且工具集成的系统的转变,这些系统能够实时解决复杂问题。
2. 什么是人工智能代理?
人工智能代理是一种系统,它可以通过传感器感知其环境,处理这些信息,并通过执行器对环境采取行动,以实现特定的目标。可以把它看作是一个数字实体,能够观察、思考和行动 —— 很像人类与周围环境的交互方式,但它是以编程和有目的的方式进行的。
人工智能代理的概念建立在 “理性行为” 的基本思想之上:一个代理应该采取能够最大化其成功实现指定目标的行动。这种理性正是人工智能代理与简单的响应式程序的区别所在。
2.1 人工智能代理的特点
人工智能代理具有几个关键特点:
- 自主性:在没有人工干预的情况下运行,独立做出决策。
- 反应性和主动性行为:对环境变化做出反应,并采取主动措施来实现目标。
- 适应性:通过处理新信息和经验来学习和进化。
- 目标导向性:朝着实现预定义的目标或优化结果而努力。
- 交互性:与其他代理或人类进行通信和协作。
- 持续性:持续运行,监控并响应动态环境。
3. 人工智能代理的核心组件
从核心来看,一个人工智能代理由以下组件组成:
- 感知
- 推理
- 行动
- 知识库
- 学习
- 通信接口
3.1 感知(传感器)
这些组件使代理能够感知其环境。它们可以是物理传感器(如摄像头、麦克风)或数字输入(如数据流、用户交互)。
3.2 推理(处理器)
这是代理的 “大脑”,它处理来自传感器的信息,并确定合适的行动。这个组件实现了代理的决策算法,并维护任何必要的内部状态。
人工智能代理使用各种决策机制,如基于规则的系统、专家系统和神经网络,以便做出明智的选择并有效地执行任务。
3.3 行动(执行器)
这是代理影响其环境的方式,或者简单地说,是使代理能够采取行动的方式。这些可以是物理的(如机器人手臂、扬声器)或数字的(如数据库更新、显示输出)。
3.4 知识库
这是代理用于做出决策的信息存储库,包括预编程的知识和学习到的信息。
3.5 学习
使代理能够随着时间的推移通过从数据和经验中学习来提高其性能。它使用诸如强化学习、监督学习和无监督学习等技术,随着时间的推移提高人工智能代理的性能。
3.6 通信接口
允许代理与其他代理、系统或人类进行交互。
我们将在下面的部分中详细介绍每个组件,同时阐述代理是如何工作的。
4. 人工智能代理如何与其环境交互
这种交互循环通常被称为 “感知-规划-行动” 循环或 “感知-行动” 循环。让我们以自动驾驶汽车为例来理解每个阶段:
4.1 感知阶段
可以将此视为代理的 “感知” 阶段:
- 传感器 → 处理 → 状态更新
- 代理通过其传感器接收输入。
- 对信息进行处理和解释。
- 根据新信息更新当前状态。
4.2 决策阶段
这是代理的 “思考” 阶段,在此阶段代理会:
- 当前状态 + 目标 → 评估选项 → 选择最佳行动
- 代理评估可能的行动。
- 考虑目标和约束条件。
- 根据可用信息选择最优行动。
4.3 行动阶段
这是 “执行” 阶段:
- 执行行动 → 观察变化 → 开始新循环
- 选定的行动通过执行器来执行。
- 结果导致环境发生变化。
- 代理通过传感器观察结果,从而开始一个新的循环。
这个循环会持续重复,通常每秒会重复很多次。这个循环之所以强大,原因如下:
- 适应性:如果发生了意外情况,代理可以在下一个感知阶段检测到这一情况,并相应地调整其行动。
- 学习机会:代理可以将预测结果与实际结果进行比较,以改进未来的决策。
- 目标导向行为:每个循环都能使代理在遵守约束条件的同时,更接近其目标。
为了从编程角度理解它,让我们用恒温器来类比,比较三个复杂程度不同的层次:
- 简单程序
# 简单程序
if temperature > desired_temperature:
turn_on_cooling()
- 仅遵循固定规则。
- 不考虑后果。
- 没有学习或适应能力。
- 响应式程序
# 响应式程序
if temperature > desired_temperature:
if time_of_day == "peak_hours":
turn_on_cooling_eco_mode()
else:
turn_on_cooling_normal()
- 规则更复杂。
- 有一定的上下文感知能力。
- 仍然没有真正的智能。
- 人工智能代理
class SmartThermostat:
def perceive(self):
current_temp = get_temperature()
time = get_time()
electricity_price = get_current_price()
weather_forecast = get_forecast()
user_preferences = get_preferences()
return Environment(current_temp, time, electricity_price,
weather_forecast, user_preferences)
def think(self, environment):
possible_actions = [
NoAction(),
CoolNormal(),
CoolEco(),
PreCool(),
WaitForOffPeak()
]
# 评估每个行动的预期结果
best_action = None
best_utility = float('-inf')
for action in possible_actions:
predicted_state = predict_future_state(environment, action)
utility = calculate_utility(predicted_state)
if utility > best_utility:
best_action = action
best_utility = utility
return best_action
def act(self, action):
action.execute()
monitor_results()
update_learning_model()
- 考虑多个因素。
- 预测结果。
- 从经验中学习。
- 为实现长期目标进行优化。
- 平衡相互竞争的目标。
同样的循环适用于所有人工智能代理:
- 聊天机器人感知文本输入,决定合适的回复,并通过生成文本采取行动。
- 交易机器人感知市场数据,决定交易策略,并通过进行交易采取行动。
- 机器人吸尘器感知房间布局和灰尘情况,决定清洁模式,并通过移动和启动清洁机制采取行动。
5. 人工智能代理如何运作?
假设你的智能冰箱不只是在牛奶用完时重新订购牛奶 —— 它还能根据你的浏览习惯,建议你改用杏仁奶。这是贴心之举,还是有点让人不安呢?由你来评判!
这就是人工智能代理的简要概述。
人工智能代理能够理解人类语言(多亏了大语言模型),对信息进行推理,规划行动,并且无需人类持续输入就能执行任务。它们能够处理复杂问题,这使得它们比简单的自动化工具要先进得多。与基本脚本不同,人工智能代理被集成到软件系统中,能够与它们的环境进行复杂的交互。
人工智能代理与简单自动化有何不同?
嗯,它们的不同主要体现在两个关键能力上:
- 工具
- 规划
你已经看到过 ChatGPT 在基本数学问题上犯错。这是因为它只是根据其训练数据进行回复。
同样地,如果我让你计算 85 乘以 65 的结果,作为人类,如果你已经知道答案,你可以直接回答;或者你可以使用一个叫做计算器的工具来计算,对吗?
对于代理来说也是一样的,要让它们能够使用工具。
第二点是规划能力。
还是以刚才的数学计算为例,只有当你知道乘法运算,或者知道要向计算器输入哪些参数(即 85、65 以及乘法运算)时,你才能解决这个问题。
这就是规划和推理的作用。
以下是当你向人工智能代理发出查询时的流程。
5.1 编排层(控制中心)
假设我想创建一个人工智能代理会议调度器,我向调度器查询:“我想为我所有的学生举办一个网络研讨会。”
这将被视为人机智能代理的一个触发条件。
查询可以是文本、音频、视频或图像。(你已经知道,无论数据类型是什么,对于机器来说,它总是会被转换为数值)
这个查询将由编排层来处理,编排层也就是人工智能代理的控制中心。
编排层有四项主要工作:
- 记忆:维护你整个交互过程的记忆。
- 状态:存储整个过程的当前状态。
- 推理:引导代理进行推理。
- 规划:有哪些步骤,下一步是什么?
它将与模型(大语言模型)进行交互。
5.2 模型(大脑)
模型是整个人工智能代理的集中决策器。
它通常是一个像大语言模型这样的人工智能模型。
为了理解查询内容、制定计划并确定下一步行动,模型会使用诸如以下的推理和逻辑框架:
- 反应式行动(ReAct)
- (推理 + 行动)确保行动是经过深思熟虑的。
- 思维链(Chain-of-Thought)
- 通过中间步骤进行推理。
- 思维树(Tree-of-Thoughts)
- 探索多种路径以找到最佳解决方案。
模型确定要采取的行动,并使用特定的工具来执行这些行动。
5.3 工具(双手)
通过使用工具,代理可以与外部世界进行交互。例如计算器、应用程序编程接口(APIs)、网络搜索、外部数据库等等。
工具使代理能够执行超出模型能力范围的行动,访问实时信息,或完成现实世界的任务。
6. ✅ 何时使用代理 / ⛔ 何时避免使用代理
当你需要大语言模型来确定应用程序的工作流程时,代理是很有用的。但它们往往有些大材小用。问题在于:为了高效地解决手头的任务,我真的需要工作流程具有灵活性吗?如果预先确定的工作流程经常无法满足需求,那就意味着你需要更高的灵活性。让我们举个例子:假设你正在开发一个应用程序,用于处理一个冲浪旅行网站上的客户请求。
你可以预先知道,这些请求将属于两类中的某一类(根据用户的选择),并且对于这两种情况,你都有预先定义好的工作流程。
- 想要了解一些关于旅行的信息?⇒ 让他们可以访问一个搜索栏,以便在你的知识库中进行搜索。
- 想要与销售部门沟通?⇒ 让他们在联系表单中输入信息。
如果这种确定性的工作流程适用于所有查询,那么无论如何都可以直接编写代码来实现一切!这将为你提供一个 100% 可靠的系统,不会存在让不可预测的大语言模型干扰你的工作流程而引入错误的风险。为了简单和稳健起见,建议尽量避免使用任何代理行为。
但是,如果工作流程无法提前很好地确定呢?
例如,一个用户想问:“我周一可以来,但我忘了带护照,所以可能会推迟到周三。有没有可能在周二早上带我和我的装备去冲浪,并且提供取消保险呢?” 这个问题取决于许多因素,并且上述预先确定的标准可能都不足以处理这个请求。
如果预先确定的工作流程经常无法满足需求,那就意味着你需要更高的灵活性。
这就是代理设置发挥作用的地方。
在上面的例子中,你可以创建一个多步骤的代理,它可以访问天气应用程序编程接口(API)以获取天气预报,访问谷歌地图 API 来计算旅行距离,访问员工可用情况仪表板,以及访问你知识库上的检索增强生成(RAG)系统。
直到最近,计算机程序还局限于预先确定的工作流程,试图通过堆积 if/else 语句来处理复杂性。它们专注于极其狭窄的任务,比如 “计算这些数字的总和” 或者 “在这个图中找到最短路径”。但实际上,大多数现实生活中的任务,就像我们上面的旅行例子一样,并不适合预先确定的工作流程。代理系统为程序打开了处理现实世界任务的广阔天地!
7. 应用领域
人工智能代理是多功能的工具,能够在广泛的领域中提高生产力、效率和智能水平。它们正越来越多地应用于日常应用程序以及先进的、具有重大影响力的领域中。
8. 结论
人工智能代理正在改变我们与技术交互的方式,提供了前所未有的自主性、智能性和适应性。从简单的反射式代理到复杂的学习系统,它们正被应用于各个行业,以解决复杂问题并增强人类的能力。然而,构建有效的人工智能代理也面临着挑战,包括伦理问题、数据依赖以及可扩展性问题。
随着人工智能技术的不断发展,人工智能代理的未来具有巨大的潜力。通过关注通用人工智能、人机协作以及伦理考量,我们可以创建出不仅能够高效执行任务,而且符合人类价值观并对社会做出积极贡献的代理。
- 人工智能代理是能够感知、决策和行动以实现目标的自主系统。
- 核心组件包括传感器、执行器、决策引擎和学习模块。
- 人工智能代理被应用于虚拟助手、自动驾驶汽车和医疗保健等应用领域。
通过理解基础知识并及时了解技术进展,我们可以利用人工智能代理的力量来推动创新,创造更美好的未来。
鸣谢
在这篇博客文章中,我们整理了来自各种来源的信息,包括研究论文、技术博客、官方文档等等。每个来源都在相应的图片下方进行了适当的鸣谢,并提供了来源链接。
- https://medium.com/@vipra_singh/ai-agents-introduction-part-1-fbec7edb857d