DLAI-浏览器智能体笔记-全-
DLAI 浏览器智能体笔记(全)
001:课程介绍 🚀
在本节课中,我们将学习AI浏览器智能体的基本概念、其面临的挑战以及本课程将涵盖的核心方法与项目。
AI浏览器智能体,或称AI网络智能体,能够登录网站、填写表单、点击网页链接,甚至为你在线下单。你的AI网络智能体可以同时利用视觉信息(即屏幕截图)和结构信息(例如网页的HTML或文档对象模型DOM表示)来进行推理并采取行动。
如果你打开一个网页并查看其底层代码,就会发现智能体在每一步可能面临的操作空间有多么庞大。😊
由于这些智能体可以自动运行一长串操作序列,任何错误都可能引发意想不到的后果,例如预订了错误的航班或订购了随机商品。或者,如果智能体误解了某个字段(比如产品名称),它可能会完全走上错误的路径,而这些错误会迅速累积。
应对挑战:Agent Q方法
上一节我们介绍了智能体可能遇到的问题,本节中我们来看看应对这些挑战的一种方法。我很高兴向大家介绍讲师D Gg和Namgog,他们是AGI Inc的联合创始人。Div Naman及其团队构建了Multion,这是一个基于他们在Agent Q论文中发表的方法的Web智能体平台。
感谢Andrew。为了应对您提到的挑战,我们引入了Agent Q。Agent Q结合了蒙特卡洛树搜索(MCTS)与自我批判机制的研究,并使用了直接偏好优化(DPO)进行迭代微调。😊
在Agent Q的搜索过程中,会探索不同的分支或操作序列,并评估其结果。这些模拟及其反馈被用来创建偏好数据集。随后,DPO算法被用于通过从这些高级偏好中学习,来微调语言策略模型。😊 这有助于优先选择那些能带来更好结果或被AI反馈排名更高的操作。

课程实践项目

接下来,我们将了解本课程中你将动手构建的项目。在本课程中,你将构建几个智能体。首先,你将构建一个简单的智能体,用于分析深度学习AI网站并列出特定主题的所有课程。然后,你将扩展此智能体的功能,使其能够执行诸如点击课程、总结课程内容甚至注册批量通讯等操作。
之后,你将深入探究作为我们Agent Q方法核心组成部分的MCTS,并解决一个寻找最优路径的网格问题。接着,你将探索Agent Q + MCTS的一个变体,该变体接收课程标题,在网络上搜索并导航结果,直到找到正确的课程。你将可视化并分析智能体在达成目标前所采取的不同树路径。
许多人为此课程做出了贡献。我要感谢来自HI Inc的Michel G和Mil My,以及来自Tvaar AI的Ash Gagari和Jeff Lawig,他们也参与了本课程的制作。第一课将是关于AI智能体的介绍。

这听起来太棒了。现在,让我们开始吧,与其只看网页,不如动手实践。😊

本节课总结:本节课我们一起学习了AI浏览器智能体的定义、其潜在风险与挑战,并初步了解了本课程将用于构建可靠智能体的核心方法——结合了MCTS和DPO的Agent Q框架。我们还预览了课程中将完成的实践项目,从基础分析到复杂导航,为后续深入学习奠定了基础。
002:Web智能体入门 🚀
在本节课中,我们将直接了解什么是Web智能体,以及它们如何被用于自动化在线任务,例如在任何商业网站上购买商品。我们还将讨论常见的挑战,例如可靠性问题、错误累积以及智能体陷入循环。让我们开始吧。


真实世界示例 📚

首先,让我们看一个真实世界的例子。想象你想在线购买书籍,但没有时间搜索和结账。在这个演示中,我们要求我们的智能体订购两本书:《Radical Candor》和《The QAR Problem》,并将它们添加到我们在亚马逊的购物车中。

以下是智能体执行任务的过程:

- 导航与搜索:智能体像人类一样导航到亚马逊网站,并智能地搜索第一本书。
- 添加商品:找到书籍后,它将其添加到购物车。
- 重复流程:接着,它开始搜索第二本书,并同样将其添加到购物车。
- 理解界面:我们可以看到,智能体准确地理解在哪里点击以及如何浏览网站。
- 完成订单:最后,智能体可以去下订单。
如你所见,智能体成功地找到了两本书并将它们添加到购物车,无需任何人工干预。这只是Web智能体能做的事情的一个例子。想象一下,这种智能体几乎可以在互联网上的任何网站上自动化任务的所有可能性。
什么是Web智能体?🤖

