browser-use: LLM управляет браузером

· 3 мин чтения
ai-agents browser-automation automation python llm
📂 Исходный код на GitHub

Библиотека для браузерных агентов: LLM управляет реальным браузером через естественный язык. Локальный запуск на Python, режим CLI для coding-агентов, облачные браузеры с stealth и прокси.

browser-use: LLM управляет браузером

Browser Use — это open-source библиотека на Python, которая превращает языковую модель в оператора браузера. Вместо того чтобы писать селекторы и сценарии для Playwright, вы описываете задачу словами, а агент сам открывает страницы, находит нужные элементы, кликает, заполняет формы и возвращает результат. Репозиторий создан в конце 2024 года, написан на Python, распространяется под MIT-лицензией и собрал больше 116 тысяч звёзд и 12,8 тысячи форков.

Проект изначально задумывался как демонстрация возможностей агентов, но быстро вырос в полноценный инструмент: он используется для автоматизации ввода данных, бронирования, сбора публичной информации и тестирования сценариев, где обычный HTTP-клиент не справляется из-за рендеринга на клиенте.

Три способа начать

Проект предлагает три независимых пути, и выбор между ними определяется тем, кто будет выполнять задачу — ваш код, ваш coding-агент или инфраструктура Browser Use.

Путь Что это Для кого
Fully Hosted Cloud Готовый агент и браузеры в облаке, API для отправки задач Команды, которым нужна масштабируемая автоматизация без своей инфраструктуры
CLI Обёртка, дающая доступ к браузеру уже готовому агенту Пользователи Claude Code, Codex, Hermes, OpenClaw, Cursor
Python Library Сама open-source библиотека Разработчики, которые встраивают агента в собственное приложение

CLI и Python-библиотека умеют подключаться как к локальному браузеру, так и к облачному. При этом облачный браузер — это только сам браузер, а полностью размещённый Cloud API запускает ещё и агента.

Быстрый старт через Python-библиотеку

Требуется Python версии 3.11 или новее. Установка делается через uv:

uv init --python 3.12
uv add browser-use

Ключи провайдеров кладутся в .env:

# .env
OPENAI_API_KEY=your-key
# BROWSER_USE_API_KEY=your-key  # Optional: BU2 model or cloud browser

Дальше достаточно описать задачу. Минимальный агент выглядит так:

import asyncio

from browser_use import Agent, Browser, ChatBrowserUse, ChatOpenAI
from dotenv import load_dotenv

load_dotenv()

async def main():
    llm = ChatOpenAI(model='gpt-5.6-luna', reasoning_effort='xhigh')
    # llm = ChatBrowserUse(model=S2)  # Use BU2 instead; requires BROWSER_USE_API_KEY
    agent = Agent(
        task="Find the number of stars of the browser-use repo",
        llm=llm,
        # browser=Browser(use_cloud=True),  # Use a cloud browser; requires BROWSER_USE_API_KEY
    )
    history = await agent.run()
    print(history.final_result())

if __name__ == "__main__":
    asyncio.run(main())

Запуск — uv run agent.py. Агент откроет браузер, найдёт репозиторий и напечатает ответ. Никакого промпта вручную писать не нужно: объект Agent(...) подставляет системный промпт Browser Use сам, и он остаётся корректным при смене модели. Если поведение нужно изменить, есть extend_system_message для дописывания инструкций и override_system_message для полной замены.

Объект history, который возвращает run(), хранит всю историю шагов агента, а не только финальный ответ. Это полезно при отладке: видно, на каком шаге модель сошла с маршрута.

Выбор модели

Разработчики рекомендуют BU2 — собственную модель проекта, оптимизированную под браузерную автоматизацию:

llm = ChatBrowserUse(model='bu-2-0')

Она требует BROWSER_USE_API_KEY. При этом ChatBrowserUse умеет работать и как шлюз: через него доступны модели с префиксом провайдера — от Anthropic, Google и других поставщиков, оплата идёт через ключ Browser Use.

from browser_use import Agent, ChatBrowserUse

llm = ChatBrowserUse(model='anthropic/claude-sonnet-4-6')  # or S1
agent = Agent(task='...', llm=llm)

