browser-use 的简单使用

1、browser-use是什么

Browser Use 是一个基于 Python 开发的开源库,它将先进的 AI 技术与浏览器自动化功能深度融合。通过集成Playwright等浏览器自动化工具,Browser Use允许开发者使用任何支持LangChain的大型语言模型(如GPT-4、Claude、DeepSeek等)来自动化浏览网页、提取信息、模拟用户操作等。

官网:Browser Use - Make websites accessible to AI agents

项目网址 :https://github.com/browser-use/browser-use

2、使用教程

1、把项目clone下来

git   clone  https://github.com/browser-use/browser-use.git
  1. 新建虚拟环境(python >=3.11.3)
bash 复制代码
conda  create  -n   browser-use  python=3.12

conda activate  browser-use

3、进入项目,查看readme文件

安装第三方库

bash 复制代码
pip install browser-use

安装 playwright

bash 复制代码
playwright install

然后创建Agent(官方以openai为例)

bash 复制代码
from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio

async def main():
    agent = Agent(
        task="Go to Reddit, search for 'browser-use' in the search bar, click on the first post and return the first comment.",
        llm=ChatOpenAI(model="gpt-4o"),
    )
    result = await agent.run()
    print(result)

asyncio.run(main())

如果没有openai-key的可以使用其他模型,下面以DeepSeek为例:

该文件在 browser-use/examples/deepseek.py

bash 复制代码
import asyncio
import os

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from pydantic import SecretStr

from browser_use import Agent

# dotenv
load_dotenv()

api_key = os.getenv('DEEPSEEK_API_KEY', 'sk-xxxxxx')
if not api_key:
	raise ValueError('DEEPSEEK_API_KEY is not set')


async def run_search():
	agent = Agent(
		task=(
			
			"1. 在搜索框中输入抖音并搜索"
			'2. 点击搜索结果中的第一个链接'
			'3. 关闭扫码登录'	
            '3. 返回第一个视频的内容'
   
		),
		llm=ChatOpenAI(
			base_url='https://api.deepseek.com/v1',
			model='deepseek-chat',
			api_key=SecretStr(api_key),
		),
		use_vision=False,
	)

	await agent.run()


if __name__ == '__main__':
	asyncio.run(run_search())

运行结果如下:

DeepSeek 的API获取方式如下:

网址:DeepSeek

还可以体验界面版的:

该文件在 browser-use/examples/gradio.py

注:1、运行时记得修改文件名,否则会报错

2、原文件要获取openai-key,下面的代码是以DeepSeek为例的修改版

3、'sk-xxxxxxxxx' 替换为自己的DeepSeek的api-key 即可运行

import asyncio
import os
from dataclasses import dataclass
from typing import List, Optional
from pydantic import SecretStr
import gradio as gr
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from rich.console import Console
from rich.panel import Panel
from rich.text import Text

from browser_use import Agent

load_dotenv()


@dataclass
class ActionResult:
	is_done: bool
	extracted_content: Optional[str]
	error: Optional[str]
	include_in_memory: bool


@dataclass
class AgentHistoryList:
	all_results: List[ActionResult]
	all_model_outputs: List[dict]

api_key = os.getenv('DEEPSEEK_API_KEY', 'sk-xxxxxxxxx')
def parse_agent_history(history_str: str) -> None:
	console = Console()

	# Split the content into sections based on ActionResult entries
	sections = history_str.split('ActionResult(')

	for i, section in enumerate(sections[1:], 1):  # Skip first empty section
		# Extract relevant information
		content = ''
		if 'extracted_content=' in section:
			content = section.split('extracted_content=')[1].split(',')[0].strip("'")

		if content:
			header = Text(f'Step {i}', style='bold blue')
			panel = Panel(content, title=header, border_style='blue')
			console.print(panel)
			console.print()


async def run_browser_task(
	task: str,
	model: str = 'deepseek-chat',
	headless: bool = True,
) -> str:

	agent = Agent(
		task=task,
		llm=ChatOpenAI(
			base_url='https://api.deepseek.com/v1',
			model='deepseek-chat',
			api_key=SecretStr(api_key),
		),
		use_vision=False,
	)

	result = await agent.run()
		#  TODO: The result cloud be parsed better
	return result
	


def create_ui():
	with gr.Blocks(title='Browser Use GUI') as interface:
		gr.Markdown('# Browser Use Task Automation')

		with gr.Row():
			with gr.Column():
				task = gr.Textbox(
					label='Task Description',
					placeholder='E.g., Find flights from New York to London for next week',
					lines=3,
				)
				model = gr.Dropdown(
					choices=['gpt-4', 'gpt-3.5-turbo','deepseek-chat'], label='Model', value='deepseek-chat'
				)
				headless = gr.Checkbox(label='Run Headless', value=True)
				submit_btn = gr.Button('Run Task')

			with gr.Column():
				output = gr.Textbox(label='Output', lines=10, interactive=False)

		submit_btn.click(
			fn=lambda *args: asyncio.run(run_browser_task(*args)),
			inputs=[task, model, headless],
			outputs=output,
		)

	return interface


if __name__ == '__main__':
	demo = create_ui()
	demo.launch()

结果如下:

官网示例如下:

相关推荐
Want59534 分钟前
Python新春烟花
开发语言·python·pygame
EDPJ35 分钟前
(2025,BioLM,综述)用于生物信息学的 LLM
人工智能·深度学习·语言模型
martian66539 分钟前
第14篇:从入门到精通:掌握python上下文管理器
开发语言·python
梦魇梦狸º1 小时前
mac 安装 python2
python·macos
deephub1 小时前
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
开发语言·人工智能·python·机器学习·金融·波动率
金融OG1 小时前
99.12 金融难点通俗解释:毛利率
python·算法·机器学习·数学建模·金融
卜及中2 小时前
【Pytest】基础到高级功能的理解使用
开发语言·python·学习·pytest·python3.11
Yuleave3 小时前
HippoRAG:受海马体启发的长时记忆模型,提升大语言模型的知识整合能力
人工智能·语言模型·自然语言处理
qq_433502183 小时前
Browser-Use WebUI项目启动指南
人工智能·经验分享·python·chatgpt
Hugh&7 小时前
(开源)基于Django+Yolov8+Tensorflow的智能鸟类识别平台
python·yolo·django·tensorflow