一个Web智能体是一个自主的软件程序,代表你自动执行在线任务。这些智能体被创建用于各种目的,例如自动化重复的在线任务、从多个来源收集信息,或监控网站的变化或更新。
Web智能体可以为我们的日常数字活动中的各种应用提供动力,范围包括:
- 增强在线搜索:超越简单的关键词查询。
- 电子商务助手:用于查找产品和完成购买。
- 社交媒体管理:包括监控和自动发布。
- 跨平台数据分析。
- 客户支持自动化。
- 旅行预订和规划。
- 以及金融、医疗保健和许多其他行业的专业应用。
构建Web智能体的关键组件 ⚙️
现在,让我们看看构建Web智能体的关键组件。这里我们探讨这些智能体如何工作的架构。一个设计良好的Web智能体由五个基本模块组成:
- 用户界面模块:允许人们用自然语言与智能体通信。
- 控制模块:作为系统的大脑,处理推理和行动决策。
- 知识库:包含智能体完成任务所需的工具、模型数据、规则和信息。
- 通信模块:管理与网站、API和其他系统的交互。
- 数据处理模块:在返回结果之前分析、处理和转换数据。
在这些模块内部,几个专门的组件协同工作:
- 解析器:可以系统地提取网站数据并解释HTML。
- 行动模型:进行决策并预测要采取的行动。
- 执行器:在网站上执行特定操作,例如点击、填写表单等。


以下是整个流程的运作方式:
- 人类向智能体提供请求。
- 智能体理解用户的请求,并根据上下文制定其方法。
- 行动模型获取网站的表示(如HTML),并确定在网页上采取什么行动。
- 接着,模型预测在当前设置下的最优行动。
- 该行动随后在网站上被执行。
- 这个循环重复,直到任务完成。
智能体如何与网页交互 🖱️

让我们看一个例子。假设你正在构建一个智能体,它可以处理视觉信息(即截图)以及结构信息(即网站的HTML DOM表示),以便在DeepLearning.AI网站上导航、查找课程并进行网站交互。

现在,我们探讨智能体如何处理DOM结构以理解页面元素。Web智能体几乎可以与网页上的任何HTML元素交互,这包括:
- 链接。
- 文本区域:用于输入信息。
- 复选框:用于表单选择。
- 单选按钮:用于选择选项。
- 下拉菜单:用于从列表中选择。
- 按钮:用于提交表单或触发操作。
- 以及重置表单字段等。
现有框架的局限性 ⚠️
为了理解现有框架的局限性,让我们检查智能体通常遵循的关键步骤:
- 规划:确定要采取什么行动。
- 推理:基于可用信息做出决策。
- 环境行动:执行计划的行动。
- 解释:向用户总结做了什么以及为什么。
在推理阶段会出现许多问题。如果智能体无法形成一个合理的计划,它可能会做出错误的决策。这就是为什么改进推理是我们后续课程的一个关键重点。
让我们看看现有自主智能体框架的主要局限性:
- 可靠性与信任挑战:确保自主系统可以被信任,并配备人工监督机制。
- 决策错误:存在错误累积以及利用与探索之间的权衡问题。
- 计划偏离与循环:在智能体执行过程中存在重复循环或计划偏离的风险。
首先,与当前的自主系统建立可靠性和信任非常困难。它们是随机的,事情可能出错。在决策错误方面,智能体受到错误累积的影响,即随着时间的推移,一连串的错误可能会增长。早期的错误可能会滚雪球般变成更大的问题,因为它们会影响后续的决策。
缺乏自我纠正意味着智能体无法识别和修复自己的错误。这可能导致灾难性的失败,因为错误会累积和放大。
有限的上下文:智能体在决策时可能会错过关键信息。没有完整的上下文,决策会变得越来越有缺陷。

错误的推理:基于不正确或不完整的逻辑过程做出的决策会导致不可预测的行为和不可靠的结果。
偏见问题:训练数据中可能存在的偏见会在智能体的决策中被放大,随着时间的推移,这会产生越来越有偏见或不公平的结果。总之,这些问题严重削弱了自主智能体的决策能力。
利用与探索的权衡 ⚖️
Web智能体不断面临一个关键的决策挑战:它们应该利用已知的信息,还是应该探索新的可能性?这个权衡从根本上塑造了智能体如何浏览网站。
在利用策略中,智能体专注于最大化奖励。它们在考虑替代方案之前,沿着单一路径深入探索。它们探索边界树中的子元素,并使用递归在更有希望的路径上导航更深。
利用的优势在于,它允许通过利用已知的成功策略来最大化当前奖励。它允许在已知价值的路径上高效利用资源。在熟悉的环境中,它能提供更可预测的性能。但它也有很多缺点,例如可能错过替代路径。智能体可能被锁定在当前策略中,如果所选路径不是最优的,它们可能无法适应。
现在,我们检查另一种方法:探索。在探索中,智能体使用广度优先搜索策略。智能体尝试新的、未经测试的路径,以发现潜在更好的奖励和策略。它不是深入探索,而是探索所有可能的方向。如图所示,智能体在开始深入之前,会检查每一层的所有子元素。当发现一个有希望的路径时,智能体继续探索。如果路径没有导向期望的状态,智能体回溯,并可以尝试替代方案。这在整个网站结构中形成了更广泛的搜索模式。
它的优势在于可以解锁新的机会,帮助发现以前未知的高奖励或更好路径。它可以防止停滞,减少陷入次优策略的风险,并使其能够适应不断变化的环境或需求。它也有一些缺点,例如可能产生更直接的代价。探索可能产生即时奖励较低的结果,甚至可能导致负面结果。它可能导致浪费时间,追求未知路径可能导致资源和时间的低效使用,并且增加决策过程的复杂性。
Web智能体的关键挑战在于确定何时利用、何时探索。在策略之间选择错误是决策错误的常见来源。理想的方法通常涉及根据上下文,自适应地平衡两种策略。
计划偏离与循环 🔄
现在,我们检查一个关键挑战:当智能体偏离其预定路径时。在当前框架的局限性中,我们现在将重点关注计划偏离和循环行为。
计划偏离发生在智能体偏离路线时。在此图中,你可以看到理想路径是一条直线,但实际路径显著偏离。这就像要求一个助手系统总结一个主题,但却收到了无关的信息。即使是像GPT-4这样的高级AI代理,在犯错时也很难自我纠正。
一旦智能体偏离或陷入困境,由于三个关键因素,恢复变得极其困难:
- 有限领域知识:智能体通常在通用信息上训练,但它们在专业任务上存在困难。
- 环境意外变化:导致其重复无效操作而非适应。
- 情境意识不足:使得智能体难以在陌生情况下导航,并识别它们何时偏离了轨道。

