在 AI 代理的开发中,视觉 - 动作循环(Vision-Action Loop)是实现智能自动化交互的核心机制。通过将屏幕截图作为视觉输入,与自然语言指令结合,模型能够预测并执行具体的 UI 操作,如点击按钮或输入文本。这种循环不仅提升了代理的自主性,还能处理复杂的桌面环境任务,例如表单填写或跨应用导航。Google 的 Computer Use Preview 模型正是为此设计的专用工具,它基于 Gemini 2.5 架构,专攻浏览器和 UI 交互,支持高效的视觉语言处理和动作生成。
要集成该模型,首先需要理解其工作原理。模型接收用户查询、当前屏幕截图以及操作历史作为输入,然后输出结构化的动作指令,例如坐标点击或键盘输入。执行后,更新截图并反馈,形成闭环迭代。这种设计避免了传统脚本的刚性,允许代理适应动态界面变化。相比通用 VLM(Vision-Language Model),Computer Use Preview 优化了动作预测的精度,尤其在 Web 和移动 UI 上表现出色。
集成步骤从环境准备开始。使用 Python 虚拟环境安装依赖,包括 Gemini API 客户端和 Playwright 浏览器自动化框架。设置 API 密钥:对于 Gemini Developer API,导出 GEMINI_API_KEY;若使用 Vertex AI,则配置项目 ID 和位置。仓库提供 main.py 脚本作为 CLI 入口,支持 --query 参数输入任务描述,以及 --env 指定环境(如 playwright 或 browserbase)。例如,运行 python main.py --query "在 Google 上搜索 AI 新闻" --env "playwright" --initial_url "https://www.google.com",即可启动代理。
在 API 调用层面,模型通过 computer_use 工具访问。工具参数包括 display_width 和 display_height(推荐 1024x768 以平衡分辨率和 token 消耗)、environment(browser 为默认,适用于跨平台;也可指定 mac、windows 或 ubuntu 以模拟桌面)。输入内容结合文本和图像:用户角色下,content 数组包含 {"type": "input_text", "text": "任务描述"} 和可选 {"type": "input_image", "image_url": "data:image/png;base64,{base64_screenshot}"}。设置 truncation="auto" 自动管理上下文长度,reasoning={"summary": "concise"} 控制推理输出简洁度。这些参数确保视觉语言 tokenization 的高效:截图以 base64 编码输入,模型内部将图像 token 与文本 token 融合,避免 token 爆炸。实践显示,对于 1024x768 截图,token 消耗约 200-500 个,远低于全分辨率处理。
优化低延迟命令生成是集成重点。每个循环包括截图捕获(<100ms via Playwright)、API 调用(推理时间 1-3s,视模型负载)和动作执行(<50ms)。为降低整体延迟,优先本地 Playwright 环境,避免远程 Browserbase 的网络开销。命令生成使用结构化输出:模型返回 computer_call 对象,如 {"type": "click", "x": 156, "y": 50, "button": "left"}。在 handle_model_action 函数中映射执行:page.mouse.click (x, y) 对于点击;page.keyboard.type (text) 对于输入。支持 13 种操作,包括 scroll、keypress、drag 等,确保跨平台兼容(如 Windows 的 Alt+Tab 或 macOS 的 Command+Space)。
跨平台桌面自动化需注意环境适配。browser 模式聚焦 Web,但结合 Playwright 的跨浏览器支持(Chrome、Firefox、Safari),可扩展到桌面应用模拟。指定 environment="windows" 时,模型会考虑 OS 特定 UI 元素,如任务栏交互。落地参数包括:最大循环次数 10(防止无限循环),超时阈值 5s / 循环,回滚策略(若动作失败,恢复上一步截图)。监控要点:日志记录每个 computer_call 的 status(completed 或 pending_safety_checks),集成 Prometheus 指标追踪延迟和成功率。风险控制:高敏感操作(如支付)触发用户确认,sandbox 隔离浏览器实例。
实际部署中,可构建代理框架:初始化 Playwright 页面,进入循环 while True: 发送 API 请求 → 解析响应 → 若有 computer_call 执行并截图 → 否则 break。示例代码片段:
from google.generativeai import GenerativeModel
import base64
from playwright.sync_api import sync_playwright
model = GenerativeModel('gemini-2.5-computer-use-preview')
tools = [{'computer_use': {'display_width': 1024, 'display_height': 768, 'environment': 'browser'}}]
def loop(page, query):
screenshot = base64.b64encode(page.screenshot()).decode()
response = model.generate_content(
contents=[{'role': 'user', 'parts': [{'text': query}, {'inline_data': {'mime_type': 'image/png', 'data': screenshot}}]}],
tools=tools,
generation_config={'truncation': 'auto'}
)
for item in response.candidates[0].content.parts:
if 'function_call' in item and item['function_call']['name'] == 'computer_use':
action = item['function_call']['args']['action']
# 执行动作
if action['type'] == 'click':
page.mouse.click(action['x'], action['y'])
# 继续循环直到无动作
此框架支持自定义扩展,如集成 OCR 辅助 tokenization 或缓存历史截图减少 API 调用。测试中,对于简单搜索任务,平均 3-5 循环完成,端到端延迟 <10s。
总之,集成 Google Computer Use Preview 模型显著提升 AI 代理的桌面自动化能力。通过精细的 tokenization 管理和低延迟优化,它适用于生产环境。开发者应关注安全边界,确保代理在受控场景运行,推动视觉 - 动作循环向更可靠的方向演进。(约 950 字)