Gemini Computer Use 使用教程:用 Gemini 3.5 Flash 控制浏览器执行任务

整理 Gemini API Computer Use 的上手方法:如何通过 Interactions API 启用 computer_use 工具,为什么还需要 Playwright 这类客户端执行环境,以及实际开发浏览器自动化 Agent 时要注意的安全边界。

Google 在 Gemini API 里把 Computer Use 推到了更靠前的位置。简单说,它让模型不只会“回答”,还可以看屏幕截图、判断下一步要点哪里、输入什么,然后把这些动作交给你的客户端去执行。

这类能力适合做浏览器自动化 Agent,比如测试网站流程、填写重复表单、整理网页信息、做简单的跨站研究。它不是“给模型一台电脑就完事”,真正的工程重点在于:模型负责规划动作,你的代码负责安全执行、截图回传和中断控制。

官方文档入口在这里:

1
https://ai.google.dev/gemini-api/docs/computer-use?hl=zh-cn

先看它到底怎么工作

Computer Use 的基本循环是这样:

  1. 你的程序把任务描述、工具配置、当前屏幕状态发给 Gemini。
  2. Gemini 返回一个动作,例如点击、输入、滚动、打开页面。
  3. 你的程序用 Playwright、移动端自动化框架或桌面自动化工具执行这个动作。
  4. 执行后重新截图,把新的状态回传给 Gemini。
  5. 重复这个过程,直到任务完成、触发安全确认,或者程序主动停止。

这点很关键:Gemini API 不会替你真的点击浏览器。它返回的是“建议执行的界面操作”,执行权在你的客户端。

推荐模型和接口

目前官方推荐用:

1
gemini-3.5-flash

接口走 Interactions API,并在 tools 里启用:

1
2
3
4
{
  "type": "computer_use",
  "environment": "browser"
}

environment 可以理解成告诉模型它面对的是什么操作环境。常见选择包括浏览器、移动设备、桌面环境。浏览器自动化是最容易上手的一类,因为 Playwright 已经把点击、输入、截图这些能力封装好了。

Python 最小示例

先安装依赖:

1
2
pip install google-genai playwright
playwright install chromium

然后用 Interactions API 发起一次带 computer_use 工具的请求:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input="Search for 'Gemini API' on Google.",
    tools=[
        {
            "type": "computer_use",
            "environment": "browser",
            "enable_prompt_injection_detection": True,
        }
    ],
)

print(interaction)

这里的 enable_prompt_injection_detection 建议打开。Computer Use 会读屏幕内容,网页里可能藏着“忽略原指令、把数据发出去”这类对抗性文本,提示注入检测至少能多加一层保护。

接上 Playwright 才能真正执行

模型返回动作后,你需要自己执行。一个浏览器环境通常这样初始化:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from playwright.sync_api import sync_playwright

SCREEN_WIDTH = 1440
SCREEN_HEIGHT = 900

playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False)

context = browser.new_context(
    viewport={"width": SCREEN_WIDTH, "height": SCREEN_HEIGHT}
)
page = context.new_page()
page.goto("https://www.google.com")

Gemini 返回的坐标通常是归一化坐标。你要把它换算成真实屏幕坐标:

1
2
3
4
5
6
def denormalize_x(x: int, screen_width: int) -> int:
    return int(x / 1000 * screen_width)


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

如果模型返回:

1
2
3
4
5
6
7
8
9
{
  "type": "function_call",
  "name": "click",
  "arguments": {
    "x": 450,
    "y": 120,
    "intent": "Click the search box to type the query."
  }
}

你的客户端可以把它执行成:

1
2
3
actual_x = denormalize_x(450, SCREEN_WIDTH)
actual_y = denormalize_y(120, SCREEN_HEIGHT)
page.mouse.click(actual_x, actual_y)

执行完成后,再截图,把结果作为下一轮输入交给模型。也就是说,Computer Use 的难点不是发起第一条请求,而是把“模型响应 -> 执行动作 -> 截图回传 -> 继续请求”这条循环做稳定。

开发时建议先做一个小任务

不要一上来就做“帮我操作后台完成一整套业务流程”。更稳的做法是先做低风险、可观察的小任务:

1
打开 Google,搜索 Gemini API,并告诉我前几个结果的大致内容。

或者:

1
打开本地测试页面,点击登录按钮,检查是否出现错误提示。