总结 📝

在本节课中,我们一起探讨了什么是Web智能体、构建它们的关键组件以及它们面临的主要问题。我们了解了智能体如何自动化在线任务,其核心架构模块,以及当前在可靠性、决策权衡(利用 vs. 探索)和计划偏离方面存在的挑战。在接下来的课程中,你将学习如何应对这些基本挑战。
003:构建一个简单的网页智能体 🕸️🤖
在本节课中,我们将学习如何构建一个简单的网页智能体。这个智能体能够根据自然语言指令抓取网页内容,并以结构化的格式输出结果。


概述
我们将构建一个名为“学习推荐智能体”的网页抓取工具。它的工作流程是:首先导航到DeepLearning.AI网站,然后根据指令抓取课程列表,找到特定主题的课程,并读取该课程的详细信息和学习目标。
导入必要的库
首先,我们需要导入构建智能体所需的各种库。
以下是构建智能体所需的核心库:
pandas:用于数据处理。playwright:用于自动化浏览器操作和网页抓取。OpenAI:用于调用大型语言模型(LLM)处理指令和内容。PIL(Python Imaging Library):用于处理和显示截图。hyperthon:用于辅助功能。- 自定义的辅助函数。
初始化环境
在开始编写智能体逻辑之前,我们需要设置好运行环境。
我们首先初始化OpenAI客户端,并传入API密钥。同时,确保我们的代码能够以异步方式运行。在DeepLearning.AI平台上,API密钥已经预先为您配置好了。
# 初始化OpenAI客户端
client = OpenAI(api_key=your_api_key)
创建网页抓取智能体
接下来,我们定义智能体的核心类。这个类将封装所有与网页交互和数据提取相关的功能。
我们创建一个名为 WebScraperAgent 的类。在初始化时,它会设置智能体的角色,并启动一个浏览器实例用于抓取网页的HTML内容。此外,它还支持截取屏幕截图并将其转换为缓冲区,以便更好地展示。最后,我们还需要一个方法来关闭浏览器。
class WebScraperAgent:
def __init__(self):
self.browser = None
# ... 其他初始化代码
async def scrape(self, url, instruction):
# 导航到URL,获取HTML,截图
# ... 具体实现代码
async def close(self):
# 关闭浏览器
# ... 具体实现代码
定义结构化输出格式
为了让LLM返回整齐的数据,我们需要预先定义好输出的数据结构。
我们定义一个数据结构来描述DeepLearning.AI的课程。每个课程对象包含以下字段:title(标题)、description(描述)、presenter(主讲人)、image_url(图片链接)和course_url(课程链接)。我们将创建一个包含多个此类课程对象的列表。
# 定义课程数据结构
course_schema = {
"title": str,
"description": str,
"presenter": str,
"image_url": str,
"course_url": str
}
配置LLM与系统提示词
智能体的“大脑”是大型语言模型。我们需要告诉它扮演什么角色以及具体任务。
我们初始化OpenAI客户端,并指定使用 gpt-4-mini 模型,该模型经过高度微调,擅长返回结构化的JSON响应。接着,我们定义系统提示词,明确智能体的角色是一个网页抓取代理,其任务是从HTML中提取相关信息并转换为JSON格式。我们指示它只返回JSON,不要包含任何其他格式的文本。
system_prompt = """
你是一个网页抓取智能体。你的任务是根据用户指令,从提供的HTML内容中提取相关信息,并将其转换为指定的JSON格式。
只返回JSON对象,不要添加任何解释性文字。
"""
整合抓取与处理流程
现在,我们将之前定义的各个部分组合起来,形成完整的智能体工作流。
在 WebScraperAgent 的 scrape 方法中,整个流程串联起来:首先获取目标网页的HTML内容并截取屏幕截图,然后将HTML和用户指令一起交给LLM处理,最后LLM返回结构化的JSON响应。为了确保准确性,我们还可以加入数据验证或交叉检查的步骤。
实践示例一:抓取所有课程
让我们运行第一个示例,看看智能体如何抓取网站上的所有课程。
我们首先定义目标URL(DeepLearning.AI网站)和一个基础URL(用于构建完整的课程链接)。然后,我们给出一个简单的指令:“获取所有课程”。运行智能体后,它会开始提取HTML内容、截图,并处理结果以生成结构化数据。
target_url = “https://www.deeplearning.ai”
base_url = “https://www.deeplearning.ai”
instruction = “获取所有课程列表。”
处理完成后,我们使用可视化函数来展示结果。如图所示,智能体成功抓取了网站上的所有课程,例如“LangChain记忆”、“Llama课程”等,并输出了每门课程的标题、描述、主讲人、图片和链接。同时,我们也能看到智能体抓取页面时的截图。
实践示例二:基于描述筛选课程
智能体的优势在于能理解语义。我们可以让它阅读课程描述,并只返回我们感兴趣的主题课程。
我们可以指示智能体阅读所有课程描述。这些描述可能包含课程摘要、主讲人信息等未在列表页面直接显示的细节。这样,LLM就拥有了比我们肉眼所见更丰富的信息,能够基于对课程内容的内在理解进行筛选。
现在,我们给出一个新指令:“只返回与‘检索增强生成(RAG)’主题相关的三门课程,确保输出中没有其他课程”。让我们处理并查看结果。
再次使用可视化函数,我们可以看到智能体现在返回的课程都是关于RAG的。它成功地根据描述和标签找到了相关的课程。
面临的挑战与局限性
尽管智能体功能强大,但它并非完美无缺。让我们通过一个更复杂的例子来看看当前面临的挑战。
如果我们给出一个更复杂的指令,例如“获取关于[某个主题]的顶级课程的摘要和学习要点”,让我们看看它会返回什么。
可视化结果后,我们发现智能体没有正确遵循指令。指令要求提供摘要和学习要点,但智能体可能因为无法深入理解任务,直接返回了网站上的所有课程。这表明,要完成此类任务,可能需要改进智能体,使其能够点击进入课程详情页,抓取具体的学习目标和教学大纲,然后再进行总结输出。但这可能会使智能体过度针对特定网站结构,而非通用化地理解任务。
总结


