Gemini 2.5 Computer Use 终极指南:从入门到实作,打造你的 AI 自动化助理

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 助理了吗?

分享到:

© 2025 Communeify. All rights reserved.