揭秘AI自动化框架Browser-use(终):利用MCP与Spring AI,3行代码复刻Browser-use实现
技术背景与目标
在前几篇文章中,我们深入解析了Browser-use框架的核心机制,包括DOM树遍历与分析、提示词构造、任务分解与规划、以及浏览器操作的函数调用。我们将通过Spring AI和Playwright/MCP协议,复刻一个简化版的Browser-use实现,展示如何用3行代码完成复杂的浏览器自动化任务。
上一篇(公众号首发)-# 揭秘AI自动化框架Browser-use(四):Browser-use记忆模块技术解析
Playwright/MCP服务配置
在实现之前,我们需要配置Playwright/MCP服务,以确保Spring AI能够与Playwright的MCP服务协同工作。以下是Playwright/MCP服务的配置示例:
{
"mcpServers": {
"Playwright": {
"command": "npx.cmd",
"args": [
"@playwright/mcp@latest"
],
"env": {}
}
}
}
- command: 指定启动命令,这里使用
npx.cmd来启动Playwright的MCP服务。 - args: 传递给命令的参数,这里使用
@playwright/mcp@latest来确保使用最新版本的Playwright MCP。 - env: 环境变量配置,可以根据需要设置。
代码实现解析
以下是基于Spring AI和Playwright/MCP协议的简化版Browser-use实现:
var chatClient = chatClientBuilder
.defaultSystem("You are a thoughtful assistant that breaks down complex tasks into steps. After planning, execute the steps using available tools.")
.defaultTools(new SyncMcpToolCallbackProvider(mcpSyncClients))
.defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory()))
.build();
String userInput = "通过bing搜索2个关于中国股市消息最权威的网站, 并通过这2个网站获取今天中国股市的情况,分别总结2个网站关于中国股市的情况,最后输出总结报告";
System.out.println("\nASSISTANT: " + chatClient.prompt(userInput).call().content());
代码架构解析
Spring AI与Playwright/MCP协议的结合
Spring AI框架结合Playwright/MCP协议,实现了工具的动态调用和任务编排。通过McpSyncClient和ToolCallbackProvider,开发者可以将工具能力暴露给LLM,使其能够动态调用这些工具。ChatClient的配置与任务执行
- 系统提示词:通过
defaultSystem方法定义AI助手的行为逻辑,明确其任务分解与执行的职责。 - 工具暴露:
SyncMcpToolCallbackProvider将Playwright/MCP工具暴露给LLM,使其能够调用预定义的浏览器操作。 - 记忆管理:
MessageChatMemoryAdvisor结合InMemoryChatMemory,确保任务执行的连贯性,支持多步骤任务的上下文管理。
- 系统提示词:通过
任务执行与结果输出
用户输入的任务通过chatClient.prompt()传递给LLM,LLM根据任务需求调用Playwright/MCP工具,完成任务执行并返回结果。Spring AI内部处理MCP调用时,会递归调用工具,直到大模型不再执行MCP调用,才会完成一轮对话输出。
任务执行流程
任务分解
LLM根据用户输入的任务,将其分解为多个子任务,例如搜索权威网站、导航到目标页面、提取信息等。工具调用
LLM通过Playwright/MCP协议调用预定义的工具,例如Bing搜索引擎、网页导航工具、内容提取工具等。结果汇总与输出
LLM将从多个工具获取的结果进行汇总,生成最终的总结报告。
输出结果示例
以下是任务执行的输出结果:
为了完成这个任务,我将按照以下步骤进行操作:
1. 使用Bing搜索引擎来查找两个关于中国股市消息最权威的网站。
2. 导航到这两个网站,并收集有关今天中国股市的信息。
3. 对从每个网站上获得的信息进行总结。
4. 输出最终的总结报告。
现在,我将开始执行第一步,即使用Bing搜索引擎来查找两个最权威的中国股市消息网站。
1. **中国证券网(China Securities Journal)**
- 网站地址: https://www.cs.com.cn/
- 描述: 中国证券网是由新华社主办,是中国证监会指定的信息披露媒体。它提供了全面的证券市场和金融市场的报道,包括最新的股市行情、宏观经济政策、证券市场和上市公司等方面的信息。
2. **上海证券报(Shanghai Securities News)**
- 网站地址: https://www.cnstock.com/
- 描述: 上海证券报是上海证券交易所的官方报纸,也是中国证监会指定的信息披露媒体之一。该网站提供了丰富的股市信息,包括市场分析、公司新闻、政策解读等内容。
接下来,我将访问这两个网站,收集今天的中国股市情况。
从中国证券网(China Securities Journal)获取到的今日中国股市情况如下:
- **中央汇金公告**:中央汇金公告表示充分认可当前A股的配置价值,并已再次增持ETF。这表明了中央汇金对中国股市的信心。
- **A股尾盘大举加仓**:尾盘时段,A股市场出现了大举加仓的现象,特别是农业股走强,沪深300ETF集体放量,显示出市场资金的活跃度。
- **汇丰最新调查**:汇丰最新调查显示,全球机构投资者看好中国市场前景,这为中国股市带来了正面的外部支持。
- **上交所确认国泰君安会员名称变更**:上交所确认国泰君安会员名称变更为国泰海通,这可能涉及一些内部调整,但对整体市场的影响不大。
- **中国外汇储备**:中国外汇储备连续16个月稳定在3.2万亿美元以上,反映出国家经济基本面的稳固。
从上海证券报(Shanghai Securities News)获取到的今日中国股市情况如下:
- **中央汇金公司再次增持**:中央汇金公司已再次增持A股ETF,并表示未来将继续增持,显示出其对中国股市的长期看好。
- **南向资金放量**:南向资金出现明显的放量迹象,这表明部分投资者对港股市场的兴趣增加,同时也可能影响A股市场的情绪。
- **美股指期货大跌**:美股指期货在新的一周交易中继续下跌,这对全球股市包括中国股市可能产生一定的负面影响。
- **央行连续第五个月增持黄金储备**:中国央行连续第五个月增持黄金储备,环比增加9万盎司。这反映了央行对黄金作为一种避险资产的需求增加。
- **证监会支持优质民营企业**:证监会发布专题,强调将加力支持优质民营企业做强做优做大,这对中国股市中的民营企业板块是一个积极的信号。
### 总结报告
#### 中国证券网(China Securities Journal)
- **中央汇金公告**:中央汇金公告表示充分认可当前A股的配置价值,并已再次增持ETF。
- **A股尾盘大举加仓**:尾盘时段,A股市场出现了大举加仓的现象,特别是农业股走强。
- **汇丰最新调查**:全球机构投资者看好中国市场前景。
- **上交所确认国泰君安会员名称变更**:上交所确认国泰君安会员名称变更为国泰海通。
- **中国外汇储备**:中国外汇储备连续16个月稳定在3.2万亿美元以上。
#### 上海证券报(Shanghai Securities News)
- **中央汇金公司再次增持**:中央汇金公司已再次增持A股ETF,并表示未来将继续增持。
- **南向资金放量**:南向资金出现明显的放量迹象。
- **美股指期货大跌**:美股指期货在新的一周交易中继续下跌。
- **央行连续第五个月增持黄金储备**:中国央行连续第五个月增持黄金储备。
- **证监会支持优质民营企业**:证监会强调将加力支持优质民营企业做强做优做大。
### 结论
综合两家权威网站的信息,可以得出以下结论:
- **市场情绪积极**:中央汇金公司的增持和汇丰的调查均显示了市场对中国股市的积极看法。
- **资金活跃**:A股尾盘的大举加仓和南向资金的放量表明市场资金较为活跃。
- **外部因素影响**:美股指期货的下跌可能对全球股市包括中国股市产生一定的负面影响,但这种影响暂时被国内的积极因素所抵消。
- **经济基本面稳固**:中国外汇储备的稳定和央行连续增持黄金储备反映了国家经济基本面的稳固。
- **政策支持**:证监会对优质民营企业的支持政策将进一步提升市场对这些企业的信心。
总体来看,尽管存在一些外部不确定性,但中国股市的基本面和政策环境依然稳健,市场情绪保持积极。
今天是2025-04-07,股市大跌,不知道各位炒股的兄弟咋样了。
问题与优化方向
上下文管理问题
Spring AI在执行MCP调用时,如果内部有循环调用,会携带全量的上下文(包含每次MCP服务返回的内容),导致上下文过长,可能引发大模型异常和数据提取异常。优化建议
- 上下文裁剪:引入滑动窗口算法或上下文裁剪机制,保留最近的对话内容,避免上下文过长。
- 多模态信息集成:结合视觉和文本信息,提升任务执行的准确性。
- 提示词模板化:通过模板化与参数化提示词,提升任务分解与规划的效率。
总结与展望
通过Spring AI和Playwright/MCP协议,我们成功复刻了一个简化版的Browser-use框架。这种实现不仅展示了现代AI工程中提示词工程和上下文管理的核心实践,还为开发者提供了一个高效、模块化的实现思路。未来,我们可以通过优化上下文管理和提示词模板化,进一步提升系统的性能和扩展性。
如果您对本文的技术细节和源码实现感兴趣,欢迎关注我的微信公众号【松哥ai自动化】。每周我都会在公众号首发一篇深度技术文章,从源码角度剖析各种实用工具的实现原理。在公众号后台回复关键词“Browser-use”,即可获取本文涉及的代码仓库链接。。
别让技术的浪潮落下你,赶紧关注【松哥ai自动化】,一起探索AI自动化技术的无限可能!
揭秘AI自动化框架Browser-use(终):利用MCP与Spring AI,3行代码复刻Browser-use实现的更多相关文章
- XSSer:自动化XSS漏洞检测及利用工具
转载自FreeBuf.COM XSS是一种非常常见的漏洞类型,它的影响非常的广泛并且很容易的就能被检测到. 攻击者可以在未经验证的情况下,将不受信任的JavaScript片段插入到你的应用程序中,然后 ...
- python自动化测试(3)- 自动化框架及工具
python自动化测试(3) 自动化框架及工具 1 概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到 ...
- python+request接口自动化框架
python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...
- python自动化框架(unnitest+selenium+htmlreport)
上一篇零零散散的写了一些python unnitest的一些知识,这里讲讲我在实际中使用到的自动化测试框架,算是上篇记录的补充!其实我觉得:什么框架都无所谓,关键是当如果用你的框架发现了bug,能尽量 ...
- 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...
- Android自动化框架介绍
随着Android应用得越来越广,越来越多的公司推出了自己移动应用测试平台.例如,百度的MTC.东软易测云.Testin云测试平台…….由于自己所在项目组就是做终端测试工具的,故抽空了解了下几种常见的 ...
- 转载:python + requests实现的接口自动化框架详细教程
转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...
- Python3+Selenium2完整的自动化测试实现之旅(七):完整的轻量级自动化框架实现
一.前言 前面系列Python3+Selenium2自动化系列博文,陆陆续续总结了自动化环境最基础环境的搭建.IE和Chrome浏览器驱动配置.selenium下的webdriver模块提供的元素定位 ...
- 基于Selenium的web自动化框架
转自 : https://www.cnblogs.com/AlwinXu/p/5836709.html 1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台. ...
- 基于Selenium的Web自动化框架增强篇
在写完上一篇“基于Selenium的Web自动化框架”(http://www.cnblogs.com/AlwinXu/p/5836709.html)之后一直没有时间重新审视该框架,正好趁着给同事分享的 ...
随机推荐
- 解决使用yarn安装依赖出现“The engine "node" is incompatible with this module. Expected version "^14.18.0 || ^16.14.0 || >=18.0.0". Got "17.9.0"”的问题
1.问题描述 某天在使用yarn安装依赖的时候,突然出现如下错误导致安装依赖终止: The engine "node" is incompatible with this modu ...
- FANUC发那科机器人维护保养与故障处理分析
发那科机器人维护保养与故障处理分析 掌握知识:掌握发那科机器人维护保养与故障处理分析 每台机器人都需要预防性保养,这样可以保证它们在生产线上保持最佳性能和实现一致性,当机器人没有进行定期的预防性保养检 ...
- 什么是A型或者B型剩余电流保护器?
我国的剩余电流保护装置(RCD)指导性标准GB/Z 6829-2008(IEC/TR 60755:2008,MOD)<剩余电流动作保护器的一般要求> 从产品的基本结构.剩余电流类型.脱扣方 ...
- mysql连接出现java.sql.sql exception:服务器时区值'''_''''无法识别或表示多个时区
在连接mysql的JDBC的url后面加上服务器的时区:serverTimezone=UTCjdbc:mysql://localhost:3306/geek?useUnicode=true&c ...
- CART回归树基本原理(具体例子)
id3不能直接处理连续性的特征,需要将连续性的转化成离散的,但是会破坏连续性特征的内在结构. 一.概念 CART全称叫Classification and Regression Tree.首先要强调的 ...
- flutter - [03] 运算符&条件表达式
题记部分 一.算术运算符 var a=13; var b=5; 运算符 说明 示例 结果输出 + 加 print(a+b); 18 - 减 print(a-b); 8 * 乘 print(a*b); ...
- Flink - [08] 状态一致性
题记部分 一.什么是状态一致性 有状态的流处理,内部每个算子任务都可以有自己的状态.对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确.一条数据也不应该丢失,也不应该重复 ...
- linux 删除文件提示 opration not permitted 处理方法(宝塔删除文件提示无法删除)
问题描述:linux系统中使用rm -rf强制删除文件,提示 opration not permitted,无法删除成功(宝塔删除文件提示无法删除),该问题确定为已关闭所有安全软件及防止恶意篡改的软件 ...
- PHP将变量存储在数据库中,读取并执行变量的方法
http://www.edbiji.com/doccenter/showdoc/4/nav/1214.html 例如将下边的字符串存储到数据库中您好,您的验证码是".$authcode.&q ...
- rust学习笔记(1)
参考 rust圣经 参考 通过例子学习rust cargo 是rust的包管理器+编译工具 创建新项目 使用下述指令创建一个新的项目 cargo new rust_learn 执行 使用 cargo ...