在本节课中,我们一起学习了如何构建一个简单的网页智能体。我们掌握了它抓取网页、遵循指令并输出结构化结果的基本流程。同时,我们也注意到了当前面临的挑战:有时指令可能不够清晰,或者智能体本身缺乏足够的能力来完全遵循复杂指令,从而导致输出错误。这揭示了构建可靠智能体的难点。在下一节课中,我们将探讨如何克服当前智能体所面临的一些挑战。
004:构建一个自主的网络智能体 🚀



在本节课中,我们将学习如何构建一个能够同时执行多项任务的自主网络智能体。我们将引导智能体完成诸如导航、执行操作、总结网页内容,甚至填写表单和注册新服务等任务。
概述
上一节我们介绍了智能体的基础概念,本节中我们将深入实践,使用Multion Web Agent来创建一个能够自主浏览网页并执行复杂任务的智能体。我们将从初始化客户端开始,逐步完成一系列任务。
初始化Multion客户端
首先,我们需要导入Multion客户端并初始化它。我们已准备了一些辅助函数,使实验过程更易于可视化。
以下是初始化步骤:
- 导入客户端:从环境变量加载Multion API密钥。
- 创建客户端实例:使用API密钥初始化一个简化的Multion API客户端。
- 创建新会话:为智能体创建一个新会话,并指定起始URL。我们还可以选择是否包含截图。
- 定义核心功能:我们定义了关闭会话、导航到特定URL以及在当前会话中执行任务的功能。
执行任务的函数 execute_task 是关键,其核心逻辑可以概括为以下伪代码:
def execute_task(instruction, max_steps=10):
for step in range(max_steps):
# 智能体分析当前页面
# 根据指令决定下一步操作(点击、输入、滚动等)
action = agent.decide_next_action(instruction, current_page)
# 执行操作并获取新页面状态
new_page_state = perform_action(action)
# 检查任务是否完成
if task_completed(instruction, new_page_state):
return result
return "达到最大步数,任务可能未完成。"
我们给智能体的指令包括:不应向用户提问,应利用页面上的所有必要信息,并尽最大努力完成任务。
示例一:获取课程列表
现在,让我们开始第一个示例:让智能体获取DeepLearning.AI网站上的所有课程列表。
我们首先创建一个新会话,然后执行任务。我们将最大步数限制为10步,并使用可视化函数来观察会话过程。
智能体创建会话后,开始执行任务。第一步通常是滚动页面以加载更多内容。它会持续滚动,直到到达页面底部或完成指令。
任务完成后,我们查看最终响应。智能体成功地找到了DeepLearning.AI网站上的所有课程,并以对话形式给出了详细列表。如果我们需要结构化输出(如JSON或Markdown),可以在指令中明确要求。
创建自定义浏览器界面并执行复杂任务
接下来,我们将创建一个自定义的浏览器用户界面,并使用我们初始化的Multion客户端作为会话管理器。
我们将给智能体一系列更复杂的指令:
- 找到关于特定主题(如RAG)的课程并打开它。
- 总结该课程的内容。
- 获取该课程的详细课时大纲。
- 导航到DeepLearning.AI主页。
- 使用指定的姓名和邮箱订阅新闻简报,并填写其他必填字段(如国家、职位)。
- 确保正确选择下拉菜单的值,并在看到订阅按钮后点击它。
我们定义了课程主题、姓名和邮箱等变量。
我们的Multion浏览器界面加载完成后,从DeepLearning.AI课程页面开始。
执行查找课程任务:智能体在搜索栏输入“RAG课程”,等待结果加载,并滚动页面寻找目标课程。当看到多个相关课程时,它会请求更具体的标题。根据浏览器界面显示,我们指定了“Multimodal RAG”课程,智能体随后成功打开该课程页面。



