项目概述

browser-use 是一个基于 Python 的开源库,旨在简化 AI 代理与浏览器之间的交互。它融合了先进的 AI 技术和浏览器自动化功能,通过集成 Playwright 等浏览器自动化工具,允许开发者使用大型语言模型(LLM)来自动化浏览网页、提取信息和模拟用户操作1, 3

browser-use 的目标是为开发者提供一个灵活、可扩展的框架,用于构建复杂的网页自动化任务,从而提高网页数据抓取和处理的效率1。它提供了一个强大而简单的接口,使 AI 代理能够访问网站并执行各种任务,例如网页导航、元素定位、表单填写和数据抓取3

image-20250309122529633

WebVoyager数据集上的表现👆。WebVoyager数据集难度虽高,但存在局限性:主要测试代理规划能力,未覆盖网站核心挑战(如含iframe/Shadow元素的复杂页面)。部分任务存在歧义性(人类也可能有不同解读),但目前仍是最佳可用基准。

image-20250309122811108

核心功能详解

browser-use 的核心功能主要围绕浏览器自动化和 AI 集成展开,包括以下几个方面1, 3

  • AI 融合: 将 AI 技术融入到浏览器自动化操作中,允许开发者使用支持 LangChain 的大型语言模型(LLM),如 GPT-4、Claude 等来自动化浏览网页、提取信息、模拟用户操作等1, 3

  • Playwright 集成:browser-use 集成了 Playwright,这是一个由微软开发的端到端(E2E)测试工具,用于自动化 Web 浏览器操作。Playwright 支持 Chromium(Chrome、Edge)、Firefox 和 WebKit(Safari)三大浏览器引擎,并适用于跨平台(Windows、macOS、Linux)。通过 Playwright,browser-use 可以实现对浏览器的精确控制,包括页面导航、元素点击、表单填写等1, 3

    • 实际用例:自动化登录网站、模拟用户在网页上的操作流程等。
  • LangChain 集成:browser-use 还集成了 LangChain,这是一个用于构建大语言模型(LLM)应用的开发框架。LangChain 通过模块化设计简化了 LLM 应用开发流程,支持开发者快速搭建基于语言模型的复杂应用,如聊天机器人、知识库问答和自动化工作流等。通过 LangChain,browser-use 可以实现对网页内容的智能分析和理解,从而更好地指导浏览器自动化任务1, 3

    • 实际用例:使用 LLM 分析网页结构,自动提取关键信息,例如新闻标题、文章内容、产品价格等。
  • 多种大语言模型(LLM)支持:browser-use 的 Web UI 扩展支持多种 LLM,包括 Gemini、OpenAI、Azure OpenAI、Anthropic、DeepSeek、Ollama 等1, 3。这使得开发者可以根据自己的需求选择合适的 LLM,从而获得最佳的性能和效果。

    • 实际用例:使用 OpenAI 的 GPT 模型进行网页内容生成,使用 Azure OpenAI 进行企业级应用部署。
  • 多标签页管理: 能够自动管理多个标签页,确保 AI 代理能够高效地在不同页面之间切换3

  • 视觉识别与内容提取: 能够自动解析网页内容,提取文本、图片等视觉元素以及 HTML 结构,为 AI 代理提供丰富的输入信息3

  • 支持多种 LLM: 与 LangChain 紧密集成,支持使用任何 LangChain 支持的 LLM 模型3

  • 自我纠正机制: 提供自我纠正机制,在发现错误时重新尝试或调整策略,从而提高自动化任务的成功率。

Web UI

browser-use 提供了一个用户友好的 Web UI,可以方便地与 AI 模型进行对话,并支持自定义浏览器,无需重复登录或认证1, 3。Web UI 简化了操作流程,降低了使用门槛1

  • 实际用例:通过 Web UI 与 LLM 对话,指定需要抓取的数据类型,然后由 browser-use 自动完成数据抓取任务。
  • 远程桌面控制:通过 Docker 安装 browser-use 的 Web UI 时,会打开一个 agent 交互页面和一个 VNC 浏览器模拟页面。在 agent 交互页面下达指令,VNC 页面上展示执行过程。结合 cpolar 等内网穿透工具,browser-use 可以实现远程桌面控制,无需公网 IP1
  • 自定义浏览器:browser-use 支持自定义浏览器,允许开发者配置浏览器参数、管理 cookies、设置用户代理等。这使得 browser-use 可以更好地适应不同的应用场景和需求1
    • 实际用例:设置特定的用户代理,模拟不同的用户行为,从而避免被网站的反爬虫机制识别。