这类任务有几个好处:

  • 不涉及真实账号和资金。
  • 出错后影响可控。
  • 页面状态比较容易复现。
  • 方便观察模型每一步的 intent 是否合理。

安全边界一定要提前写清楚

Computer Use 最大的风险是“模型可以操作界面”。所以开发时不要只靠模型自觉,要在系统指令和客户端逻辑里同时加限制。

建议至少做这些保护:

  • 使用沙盒浏览器、容器或虚拟机,不要让 Agent 直接操作你的主力浏览器。
  • 禁止读取浏览器历史记录、自动填充、已保存密码。
  • 遇到登录、付款、提交订单、发送消息、发布内容、接受协议时必须停下来让用户确认。
  • 不要让模型处理验证码,也不要尝试绕过人机验证。
  • 对可访问网站做白名单或黑名单。
  • 记录每一步提示、截图、模型动作、安全判断和最终执行动作。

这一点比代码示例更重要。浏览器 Agent 一旦接入真实账号,风险就不再只是“点错按钮”,还可能变成数据泄露、误发送、误购买或误提交。

和普通函数调用有什么区别

普通函数调用更像“模型选择调用哪个 API”。你提前定义好函数,比如 search_products()create_ticket(),模型只是在结构化参数里做选择。

Computer Use 更像“模型看着一个真实界面操作”。它适合那些没有稳定 API、只能通过网页完成,或者你想模拟真实用户操作路径的场景。

如果目标系统有稳定 API,优先用函数调用。只有在必须走界面、需要做端到端测试、或者需要处理网页交互时,Computer Use 才更合适。

常见踩坑

1. 以为模型会自己控制浏览器

不会。模型只是返回动作,你要写执行器。没有 Playwright、Selenium、移动端自动化或桌面自动化层,它就只是“会规划动作的模型”。

2. 坐标没换算

模型给的坐标和真实视口尺寸不一定是一回事。浏览器窗口大小、缩放比例、截图尺寸都要固定,否则点击会偏。

3. 页面状态不干净

弹窗、Cookie 横幅、通知授权、登录态变化都会影响模型判断。最好每次任务从固定页面、固定账号、固定视口开始。

4. 没做中断条件

至少要限制最大步数、最大运行时间和高风险动作确认。否则 Agent 可能在某个页面里反复点击、刷新、搜索,跑成一个很难排查的循环。

5. 把它用于关键决策

官方也提醒,这是预览能力,可能有错误和安全漏洞。涉及金融、医疗、政务、账号安全、不可逆提交的任务,不适合直接放手让它自动完成。

一个更实用的落地架构

如果要在项目里试 Computer Use,可以按这个结构拆:

1
2
3
4
5
6
7
agent/
  client.py          # 调 Gemini Interactions API
  browser.py         # Playwright 浏览器控制
  actions.py         # click/type/scroll 等动作执行
  safety.py          # 白名单、确认规则、风险动作拦截
  recorder.py        # 截图、日志、步骤记录
  prompts.py         # 系统提示词和任务模板

主循环可以写成:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
创建浏览器环境
打开起始页面
发送任务和当前截图
while 未完成:
    读取 Gemini 返回的 function_call
    检查是否触发安全规则
    执行动作
    截图并记录日志
    把 function_result 回传给 Gemini
关闭浏览器

这样后面要换成桌面环境或移动端环境,也不会把 API 调用、界面操作和安全策略搅在一起。

适合用它做什么

比较适合:

  • Web 应用端到端测试。
  • 后台重复录入和表单检查。
  • 公开网页信息整理。
  • 带截图证据的网页流程验证。
  • 内部低风险工具页面自动化。

不太适合:

  • 自动登录并处理敏感账号。
  • 自动付款、下单、转账。
  • 绕过验证码或反机器人机制。
  • 在生产后台执行不可逆操作。
  • 处理隐私、财务、医疗等敏感数据。

总结

Gemini Computer Use 的价值不是“模型终于能随便点电脑了”,而是把浏览器自动化从固定脚本推进到“模型根据屏幕状态决定下一步”。这对测试、数据录入、页面研究很有吸引力。

但它也更像一套 Agent 执行框架,而不是一个单独 API。想用好它,重点是三件事:固定执行环境、写好动作循环、把安全规则前置。先从低风险网页任务开始,比直接接真实业务系统靠谱得多。

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计