AI个人学习
和实操指南

[转]从零拆解一款火爆的浏览器自动化智能体,4步学会设计自主决策Agent

以前我们开发的大多数智能体是固定的工作流模式,很少有按照下面的框架,开发具有自主决策自主使用工具的智能体。

 


 

前两天,我分享了一款可以自动使用浏览器完成简单任务的开源Agent——browser-use

上面演示的是它自动搜索 ‘渡码’,并打开了我的博客。browser-use 是一款开源 Agent,在 GitHub 上有 1.5w star,一条命令就可以在本地安装使用,门槛非常低。

 

自从上次分享完之后,我的职业病就犯了,总想拆解一下看看是怎么实现的,所以就有了今天这篇文章。browser-use 只用了一条提示词完成了上面第一张图中 Agent 的四个模块——Memory、Planning、Tools和Action。这条提示词在源文件 prompts.py 中,有130行

 

虽然提示词有点长,但不用担心,按照上面四个模块拆解完就会发现如此清晰、简单。

上面这段提示词是对四个模块的定义,下面我们一个一个来说。

 

Memory(记忆) - 记录已经完成的任务和接下来要进行的任务。

"memory": "Description of what has been done and what you need to remember until the end of the task",

我把上面‘打开博客’案例的执行过程记录了下来,可以看到 Memory 实际的栗子

'memory': "Baidu is open, ready to search for '渡码'."

Planning(规划- 根据当前页面(网页)判断上一步执行是否成功,生成接下来应该执行的任务。

"evaluation_previous_goal": "Success|Failed|Unknown - Analyze the current elements and the image to check if the previous goals/actions are successful like intended by the task. Ignore the action result. The website is the ground truth. Also mention if something unexpected happened like new suggestions in an input field. Shortly state why/why not","next_goal": "What needs to be done with the next actions"

这里包含两部分,第一步是 evaluation_previous_goal 判断之前任务是否成功,之前的任务是什么,可以在记忆中获取,这就解释了为什么第一张图中 Memory 有一条虚线指向 Planning。

之前任务状态决定了下一个任务的规划,如果之前任务失败则重试,如果成功则规划新任务。
实际的栗子:

'evaluation_previous_goal': 'Success - Baidu was successfully opened in a new tab.',

'next_goal': "Input '渡码' into the search box and submit the search."

 

Tools(工具)- browser-use 定义了15个可以操作网页的工具。

工具的定义会放在提示词中,以便大模型选择。每一个工具都有对应的代码用于完成具体的任务。

Action(行动)- 根据 Planning 生成一系列具体的行动直接上栗子:

'action': [{'input_text': {'index': 12, 'text': '渡码'}}, {'click_element': {'index': 13}}]

这个例子中,有两个行动,第一步,在页面元素标号12的地方(搜索框)输入‘渡码’;第二步,在页面元素标号13的地方(搜索按钮)点击,完成搜索。

只不过巧合的是,在 browser-use 中所有 Action 都是用 Tools 完成。

有些朋友可能会有疑问,这些标号是怎么来的。

browser-use 是通过分析页面 HTML 代码,识别出页面中的组件(元素),并给每个组件设置一个标号。

在这个页面中,可以看到五颜六色的标记框和框上的标号,这就是 browser-use 识别的。

最终这些信息会转成 ‘1[:]<a name="tj_settingicon">设置</a>’ 这种格式的文本,追加到提示词中,送入大模型

这样,大模型就能知道页面长什么样,从而可以规划任务。

我觉得这个思路非常值得学习,正是由于大模型具备强大的理解能力,才能用几行文本就代替一个复杂的页面,将一件看似复杂的事情大大简化。

browser-use 在实现上还有一些其他值得学习的细节,比如:有些 Action 执行后可能导致页面变化,这时候会中断任务,重新生成新 Action。

再比如,支持视觉大模型,上传整个网页截图,可以让大模型更好理解页面,从而更好地规划任务。感兴趣的朋友可以下载源码继续研究。

另外,最近看到智能体一个新趋势——主动学习。依赖这项能力,Genius智能体仅用10%的数据和2小时训练就在经典游戏Pong中超越顶尖人类玩家和其他AI模型。

我在工作中搭建智能体也深有体会,由于工作中是私有场景,智能体不理解你的业务,所以就无法给你做出正确的 Planning,这时候智能体自主学习能力就很有必要了。

未经允许不得转载:首席AI分享圈 » [转]从零拆解一款火爆的浏览器自动化智能体,4步学会设计自主决策Agent

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文