执行总结课程任务:智能体阅读课程页面后,给出了课程内容的总结。
执行获取详细课时任务:我们要求智能体提供更详细的课程大纲。它改进了输出格式,列出了课程涵盖的不同主题。经核实,智能体准确地获取了“Multimodal RAG with LlamaIndex”课程的信息,该课程包含8节课和6个编码示例。
这展示了自主AI智能体的强大能力。
执行订阅新闻简报任务:现在,我们进行更激动人心的尝试——让智能体自动订阅新闻简报。
智能体导航到DeepLearning.AI主页,开始填写表单:输入姓名“Theo”,邮箱“theo@company.com”。在达到最大步数限制后,我们指示它继续。它选择了国家为“美国”,但遗漏了填写职位。我们进行澄清后,智能体通过下拉菜单选择了“软件工程师”作为职位,并最终点击了订阅按钮,成功完成了注册流程。
总结与挑战
在本节课中,我们一起学习了如何创建自主网络智能体。我们看到了如何通过简单的指令让智能体遵循并执行任务,也看到了如何获得结构化的响应,而无需我们手动编写代码。
智能体能够以多步骤的方式与浏览器进行完全自主的交互。然而,我们也观察到了一些挑战:智能体有时可能会忘记某些步骤,或者需要更多的澄清和指导才能正确执行。尽管如此,自主智能体在自动化复杂网络任务方面展现出了巨大潜力。

我鼓励你与这个强大的浏览器界面进行互动。如果你还没有订阅DeepLearning.AI的新闻简报,不妨尝试让智能体帮你完成订阅,看看效果如何。
005:Agent Q框架详解

在本节课中,我们将学习Agent Q框架。这是一个旨在教导AI智能体如何通过多种技术进行自我纠正的框架。我们将深入探讨AI研究人员用于提升智能体性能的关键方法,全面概述Agent Q框架,并研究它如何有效解决常见的AI智能体挑战。
回顾现有框架的局限性

上一节我们介绍了现有框架的局限性。这些局限性主要来自智能体执行过程中的推理环节。具体包括:
- 可靠性问题。
- 容易出错。
- 计划偏离和循环。
智能体执行通常包含四个步骤:规划、推理、行动、观察。其中,推理部分是导致执行问题的主要来源,而这正是本节课要重点解决的问题。
引入Agent Q框架
现在,让我们来认识Agent Q。这是一个先进的算法,旨在解决上述问题并改进网页任务中的推理能力。
Agent Q通过结合以下方法论来教导智能体自我纠正:
- 蒙特卡洛树搜索:用于高效探索搜索空间。
- 自我批判机制与过程监督:为持续改进提供自我纠正机制,使智能体能够接收实时反馈。
- 直接偏好优化:这是一种强化学习算法,能够基于当前经验进行改进。
我们将学习这些方法如何协同工作,共同构建一个强大的、用于自主智能体推理的框架,即Agent Q。我们的研究团队已将相关成果发表在论文中,您可以在arXiv上找到。在接下来的实验中,您将有机会探索其中的一些概念。
第一步:理解蒙特卡洛树搜索
首先,我们来了解蒙特卡洛树搜索的工作原理。MCTS是一种用于回溯和探索的搜索方法,它允许我们在决策时提前规划多个步骤。
在MCTS中,我们从根节点开始,这代表当前状态。算法会根据目前已知的信息,沿着它认为的最佳路径前进。通过利用策略,算法在树中持续选择看起来最有希望的节点,直到到达一个需要进一步探索的节点。
此时,算法会通过添加新的可能性来扩展树,并探索这片未知区域。当我们到达一个终端节点(即无法再前进的节点)时,算法会预测继续沿着这条路径的预期未来奖励,作为节点估值。这就像快速推演一个“假设”场景,以评估这个选择可能带来的结果。
在获得未来奖励估值后,MCTS会反向传播更新它访问过的所有节点。本质上,这是在告诉算法:“这条路径导致了那个结果”,并据此更新知识。
MCTS的神奇之处在于,这个过程会重复多次。随着迭代次数的增加,算法会变得更“聪明”,更专注于有希望的部分,减少在无益部分的探索。这就像你通过思考不同走法及其后果来提高棋艺一样。
第二步:理解自我批判与过程监督
接下来,我们看看Agent Q的第二步:自我批判机制和过程监督。这是一种为AI提供反馈以改进其推理能力的方法。

