SuperAPI AI Directory

browser-use

Agents & models

View repository

Updated 10-15 07:45

About this skill

browser-use intelligent browser automation

Overview

browser-use is an AI-driven browser automation tool that uses LLM to:

  • Understand web page content
  • Intelligently decide the next action
  • Automatically complete tasks

Differences from Playwright:

Feature Playwright browser-use
Control method Pre-programmed scripts AI intelligent decision-making
Adaptability Page changes require rewriting Automatically adapts
Token consumption Lower but requires debugging Intelligently streamlined
Complex interactions Requires precise selectors Natural language description
Maintenance cost High Low

⚠️ Resource cleanup principle (mandatory)

After all cron tasks involving the browser are completed, the Chrome process must be automatically closed!

import asyncio
from browser_use import Agent

async def main():
    agent = Agent(task="...", llm=llm)
    result = await agent.run()

    # ⚠️ 任务结束后必须显式关闭浏览器
    if hasattr(agent, 'browser') and agent.browser:
        await agent.browser.close()

    # ⚠️ 推荐在脚本结束时强制清理残留进程
    import subprocess
    subprocess.run(['pkill', '-f', 'chrome'], capture_output=True)

    return result

Reason: Avoid memory leaks and resource usage, and prevent Gateway CPU from being 100% overloaded

Installation status

✅ Installed:

  • browser-use 0.11.11
  • browser-use-sdk 2.0.15

Quick start

Basic usage

import asyncio
from browser_use import Agent
from langchain_openai import ChatOpenAI

async def main():
    agent = Agent(
        task="打开 polymarket.com,查看 Fed 利率市场",
        llm=ChatOpenAI(model="gpt-4o"),
    )
    result = await agent.run()
    print(result)

asyncio.run(main())

Using a custom LLM (recommended configuration)

⚠️ Important: your-provider API is in Anthropic format, not OpenAI format! You must use ChatAnthropic。

from browser_use.llm.anthropic.chat import ChatAnthropic

# your-provider API(Anthropic 兼容)✅ 推荐
llm = ChatAnthropic(
    model="claude-sonnet-4-6",
    base_url="https://your-anthropic-proxy.example.com",  # 注意:不加 /v1
    api_key="your-api-key",  # 或从 pass show api/your-provider 获取
)

agent = Agent(
    task="你的任务",
    llm=llm,
)
# ❌ 错误用法:不要用 ChatOpenAI + your-provider
# from browser_use.llm.openai.chat import ChatOpenAI  # 这个不行!your-provider 不支持 OpenAI 格式
# 如果使用 OpenAI 兼容 API(如 Provider-B),用 ChatOpenAI:
from browser_use.llm.openai.chat import ChatOpenAI
llm = ChatOpenAI(
    model="gpt-4o",
    base_url="https://ai.9w7.cn/v1",
    api_key="your-api-key",
)

Using the Chrome browser

from browser_use import Agent, BrowserProfile, BrowserSession

# 配置使用 Chrome
profile = BrowserProfile(
    executable_path="/usr/bin/google-chrome-stable",
    headless=True,
    disable_security=True,
)
session = BrowserSession(browser_profile=profile)

agent = Agent(
    task="任务描述",
    llm=llm,
    browser_session=session,
)

Save/load login state

# 保存登录态
await browser_context.save_storage_state(path="polymarket_auth.json")

# 加载登录态
context = BrowserContextConfig(
    storage_state="polymarket_auth.json"
)

Common configurations

Minimize token consumption

agent = Agent(
    task="任务",
    llm=llm,
    use_vision=False,  # 禁用视觉,减少token
    max_actions_per_step=3,  # 限制每步操作数
    message_compaction=True,  # 消息压缩
)

Debug mode

agent = Agent(
    task="任务",
    llm=llm,
    headless=False,  # 显示浏览器
    slow_mo=1000,  # 慢放,每步延迟1秒
    save_conversation_path="debug_log/",  # 保存日志
)

Extract structured data

from pydantic import BaseModel

class MarketData(BaseModel):
    question: str
    yes_price: float
    no_price: float

agent = Agent(
    task="获取 Polymarket Fed 利率市场数据",
    llm=llm,
    output_model_schema=MarketData,
)
result = await agent.run()
# result 将是 MarketData 类型

Polymarket integration

View markets

agent = Agent(
    task="""
    1. 打开 https://polymarket.com/event/fed-decision-in-march-885
    2. 提取以下信息:
       - 市场问题
       - Yes 价格
       - No 价格
       - 交易量
    3. 返回 JSON 格式数据
    """,
    llm=llm,
)

Execute trades

agent = Agent(
    task="""
    1. 打开 Polymarket
    2. 连接钱包(如果需要)
    3. 导航到 Fed 利率市场
    4. 买入 $0.60 的 No(价格 ≥ 0.85)
    5. 确认交易
    """,
    llm=llm,
    sensitive_data={
        "wallet_address": "0x...",
    }
)

Best practices

1. Task descriptions should be clear

# 好 ✅
task="打开 polymarket.com,找到 Fed 利率市场,提取 Yes/No 价格"

# 差 ❌
task="帮我看看那个市场"

2. Use structured output

from pydantic import BaseModel

class TradingResult(BaseModel):
    success: bool
    market: str
    action: str  # "buy_yes", "buy_no"
    amount: float
    price: float
    tx_hash: str | None

agent = Agent(
    task="执行交易...",
    output_model_schema=TradingResult,
)

3. Error handling

try:
    result = await agent.run()
except Exception as e:
    print(f"任务失败: {e}")
    # 可以使用 browser tool 作为后备

4. Reuse login state

# 第一次登录后保存
# 后续直接加载,避免重复登录

browser_context = BrowserContextConfig(
    storage_state="~/.playwright-data/polymarket/auth.json"
)

Token consumption optimization

Comparison (same task)

Tool Average tokens Reason
browser tool ~5000-10000 Full page snapshot every time
Playwright ~1000-2000 Requires multiple debugging iterations
browser-use ~2000-4000 AI streamlined decision-making

Optimization tips

  1. Disable vision:use_vision=False
  2. Limit history:max_history_items=10
  3. Compress messages:message_compaction=True
  4. Reduce steps:max_actions_per_step=3
  5. Use Flash mode:flash_mode=True(fast mode)

Complete example

import asyncio
from browser_use import Agent
from langchain_openai import ChatOpenAI
from pydantic import BaseModel
import os

class MarketInfo(BaseModel):
    question: str
    yes_price: float
    no_price: float
    volume: str

async def check_polymarket():
    # 使用本地 LLM API
    llm = ChatOpenAI(
        model="claude-3-5-sonnet-20241022",
        base_url="https://your-anthropic-proxy.example.com",
        api_key=os.environ.get("XSC_API_KEY"),
    )
    
    agent = Agent(
        task="""
        访问 Polymarket Fed 利率市场:
        https://polymarket.com/event/fed-decision-in-march-885
        
        提取并返回:
        - 市场问题
        - Yes 价格(0-1)
        - No 价格(0-1)
        - 24h 交易量
        """,
        llm=llm,
        output_model_schema=MarketInfo,
        use_vision=False,
        max_actions_per_step=5,
    )
    
    result = await agent.run()
    return result

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

Resources

Quick commands

# 安装(已完成)
pip install browser-use

# 运行脚本
python3 script.py

# 测试
python3 -c "from browser_use import Agent; print('✅ OK')"

Remember: browser-use makes browser operations smarter and saves you from the pain of debugging selectors! 🚀