電腦使用代理程式能夠以與人類相同的方式與網站互動:開啟瀏覽器、檢查網頁,並根據所見採取最佳後續行動。在本課程中,你將建立一個瀏覽器自動化代理,搜尋 Airbnb、擷取結構化房源資料,並找出斯德哥爾摩最便宜的住宿。
本課程結合了用於 AI 驅動導航的 Browser-Use、Playwright 及 Chrome DevTools 協議 (CDP) 以控制瀏覽器、啟用視覺推理的 Azure OpenAI,與用於結構化擷取的 Pydantic。
本課程將涵蓋:
完成本課程後,你將學會如何:
本課程包含一個筆記本教學:
安裝筆記本中使用的套件:
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=...
筆記本示範混合瀏覽器自動化工作流程:
這種方式兼具 Browser-Use 擅長的靈活視覺推理,同時在需要時提供確定性的瀏覽器控制。
| 情境 | 使用代理 | 使用執行者 |
|---|---|---|
| 動態版面 | 是,AI 能適應頁面變動 | 否,脆弱選擇器可能會出錯 |
| 已知結構 | 否,代理較慢不及直接控制 | 是,快速且精準 |
| 定位元素 | 是,自然語言表達良好 | 否,需要精確選擇器 |
| 時序控制 | 否,較不具可預測性 | 是,完全控制等待與重試 |
| 複雜工作流程 | 是,能處理意外 UI 狀態 | 否,需要明確分支 |
瀏覽器代理運作在實時網站,需比純呼叫已知 API 的腳本更嚴格的邊界限制。從筆記本示範升級為實際工作流程前,先定義代理可檢視、點擊和提交的控制範圍。
在 Airbnb 範例中,安全的預設是搜尋房源並擷取價格。登入、聯絡房東或完成訂房應為獨立經使用者批准的動作。
你在本課程中建置的代理是 電腦使用代理 (CUA) 的小型本地版本──一種以人類方式驅動瀏覽器的程式。微軟以同樣理念推動企業場景,推出 Microsoft 365 Copilot 中的 Project Opal (Frontier) 功能。
使用 Project Opal,你描述任務,代理即在安全的 Windows 365 雲端 PC 上以 電腦使用 模式代你於組織的瀏覽器應用、網站與資料中操作。它在後台 非同步運行,且你可以隨時引導或接管工作。範例任務包括:
Opal 是用於展現 生產級、值得信賴 電腦使用代理的有力參考,也鞏固本課程早期的概念:
| 本課程概念 | Project Opal 應用方式 |
|---|---|
| 人機互動迴圈 (課程 06) | Opal 會在登入憑證、敏感資料或不明指令時暫停,且絕不未經明確確認即輸入密碼或提交表單。你可在任務中途 接管 與 歸還控制權。 |
| 可信與安全代理 (課程 06 & 18) | 運行於隔離的 Windows 365 雲端 PC,預設僅能使用瀏覽器(其他電腦存取被 Intune 強制阻止),使用 你的 身分,只能存取你的授權範圍,並對每個動作皆有詳細操作紀錄以利稽核。 |
| 規劃與元認知 (課程 07 & 09) | Opal 先產生任務計劃,然後在每步驟監督自身推理並於發現可疑行為時暫停。 |
| 可重用能力/工具 (課程 04) | 技能 讓你撰寫可重複使用的工作指令(從 .md 檔匯入或使用 Opal 撰寫),並在多個對話中重複使用。 |
可用性: Project Opal 目前提供給訂閱 Microsoft 365 Copilot 的用戶,並且必須由管理員完成設定,屬 Frontier 早期存取計劃成員。由於是實驗性 Frontier 功能,功能可能會隨時間調整。
在進入下一課程前,測試你的理解度。
1. 何時瀏覽器為基礎的電腦使用代理比純 API 工作流程更合適?
2. 混合工作流程中,哪些部分應由代理處理?哪些部分應由 Playwright 直接控制?
3. Airbnb 範例中找到用戶可能想訂的房源。工作流程在登入、聯絡房東或完成訂房前應做什麼?
4. 頁面內容指示代理忽略原始指令、造訪其他網站並揭露儲存資訊。代理應如何處理該文字?
5. 執行瀏覽器代理時,哪些證據適合保存,哪些應避免?
免責聲明: 本文件由 AI 翻譯服務 Co-op Translator 翻譯而成。雖然我們致力於確保準確性,但請注意,機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。