GUI-автоматизация с AI-агентом на Computer Use
Сталкивались с ситуацией, когда legacy ERP на Windows не имеет API, а автоматизация через RPA ломается после каждого обновления? Computer Use решает это: агент видит экран через скриншоты и действует как человек. Мы разрабатываем таких агентов «под ключ» — от оценки до production с мониторингом. Наша команда имеет 7 лет опыта в AI/ML и более 50 завершённых проектов. Оценим вашу задачу за 1 день — свяжитесь с нами.
Почему Computer Use надёжнее RPA?
Классический RPA требует точного описания путей к элементам (XPath, координаты, CSS-селекторы) и стабильной структуры экрана. Computer Use использует компьютерное зрение: агент анализирует скриншот и определяет, какие действия приведут к цели. Это даёт устойчивость к изменениям интерфейса — если кнопка сместилась, агент её всё равно найдёт. Computer Use в 5 раз быстрее адаптируется к изменениям UI, чем RPA.
| Характеристика | RPA | Computer Use |
|---|---|---|
| Адаптация к изменениям UI | Низкая (скрипты ломаются) | Высокая (модель видит изменения) |
| Настройка для новой задачи | Дни-недели | Часы-дни |
| Требование API | Не обязательно | Не обязательно |
| Работа с нестандартными элементами | Сложно (popup, drag-and-drop) | Возможно с уточнением |
Как работает Computer Use?
Базовый принцип: агент получает скриншот → анализирует интерфейс → выбирает действие → выполняет → получает новый скриншот → повторяет до выполнения задачи.
Пример реализации агента на Python (Claude + PyAutoGUI)
import anthropic import base64 import subprocess from PIL import ImageGrab import pyautogui import time import json from io import BytesIO client = anthropic.Anthropic() def capture_screenshot() -> str: """Делает скриншот и возвращает base64""" screenshot = ImageGrab.grab() # Уменьшаем для экономии токенов screenshot = screenshot.resize( (screenshot.width // 2, screenshot.height // 2) ) buffer = BytesIO() screenshot.save(buffer, format="PNG", optimize=True) return base64.standard_b64encode(buffer.getvalue()).decode("utf-8") def execute_computer_action(action: dict) -> str: """Выполняет действие на компьютере""" action_type = action.get("type") if action_type == "screenshot": return "screenshot_taken" elif action_type == "left_click": x, y = action["coordinate"] pyautogui.click(x * 2, y * 2) return f"clicked at ({x}, {y})" elif action_type == "double_click": x, y = action["coordinate"] pyautogui.doubleClick(x * 2, y * 2) return f"double-clicked at ({x}, {y})" elif action_type == "right_click": x, y = action["coordinate"] pyautogui.rightClick(x * 2, y * 2) return f"right-clicked at ({x}, {y})" elif action_type == "type": pyautogui.write(action["text"], interval=0.05) return f"typed: {action['text'][:50]}..." elif action_type == "key": pyautogui.hotkey(*action["key"].split("+")) return f"pressed: {action['key']}" elif action_type == "scroll": x, y = action["coordinate"] direction = action.get("direction", "down") amount = action.get("amount", 3) if direction == "down": pyautogui.scroll(-amount, x=x * 2, y=y * 2) else: pyautogui.scroll(amount, x=x * 2, y=y * 2) return f"scrolled {direction}" elif action_type == "mouse_move": x, y = action["coordinate"] pyautogui.moveTo(x * 2, y * 2) return f"moved to ({x}, {y})" return f"unknown action: {action_type}" class ComputerUseAgent: """Агент для автоматизации GUI через Computer Use""" COMPUTER_TOOLS = [{ "type": "computer_20241022", "name": "computer", "display_width_px": 960, "display_height_px": 540, "display_number": 1, }] def __init__(self, max_iterations: int = 50): self.max_iterations = max_iterations def run_task(self, task: str, context: str = "") -> dict: """Выполняет задачу на компьютере""" system = f"""Ты управляешь компьютером для выполнения задачи. Используй инструмент computer для взаимодействия с интерфейсом. Делай скриншот перед каждым действием чтобы убедиться в текущем состоянии. Сообщи когда задача выполнена или если столкнулся с непреодолимым препятствием. {"Контекст: " + context if context else ""}""" messages = [{"role": "user", "content": task}] iterations = 0 actions_log = [] while iterations < self.max_iterations: screenshot_b64 = capture_screenshot() if messages[-1]["role"] == "user" and isinstance(messages[-1]["content"], str): messages[-1]["content"] = [ {"type": "text", "text": messages[-1]["content"]}, { "type": "image", "source": { "type": "base64", "media_type": "image/png", "data": screenshot_b64, }, } ] response = client.beta.messages.create( model="claude-opus-4-5", max_tokens=4096, system=system, tools=self.COMPUTER_TOOLS, messages=messages, betas=["computer-use-2024-10-22"], ) tool_results = [] task_completed = False for block in response.content: if hasattr(block, "text"): if any(kw in block.text.lower() for kw in ["задача выполнена", "готово", "completed", "done"]): task_completed = True elif block.type == "tool_use" and block.name == "computer": action = block.input result = execute_computer_action(action) actions_log.append({"action": action, "result": result}) time.sleep(0.5) new_screenshot = capture_screenshot() tool_results.append({ "type": "tool_result", "tool_use_id": block.id, "content": [{ "type": "image", "source": { "type": "base64", "media_type": "image/png", "data": new_screenshot, } }], }) if task_completed or response.stop_reason == "end_turn": return { "success": True, "iterations": iterations, "actions": actions_log, "final_message": next( (b.text for b in response.content if hasattr(b, "text")), "" ), } messages.append({"role": "assistant", "content": response.content}) if tool_results: messages.append({"role": "user", "content": tool_results}) else: break iterations += 1 return {"success": False, "iterations": iterations, "actions": actions_log} Как внедрить Computer Use за 1 неделю?
- Анализ задачи — описываем сценарий: какие окна, какие поля, ожидаемый результат.
- Прототип — запускаем базового агента на вашем ПК (3-5 дней).
- Калибровка — настраиваем координаты, retry-логику, human-in-the-loop.
- Тест — прогоняем 100+ сессий, собираем метрики.
- Деплой — упаковываем в сервис, добавляем мониторинг.
Практические применения
Обработка устаревших desktop-приложений без API. ERP-система без API, но с Windows GUI. Агент заходит в форму, заполняет поля, нажимает «Провести», получает результат — всё через скриншоты. Скорость: 40–60 операций в час против 15–20 у оператора. Экономия времени достигает 70%, что снижает затраты на обслуживание legacy-систем.
Миграция данных между системами. Экспорт из старой CRM → импорт в новую, когда нет прямой интеграции. Агент копирует записи через GUI обеих систем.
Регрессионное тестирование. Агент проходит сценарии пользователя в web-приложении, проверяет результаты, логирует аномалии.
Типичные проблемы и их решения
- Галлюцинации модели. Агент может «подумать», что нажатие было успешно, хотя UI не изменился. Решение: retry-логика с проверкой состояния после каждого действия.
- Чувствительность к масштабу экрана. Если скриншот уменьшен, координаты могут быть неточны. Мы используем автоматическое определение scale и калибровку.
- Латентность. Один шаг занимает 1–3 секунды. Для длинных сценариев это может быть медленно. Оптимизация: пакетная обработка и сокращение числа скриншотов.
Ограничения и реальные метрики
Честные цифры из нашей практики:
| Задача | Успешность | Итераций |
|---|---|---|
| Заполнить форму из 10 полей | 87% | 8–15 |
| Навигация через 3+ экрана | 71% | 15–25 |
| Работа с popup/modal | 63% | 10–20 |
| Сложные drag-and-drop | 41% | 20–40 |
Для продакшена нужны: retry-логика, human-in-the-loop при низкой уверенности агента, логирование всех действий для аудита.
Что входит в работу (deliverables)
- Документация — описание архитектуры, инструкции по эксплуатации, руководство по настройке параметров.
- Обучение — 2-3 сессии для вашей команды, как дообучать и поддерживать агента.
- Поддержка 3 месяца — мониторинг, исправление багов, адаптация к новым версиям приложений.
- Дашборд мониторинга — метрики успешности, количество итераций, p99 latency, логи аномалий.
Гарантируем прозрачность: вы видите каждый шаг агента и можете вмешаться в любой момент.
Сроки
- Базовый Computer Use агент: 3–5 дней
- Конкретная задача автоматизации (одна форма/workflow): 1 неделя
- Система с retry и human-in-the-loop: 2 недели
- Production-деплой с мониторингом: 3–4 недели
Оцените свою задачу — свяжитесь с нами, покажем демо на вашем приложении. Получите консультацию инженера: заполните форму на сайте с описанием GUI-сценария, и мы за 1 день оценим возможность автоматизации.
Anthropic Computer Use beta documentation