安装和配置

见github。

使用示例

以下是一个使用 browser-use 查找从巴厘岛到阿曼的单程航班,并在 Google Flights 上返回最便宜的选项的示例3

from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio

async def main():
    # 初始化AI代理,并设置任务描述和LLM模型
    agent = Agent(
        task="Find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights. Return me the cheapest option.",
        llm=ChatOpenAI(model="gpt-4")  # 这里使用GPT-4模型,你可以根据需求选择其他模型
    )
    # 运行AI代理并获取结果
    result = await agent.run()
    print(result)

# 运行主函数
asyncio.run(main())

以下是一个使用browser-use获取github仓库的前五个issue的例子1

from langchain_openai import ChatOpenAI
from browser_use import Agent
from dotenv import load_dotenv
import os
load_dotenv()

import asyncio

api_key = os.getenv('Silicon_Cloud_API_KEY')
base_url = os.getenv('Base_URL')
model = os.getenv('Model')

llm = ChatOpenAI(model=model, api_key=api_key, base_url=base_url)

async def main():
    agent = Agent(
        task="获取https://github.com/OpenInterpreter/open-interpreter仓库的前五个问题",
        llm=llm,
        use_vision=False,
    )
    result = await agent.run()
    print(result)

asyncio.run(main())

截屏2025-03-09 12.32.50

截屏2025-03-09 12.33.00

应用场景

browser-use 适用于多种应用场景,以下是一些典型的应用场景1, 3

  • 网页截图:自动化批量截图,用于网站内容监控、视觉测试、内容存档等。
  • 数据抓取(Web Scraping):智能数据提取,用于市场调研、竞争情报、价格监控、新闻聚合等。
  • 自动化测试:AI 驱动的测试用例生成和自动化测试脚本编写,用于 Web 应用的回归测试、冒烟测试、UI 测试等。
  • 内容生成:自动化生成各种类型的网页内容,例如自动填写表单、生成产品描述、撰写评论等,用于内容营销、SEO 优化、广告创意生成等。
  • AI 代理与浏览器交互:使用自然语言指令控制浏览器行为,用于智能助手、自动化工作流、RPA(机器人流程自动化)等。
  • 远程桌面控制:远程技术支持、远程服务器管理、远程演示等。
  • 在线订票: 自动化查找和预订机票、酒店等。
  • 求职申请: 自动化填写求职申请表。
  • 智能客服:结合 LLM 和浏览器自动化,可以实现智能客服,自动回答用户的问题,并引导用户完成操作。
  • 自动化金融分析:自动抓取和分析金融数据,生成投资报告和风险评估。
  • 智能招聘:自动抓取招聘信息,筛选候选人,并进行初步面试。
  • 自动化内容审核:自动审核网页内容,识别违规信息,并进行处理。
  • 智能家居控制:通过浏览器自动化控制智能家居设备,例如灯光、空调、电视等。
  • 游戏自动化:通过浏览器自动化玩网页游戏,例如自动打怪、自动升级等。

优势和局限性

browser-use 的优势1, 3

  • AI 集成:通过集成 LLM,可以实现对网页内容的智能分析和理解,从而更好地指导浏览器自动化任务。
  • 简化操作:Web UI 提供用户友好的界面,降低了使用门槛。
  • 远程控制:支持远程桌面控制,方便远程技术支持和管理。
  • 自定义浏览器:支持自定义浏览器,可以更好地适应不同的应用场景和需求。

browser-use 的局限性1, 3

  • 依赖第三方库:依赖 Playwright、LangChain 等第三方库,如果这些库出现问题,可能会影响 browser-use 的功能。
  • 元素定位问题:部分元素定位可能存在问题,对某些组件的支持有限。
  • 性能:使用 LLM 进行网页内容分析可能会影响性能。
  • 成本:使用 GPT-4o 等高级模型可能需要网络代理,并且成本较高。