browser-use 深度技术解析,开启智能体网页浏览新时代

部署运行你感兴趣的模型镜像

一、基本介绍

1. 项目背景

近期,Manus 以及 OpenAI 的 DeepSearch 产品热度飙升,顺势带火了一个名为 browser-use 的 Python 工具库。值得一提的是,该库获得了诸多资本的青睐,像 YC 等公司为其注入了 1700 万美元的融资,发展态势迅猛。据悉,创始人 Müller 仅用了一个周末便完成了想法验证。起初,他们采用开源方式助力社区,随后 browser-use 便声名大噪。由此可见,在 AI 社区中,快速迭代验证想法并开源共享是极为有效的开发模式

此次进行技术分享,主要是面向可能会在智能体产品或团队中应用 browser-use 的相关人员,期望能对大家有所助益,同时也期待大家后续能开展更多相关技术分享。鉴于市场上已有众多类似 browser-use 的使用教程(文末参考资料中会附上相关链接),本次技术分享将重点聚焦于 browser-use 的技术原理解析,以及我个人发掘的一些有趣技术点。

2. 解决的问题

browser-use 工具主要是为了实现智能体轻松浏览网页

有人或许会问,为何不能直接使用 web search?其实,早在早期,AI 助手就能通过接入搜索引擎获取最新网络信息。

然而,web search 存在显著弊端:

  • 信息获取受限:我们本质上调用的是搜索引擎 API,并非原始互联网数据。这就导致信息相对有限,像携程订票的最新价格、淘宝商品的最新信息等大量站内信息,搜索引擎往往无法获取,这类垂直站内信息需进入各站点内部方可获取。
  • 功能单一:在实际操作场景中,如购买火车票等,web search 功能显得力不从心,它仅能用于搜索基本信息,而 browser-use 则更为便捷,通过模拟人类使用网页的方式,从而解锁更多的功能。

3. 问题解决途径

基于 playwright 库实现:playwright 原本用于网页端到端测试,是一个 Python 库,主要用于自动化 Web 浏览器测试与爬虫工作。

具体实现方式

  • 纯文本方式:browser-use 库通过解析网页文件(如 html/css/javascript 代码),将获取的页面元素以文本形式提供给大语言模型(LLM)。这种方式通用性强,对模型要求不高,只要模型支持函数调用,或具备较强的指令跟随、格式遵守能力即可。例如,它能与包括 GPT-4、Claude 3 和 Llama 2 在内的所有 LangChain 大语言模型兼容。
  • 文本 + 视觉方式:对于支持多模态的模型,同时提供图片与页面元素能显著提升效果,比如多模态 LLM 可以阅读网页中的图片数据,而纯文本的 LLM 无法做到。

4. 收费策略

除了开源免费版本之外,官方还提供了付费服务,主要是提供一些技术咨询和私有化部署上的支持。对于大部分使用场景来说,开源免费版本已经完全满足我们的需求了

二、效果实测

以下为 我改写过的测试代码,其主要任务是:访问 栋搞西搞-优快云博客,并浏览第一篇文章,将文章内容概要列出来

from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio
from pydantic import SecretStr
from browser_use import BrowserConfig, Browser
import base64
import os

# Basic configuration
config = BrowserConfig(
    # 如果希望使用无头浏览器,需要设置为 True
    headless=False,
)

browser = Browser(config=config)

# 这里面我使用的是火山引擎的DeepSeek V3模型,你可以换成你需要希望使用的模型接口提供商,并替换 model name和 api key
llm=ChatOpenAI(base_url='https://ark.cn-beijing.volces.com/api/v3',
               model='{your ark model endpoint ID}',
               api_key=SecretStr('{your api key}'))


def save_base64_image(base64_data, output_path):
    """
    将base64编码的图片保存到本地指定路径

    参数:
        base64_data (str): base64编码的图片数据,可以包含或不包含header (如 'data:image/jpeg;base64,')
        output_path (str): 保存图片的完整路径,包括文件名和扩展名

    返回:
        bool: 保存成功返回True,否则返回False
    """
    try:
        # 如果base64_data包含header,则去除header
        if ';base64,' in base64_data:
            base64_data = base64_data.split(';base64,')[1]

        # 确保输出目录存在
        output_dir = os.path.dirname(output_path)
        if output_dir and not os.path.exists(output_dir):
            os.makedirs(output_dir)

        # 解码base64数据并写入文件
        with open(output_path, 'wb') as f:
            f.write(base64.b64decode(base64_data))

        return True
    except Exception as e:
        print(f"保存图片时出错: {e}")
        return False

async def main():
    agent = Agent(
        browser=browser,
        task="访问 https://blog.youkuaiyun.com/thomas20,并访问第一篇文章,将文章内容概要列出来",
        llm=llm,
        use_vision=False, # 如果使用的是非多模态模型,必须设置为False
        save_conversation_path="

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值