当用户提出类似“预订餐厅”的请求时,AI会收到请求以及之前交互的任何上下文或历史记录。AI必须从多个可能的操作中选择一个,例如:是先选择日期和时间,还是先选择餐厅,或者先进入OpenTable主页从头开始。
这时,批判组件开始工作。你可以将其视为AI的内部顾问,它分析当前浏览器显示的内容、用户的实际需求以及当前最相关的信息。基于此分析,批判组件可以确定哪些操作最合理,并为每个选项提供详细的反馈。
在我们的餐厅预订例子中,与其随机尝试操作,不如构思一个更好的操作序列:首先,进入OpenTable主页;然后,搜索餐厅名称;最后,选择日期和时间。批判组件对操作进行排序,指导AI做出更好的选择。这就像你在解决问题前,会在心里考虑不同方法,然后决定最佳路径一样。
第三步:理解基于人类反馈的强化学习
现在,我们进入Agent Q的第三步:基于人类反馈的强化学习。这种方法通过融入人类关于“什么最有效”的判断,让AI系统学会做出更好的决策。这就像通过持续的反馈和指导来训练一个助手。
我们通过一个在OpenTable上预订餐厅的具体例子,来理解所有这些如何结合在一起。当智能体运行蒙特卡洛树搜索和自我批判过程时,它会生成所谓的偏好数据。这些是来自同一用户查询的不同结果之间的比较,告诉我们哪个结果更好(例如,结果1优于结果2)。
这些偏好数据对于改进系统至关重要,用于构建奖励模型。奖励模型为不同的操作分配奖励值,例如给好的行为打+1分,给用处不大的行为打-1分。这些奖励有助于指导AI智能体做出更好的决策。
然后,系统生成样本输出,并将其反馈给奖励模型进行评估。这就形成了一个持续的学习循环:AI尝试、获得反馈、从中学习、然后改进。这个循环是强化学习的核心,就像我们人类从经验和随时间推移的反馈中学习一样。
第四步:理解直接偏好优化
最后,我们学习Agent Q的第四步:直接偏好优化。这是RLHF的一种更快捷的方法。
DPO通过直接更新模型(而无需创建单独的奖励模型)来简化AI从偏好中学习的过程。它通过直接的反馈循环来优化AI的决策,本质上是在学习过程中创建了一条捷径。DPO获取偏好数据,并直接对AI模型本身进行微调。
这种强大的方法与我们之前的技术相辅相成:蒙特卡洛树搜索探索可能性,自我批判评估选项。您可以在本幻灯片底部引用的研究论文中阅读更多关于DPO的内容。这种方法显著加快了学习速度,同时保持甚至提高了响应质量。

Agent Q框架总结与效果演示

总结一下,Agent Q框架包含三种方法:
- 蒙特卡洛树搜索:一种用于在搜索中进行结构化探索的方法。
- 自我批判机制与过程监督:融入AI反馈以做出更好决策的方法,也是搜索过程的一部分。
- 直接偏好优化:一种基于智能体先前所见进行优化的强化学习算法。

前两种方法结合,用于搜索、识别失败并找到更好的选项。这三种方法共同解决了我们之前提到的主要AI挑战。


让我们看一个在OpenTable上预订座位的例子:
- 智能体首先错误地导航到了错误的餐厅。
- Agent Q识别出这个失败,并导航回主页。
- 然后它纠正路线,前往正确的餐厅。
- 接着,它意外选择了错误的日期,但可以通过打开日期选择器然后选择正确日期来纠正。
- 最后,完成座位选择并成功预订。
我们在OpenTable预订场景中测试了Agent Q。基准测试显示,GPT-4o的成功率仅为62.6%。不包含任何AI反馈的Agent Q准确率达到75.2%。不包含MCTS的Agent Q准确率达到81.7%。而我们最终的、包含上述全部三种方法的Agent Q算法,在此场景中取得了惊人的95.4%的成功率。
课程总结

本节课中,我们一起学习了Agent Q及其三个核心要素:蒙特卡洛树搜索、自我批判机制和直接偏好优化。在下一课中,您将亲身体验MCTS和Agent Q的实际应用。
006:深入探索AgentQ与MCTS 🧠


在本节课中,我们将深入探索蒙特卡洛树搜索算法,这是一种在复杂设计空间中寻找最优解的强大算法。随后,我们将探讨AgentQ框架中Amias的方法,以创建能够完成网页任务的自主浏览器智能体。

