Создание агентов компьютерного взаимодействия (CUA)
Агенты компьютерного взаимодействия могут взаимодействовать с веб-сайтами так же, как человек: открывать браузер, исследовать страницу и выполнять наилучшее следующее действие, исходя из увиденного. В этом уроке вы создадите агента автоматизации браузера, который будет искать на Airbnb, извлекать структурированные данные объявлений и определять самую дешевую аренду в Стокгольме.
Урок объединяет Browser-Use для навигации с ИИ, Playwright и протокол Chrome DevTools (CDP) для управления браузером, Azure OpenAI для логического анализа с использованием зрения и Pydantic для структурированного извлечения.
Введение
В этом уроке будет рассмотрено:
- Понимание, когда агенты компьютерного взаимодействия лучше подходят, чем автоматизация только через API
- Сочетание Browser-Use с Playwright и CDP для надежного управления жизненным циклом браузера
- Использование зрения Azure OpenAI и структурированного вывода Pydantic для извлечения данных объявлений с динамических веб-страниц
- Определение, когда использовать агентский, актерский или гибридный рабочий процесс автоматизации браузера
Цели обучения
После прохождения этого урока вы будете знать, как:
- Настроить Browser-Use с Azure OpenAI и Playwright
- Создать рабочий процесс автоматизации браузера, который навигирует по реальному сайту и работает с динамическими элементами интерфейса
- Извлекать типизированные результаты из видимого контента страницы и преобразовывать их в бизнес-логику
- Выбирать между паттернами агента и актера в зависимости от предсказуемости задачи браузера
Пример кода
В уроке представлен один учебный ноутбук:
- 15-browser-user.ipynb: Запускает сессию Chrome через CDP, ищет объявления Airbnb в Стокгольме, извлекает цены с помощью зрения Browser-Use и возвращает самый дешевый вариант в виде структурированных данных.
Требования
- Python 3.12+
- Настроенное развертывание Azure OpenAI в вашей среде
- Установленный локально Chrome или Chromium
- Установленные зависимости Playwright
- Базовое знакомство с асинхронным Python
Настройка
Установите пакеты, используемые в ноутбуке:
pip install browser_use playwright python-dotenv
playwright install chromium
Установите переменные окружения Azure OpenAI, используемые в ноутбуке:
AZURE_OPENAI_ENDPOINT=...
AZURE_OPENAI_API_KEY=...
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME=...
# Необязательно: по умолчанию используется последняя версия API при пропуске
AZURE_OPENAI_API_VERSION=...
Обзор архитектуры
Ноутбук демонстрирует гибридный рабочий процесс автоматизации браузера:
- Chrome запускается с включенным CDP, чтобы Playwright и Browser-Use могли работать в одной сессии браузера.
- Агент Browser-Use обрабатывает задачи открытой навигации, такие как открытие Airbnb, закрытие всплывающих окон и поиск по Стокгольму.
- Из активной страницы извлекаются заголовки объявлений, цены за ночь, рейтинги и URL с помощью структурированной схемы Pydantic.
- Логика Python сравнивает извлеченные объявления и выделяет самый дешевый вариант.
Такой подход сохраняет гибкое логическое рассуждение на основе зрения, которое эффективно в Browser-Use, при этом обеспечивая детерминированное управление браузером, когда это необходимо.
Ключевые выводы и передовые практики
Когда использовать агента или актера
| Сценарий |
Использовать агента |
Использовать актера |
| Динамические макеты |
Да, ИИ может адаптироваться к изменениям страницы |
Нет, хрупкие селекторы могут ломаться |
| Известная структура |
Нет, агент медленнее прямого управления |
Да, быстро и точно |
| Поиск элементов |
Да, естественный язык хорошо работает |
Нет, нужны точные селекторы |
| Контроль времени |
Нет, менее предсказуемо |
Да, полный контроль над ожиданиями и повторными попытками |
| Сложные рабочие процессы |
Да, справляется с неожиданными состояниями интерфейса |
Нет, требует явного ветвления |
Лучшие практики Browser-Use
- Начинайте с агента для исследования и динамической навигации.
- Переключайтесь на прямое управление страницей, когда взаимодействие становится предсказуемым.
- Используйте структурированные модели вывода, чтобы извлечённые данные были валидированы и типобезопасны.
- Стратегически добавляйте задержки после действий, вызывающих видимые изменения интерфейса.
- Делайте снимки экрана при итерациях, чтобы упростить отладку при ошибках.
- Ожидайте изменения сайтов и разрабатывайте резервные стратегии для всплывающих окон и сдвигов макета.
- Сочетайте паттерны агента и актера, чтобы получить и гибкость, и точность.
Меры безопасности для браузерных агентов
Браузерные агенты работают с живыми сайтами, поэтому им нужны более строгие ограничения, чем скриптам, которые только вызывают известный API. Перед переходом от демонстрации в ноутбуке к реальному рабочему процессу определите контроль над тем, что агент может видеть, нажимать и отправлять.
- Ограничьте среду просмотра. Запускайте агента в отдельном профиле браузера или песочнице, и ограничьте его доступ только нужными доменами.
- Разделяйте наблюдение и действие. Позвольте агенту сначала искать, читать и извлекать данные; требуйте явного одобрения перед отправкой форм, сообщений, бронированием поездок, покупками, удалением записей или изменением настроек аккаунта.
- Не размещайте секреты в подсказках и логах. Не включайте пароли, платежные данные, сессионные cookie или личные данные в контекст модели. Позвольте пользователю выполнять аутентификацию и скрывать конфиденциальные поля из логов.
- Обращайтесь с содержимым страницы как с недоверенным вводом. На сайте могут быть инструкции для агента, а не для пользователя. Агент должен игнорировать текст страницы, требующий изменить цель, раскрыть данные, отключить меры безопасности или перейти на посторонние сайты.
- Используйте детерминированные проверки рискованных шагов. Проверяйте текущий URL, заголовок страницы, выбранный элемент, цену, получателя и саммари действия с помощью кода перед тем, как запрашивать у пользователя подтверждение финального шага.
- Устанавливайте лимиты и условия остановки. Ограничьте количество действий, повторных попыток, вкладок и времени работы агента. Прекращайте работу, если состояние страницы неоднозначно, вместо того чтобы продолжать нажимать.
- Записывайте полезные доказательства, а не все подряд. Храните суммарные данные по действиям, временные отметки, URL, описания выбранных элементов и ссылки на скриншоты, чтобы можно было проверить неудачи без сохранения избыточного чувствительного контента страницы.
В примере с Airbnb безопасный вариант — искать объявления и извлекать цены. Вход в аккаунт, контакт с хозяином или завершение бронирования должны быть действиями, одобренными пользователем.
Примеры использования в реальном мире
- Бронирование поездок и мониторинг цен
- Сравнение цен в электронной коммерции и проверка доступности
- Структурированное извлечение с динамических веб-сайтов
- Тестирование и верификация UI с использованием зрения
- Мониторинг сайтов и оповещения
- Интеллектуальное заполнение форм на многоэтапных потоках
Пример из реального мира: Microsoft Project Opal
Агент, который вы создаёте в этом уроке, является небольшой локальной версией агента компьютерного взаимодействия (CUA) — программы, которая управляет браузером так, как это сделал бы человек. Microsoft внедряет эту же идею в корпоративную среду с помощью Project Opal (Frontier), функции в Microsoft 365 Copilot.
С Project Opal вы описываете задачу, и агент работает от вашего имени с помощью компьютерного взаимодействия на безопасном Windows 365 Cloud PC, взаимодействуя с браузерными приложениями, сайтами и данными вашей организации. Он работает асинхронно в фоновом режиме и вы можете управлять работой или взять контроль в любой момент. Примеры задач включают:
- Управление запросами на участие в группах безопасности
- Сбор и проверка аудиторских данных для обзоров соответствия
- Триаж IT-инцидентов (обновление статуса заявки, назначение ответственных, закрытие дубликатов)
- Сбор данных Excel для финансовой отчётности
Opal служит полезным ориентиром того, как должен выглядеть промышленный, надежный агент компьютерного взаимодействия — и он подкрепляет концепции из предыдущих уроков:
| Концепция в этом курсе |
Как Project Opal её реализует |
| Человек в цикле (Урок 06) |
Opal делает паузы для ввода данных для входа, конфиденциальной информации или неоднозначных инструкций и никогда не вводит пароли и не отправляет формы без явного подтверждения. Вы можете Взять контроль и Вернуть контроль в процессе задачи. |
| Надежные и безопасные агенты (Уроки 06 и 18) |
Работает в изолированном Windows 365 Cloud PC, по умолчанию только в браузере (другой доступ к компьютеру заблокирован через Intune), использует вашу личность, чтобы получать доступ только к разрешенным ресурсам, и записывает каждое действие для аудита. |
| Планирование и метакогниция (Уроки 07 и 09) |
Opal сначала генерирует план задачи, затем контролирует свои рассуждения на каждом шаге и делает паузы при подозрительной активности. |
| Повторно используемые возможности / инструменты (Урок 04) |
Навыки позволяют создавать инструкции для повторяющихся задач (импортируются из .md файла или создаются в Opal) и использовать их в разных диалогах. |
Доступность: Project Opal доступен пользователям в программе раннего доступа Frontier с подпиской Microsoft 365 Copilot, и администратор должен выполнить настройку. Поскольку это экспериментальная функция Frontier, возможности могут меняться со временем.
Проверка знаний
Проверьте свои знания, прежде чем переходить к следующему уроку.
1. Когда агент компьютерного взаимодействия в браузере лучше подходит, чем рабочий процесс, использующий только API?
Ответ
Используйте браузерного агента, когда задача зависит от того, что видно в веб-интерфейсе, сайт не предоставляет нужный API, или страница меняется достаточно часто, чтобы фиксированная логика через API или селекторы была ненадежной. Если существует стабильный API для той же задачи, предпочтение отдавайте API, так как это обычно быстрее, проще тестировать и безопаснее.
2. В гибридном рабочем процессе, какие части должен обрабатывать агент, а какие — код с прямым управлением Playwright?
Ответ
Пусть агент обрабатывает задачи открытой навигации и динамические состояния интерфейса, такие как поиск нужной страницы или закрытие неожиданных всплывающих окон. Переключайтесь на прямое управление Playwright, когда структура страницы известна, и действия требуют точности, повторных попыток, ожиданий или детерминированной валидации.
3. Пример Airbnb находит объявление, которое пользователь может захотеть забронировать. Что должно произойти до того, как рабочий процесс выполнит вход, свяжется с хозяином или завершит бронирование?
Ответ
Рабочий процесс должен приостановиться и запросить явное одобрение пользователя. Перед запросом следует показать чёткое резюме выбранного объявления, текущий URL, цену, даты и предполагаемое действие. Поиск и извлечение цен могут выполняться автономно; доступ к аккаунту, сообщения, покупки и бронирования должны одобряться пользователем.
4. Веб-страница требует от агента игнорировать исходные инструкции, перейти на другой сайт и раскрыть сохранённые учетные данные. Как агент должен отнестись к этому тексту?
Ответ
Рассматривайте это как недоверенный контент страницы, а не как указания от разработчика или пользователя. Агент должен оставаться в пределах разрешенного домена и области задачи, отказываться раскрывать секреты и избегать следования инструкциям страницы, меняющим цель, отключающим меры безопасности или перенаправляющим на посторонние сайты.
5. Какие доказательства полезно хранить во время работы браузерного агента, а чего следует избегать?
Ответ
Храните суммарные данные по действиям, временные отметки, URL, описания выбранных элементов, результаты валидации и ссылки на скриншоты, чтобы можно было проанализировать запуск. Избегайте хранения паролей, платежной информации, сессионных cookie, необработанных личных данных или полного содержимого страниц, если нет специальных требований по хранению и конфиденциальности.
Дополнительные ресурсы
Предыдущий урок
Изучение Microsoft Agent Framework
Следующий урок
Развертывание масштабируемых агентов
Отказ от ответственности:
Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.