30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度1. 先搞清楚 Gemini 3.5 Flash 的计算机使用到底能做什么如果你正在寻找一个能真正看到屏幕并操作电脑的 AI 代理Gemini 3.5 Flash 的计算机使用功能值得重点关注。这不是简单的文本对话而是让 AI 模型通过屏幕截图理解界面然后生成具体的鼠标点击、键盘输入等操作指令。这个功能最实用的场景包括自动化重复的网页操作比如数据录入、表单填写Web 应用的功能测试和用户流程验证跨网站的信息收集和比价分析移动端和桌面端应用的自动化操作与传统的自动化脚本不同Gemini 的计算机使用是基于视觉理解的。模型会分析屏幕截图识别界面元素然后决定下一步操作。这意味着它能够处理一些动态变化的界面而不需要你预先编写固定的选择器或坐标。2. 环境准备从零搭建可运行的测试环境要让 Gemini 3.5 Flash 的计算机使用功能跑起来需要准备几个关键组件。我建议按这个顺序检查你的环境。2.1 API 密钥和基础依赖首先确保你有可用的 Gemini API 密钥。如果没有需要到 Google AI Studio 申请。然后安装必要的 Python 包pip install google-genai playwright playwright install chromium这里选择 Chromium 是因为它轻量且兼容性好。如果你的网络环境有限可以考虑使用国内镜像源安装。2.2 浏览器自动化环境设置计算机使用的核心是浏览器自动化我们使用 Playwright 作为执行引擎from playwright.sync_api import sync_playwright # 设置固定的屏幕尺寸这对坐标映射很重要 SCREEN_WIDTH 1440 SCREEN_HEIGHT 900 # 启动浏览器开发阶段建议先看实际操作 playwright sync_playwright().start() browser playwright.chromium.launch(headlessFalse) # 设为 True 可隐藏界面 context browser.new_context( viewport{width: SCREEN_WIDTH, height: SCREEN_HEIGHT} ) page context.new_page()屏幕尺寸的设置很关键因为模型返回的坐标是基于 1000x1000 的归一化坐标需要根据实际屏幕尺寸进行缩放。2.3 安全环境考虑在实际使用中我强烈建议在沙盒环境中运行这类自动化代理。可以用 Docker 容器隔离避免对主机系统造成意外影响FROM mcr.microsoft.com/playwright/python:v1.40.0 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . .即使不用 Docker也至少要使用独立的浏览器配置文件避免影响你的正常浏览数据。3. 核心工作流程从单次操作到完整任务循环理解 Gemini 计算机使用的工作流程很重要这能帮你更好地调试和优化。3.1 四步循环机制整个流程是一个持续的请求-执行-反馈循环发送请求向模型发送当前屏幕截图和任务指令接收响应模型分析后返回具体的操作指令和推理意图执行操作在浏览器中执行点击、输入等操作捕获状态截图新的界面状态准备下一轮请求这个循环会一直持续直到任务完成或达到最大步数限制。3.2 首次交互的实现先来看一个完整的初始化示例from google import genai import base64 client genai.Client() # 导航到起始页面 page.goto(https://www.google.com) # 捕获初始屏幕截图 initial_screenshot page.screenshot(typepng) # 创建首次交互 interaction client.interactions.create( modelgemini-3.5-flash, input[ {type: text, text: 搜索 Gemini API 文档}, {type: image, data: base64.b64encode(initial_screenshot).decode(utf-8), mime_type: image/png} ], tools[{ type: computer_use, environment: browser, enable_prompt_injection_detection: True # 启用安全检测 }] )注意这里同时发送了文本指令和图像数据模型需要这两者来理解任务上下文。3.3 操作执行的关键细节模型返回的操作指令需要正确解析和执行。坐标映射是最容易出错的地方def denormalize_x(x: int, screen_width: int) - int: 将归一化坐标 (0-1000) 转换为实际像素坐标 return int(x / 1000 * screen_width) def denormalize_y(y: int, screen_height: int) - int: return int(y / 1000 * screen_height)执行操作时还要考虑页面加载时间我一般会加上等待page.wait_for_load_state(timeout5000) # 等待页面加载 time.sleep(1) # 额外等待确保界面稳定4. 完整代理循环让任务自动执行下去单次操作只是开始真正的价值在于多步任务的自动化。4.1 构建任务循环框架下面是一个完整的代理循环实现def run_computer_use_agent(task_description, max_steps10): 运行计算机使用代理的完整循环 # 初始化环境 page.goto(https://www.google.com) screenshot page.screenshot(typepng) # 首次请求 interaction client.interactions.create( modelgemini-3.5-flash, input[ {type: text, text: task_description}, {type: image, data: base64.b64encode(screenshot).decode(utf-8), mime_type: image/png} ], tools[{type: computer_use, environment: browser}] ) for step in range(max_steps): print(f步骤 {step 1}/{max_steps}) # 检查是否有需要执行的操作 function_calls [s for s in interaction.steps if s.type function_call] if not function_calls: print(任务完成或无需进一步操作) break # 执行所有操作 results execute_function_calls(interaction, page, SCREEN_WIDTH, SCREEN_HEIGHT) # 捕获新状态并继续对话 function_responses get_function_responses(page, results) interaction client.interactions.create( modelgemini-3.5-flash, previous_interaction_idinteraction.id, # 保持对话连续性 inputfunction_responses, tools[{type: computer_use, environment: browser}] ) return interaction4.2 操作执行函数的完善版这是更健壮的操作执行实现def execute_function_calls(interaction, page, screen_width, screen_height): 执行模型返回的所有函数调用 results [] function_calls [step for step in interaction.steps if step.type function_call] for function_call in function_calls: action_result {} fname function_call.name args function_call.arguments print(f执行: {fname} | 意图: {args.get(intent, 未指定)}) try: # 处理点击类操作 if fname in [click, click_at, double_click, right_click]: x denormalize_x(args[x], screen_width) y denormalize_y(args[y], screen_height) if fname in [click, click_at]: page.mouse.click(x, y) elif fname double_click: page.mouse.dblclick(x, y) elif fname right_click: page.mouse.click(x, y, buttonright) # 处理文本输入 elif fname in [type, type_text_at]: text args[text] press_enter args.get(press_enter, False) # 如果有坐标先点击定位 if x in args and y in args: x denormalize_x(args[x], screen_width) y denormalize_y(args[y], screen_height) page.mouse.click(x, y) # 清空字段再输入 page.keyboard.press(ControlA) page.keyboard.press(Backspace) page.keyboard.type(text) if press_enter: page.keyboard.press(Enter) # 处理导航 elif fname navigate: page.goto(args[url]) # 其他操作... # 等待界面稳定 page.wait_for_load_state(timeout5000) time.sleep(1) except Exception as e: print(f执行 {fname} 时出错: {e}) action_result[error] str(e) results.append((fname, function_call.id, action_result)) return results4.3 状态捕获和反馈执行操作后需要将结果反馈给模型def get_function_responses(page, results): 捕获执行后的界面状态 screenshot_bytes page.screenshot(typepng) current_url page.url function_responses [] for name, call_id, result in results: response { type: function_result, name: name, call_id: call_id, result: [ { type: text, text: f{{url: {current_url}, success: true, details: {result}}} }, { type: image, data: base64.b64encode(screenshot_bytes).decode(utf-8), mime_type: image/png } ] } function_responses.append(response) return function_responses5. 多环境支持浏览器、移动端和桌面端Gemini 3.5 Flash 支持三种不同的执行环境每种环境有特定的操作集。5.1 浏览器环境操作全集浏览器环境下支持的操作最丰富操作类型说明关键参数click左键点击x, y, intentdouble_click双击x, y, intenttype输入文本text, press_enter, intentnavigate跳转到URLurl, intentscroll滚动页面direction, magnitude_in_pixels, intentpress_key按键操作key, intent移动端环境增加了应用管理操作比如open_app、list_apps桌面端环境则支持更系统级的操作。5.2 环境选择策略选择环境时考虑这些因素浏览器环境最适合网页自动化任务兼容性最好移动端环境需要模拟移动设备界面时使用桌面端环境系统级自动化权限要求更高我建议从浏览器环境开始测试这是最稳定且文档最全的选项。6. 安全配置避免自动化带来的风险计算机使用功能虽然强大但也带来安全风险。正确的安全配置至关重要。6.1 内置安全策略Gemini 3.5 Flash 提供了可配置的安全策略# 启用严格的安全策略 interaction client.interactions.create( modelgemini-3.5-flash, input完成网上购物流程, tools[{ type: computer_use, environment: browser, # 禁用某些敏感操作 disabled_safety_policies: [ FINANCIAL_TRANSACTIONS, # 财务交易 ACCOUNT_CREATION # 账号创建 ] }] )主要的安全策略类别包括FINANCIAL_TRANSACTIONS财务交易保护SENSITIVE_DATA_MODIFICATION敏感数据修改保护COMMUNICATION_TOOL通信工具限制USER_CONSENT_MANAGEMENT用户同意管理6.2 提示注入检测这是一个重要的安全功能可以检测屏幕截图中隐藏的恶意指令tools[{ type: computer_use, environment: browser, enable_prompt_injection_detection: True # 启用检测 }]当模型检测到可能的提示注入时会返回需要确认的安全决策。6.3 人工确认机制对于敏感操作实现人工确认流程def handle_safety_decision(safety_decision): 处理需要确认的安全决策 explanation safety_decision.get(explanation, 操作需要确认) decision safety_decision.get(decision, require_confirmation) if decision require_confirmation: print(f安全确认: {explanation}) user_input input(确认执行? (y/n): ) return user_input.lower() y return False7. 实战调试常见问题和解决方案在实际使用中你会遇到各种问题。这里分享一些调试经验。7.1 坐标映射问题最常见的错误是坐标计算不正确# 正确的坐标映射示例 def safe_denormalize(x, y, width, height): 安全的坐标映射包含边界检查 x max(0, min(1000, x)) # 限制在 0-1000 范围内 y max(0, min(1000, y)) actual_x int(x / 1000 * width) actual_y int(y / 1000 * height) # 确保坐标在屏幕范围内 actual_x max(0, min(width - 1, actual_x)) actual_y max(0, min(height - 1, actual_y)) return actual_x, actual_y7.2 界面稳定性处理动态界面可能导致操作失败def wait_for_ui_stable(page, timeout10): 等待界面稳定 import time start_time time.time() while time.time() - start_time timeout: try: # 检查页面是否完全加载 page.wait_for_load_state(networkidle, timeout5000) # 额外的稳定等待 time.sleep(2) return True except: time.sleep(1) return False7.3 错误处理和重试机制健壮的代理需要错误处理def execute_with_retry(operation_func, max_retries3): 带重试的操作执行 for attempt in range(max_retries): try: return operation_func() except Exception as e: if attempt max_retries - 1: raise e print(f操作失败第 {attempt 1} 次重试: {e}) time.sleep(2)8. 性能优化和最佳实践要让计算机使用代理在实际项目中可靠运行还需要一些优化技巧。8.1 屏幕截图优化截图质量和大小影响性能和准确性def optimize_screenshot(page): 优化屏幕截图 # 降低截图质量以减小尺寸如果任务不需要高精度 screenshot page.screenshot( typejpeg, # JPEG 比 PNG 体积小 quality80, # 质量参数 clip{x: 0, y: 0, width: SCREEN_WIDTH, height: SCREEN_HEIGHT} ) return screenshot8.2 任务分解策略复杂任务需要合理分解def break_down_complex_task(main_task): 分解复杂任务为可执行的子任务 sub_tasks [ 打开目标网站, 登录系统如果需要, 执行主要操作, 验证结果, 清理退出 ] # 为每个子任务设置检查点 checkpoints [] for i, task in enumerate(sub_tasks): checkpoints.append({ step: i 1, description: task, verification: f检查步骤 {i 1} 完成状态 }) return checkpoints8.3 资源管理和清理正确的资源管理避免内存泄漏class ComputerUseAgent: def __init__(self): self.browser None self.context None self.page None def __enter__(self): self.setup_environment() return self def __exit__(self, exc_type, exc_val, exc_tb): self.cleanup() def setup_environment(self): 设置执行环境 playwright sync_playwright().start() self.browser playwright.chromium.launch(headlessFalse) self.context self.browser.new_context( viewport{width: SCREEN_WIDTH, height: SCREEN_HEIGHT} ) self.page self.context.new_page() def cleanup(self): 清理资源 if self.browser: self.browser.close()通过这种上下文管理器模式可以确保即使任务执行失败资源也能被正确释放。Gemini 3.5 Flash 的计算机使用功能为自动化任务提供了新的可能性但实际落地时需要仔细考虑环境配置、安全措施和错误处理。先从简单的任务开始逐步验证每个环节的稳定性再扩展到更复杂的应用场景。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度