Как нейросети учатся кликать мышкой: инженерные вызовы зрения для ИИ-агентов
Современные ИИ-агенты должны не только «думать», но и «видеть» экран. В статье разбираем сложнейшую инженерную задачу — как превратить понимание картинки нейросетью в точный клик по кнопке на сложной веб-странице.
Чтобы ИИ-агент мог действовать в браузере, ему нужны не только глаза, но и точный механизм перевода «увиденного» в координаты клика — это задача сложнее, чем кажется.
Наука об автоматизации веб-приложений с помощью ИИ выходит за рамки простого создания всё более «умных» языковых моделей. Следующий рубеж — это дать этим моделям возможность реально взаимодействовать с интерфейсами: нажимать кнопки, заполнять формы, перемещаться по сайтам. И здесь разработчики сталкиваются с фундаментальной сложностью, которую можно назвать «координатным разрывом».
Проблема: нейросеть видит пиксели, а браузер понимает DOM
Классический подход к браузерной автоматизации — использование селекторов вроде click_element(selector). Он надёжен, но хрупок: современные веб-приложения используют динамические классы, сложные структуры теневого DOM (Shadow DOM), canvas-элементы. Вычислить стабильный селектор для кнопки «Оплатить» в современном SaaS-интерфейсе часто невозможно.
Альтернатива — наделить агента зрением. Он делает скриншот, отправляет его мультимодальной языковой модели (LLM), которая анализирует картинку и говорит: «Кнопка находится примерно здесь». Проблема в том, что «примерно здесь» от нейросети — это нормализованные координаты (например, [0.52, 0.38]), а браузеру для реального клика нужны точные пиксельные координаты в системе координат его области просмотра (viewport).
Между этими двумя системами координат лежит целая пропасть, преодолеть которую без точной математики невозможно.
Три основных типа ошибок при «визуальном» клике
Превращение вывода LLM в надёжное действие сопряжено с неизбежными ошибками, которых нет в детерминированном коде:
- Квантование (Quantization Drift): Модель обрабатывает изображение как набор патчей (токенов). Её внимание локализует элемент в пределах такого патча, и итоговые координаты могут «плавать» на 5-10 пикселей. В плотном интерфейсе это разница между нажатием на чекбокс и кликом по его подписи.
- Искажение пропорций (Aspect Ratio Distortion): Скриншот часто масштабируется или обрезается, чтобы соответствовать формату, который «любит» LLM. Если не сохранить точное соотношение сторон, геометрия искажается, и все клики систематически смещаются к краям экрана.
- Временное смещение (Temporal UI Shift): Пока агент обрабатывает скриншот (занимает время), интерфейс может измениться: появиться баннер, прокрутиться страница, подгрузиться данные. Кнопка, которую агент «видел», уже не там. Это делает автоматизацию по принципу «сделал скриншот — кликнул» нерабочей в динамических приложениях.
Как решается задача: конвейер координат
Чтобы всё заработало, нужен строгий процесс трансформации координат:
- Денормализация: Перевод относительных координат LLM (от 0 до 1) в абсолютные пиксели исходного скриншота.
- Масштабирование к области просмотра: Учёт коэффициента масштабирования при захвате экрана и плотности пикселей устройства (DPR, Device Pixel Ratio). Это не простая пропорция, а affine-трансформация, учитывающая возможные «отступы» (letterboxing).
- Разрешение через DOM (Hit-testing): Получив координаты в пикселях viewport, нужно найти реальный элемент DOM по этим точкам. Используется
document.elementFromPoint(x, y), но даже этот API может вернуть невидимый оверлей. Поэтому хорошие системы проводят рекурсивный поиск в Shadow DOM и проверяют, что найденный элемент действительно интерактивен (кнопка, ссылка и т.д.). - Диспетчеризация события: Генерация и отправка нативного
MouseEventна найденный элемент.
Самовосстановление — ключ к production-решению
В идеальном мире клик всегда успешен. В реальном — нужно обрабатывать сбои. Продвинутые агенты используют многоуровневую систему восстановления:
- Уровень 1: Если клик не сработал, попробовать сдвинуть координаты на несколько пикселей вокруг исходной точки.
- Уровень 2: Запросить точную позицию и размер целевого элемента через API и пересчитать идеальную точку клика.
- Уровень 3: Полностью отказаться от координат и переключиться на текстовый поиск (по ARIA-атрибутам, тексту).
- Уровень 4: Переосмыслить задачу и попробовать другой путь.
Только объединяя точную математику преобразования координат, глубокую интеграцию с DOM и механизмы самовосстановления, можно создать по-настоящему надёжного ИИ-агента для работы в сложных веб-интерфейсах.
Эти технические решения — не теория, а необходимый фундамент для следующего поколения инструментов автоматизации, от тестирования до роботизации бизнес-процессов. Их сложность подчёркивает, как далеко мы продвинулись от простых скриптов до агентов, способных воспринимать экран так же, как человек.