Использование браузера в Managed Deep Agents

Источник: LangChain•

Использование браузера в Managed Deep Agents

Managed Deep Agents теперь запускает браузер для вашего агента, оснащенный инструментами, оптимизированными для эффективного использования контекста, и функцией передачи управления, чтобы вы могли войти в систему самостоятельно.

Агенты стали достаточно хороши, чтобы работать там, где работаем мы, и большая часть этой работы происходит в браузере. Бронирование путешествий, отмена подписки или подача претензии — все это происходит на сайтах, созданных для людей, кликающих по страницам, в том числе на тех, которые агент не планировал посещать. Часто у сайта нет API, к которому агент мог бы обратиться. Загрузка страницы с помощью curl тоже не дает результатов, так как возвращает HTML до того, как какой-либо JavaScript отрендерит страницу, и не умеет никуда кликать.

Персональные агенты, такие как Instinct и Muse от Meta, уже работают таким образом. Трафик браузерных агентов также быстро растет, и DataDome зафиксировал рост запросов от агентных браузеров в 4,7 раза только за сентябрь.

Managed Deep Agents позволяет создавать и развертывать агентов в LangSmith без необходимости управлять какой-либо инфраструктурой. Вы пишете инструкции и инструменты для агента, а LangSmith запускает среду выполнения и управляющие механизмы. Сегодня мы добавляем в эти агенты браузер, чтобы вы могли создавать собственных агентов, работающих в вебе. Managed Deep Agents также запускает браузер и предоставляет вашему агенту специализированные инструменты для него.

В этой статье мы рассказываем о том, в каких случаях помогает браузер, как его включить, включая передачу браузера человеку, когда это необходимо агенту. Затем мы подробно рассмотрим, как это устроено под капотом. Агенты, созданные с помощью открытого исходного кода Deep Agents, также могут использовать браузер. На следующей неделе мы выпустим подробный обзор того, как мы тестировали и настраивали браузерные инструменты.

Где помогает браузер

Имея браузер и инструменты для управления им, агент может читать то, что рендерится на странице, и кликать по элементам точно так же, как это делаете вы (человек).

На данный момент выделились два основных сценария использования:

  • Действия, которые не может покрыть API, такие как бронирование авиабилетов или столика в ресторане. Если у сайта есть API для выполнения задачи, агент должен использовать его.
  • Сквозное (E2E) тестирование, например проверка изменений во фронтенде перед их слиянием (merge). Когда pull request меняет форму регистрации, агент-программист может запустить приложение в своей песочнице (sandbox), открыть форму в браузере и пройти по шагам, чтобы убедиться, что изменения работают. Мы используем это в Open SWE, нашем агенте для программирования.

Добавление возможностей работы с браузером

Чтобы добавить браузер, экспортируйте browser из browser.py в корне проекта:

Параметр scope управляет тем, как разделяются сеансы браузера.

  • scope="thread" (по умолчанию) предоставляет каждому треду (диалогу) собственный браузер. Каждый разговор начинается с нового окна браузера без файлов cookie или сохраненных входов из других тредов.
  • scope="user" разделяет один браузер между тредами авторизованного пользователя (см. раздел «Идентификация»). Каждый тред получает собственное окно, поэтому два одновременно работающих разговора не перекрывают друг друга, но они используют общие файлы cookie и другое состояние браузера. Если вы вошли на сайт в одном треде, последующий тред может подхватить этот сеанс вместо того, чтобы начинать сначала.

Браузер останавливается после idle_ttl_seconds бездействия (по умолчанию 10 минут), поэтому вы не платите за браузер, которым никто не пользуется.

Передача браузера пользователю

Некоторые шаги все еще требуют участия человека, и вход в систему (sign-in) — самый распространенный из них. Вы же не хотите давать агенту свой пароль, иначе он попадет в сообщения модели, в трейсы и к провайдеру модели.

Поэтому, когда агент попадает на страницу входа, он вызывает функцию browser_handoff с указанием причины, например: «Пожалуйста, войдите в Acme Travel, чтобы я мог продолжить». В LangSmith Studio, интерфейсе для общения с вашим агентом и его отладки, вы получаете интерактивную карточку с тем же браузером. Вы сами входите в систему, нажимаете кнопку «Вернуть управление» (Hand back), и агент продолжает работу с того места, где остановился, уже будучи авторизованным. Функция передачи доступна с каждым управляемым браузером и автоматически работает в таких каналах Managed Deep Agents, как Slack, поэтому ничего дополнительно настраивать не нужно.

