揭秘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)之后一直没有时间重新审视该框架,正好趁着给同事分享的 ...
随机推荐
- 国产AI生态新突破!“息壤”+DeepSeek王炸组合来了!
2025,国产AI火力全开! 天翼云"息壤"深度适配DeepSeek-R1/V3 实现"国产模型+国产算力+国产云服务" 全产业链闭环 打造国产AI新高度 助力 ...
- SCCPC2024 游记
打了一堆板子,一个都没用上. 队友:zhicheng,nityacke 开场发现 H 是签到,NIT 签了.然后盯 F(圆向某个方向运动,问存不存在一个时刻使得全在长方形之内),发现不外乎一堆二次方程 ...
- C# 深度学习:对抗生成网络(GAN)训练头像生成模型
通过生成对抗网络(GAN)训练和生成头像 目录 通过生成对抗网络(GAN)训练和生成头像 说明 简介 什么是 GAN 什么是 DCGAN 参数说明 数据集处理 权重初始化 生成器 判别器 损失函数和优 ...
- 开源EFCore 对比实体与实际数据库结构的工具-GZY.EFCoreCompare
前言 GZY.EFCoreCompare 是一个用于 对比数据库结构和 EF Core 代码中的 DbContext 的库. 它基于 EF Core 的 Scaffolding 机制,生成 Datab ...
- DevExpress WPF 在RibbonControl的Header中添加搜索框
主要代码: <dxb:BarEditItem Name="txtSearch" EditHorizontalAlignment="Center"> ...
- OpenLayers 修改 Feature 的 Style 后不实时更新问题,解决惹~~~
比如我修改了 字体 feature.getStyle().getText().setFont('12px sans-serif') 地图上没有及时更新,需要缩放或者进行其他操作才可以 这个时候调用 l ...
- [python]pip换源详解
[python]pip换源详解 前言 现有的各个网站上的pip换源方式,很零散,或者是很单调的重复,又或者只是给出命令,尽管这通常就够用了. 但是,我希望汇总一下,然后再结合pip的官方文档来做一 ...
- mongodb logical sessions can't have multiple authenticated users
前言 使用 mongodb db.auth,切换用户时,报以下错误 logical sessions can't have multiple authenticated users 原因是 mongo ...
- linux mongodb安装
更新依赖包 安装前我们需要安装各个 Linux 平台依赖包. Red Hat/CentOS: sudo yum install libcurl openssl Ubuntu 18.04 LTS (&q ...
- Golang 入门 : 语言环境安装
下载介绍 在go的官方网址上下载go最新版本https://golang.google.cn/dl/,或者在 Go 的中文网上下载https://studygolang.com/dl,两个网站打开的内 ...