综合介绍
Browser-Use是一个创新的开源网页自动化工具,专门设计用于让语言模型(LLM)能够自然地与网站进行交互。它提供了一个强大而灵活的框架,支持多种主流语言模型,包括GPT-4、Claude等。该工具最显著的特点是将AI能力与浏览器自动化无缝结合,支持视觉识别和HTML提取、自动管理多标签页、智能元素检测等功能。Browser-Use不仅可以执行简单的网页浏览任务,还能处理复杂的交互场景,如自动填写表单、提交申请、搜索信息等。它的设计理念是让AI代理能够像人类一样自然地使用浏览器,大大简化了网页自动化的开发过程。该工具特别适合需要进行网页自动化、数据采集、批量操作的开发者使用。
功能列表
- 支持视觉识别和HTML内容智能提取
- 自动化多标签页管理系统
- 提取已点击元素的XPath路径并能重现精确的LLM操作
- 支持自定义动作(如保存文件、推送数据库、发送通知、获取人工输入)
- 具备自我纠错能力
- 兼容LangChain支持的所有语言模型
- 支持并行运行多个AI代理
- 可配置的浏览器安全特性
- Cookie持久化存储功能
- 灵活的页面加载等待时间设置
使用帮助
1. 安装配置
- 首先通过pip安装Browser-Use包:
pip install browser-use
- (可选)安装playwright:
playwright install
- 配置环境变量:
创建.env
文件并添加必要的API密钥:
OPENAI_API_KEY=你的OpenAI API密钥
ANTHROPIC_API_KEY=你的Anthropic API密钥
2. 基本使用方法
2.1 创建简单的AI代理
from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio
async def main():
agent = Agent(
task="查找特定航班信息",
llm=ChatOpenAI(model="gpt-4"),
)
result = await agent.run()
print(result)
asyncio.run(main())
2.2 注册自定义动作
可以通过装饰器方式添加自定义动作:
from browser_use.controller.service import Controller
controller = Controller()
@controller.action('询问用户信息')
def ask_human(question: str, display_question: bool) -> str:
return input(f'\n{question}\nInput: ')
2.3 使用Pydantic定义参数模型
from pydantic import BaseModel
from typing import Optional
class JobDetails(BaseModel):
title: str
company: str
job_link: str
salary: Optional[str] = None
@controller.action('保存职位详情', param_model=JobDetails, requires_browser=True)
async def save_job(params: JobDetails, browser: Browser):
print(params)
page = browser.get_current_page()
page.go_to(params.job_link)
3. 高级功能使用
3.1 并行化代理
推荐使用单一Browser实例并为每个代理并行化上下文:
browser = Browser()
for i in range(10):
async with browser.new_context() as context:
agent = Agent(
task=f"任务 {i}",
llm=model,
browser_context=context
)
# 处理任务...
3.2 浏览器配置
可以通过BrowserConfig和BrowserContextConfig类配置浏览器行为:
browser_config = BrowserConfig(
headless=False, # 是否使用无头模式
keep_open=True, # 脚本结束后保持浏览器开启
disable_security=True, # 禁用安全特性
cookies_file="cookies.json", # Cookie存储文件
minimum_wait_page_load_time=1.0, # 最小页面加载等待时间
wait_for_network_idle_page_load_time=2.0, # 网络空闲等待时间
maximum_wait_page_load_time=10.0 # 最大页面加载等待时间
)
4. 性能优化建议
- 使用适当的页面加载等待时间,避免过长等待
- 合理使用并行化功能,提高处理效率
- 适时启用无头模式减少资源占用
- 使用Cookie持久化减少重复认证
- 根据需要调整安全特性配置
5. 故障排除
- 如遇到跨域请求问题,考虑启用
disable_security
选项 - 页面加载超时可调整相关等待时间参数
- 确保API密钥配置正确
- 检查网络连接状态
- 查看浏览器控制台日志获取详细错误信息