news

Gemini 2.5 Computer Use 終極指南:從入門到實作,打造你的 AI 自動化助理

October 8, 2025
Updated Oct 8
3 min read

Google DeepMind 推出的 Gemini 2.5 Computer Use 模型,讓 AI 真正學會「操作電腦」。這不僅是技術突破,更是自動化的未來。本文將從核心概念、應用場景,到手把手的 Python 實作教學,帶你全面掌握這項強大工具。


你有沒有想過,如果 AI 不僅能跟你對話,還能像一位真人助理,親手「操作」你的電腦或手機應用程式,那會是什麼樣子?它不再只是透過冷冰冰的程式碼傳遞指令,而是能直接看懂畫面,然後點擊按鈕、填寫表單、拖曳檔案。

這聽起來像是科幻電影的情節,但 Google DeepMind 最新發布的 Gemini 2.5 Computer Use 模型,正讓這一切成為現實。這是一個基於 Gemini 2.5 Pro 強大視覺理解與推理能力所打造的特化模型,它的目標很明確:賦予 AI 代理(Agent)一雙能看懂並操作使用者介面(UI)的「手」。

為何我們需要一個會「用電腦」的 AI?

過去的 AI 與軟體互動,大多依賴 API(應用程式介面)。你可以把 API 想像成一個軟體的「點餐單」,AI 只能根據上面寫好的選項來下指令。這種方式雖然高效,但限制非常大。

現實世界中,無數的數位任務——從線上預訂餐廳、填寫複雜的申請表,到管理專案看板——都需要直接與圖形使用者介面(GUI)互動。我們需要點擊、輸入、滾動、選擇下拉選單。這些對人類來說再自然不過的動作,對傳統 AI 而言卻像一道難以跨越的鴻溝。

Gemini 2.5 Computer Use 的出現,就是為了解決這個根本問題。它能讓 AI 代理真正做到:

  • 自動化重複性資料輸入: 不再需要手動複製貼上,讓 AI 為你填寫網站上的各種表單。
  • 執行自動化測試: 模擬真實使用者的操作流程,對網頁應用程式進行端對端的測試。
  • 跨網站研究與資訊整合: 讓 AI 代理瀏覽多個電商網站,蒐集產品資訊、價格和評論,幫助你做出購買決策。

這一步,對於建立更強大、更通用的 AI 代理至關重要。

它是如何運作的?解密幕後的「代理迴圈」

那麼,這個模型究竟是如何像人一樣「看」和「做」的呢?它的核心運作機制,是一個不斷循環的「代理迴圈」(Agent Loop)。整個流程可以簡化成以下四個步驟:

  1. 發送請求 (Send a request to the model): 你給 AI 一個任務(例如「幫我找找評分最高的智慧冰箱」),同時附上當前螢幕的截圖。
  2. 接收模型回應 (Receive the model response): 模型會「看到」截圖,分析你的請求,然後決定下一步該做什麼。它會回傳一個具體的 UI 操作指令,例如「在座標 (371, 470) 的搜尋框輸入文字」。這個回應還可能包含一個安全決策,提醒你此操作是否存在風險。
  3. 執行收到的動作 (Execute the received action): 你的應用程式(用戶端程式碼)接收到這個指令後,便會實際執行這個點擊或輸入的動作。如果模型要求使用者確認,你的程式就需要先跳出提示,等待使用者同意。
  4. 擷取新的環境狀態 (Capture the new environment state): 動作完成後,你的程式會擷取一張新的螢幕截圖,連同操作結果一起回傳給模型。

接著,這個過程會從第 2 步重新開始,模型會根據新的畫面決定下一步動作,如此循環往復,直到整個任務完成。

手把手教學:用 Python 和 Playwright 打造你的第一個 AI 代理

理論聽起來很酷,但怎麼實際動手做呢?接下來,我們將使用 Python 和 Playwright(一個強大的瀏覽器自動化工具)來建立一個簡單的 AI 代理。

第 0 步:環境準備

在開始之前,你需要兩樣東西:

  • 安全的執行環境: 由於 AI 代理會實際操作瀏覽器,強烈建議在一個受控的環境中執行,例如沙盒化的虛擬機、容器(Docker),或是一個權限受限的瀏覽器設定檔。
  • 用戶端動作處理器: 你需要編寫程式碼來執行模型產生的指令(例如點擊、輸入)並擷取螢幕畫面。這就是 Playwright 要發揮作用的地方。

第 1 步:安裝必要套件

打開你的終端機,輸入以下指令來安裝 Google Generative AI 和 Playwright 的 Python 函式庫。

pip install google-genai playwright
playwright install chromium

第 2 步:初始化 Playwright 瀏覽器

我們需要建立一個 Python 腳本,並初始化一個由 Playwright 控制的瀏覽器視窗。這將是我們 AI 代理的工作空間。

from playwright.sync_api import sync_playwright

# 1. 設定目標環境的螢幕尺寸
SCREEN_WIDTH = 1440
SCREEN_HEIGHT = 900

# 2. 啟動 Playwright 瀏覽器
# 在生產環境中,請使用沙盒環境
playwright = sync_playwright().start()
# 設定 headless=False 可以在螢幕上看到 AI 的操作過程
browser = playwright.chromium.launch(headless=False)

# 3. 建立具有指定尺寸的上下文和頁面
context = browser.new_context(
    viewport={"width": SCREEN_WIDTH, "height": SCREEN_HEIGHT}
)
page = context.new_page()

# 4. 導航到一個初始頁面開始任務
page.goto("https://www.google.com")

print("瀏覽器已初始化,準備開始任務。")

第 3 步:建構代理迴圈

這是整個專案的核心。我們將實作前面提到的四步迴圈,讓 AI 能夠持續與瀏覽器互動。