概述
我们将首先在一个网格世界示例中实现MCTS,观察不同参数如何影响算法的探索与收敛。之后,我们会将MCTS应用到浏览器环境中,看看AgentQ如何利用它来寻找完成任务的最优路径。
网格世界中的MCTS实现
上一节我们介绍了MCTS的基本概念,本节中我们来看看如何在一个具体的网格世界环境中实现它。
首先,我们导入必要的包并创建初始网格状态。在代码中,0代表可通行路径,1代表障碍物,2是起始位置,3是目标终点状态。
# 示例:创建初始网格状态
grid = [
[0, 0, 1, 0, 0],
[0, 2, 1, 0, 0],
[0, 0, 0, 0, 3],
[1, 1, 0, 1, 0],
[0, 0, 0, 0, 0]
]
我们定义网格边界并绘制地图。在地图中,绿色单元格(如位置7,6)是起点,红色单元格(如位置2,4)是终点,标记为W的单元格是障碍墙。智能体的目标是找到从起点到终点的最短路径,且只能向北、南、东、西四个方向移动。
探索权重的影响
接下来,我们运行MCTS并比较不同探索权重对结果的影响。我们设置了低权重(1.0)和高权重(3.0),并进行五次探索模拟,总共运行约1000次迭代。
以下是MCTS的核心选择公式,它平衡了探索与利用:
公式: UCT(node) = Q(node)/N(node) + c * sqrt(ln(N(parent)) / N(node))
其中,c是探索权重,Q是节点累计奖励,N是访问次数。

我们使用提供的MCTS grid wrapper来触发算法并收集最优路径。完成后,通过Compare_exploration_weight函数可视化结果。
可视化与分析
在结果热力图中,我们可以看到不同探索权重下的最终状态。颜色越深(如深绿色),代表该状态的Q值越高,路径越优;颜色越浅(如亮黄色),则代表Q值较低,路径次优。
- 在权重为1.8的示例中,算法从初始状态出发,最终收敛到终点状态,路径颜色较深,表明找到了较优解。
- 同时,算法会避开Q值最低的状态(图中颜色最浅的区域),这些是智能体不应选择的不优路径。
为了让问题更具挑战性,我们可以增加更多障碍物或扩大网格,以观察MCTS在不同权重和模拟次数下,如何快速收敛到最短路径。但需确保为智能体留出一条从起点到终点的可行路径。
在浏览器环境中应用MCTS
完成了网格世界的探索后,现在我们将MCTS应用到浏览器环境中的AgentQ框架里。
在AgentQ中,世界模型由浏览器状态表示。状态包括DOM元素、URL和页面摘要。可执行的动作包括点击、输入和导航。MCTS的整个过程遵循以下步骤:
- 初始化世界模型和搜索配置。
- 运行MCTS算法,为后续的直接偏好优化生成Q奖励值。
可视化MCTS决策树
我们可以使用plot_tree和DFS_browser_node函数来可视化MCTS生成的决策树。
决策树中的节点代表了不同的状态(URL、消息、动作和响应),并附有Q值。终端节点标志着任务完成。
现在,让我们可视化这棵树。我们可以看到一棵复杂的MCTS决策树。将其缩放后,可以看清整棵树及其选择的路径。
- 算法从初始状态(
good accomplish)开始,并分配了一个Q值。 - 它探索了第一个节点,发现不是最优路径后便放弃了。
- 随后探索的第二个节点同样被放弃。
- 第三个节点被选中,因为它具有更高的Q值,是一个更优的路径。
- 最终,节点4被赋予了最高的Q值,并被确定为终端状态(即达到了目标页面“Building Evaluating Advanced Rack”)。算法判定这是从可能路径中到达目标的最短路线。
- 在其他分支上,智能体曾导航到“社区深度学习AI”页面,甚至到了“社区课程排序”页面。但当它发现这些页面是关于课程的讨论而非课程本身时,便放弃了这些路径。
- 同样,在寻找关于“Rack”的课程时,它遇到了关于“多模态Rack搜索”或“知识图谱”的讨论页面,判定为错误页面后,便回退到初始状态。
通过这个过程,智能体确定节点4是最短且最优的路线,成功找到了目标课程列表页面。
总结

本节课中,我们一起学习了如何实现蒙特卡洛树搜索算法,并观察了它在网格世界中的行为。更重要的是,我们看到了MCTS如何被应用于真实的浏览器环境中,帮助AgentQ智能体寻找完成任务的最短最优路径,并有效提升了其决策效果。
007:AI智能体的未来 🚀
在本节课中,我们将探讨驱动AI智能体发展的关键因素及其演变。你将了解当前AI智能体技术的局限性,并探索其未来可能的发展方向,以及这些发展将如何塑造AI领域的格局。

驱动AI智能体发展的关键因素 🔑
上一节我们介绍了课程主题,本节中我们来看看推动AI智能体普及的几个核心驱动力。
以下是两个主要驱动因素:
- 技术进步:专用硬件(如GPU)和云计算能力的提升,使得大型模型和更复杂的智能体能够在更短的时间内运行。同时,计算和算法创新为智能体自主规划和行动提供了基础。
- 数据可用性:如今,通过开放数据计划和大规模数据平台,我们拥有庞大的数据集,使智能体能够学习用于决策的复杂模式。

AI智能体面临的挑战 ⚠️
尽管前景广阔,但AI智能体领域仍面临重大挑战。首先,它们缺乏统一性。
以下是当前生态系统中的主要问题:

