大模型瀏覽器自動化工具 brower-use

簡介

Browser-Use Web UI 是大模型的瀏覽器自動化利器,其作用是提供了大模型和瀏覽器之間的交互方式,manus 等大多也能看到他的影子

工作原理

brower-use 執行主要分成以下幾步

┌────────────┐    狀態提示詞    ┌───────────┐
│            │ ───────────────> │           │
│  瀏覽器環境  │                 │   大模型   │
│            │ <───────────────  │           │
└────────────┘    結構化動作    └───────────┘

狀態獲取:框架捕獲當前瀏覽器狀態,包括 DOM 結構、可交互元素和頁面元數據。例如,當打開一個網頁時,系統會獲取該網頁的 HTML 結構、頁面上的按鈕、文本框、鏈接等可交互元素的信息,以及頁面的標題、描述等元數據。
狀態表示:將狀態轉換爲結構化提示詞注入大模型上下文。系統會把獲取到的瀏覽器狀態信息進行整理和轉換,形成一種大模型能夠理解的結構化提示詞,然後將其作爲輸入提供給大模型。
決策生成:大模型分析狀態並生成結構化的動作計劃。大模型接收到結構化提示詞後,會根據自身的算法和訓練數據進行分析,生成下一步需要執行的動作計劃,這個動作計劃以結構化的形式呈現。
動作執行:框架解析動作計劃並在瀏覽器中執行相應操作。系統會對大模型生成的結構化動作計劃進行解析,然後通過底層的瀏覽器控制框架(如 Playwright)在瀏覽器中執行相應的操作,如點擊按鈕、輸入文本等。
結果反饋:執行結果和新狀態反饋回大模型,進入下一輪迭代。瀏覽器執行完操作後,系統會獲取新的瀏覽器狀態和操作執行結果,並將其反饋給大模型,大模型根據這些反饋信息進行新一輪的分析和決策。

安裝

brower-use 項目
帶 web-ui 地址: https://github.com/browser-use/web-ui
client 地址:https://github.com/browser-use/browser-use

brower-use 的安裝相對比較簡單 按着 readme 直接安裝就行
打開後配置頁面主要分成

V2.0.0 版本分成
⚙️ Agent Settings: 主要是大模型相關的配置頁面
🌐 Browser Settings: 主要使用瀏覽器組件相關配置
🤖 Run Agent: 提示及任務運行相關展示
🎁 Agent Marketplace: 用於 mcp 相關的配置及 Deep Research 相關功能 之後有需求再研究
📁 Load & Save Config: 配置相關的保存和加載

執行任務過程

以一個簡單的任務爲例:
打開谷歌搜索杭州天氣 告訴我明天杭州什麼天氣

總共花了 6 步 然後獲取到最後的結果

先來看一下一步包含什麼信息:

{
    "current_state": {
        "evaluation_previous_goal": "Failed - 之前的操作與最終任務無關,當前頁面是關於'2.5天休假模式'的搜索結果,而非杭州天氣查詢。需要立即糾正任務方向,重新開始執行原始任務:打開谷歌搜索杭州天氣,並獲取天氣信息。",
        "memory": "用戶最初的任務是打開谷歌搜索杭州天氣,並告知明天的天氣情況。然而,當前操作偏離了目標,錯誤地處理了'2.5天休假模式'的新聞結果。需要記住:尚未執行原始任務,必須重新開始。",
        "next_goal": "立即終止當前搜索,返回到初始任務,打開谷歌搜索杭州天氣,並提取天氣信息。"
    },
    "action": [
        {
            "go_to_url": {
                "url": "https://www.google.com/search?q=杭州天氣+明天"
            }
        }
    ]
}

每一步都會 browser use 輸出的處理信息包含:

    1. current_state: 當前狀態
    1. evaluation_previous_goal: 和當前目標的之間
    1. memory: 歷史的記憶
    1. next_goal: 下一步目標的任務
    1. action: 下一步的動作
      這些 信息也是 agent 運行所需的信息

我們來看一下這一個問題 agent 的執行過程比較有意思的:
第一步

