1 minute read

Browser-use是一款开源的基于AI的智能浏览器自动化工具, 而且这款开源项目分为命令行版本和web UI版本,并且支持deepseek、gpt-4o在内的开源和闭源模型。 我们可以使用这款开源项目轻松实现浏览器自动化操作,执行订机票、浏览网页、点击链接、提取信息,甚至填写表单、订机票等复杂操作。 用户可以使用自然语言来指示AI执行任务,大大降低了开发者需要编写代码的需求。 甚至可以替代OpenAI 推出的ChatGPT Operator功能,因为OpenAI 推出的ChatGPT Operator功能.

本篇笔记所对应的视频:

🚀命令和代码如下

pip install uv

uv venv myenv

source myenv/bin/activate

# webUI
git clone https://github.com/browser-use/web-ui.git

cd web-ui

pip install -r requirements.txt

cp .env.example .env

python webui.py --ip 127.0.0.1 --port 7788

### 无UI版
pip install browser-use

pip install playwright

playwright install

import os
from langchain_openai import ChatOpenAI
from browser_use import Agent, Browser, BrowserConfig
import asyncio

# 无头模式
browser = Browser(
	config=BrowserConfig(
		headless=False,
        disable_security=True
    )
)

os.environ['OPENAI_API_KEY']="sk-proj--xxxxx"

async def main():
    agent = Agent(
        task="搜索AI超元域的GitHub项目并进入",
        llm=ChatOpenAI(model="gpt-4o-mini",),
        browser=browser
    )
    result = await agent.run()
    print(result)

asyncio.run(main())

import os
import argparse
from langchain_openai import ChatOpenAI
from browser_use import Agent, Browser, BrowserConfig
import asyncio

# 默认配置
DEFAULT_API_KEY = "sk-proj-xxxxxxxx"
DEFAULT_MODEL = "gpt-4o-mini"

async def run_agent(task: str, model: str = DEFAULT_MODEL, api_key: str = None) -> str:
    """
    使用指定参数运行浏览器代理。

    参数:
        task (str): 代理的任务描述
        model (str): 要使用的 OpenAI 模型
        api_key (str): OpenAI API 密钥。如果为空,将尝试使用环境变量或默认值

    返回:
        str: 代理返回的结果
    """
    # API key 优先级:
    # 1. 命令行参数传入的 api_key
    # 2. 环境变量 OPENAI_API_KEY
    # 3. 代码中的默认值 DEFAULT_API_KEY
    if api_key:
        os.environ['OPENAI_API_KEY'] = api_key
    elif 'OPENAI_API_KEY' not in os.environ:
        os.environ['OPENAI_API_KEY'] = DEFAULT_API_KEY

    # Initialize the agent
    agent = Agent(
        task=task,
        llm=ChatOpenAI(model=model),
        # 无头模式
        browser=Browser(
            config=BrowserConfig(
                headless=False,
                disable_security=True
            )
        )
    )

    # Run the agent and return result
    return await agent.run()

def parse_arguments():
    """解析命令行参数."""
    parser = argparse.ArgumentParser(description='Browser Agent CLI')

    parser.add_argument(
        '--task',
        type=str,
        required=True,
        help='Task description for the agent'
    )

    parser.add_argument(
        '--model',
        type=str,
        default=DEFAULT_MODEL,
        help=f'OpenAI model to use (default: {DEFAULT_MODEL})'
    )

    parser.add_argument(
        '--api-key',
        type=str,
        required=False,  # 不再是必需参数
        help='OpenAI API key (optional, will use default if not provided)'
    )

    return parser.parse_args()

async def main():
    """运行代理程序的主函数,使用命令行参数。"""
    # 解析命令行参数
    args = parse_arguments()

    try:
        # Run the agent
        result = await run_agent(
            task=args.task,
            model=args.model,
            api_key=args.api_key
        )
        print(result)

    except Exception as e:
        print(f"Error occurred: {str(e)}")
        exit(1)

if __name__ == "__main__":
    asyncio.run(main())

### MCP Server
请用为我实现MCP Tool,并命名为browser-use,当我需要搜索相关内容的时候,请执行下面的命令进行搜索并且返回搜索结果。
需要搜索的内容请放在--task参数里:

cd /Users/charlesqin/PycharmProjects/PythonProject && \
source /Users/charlesqin/PycharmProjects/PythonProject/.venv/bin/activate && \
python app.py \
--task "Visit the blog www.aivi.fyi and summarize the content of the first post."

Comments