项目文件夹

文件
2026-07-13 12:59:43 +08:00

4.7 KiB

建立電腦使用代理人(CUA

電腦使用代理人可以像人類一樣與網站互動:透過開啟瀏覽器、檢查頁面,並從所見中採取最佳後續行動。在本課程中,您將建立一個瀏覽器自動化代理,搜尋 Airbnb,擷取結構化的房源資料,並找出斯德哥爾摩最便宜的住宿選項。

本課程結合了基於 AI 導航的 Browser-Use、用於瀏覽器控制的 Playwright 和 Chrome DevTools 協定(CDP)、支援視覺推理的 Azure OpenAI,以及用於結構化擷取的 Pydantic。

介紹

本課程將涵蓋:

  • 理解在何種情況下電腦使用代理比僅用 API 自動化更合適
  • 結合 Browser-Use 與 Playwright 及 CDP,以實現可靠的瀏覽器生命週期管理
  • 使用 Azure OpenAI 影像辨識與結構化的 Pydantic 輸出,從動態網頁擷取房源資料
  • 判斷何時採用代理人優先、角色優先或混合的瀏覽器自動化流程

學習目標

完成本課程後,您將能夠:

  • 配置 Browser-Use 與 Azure OpenAI 及 Playwright
  • 建立一套瀏覽器自動化流程,導航真實網站並處理動態使用者介面元素
  • 從可見頁面內容擷取具型別的結果,轉化為後續的商業邏輯
  • 根據瀏覽器任務的可預測性,選擇代理人或角色模式

範例程式碼

本課程包含一個筆記本教學:

  • 15-browser-user.ipynb:透過 CDP 啟動 Chrome 瀏覽器,搜尋 Airbnb 斯德哥爾摩房源,使用 Browser-Use 視覺擷取價格,並以結構化資料回傳最便宜選項。

前置需求

  • Python 3.12+
  • 環境中已設定 Azure OpenAI 部署
  • 本地安裝 Chrome 或 Chromium
  • 已安裝 Playwright 相依套件
  • 對非同步 Python 有基本認識

環境設定

安裝筆記本中使用的套件:

pip install browser_use playwright python-dotenv
playwright install chromium

設定筆記本使用的 Azure OpenAI 環境變數:

AZURE_OPENAI_ENDPOINT=...
AZURE_OPENAI_API_KEY=...
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=...
# 選用:省略時預設為最新的 API 版本
AZURE_OPENAI_API_VERSION=...

架構概述

筆記本示範一個混合型的瀏覽器自動化流程:

  1. 啟用 CDP 的 Chrome 開啟,讓 Playwright 與 Browser-Use 共用相同的瀏覽器工作階段。
  2. Browser-Use 代理人處理開放式導航任務,如開啟 Airbnb、關閉彈跳視窗、搜尋斯德哥爾摩。
  3. 以結構化的 Pydantic 架構檢視目前頁面,擷取房源標題、每晚價格、評分和網址。
  4. 透過 Python 邏輯比較擷取的房源,突出顯示最便宜的結果。

此方法結合了 Browser-Use 擅長的彈性、視覺推理能力,同時在需要時提供確定性的瀏覽器控制。

主要重點與最佳實踐

何時使用代理人 vs 角色

情境 使用代理人 使用角色
動態版面配置 是,AI 可適應頁面變動 否,脆弱的選擇器可能失效
已知結構 否,代理人比直接控制慢 是,快速且精準
尋找元素 是,自然語言適用 否,要求精確選擇器
時序控制 否,較難預測 是,完全控制等待和重試
複雜工作流程 是,處理不可預期的 UI 狀態 否,需要明確分支

Browser-Use 最佳實踐

  1. 初期採用代理人進行探索與動態導航。
  2. 互動穩定後,轉為直接頁面控制。
  3. 使用結構化輸出模型,確保擷取資料經過驗證且型別安全。
  4. 在觸發可見 UI 變化的操作後,有策略地加入延遲。
  5. 迭代時拍攝截圖,方便除錯失敗原因。
  6. 預期網站會變動,設計因應彈跳視窗與版面變動的備援策略。
  7. 混合使用代理人與角色模式,兼具彈性與精準。

真實世界應用

  • 旅遊訂房與價格監控
  • 電商價格比對與庫存檢查
  • 從動態網站結構化擷取資料
  • 具備視覺感知的 UI 測試與驗證
  • 網站監測與警示
  • 跨多步驟流程的智能填寫表單

其他資源


免責聲明
本文件由 AI 翻譯服務 Co-op Translator 翻譯而成。雖然我們努力追求準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應被視為權威依據。對於關鍵資訊,建議使用專業人工翻譯。對於因使用此翻譯而產生的任何誤解或誤譯,我們不承擔任何責任。