Интеграция Anthropic Computer Use для автоматизации работы с интерфейсами

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Интеграция Anthropic Computer Use для автоматизации работы с интерфейсами
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Интеграция Anthropic Computer Use: управление компьютером через AI

Computer Use от Anthropic — это возможность Claude управлять рабочим столом: видеть скриншоты, кликать, вводить текст, запускать программы. В отличие от классических инструментов автоматизации вроде AutoHotkey или PyAutoGUI, агент понимает контекст интерфейса и адаптируется к изменениям — не ломается от сдвига кнопки на 5 пикселей.

Как работает Computer Use

Claude получает скриншот экрана и возвращает одно из действий:

import anthropic
import base64
import subprocess
from pathlib import Path

client = anthropic.Anthropic()

def get_screenshot() -> str:
    """Делает скриншот и возвращает base64"""
    import pyautogui
    screenshot = pyautogui.screenshot()
    screenshot.save("/tmp/screen.png")
    return base64.standard_b64encode(Path("/tmp/screen.png").read_bytes()).decode()

def execute_action(action: dict) -> str:
    """Выполняет действие из Computer Use"""
    import pyautogui

    action_type = action["type"]

    if action_type == "screenshot":
        return get_screenshot()

    elif action_type == "mouse_move":
        pyautogui.moveTo(action["coordinate"][0], action["coordinate"][1])
        return "moved"

    elif action_type == "left_click":
        pyautogui.click(action["coordinate"][0], action["coordinate"][1])
        return "clicked"

    elif action_type == "double_click":
        pyautogui.doubleClick(action["coordinate"][0], action["coordinate"][1])
        return "double_clicked"

    elif action_type == "type":
        pyautogui.write(action["text"], interval=0.05)
        return "typed"

    elif action_type == "key":
        pyautogui.press(action["key"])
        return "key_pressed"

    elif action_type == "scroll":
        direction = 1 if action["direction"] == "up" else -1
        pyautogui.scroll(direction * action.get("amount", 3), x=action["coordinate"][0], y=action["coordinate"][1])
        return "scrolled"

    return "unknown_action"

def run_computer_use_agent(task: str, max_iterations: int = 30) -> str:
    """Запускает агент Computer Use для выполнения задачи"""

    tools = [{
        "type": "computer_20250124",
        "name": "computer",
        "display_width_px": 1920,
        "display_height_px": 1080,
        "display_number": 1,
    }]

    messages = [{"role": "user", "content": task}]

    for iteration in range(max_iterations):
        response = client.messages.create(
            model="claude-opus-4-5",
            max_tokens=4096,
            tools=tools,
            messages=messages,
        )

        if response.stop_reason == "end_turn":
            return next((b.text for b in response.content if hasattr(b, "text")), "Done")

        # Обрабатываем tool_use блоки
        tool_results = []
        for block in response.content:
            if block.type == "tool_use" and block.name == "computer":
                action = block.input
                result = execute_action(action)

                # Если запросил скриншот — добавляем изображение
                if action["type"] == "screenshot":
                    tool_results.append({
                        "type": "tool_result",
                        "tool_use_id": block.id,
                        "content": [{
                            "type": "image",
                            "source": {"type": "base64", "media_type": "image/png", "data": result}
                        }]
                    })
                else:
                    # После действия делаем скриншот чтобы Claude видел результат
                    import time
                    time.sleep(0.5)  # ждём анимации UI
                    screenshot = get_screenshot()
                    tool_results.append({
                        "type": "tool_result",
                        "tool_use_id": block.id,
                        "content": [{
                            "type": "image",
                            "source": {"type": "base64", "media_type": "image/png", "data": screenshot}
                        }]
                    })

        messages.append({"role": "assistant", "content": response.content})
        messages.append({"role": "user", "content": tool_results})

    return "Max iterations reached"

Безопасный sandbox через Docker

Для продакшн-задач Computer Use запускают в изолированном контейнере, чтобы агент не имел доступа к хост-системе:

FROM ubuntu:22.04

RUN apt-get update && apt-get install -y \
    xvfb x11vnc \
    python3-pip \
    chromium-browser \
    libreoffice \
    && rm -rf /var/lib/apt/lists/*

RUN pip3 install anthropic pyautogui pillow

# Виртуальный дисплей
ENV DISPLAY=:99
CMD ["bash", "-c", "Xvfb :99 -screen 0 1920x1080x24 & python3 /app/agent.py"]
import docker

def run_in_sandbox(task: str) -> str:
    """Запускает Computer Use задачу в Docker-контейнере"""
    container = docker.from_env().containers.run(
        "computer-use-sandbox",
        command=f'python3 -c "from agent import run_computer_use_agent; print(run_computer_use_agent({repr(task)}))"',
        remove=True,
        mem_limit="2g",
        cpu_period=100000,
        cpu_quota=50000,  # 50% CPU
        network_disabled=True,  # отключаем сеть если не нужна
        volumes={"/tmp/output": {"bind": "/output", "mode": "rw"}},
    )
    return container.decode()

Типовые задачи для Computer Use

Работа с legacy-системами без API — старые 1С-конфигурации, Excel-макросы, корпоративные ERP с только десктоп-интерфейсом.

Тестирование UI — агент кликает по интерфейсу как реальный пользователь, замечает визуальные баги, которые unit-тесты пропускают.

RPA без кода — сбор данных из нескольких веб-интерфейсов, перекладывание данных между системами без API.

# Пример: автоматическое заполнение налоговой декларации из Excel
task = """
1. Открой файл /data/income_2024.xlsx в LibreOffice Calc
2. Скопируй значения из столбца B (строки 5-20) - это доходы по кварталам
3. Открой браузер, перейди на nalog.gov.ru/lk
4. Войди с логином [email protected] и паролем из файла /data/credentials.txt
5. Найди форму 3-НДФЛ за 2024 год
6. Заполни поля доходов скопированными значениями
7. Сделай скриншот заполненной формы, сохрани в /output/form_preview.png
8. НЕ отправляй форму
"""

result = run_computer_use_agent(task)

Ограничения и практика

Computer Use работает медленнее автоматизации через API — каждое действие требует скриншота и обращения к модели. Типичная скорость: 2-5 действий в минуту. Для задач, где нужны сотни кликов, лучше Playwright/Selenium.

Оптимальное применение: задачи с нечёткими условиями, где нужно «прочитать» интерфейс, принять решение и выполнить несколько действий. Например, «найди незакрытые обращения в CRM старше 7 дней и отметь их как требующие внимания» — агент сам разберётся с навигацией конкретной CRM.

Сроки

  • Базовый Computer Use агент с pyautogui: 2–3 дня
  • Docker sandbox с виртуальным дисплеем: 2–3 дня
  • Конкретная задача автоматизации legacy-системы: 1–2 недели
  • Мониторинг и логирование действий агента: 3–5 дней