Это особенно важно при scope="user". При пользовательской области видимости данные входа сохраняются для последующих тредов, поэтому агент просит вас войти в систему всего один раз, точно так же, как ваш собственный браузер запоминает вас.

Как это работает под капотом

Агенту нужны две вещи для работы в вебе: браузер и набор инструментов для управления им. Managed Deep Agents управляет тем и другим.

Браузер. Managed Deep Agents запускает браузер в собственной песочнице LangSmith, отдельно от агента. Это удаленный браузер, поэтому на вашей машине ничего не запускается. В отличие от большинства удаленных браузеров, он также имеет приватное соединение с песочницей агента, что и обеспечивает работу сквозного тестирования (подробнее ниже).

Инструменты. Managed Deep Agents добавляет следующие браузерные инструменты для агента:

  • browser_snapshot считывает дерево доступности (accessibility tree) страницы и размечает интерактивные элементы идентификаторами.
  • browser_run выполняет действия на странице либо с помощью набора команд (клики и заполнение полей), либо с помощью JavaScript, использующего объект страницы в стиле Playwright, который Stagehand переводит в собственные команды.
  • browser_screenshot делает скриншот отрендеренной страницы.
  • browser_handoff передает браузер человеку, который возвращает его после завершения работы (см. выше).

browser_run выполняет большую часть работы. Он принимает код, поэтому агент может написать целую цепочку шагов (открыть страницу, заполнить поле, кликнуть, проверить результат) в виде одного вызова и вернуть только то, что ему нужно. Это поддерживает высокую скорость выполнения длительных задач в браузере и исключает попадание большей части содержимого страницы в контекст агента.

Инструменты созданы на базе Stagehand, open source SDK компании Browserbase для создания браузерных агентов. Мы протестировали и настроили их с учетом жизненного цикла разработки агентов: запускали бенчмарки браузера, читали трейсы в LangSmith и проверяли каждое изменение с помощью оценок (evals). На 100 задачах из WebVoyager, бенчмарка повседневных задач на живых сайтах, они успешно справились с 90% задач при общей стоимости в 1,98 доллара. Это был самый высокий показатель успешности среди семи протестированных нами наборов инструментов. Ближайший конкурент, MCP-сервер от Browserbase, справился с 89% при в 9 раз большей стоимости.

Эта архитектура поддерживает оба варианта использования с небольшими различиями.

Действия, которые не может покрыть API

Для таких задач, как бронирование, агенту нужен только браузер. Его браузерные инструменты отправляют команды в песочницу браузера, которая управляет страницей.

Сквозное тестирование

Для сквозного тестирования требуется еще один компонент. Тестируемое приложение работает в собственной песочнице агента, поэтому браузер должен иметь к нему доступ. Это обеспечивается двумя соединениями:

  • Агент управляет браузером через свои браузерные инструменты, как описано выше.
  • Браузер обращается к приложению через мост localhost. Когда браузер открывает localhost:5173, запрос идет по частному каналу к порту 5173 в песочнице агента. Приложению не нужен публичный URL. В данном контексте localhost означает песочницу агента.

Агент запускает приложение с помощью execute, открывает его в браузере, проходит по реальным сценариям (например, через форму регистрации) и проверяет, что рендерится на экране.

Как только тест пройден, вы можете попросить агента сохранить свои шаги в виде файла теста, так как каждый вызов browser_run представляет собой часть обычного скрипта Playwright. Последующие запуск воспроизводят этот файл без каких-либо вызовов модели до тех пор, пока страница не изменится.

Заключение

Браузеры открывают агентам огромную часть веба — от бронирования авиабилетов до тестирования приложения, которое только что создал агент-программист. С помощью Managed Deep Agents добавление браузера вашему агенту требует всего нескольких строк кода, а лежащие в их основе инструменты оптимизированы для высокой скорости и эффективного использования контекста.

Добавьте браузер управляемому агенту с помощью define_browser. Чтобы добавить браузер агенту на базе открытого исходного кода, где вы используете собственные решения (например, хостинг от Browserbase), обратитесь к руководству по использованию браузера.

Благодарности

Спасибо Шону Макгвайру (Sean McGuire), Мигелю Гонсалесу (Miguel Gonzalez) и Кайлу Чону (Kyle Jeong) из Browserbase за помощь со Stagehand и подготовку этой публикации.

О чём эта статья

Ещё в разделе «AI и машинное обучение»

Все →

Ещё от LangChain