Если хочется обращаться к провайдеру напрямую, есть отдельные обёртки — ChatOpenAI, ChatAnthropic, ChatGoogle, каждая со своим ключом. Для полностью локальной работы поддерживается Ollama, но требования к железу и к самой модели остаются на пользователе.

Собственные инструменты

Агенту можно добавлять свои функции. Регистрируются они через объект Tools и передаются в конструктор:

import asyncio
from datetime import datetime, timezone

from browser_use import ActionResult, Agent, ChatBrowserUse, Tools
from dotenv import load_dotenv

load_dotenv()
tools = Tools()

@tools.action(description='Get the current date and time in UTC.')
def get_current_time() -> ActionResult:
    return ActionResult(extracted_content=datetime.now(timezone.utc).isoformat())

async def main():
    agent = Agent(
        task="What is the current UTC time?",
        llm=ChatBrowserUse(model='bu-2-0'),
        tools=tools,
    )
    history = await agent.run()
    print(history.final_result())

if __name__ == "__main__":
    asyncio.run(main())

Функция возвращает ActionResult, в котором результат отдаётся модели в виде текста. Это даёт агентам то, чего нет у «голого» браузера: доступ к текущему времени, к своей базе данных, к внутреннему API приложения.

CLI для coding-агентов

Второй путь — не писать код вообще. README предлагает готовый промпт, который вставляется прямо в Claude Code, Codex, Hermes, OpenClaw или любой другой агент:

Install or upgrade browser-use to the latest stable version with uv using Python 3.12, run `browser-use skill install` to register the skill, and connect it to my browser. If setup or connection fails, follow https://github.com/browser-use/browser-harness/blob/main/install.md.

То есть агент сам ставит пакет, регистрирует скилл и подключается к вашему браузеру. Инструкция по установке лежит в отдельном репозитории — Browser Harness.

Аутентификация и профили

Для локального браузера есть Browser.from_system_chrome() — так переиспользуется уже существующий профиль Chrome с вашими сессиями. Для облачного варианта профиль синхронизируется по гайду на profile sync, после чего подключается через Browser(use_cloud=True, cloud_profile_id='your-profile-id').

Важная оговорка: синхронизация переносит только cookies. Local storage, IndexedDB и расширения не переносятся, поэтому на части сайтов придётся логиниться заново.

CAPTCHA и stealth

Browser Use Cloud предоставляет браузеры со stealth-режимом и прокси, которые снижают вероятность срабатывания антибот-защиты. В Python-библиотеке тот же эффект даёт облачный браузер: Browser(use_cloud=True) плюс BROWSER_USE_API_KEY.

Разработчики честно предупреждают: результат зависит от сайта и конкретного challenge, и никакая конфигурация не гарантирует обход любой CAPTCHA.

Бенчмарк

Оценивать качество браузерных агентов сложно, поэтому у проекта есть собственный Browser Use Benchmark — набор сложных задач навигации. В README показаны результаты по 60 задачам из поднабора BU Bench v2: на относительно простых задачах даже небольшие модели показывают высокую долю успеха, и различия видны в основном на сложных сценариях вроде бронирования, где нужно пройти форму, найти свободный слот и обойти CAPTCHA.

Смежные репозитории

Проект развивается экосистемой из нескольких репозиториев.

Репозиторий Назначение
Browser Harness CLI, дающий AI-агентам управление вашим браузером
Browser Harness JS То же самое для JavaScript-агента
Browser Use Pi TypeScript-агент для браузера на базе Pi
Cloud SDK Интеграция Browser Use Cloud в приложение
Video Use Монтаж видео через coding-агента
macOS Harness Управление приложениями macOS, браузером и файлами
Benchmark Набор браузерных задач для сравнения агентов

Стоимость и лицензия

Сама библиотека бесплатна и распространяется по MIT-лицензии. Платными остаются вывод моделей и размещённые браузеры: и API-провайдеры, включая ChatBrowserUse, и Browser Use Cloud берут деньги за использование. Полностью локальный вариант возможен — локальный браузер плюс локальная модель через Ollama, но это вопрос вашего железа.

Для продакшена есть два пути: оставить агента у себя и подключить CLI или библиотеку к облачным браузерам, либо отдать и агента тоже, отправляя задачи в полностью размещённый Cloud API. Третий вариант — развернуть и библиотеку, и браузеры на собственной инфраструктуре.

Источник: https://github.com/browser-use/browser-use