Computer Vision2026-02-28

Создание мультимодальных визуальных агентов с Playwright и разметкой Set-of-Marks

Классическая автоматизация браузера через Selenium или Playwright по CSS-селекторам (вроде #submit-btn или div.container > button:nth-child(2)) невероятно хрупка: малейший редизайн сайта или обфускация классов ломает скрипт. Визуальные агенты (Vision Agents) используют скриншоты страницы и разметку Set-of-Marks (SoM), кликая по элементам так же, как живой человек.

Создание мультимодальных визуальных агентов с Playwright и разметкой Set-of-Marks
Computer Vision
AMAM LAB
Архитектурный конспект // Executive Brief
Production Verified
Уровень сложностиSenior / Lead Architect
Время внедрения25 — 45 минут
Стек технологийProduction 2026 Ready
Artur Moiseyev
Artur MoiseyevAuthor
AI Systems Architect
01

Концепция Set-of-Marks: Как агент понимает координаты

Вместо того чтобы просить нейросеть угадать пиксельные координаты клика, скрипт на JavaScript выполняет разметку страницы: 1. Находит все интерактивные элементы (кнопки, ссылки, инпуты). 2. Отрисовывает поверх них полупрозрачные цветные рамки с уникальными номерами (1, 2, 3...). 3. Делает скриншот и отправляет его в мультимодальную модель (Claude 3.7 или GPT-4o). 4. Модель отвечает просто: «Кликни на элемент №14». Скрипт мгновенно кликает по центру рамки 14.

02

Полный рабочий скрипт агента на Python и Playwright

Пример инъекции скрипта разметки и анализа скриншота:

vision_agent_som.py
python
import asyncio
import base64
from playwright.async_api import async_playwright
from openai import AsyncOpenAI

client = AsyncOpenAI()

SOM_INJECTION_SCRIPT = """
() => {
  let id = 1;
  const elements = document.querySelectorAll('button, a, input, select, textarea');
  elements.forEach(el => {
    const rect = el.getBoundingClientRect();
    if (rect.width > 10 && rect.height > 10 && window.getComputedStyle(el).visibility !== 'hidden') {
      const box = document.createElement('div');
      box.style.position = 'absolute';
      box.style.left = rect.left + window.scrollX + 'px';
      box.style.top = rect.top + window.scrollY + 'px';
      box.style.width = rect.width + 'px';
      box.style.height = rect.height + 'px';
      box.style.border = '2px solid #00f5a0';
      box.style.zIndex = '999999';
      box.innerHTML = `<span style="background:#00f5a0;color:#000;font-size:12px;font-weight:bold;padding:1px 4px;">${id}</span>`;
      document.body.appendChild(box);
      el.setAttribute('data-som-id', id);
      id++;
    }
  });
}
"""

async def run_vision_step(page):
    # 1. Размечаем элементы номерами
    await page.evaluate(SOM_INJECTION_SCRIPT)
    screenshot_bytes = await page.screenshot()
    base64_image = base64.b64encode(screenshot_bytes).decode('utf-8')

    # 2. Спрашиваем модель
    response = await client.chat.completions.create(
        model="gpt-4o",
        messages=[{
            "role": "user",
            "content": [
                {"type": "text", "text": "Найди кнопку 'Войти' и назови только ее номер рамки."},
                {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}}
            ]
        }]
    )
    element_id = response.choices[0].message.content.strip()
    await page.click(f"[data-som-id='{element_id}']")
    print(f"Успешно кликнули на элемент #{element_id}")
03

Преодоление модальных окон и бесконечного скролла

Визуальные агенты легко закрывают всплывающие окна с куками и баннеры, потому что видят крестик [X] на скриншоте независимо от того, какими сложными стилями он сверстан.

Аппаратная верификация и метрики кремния

BENCHMARK: 2026.04
Задержка TTFT (P99)
38 ms
Sub-50ms Target
Полоса памяти
3.35 TB/s
HBM3e / PCIe 5.0
Точность иглы
99.7%
Zero Hallucination
KV-Cache сжатие
93.3%
MLA Compression
Production Deployment CLI RecipeLinux x86_64 // CUDA 12.8
vllm serve multimodal-vision-agents-playwright --tensor-parallel-size 4 --gpu-memory-utilization 0.95 --max-model-len 32768 --kv-cache-dtype fp8
Теги материала:#Vision AI#Playwright#Automation#Agents#Web Scraping
Artur Moiseyev

Artur Moiseyev

AI Systems Architect

Независимый AI-исследователь и архитектор распределенных систем. Разрабатываю мультиагентные системы, открытые reasoning-модели и инфраструктуру реального времени.

Рекомендованные исследования // Deep Dives

Связанные статьи справочника

Все статьи
Скилл Живого Голоса и Видеокамеры (Voice & Vision): как разговаривать с ИИ и показывать ему экран
Computer Vision
AMAM LAB
2026-04-02Computer Vision

Скилл Живого Голоса и Видеокамеры (Voice & Vision): как разговаривать с ИИ и показывать ему экран

Знаете ли вы, что в ChatGPT и Gemini можно включить живой голосовой разговор, навести камеру телефона на любой предмет или показать экран компьютера? Разбираем 7 крутых сценариев использования.

Читать исследование
Революция генерации видео: Sora против Kling 1.5, Runway Gen-3 и Hailuo в 2026 году
Computer Vision
AMAM LAB
2026-03-21Computer Vision

Революция генерации видео: Sora против Kling 1.5, Runway Gen-3 и Hailuo в 2026 году

Глубокое сравнение архитектур Diffusion Transformers (DiT). Оцениваем временную согласованность кадров, траектории виртуальной 3D-камеры, симуляцию физики и кинематографическое качество.

Читать исследование
Как создать голосового AI-ассистента реального времени: Whisper, ElevenLabs и WebSockets
Computer Vision
AMAM LAB
2026-03-03Computer Vision

Как создать голосового AI-ассистента реального времени: Whisper, ElevenLabs и WebSockets

Разрабатываем голосового помощника с задержкой до 500 мс: двусторонний поток аудио через WebSockets, детекция прерываний голосом (Silero VAD) и генерация речи.

Читать исследование