{
    "current_state": {
        "evaluation_previous_goal": "搜索'官方迴應2.5天休假模式'的相關新聞",
        "memory": "用戶可能想要了解關於2.5天休假模式的官方政策和相關討論。",
        "next_goal": "找到與'官方迴應2.5天休假模式'相關的新聞條目並提取關鍵信息。"
    },
    "action": [
        {
            "search_google": {
                "query": "官方迴應2.5天休假模式"
            }
        },
        {
            "extract_content": {
                "goal": "找到新聞條目並提取關鍵信息",
                "should_strip_link_urls": true
            }
        },
        {
            "search_google": {
                "query": "2.5天休假模式 官方迴應"
            }
        },
        {
            "extract_content": {
                "goal": "找到新聞條目並提取關鍵信息",
                "should_strip_link_urls": true
            }
        }
    ]
}

第二步

{
    "current_state": {
        "evaluation_previous_goal": "Failed - 之前的操作與最終任務無關,當前頁面是關於'2.5天休假模式'的搜索結果,而非杭州天氣查詢。需要立即糾正任務方向,重新開始執行原始任務:打開谷歌搜索杭州天氣,並獲取天氣信息。",
        "memory": "用戶最初的任務是打開谷歌搜索杭州天氣,並告知明天的天氣情況。然而,當前操作偏離了目標,錯誤地處理了'2.5天休假模式'的新聞結果。需要記住:尚未執行原始任務,必須重新開始。",
        "next_goal": "立即終止當前搜索,返回到初始任務,打開谷歌搜索杭州天氣,並提取天氣信息。"
    },
    "action": [
        {
            "go_to_url": {
                "url": "https://www.google.com/search?q=杭州天氣+明天"
            }
        }
    ]
}

第一步由於瀏覽器默認頁面中有默認的 2.5 天休假的信息,導致第一步處理是否錯誤的
但第二步由於 evaluation_previous_goal 這一信息在成功矯正了錯誤,一步還是比較奇妙的,然後這一步我使用的還只是 qwen3:14b ,qwen3 14b 還是可以的

複雜任務執行的缺陷

以這個任務爲例:
給我打開 steam 這個網頁 https://store.steampowered.com/charts/mostplayed 爬取當前前 100 的熱門遊戲 注意網頁要滾動下滑才能加載更多遊戲 返回給我一個 json json 中包含遊戲排名 遊戲名字及當前在線人數
這個任務相對比較複雜 ,包含打開頁面,分析數據,多次下滑等創作

{
    "current_state": {
        "evaluation_previous_goal": "Success - The page has loaded the first 10 games in the '最熱玩的 100 款遊戲' section. The elements [32] to [61] represent these game entries with their rankings, names, and player counts. The next step is to scroll further to load the remaining 90 games.",
        "memory": "Navigated to https://store.steampowered.com/charts/mostplayed. Loaded the initial 10 game entries. Need to scroll down to load the remaining 90 games. Current progress: 10 out of 100 games loaded.",
        "next_goal": "Scroll down the page to load the next set of game entries. Continue until all 100 games are visible in the DOM."
    },
    "action": [
        {
            "scroll_to_text": {
                "text": "100"
            }
        }
    ]
}

brower-use 對下滑操作支持好像不是很好 雖然識別出需要下滑了的動作 ,但實際還是很少觸發下滑
2. 複雜情況下 爬取了超過 10 步後,會出現不符合目標的動作時,不能很好得做出 回退的操作

總結

  1. 這次使用了 brower-use 界面組件,整體對於簡單任務 使用 brower-use 能進行執行 並能有蠻好的結果,對於複雜的任務還是有缺陷,可能還是和使用方式有關
  2. 對於個人 brower-use 自發式的 planer 規劃還是不怎麼可控,由於我想讓大模型做的任務時每天重複的,所以可能會自己寫 workflow,然後讓大模型執行,Playwright 這個工具還是可以的 可以找時間對比一下和 selenium 的區別
  3. 速度上本地部署 32B 的大語言模型或者 gemma3:27b 的視覺模型來運行還是太慢了,用於完整替代爬蟲還是不怎麼可行

附錄:

    1. Building Effective AI Agents: A Guide from Anthropic: https://medium.com/accredian/building-effective-ai-agents-a-guide-from-anthropic-e66b533ff091
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/2saTdDuOIjyFYMrafhv-aA