首先,我們需要一些輔助函式來執行模型的回應並回傳結果。

# 輔助函式:將模型回傳的正規化座標 (0-999) 轉換為實際像素座標
def denormalize_x(x, screen_width):
    return int(x / 1000 * screen_width)

def denormalize_y(y, screen_height):
    return int(y / 1000 * screen_height)

# 輔助函式:執行模型回傳的 function calls
def execute_function_calls(candidate, page, screen_width, screen_height):
    results = []
    for part in candidate.content.parts:
        if not part.function_call:
            continue
        
        fname = part.function_call.name
        args = part.function_call.args
        print(f"-> 正在執行: {fname},參數: {args}")

        try:
            if fname == "click_at":
                x = denormalize_x(args["x"], screen_width)
                y = denormalize_y(args["y"], screen_height)
                page.mouse.click(x, y)
            elif fname == "type_text_at":
                x = denormalize_x(args["x"], screen_width)
                y = denormalize_y(args["y"], screen_height)
                page.mouse.click(x, y)
                page.keyboard.type(args["text"])
                if args.get("press_enter", False):
                    page.keyboard.press("Enter")
            # ... 在此處實現其他支援的動作 ...
            else:
                 print(f"警告: 未實現的函式 {fname}")
            
            # 等待頁面加載
            page.wait_for_load_state(timeout=5000)
            results.append((fname, {"status": "success"}))
        except Exception as e:
            print(f"錯誤: 執行 {fname} 時發生錯誤: {e}")
            results.append((fname, {"error": str(e)}))
            
    return results

# 輔助函式:擷取新的螢幕狀態並打包成回傳格式
def get_function_responses(page, results):
    screenshot_bytes = page.screenshot(type="png")
    current_url = page.url
    
    function_responses = []
    for name, result in results:
        response_data = {"url": current_url, **result}
        function_responses.append({
            "name": name,
            "response": response_data,
            "screenshot": screenshot_bytes
        })
    return function_responses

現在,將所有部分組合起來,形成完整的代理迴圈。

# (請確保您已設定好您的 genai API 金鑰)
import google.genai as genai
from google.genai import types

# --- 完整的代理迴圈主程式 ---
try:
    # 1. 設定模型
    model = genai.GenerativeModel(
        'gemini-2.5-computer-use-preview-10-2025',
        tools=[types.Tool(
            computer_use=types.ComputerUse(
                environment=types.Environment.ENVIRONMENT_BROWSER
            )
        )]
    )
    chat = model.start_chat()

    # 2. 初始化任務
    USER_PROMPT = "前往 aistudio.google.com 並搜尋關於 agents 的文件"
    print(f"目標: {USER_PROMPT}")
    
    initial_screenshot = page.screenshot(type="png")
    
    # 3. 進入代理迴圈
    turn_limit = 10
    for i in range(turn_limit):
        print(f"\n--- 第 {i+1} 輪 ---")
        
        # 發送請求給模型
        if i == 0:
            response = chat.send_message(
                [USER_PROMPT, initial_screenshot],
            )
        else:
            response = chat.send_message(function_responses)
            
        # 接收並執行模型的回應
        candidate = response.candidates[0]
        
        if not any(part.function_call for part in candidate.content.parts):
            print("代理完成:", candidate.content.parts[0].text)
            break
        
        results = execute_function_calls(candidate, page, SCREEN_WIDTH, SCREEN_HEIGHT)
        
        # 擷取新狀態並準備下一輪
        print("-> 正在擷取新狀態...")
        function_responses = get_function_responses(page, results)
        
finally:
    # 清理資源
    print("\n任務結束,關閉瀏覽器...")
    browser.close()
    playwright.stop()

AI 的工具箱:支援的 UI 動作

Gemini 2.5 Computer Use 模型可以生成多種 UI 操作指令,以下是一些最常用的:

  • click_at(x, y): 在指定的座標點擊滑鼠。
  • type_text_at(x, y, text, ...): 在指定座標點擊後輸入文字。
  • drag_and_drop(from_x, from_y, to_x, to_y): 拖曳一個元素到另一個位置。
  • scroll_document(direction): 向特定方向滾動整個頁面。
  • navigate(url): 直接導航到指定的 URL。
  • key_combination(keys): 按下組合鍵,如 “Control+C”。

安全性:賦予 AI 強大能力,更要套上「韁繩」

讓 AI 掌握電腦的控制權是一把雙面刃。惡意使用、網路釣魚、誤操作等風險也隨之而來。因此,從一開始就建立完善的安全護欄至關重要。Google 提供了多層次的防護措施:

  • 人類參與迴圈 (Human-in-the-Loop): 當模型的回應中包含 require_confirmation 的安全決策時,你的程式必須暫停並請求使用者確認,才能繼續執行。你不能編寫程式碼繞過這個請求。
  • 自訂安全指令: 開發者可以提供自訂的系統指令,來限制模型的行為。例如,你可以設定規則,禁止 AI 點擊任何「同意服務條款」的按鈕,或是在進行任何金融交易前都必須獲得使用者授權。
  • 安全執行環境: 再次強調,在沙盒化的環境中執行代理,可以大幅限制潛在的負面影響。

開發者有責任謹慎對待這些風險,並實施適當的安全措施。

demo影片

結論與下一步

Gemini 2.5 Computer Use 的推出,不僅是 AI 技術的一大步,也為人機互動的未來開啟了全新的想像空間。一個真正能理解我們、並為我們分擔數位世界繁瑣任務的通用 AI 代理,或許已經離我們不遠了。

準備好開始打造你的 AI 助理了嗎?

分享至:
Featured Partners

© 2026 Communeify. All rights reserved.