- 框架与实现多样化:存在多种不同的框架和实现方式,但缺乏让它们协同工作的标准方法。
- 生态系统碎片化:当前生态系统中活动很多,但互操作性非常困难。
因此,需要某种标准化来实现互操作性、可扩展性和协作。
评估挑战与解决方案 🎯
随着AI智能体在公共网络导航方面越来越熟练,在模拟真实条件的可控环境中评估其性能变得至关重要。
传统的评估方法往往难以模拟实际网络交互的动态和不可预测性。我们看到了太多网站,需要确定性的环境来确保每次评估条件一致,消除可能影响性能评估的变量。
对用户行为和智能体在网络导航中表现的洞察有限,可以通过模拟真实交互来纠正,包括加载错误、延迟和中断,以测试智能体的韧性和适应性。
最后,评估方法在应对不可预测的交互方面存在不足,需要全面的评估指标,不仅要衡量交互的最终结果,还要衡量其有效导航复杂网络场景的能力。

新基准:REALBench 🌐
为了应对这些挑战,我们正在构建一个新的基准测试:REALBench。
REALBench通过提供一个确定性的、启发式的“游乐场”来应对先前的挑战,该游乐场模拟了真实的浏览器体验。这种设置允许一致地评估AI智能体执行任务(如信息检索和交易操作)的能力,并为浏览器智能体模型建立了基线。
这种集体方法旨在为最先进的智能体建立强大的基线和排行榜,使公众和学术界受益。我们鼓励你通过提供反馈、分享见解以及为完善评估场景做出贡献来参与这个项目。通过协作,我们可以增强AI智能体的评估框架,确保它们能够很好地处理现实世界网络导航任务的复杂性。
从单智能体到多智能体系统 🤖
到目前为止,我们讨论的是单个AI智能体。现在,作为一个用户,你可以拥有一个多智能体系统,其中一个管理智能体监督多个专业的工作智能体。

然而,随着每个人都在创建自己的智能体,这可能导致一个混乱的生态系统。
多智能体系统的挑战与考量 🧩

让我们探讨多智能体系统面临的挑战和考量。
以下是三个主要挑战:
- 协调复杂性:确保自主智能体之间行为一致,在没有集中监督的情况下可能具有挑战性。
- 通信开销:这些分散的智能体可能需要更复杂的通信协议来促进有效协作。
- 安全考量:在开放的去中心化环境中维护系统完整性并防止恶意行为,需要强大的安全措施。

因此,未来需要的是模块化、专业化和控制。
以下是未来的一些研究方向:
- 探索结合集中式和去中心化元素的混合架构,以利用两种方法的优势。
- 开发更有效、允许更好协调的先进通信协议。
- 研究去中心化多智能体系统在不同领域的应用,如协作机器人、传感和模拟。
以下是一些需要进一步探索的多智能体架构,例如使用监督者、基于网络的架构、自定义多智能体工作流以及层级结构。
未来趋势与方向 📈

现在,我们来看看未来的趋势和方向。
按页面推进能力:通过更好的自然语言理解和使用,深度学习将使智能体能够在线执行复杂的操作序列,例如代表用户预订约会、研究和总结信息、跨网站协调。
多智能体系统:智能体在共享环境中协作,并通过相互交互学习复杂的策略。
分布式与云计算:分布式和云计算的进步将支持其他发展,并有助于构建可部署在现实世界中的、更具可扩展性的系统。
总结 📝

在本节课中,我们一起探讨了当前生态系统中的一些挑战,以及未来如何通过标准化和改进来支持大规模部署的趋势。我们了解了驱动AI智能体发展的技术因素,识别了评估和互操作性方面的关键问题,并展望了从单智能体到复杂多智能体系统演进的未来方向。
008:课程总结
在本节课中,我们将回顾整个课程的核心内容,总结从基础概念到高级框架的学习历程,并展望AI智能体技术的未来。
课程概述
在本课程中,我们从零开始学习了关于Web智能体的知识。我们首先了解了它们的基本概念和工作原理,然后逐步构建了简单和自主的Web智能体。接着,我们探索了用于自我纠正的高级框架,例如Agent Q,最后审视了当前AI智能体技术的局限性与未来前景。
核心内容回顾
上一节我们探讨了AI智能体技术的边界,现在让我们来总结整个课程的核心要点。
以下是本课程涵盖的主要学习阶段:
- 智能体基础:我们学习了Web智能体的定义及其基本工作原理。
- 构建简单智能体:我们动手实践,构建了基础的Web智能体。
- 构建自主智能体:我们进一步开发了能够自主执行任务的Web智能体。
- 探索高级框架:我们研究了如Agent Q这类支持自我纠正功能的高级框架。
- 审视现状与未来:我们分析了当前技术的局限性并展望了未来的发展领域。
总结与展望
本节课中,我们一起学习了构建AI浏览器智能体的完整路径。从理解基础概念到实践构建,再到探索前沿框架与未来可能性,我们完成了对Web智能体技术的系统性认识。
我们期待看到您运用所学知识构建出自己的作品。

浙公网安备 33010602011771号