Заменяем хабраюзеров ИИ-агентами. Гайд по browser-use

TLDR; видео с результатом в конце статьи

Библиотека browser-use невероятно стрельнула практически в день релиза, на текущий момент это около 16 тысяч звезд на Гитхабе, и сотни восторженных отзывов на Reddit, в Твиттере, и так далее. Команду, создавшую browser-use даже приняли в YC. У неё революционная точность по сравнению с другими «ИИ агентами использующий браузер» (89% против Runner H с 67%).

Я очень удивился, что на Хабре всё ещё нет статьи с описание того, что это, и как это использовать. Сегодня мы это исправим: мы сделаем ИИ, который будет читать статьи на Хабре, и писать комментарии о том, почему продукт описанный в статье никому не нужен.

Почему browser-use — это прорыв

Идея дать ИИ возможность использовать браузер или компьютер — не нова, к примеру, пару месяцев назад с этим круто стрелял Anthropic, представив свой Use Computer. Решения для LangChain, которые умеют сёрфить веб, используя Cheerio или Puppeteer тоже уже были, но у всех у них очень низкая точность.

Принципиальное отличие browser-use в том, как он идентифицирует интерактивные элементы на веб-странице, и пробрасывает эту информацию в LLM, так, что LLM может легко принимать решение о том, куда кликнуть, где писать, и так далее.

dfabb6d865f26d07801e8862f4cce0ed.png

Именно этот подход и позволил им добиться очень высокого уровня точности — агенты не только успешно справляются с задачами, но и зачастую могут находить «обходные пути» для моментов, когда они застряли. К примеру, в этой статье я приведу пример того, как агент не смог понять, как на Хабре найти юзера, и решил просто воспользоваться гуглом (вот бы люди умели так же, да?).

Поехали!

Установка

В примерах, которые я буду показывать ниже, используется LangChain — opensource решение для ИИ-агентов (или систем из нескольких ИИ-агентов). Используются OpenAI коннекторы, модель GPT-4o, и, собственно, browser use.

Давайте всё это установим. Начнём с создания и активации виртуальной среды для питона, чтобы всё прошло гладко:

mkdir ai-habrauser && cd ai-habrauser
python3 -m venv venv
source venv/bin/activate

Отлично, теперь можно перейти к установке зависимостей. Начнём с LangChain и коннекторов к OpenAI:

pip install langchain langchain-openai

Не забываем установить dotenv, чтобы было легче пробрасывать OpenAI API ключи:

pip install dotenv

И теперь, самое главное, browser use:

pip install browser-use

Для корректной работы browser use потребуется сборка Chromium, которую он как раз и будет использовать в качестве браузера. Browser use под капотом использует playwright для работы с Chromium, так что через него и необходимо производить установку:

playwright install

И не забудьте создать в каталоге файл .env и записать в него OpenAI API ключ:

OPENAI_API_KEY=sk-...

Пишем код

Чтож, все зависимости установлены, перейдём к написанию Python-скрипта.

Импортируем необходимые классы, а также прочитаем env-переменные из файла .env:

from langchain_openai import ChatOpenAI
from browser_use import Agent

from dotenv import load_dotenv
load_dotenv()

Для использования асинхронных функций/вызовов в дальнейшем, стоит сразу же подгрузить ещё и `asyncio`:

import asyncio

Объявим main как асинхронную функцию, и создадим экземпляр коннектора нашей LLM (в данном случае — GPT-4o):

async def main:
  llm = ChatOpenAI(model="gpt-4o")

Самое главное — пропишем нашему будущему ИИ-хабраюзеру задачу, которую он должен выполнять. Какую же задачу ему дать? Ответ совершенно очевиден:

task = """Открой Хабр (habr.com), найди какую-нибудь статью от юзера ElKornacio,
открой её полную версию, и предложи вариант токсичного комментария на русском,
связанного с этой статьей, после опубликуй этот комментарий к статье"""

Идеально. Теперь создадим самого агента, и передадим ему эту задачу вместе с указателем на экземпляр LLM-коннектора:

async def main():
    llm = ChatOpenAI(model="gpt-4o")
    task = """Открой Хабр (habr.com), найди какую-нибудь статью от юзера ElKornacio,
    открой её полную версию, и предложи вариант токсичного комментария на русском,
    связанного с этой статьей, после опубликуй этот комментарий к статье"""
    agent = Agent(
        task=task,
        llm=llm,
    )

Финальные штрихи: добавляем команду для активации агента, добавляем логирование результата в консоль, и получаем код готовой программы:

from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio
from dotenv import load_dotenv
load_dotenv()

async def main():
    llm = ChatOpenAI(model="gpt-4o")
    task = """Открой Хабр (habr.com), найди какую-нибудь статью от юзера ElKornacio,
    открой её полную версию, и предложи вариант токсичного комментария на русском,
    связанного с этой статьей, после опубликуй этот комментарий к статье"""
    agent = Agent(
        task=task,
        llm=llm,
    )
    result = await agent.run()
    print(result)

asyncio.run(main())

Наслаждаемся результатом

Комментарий получился немного общий, на предыдущих тестах он выдавал куда более точные варианты (сильно связанные с текстом самой статьи). Тем не менее, записи ниже.

В покадровой гифке случился какой-то баг, и из-за скролла нижняя часть экрана съедалась. Я не знаю почему, на видео никаких проблем нет, оно ниже. Сама гифка:

Ну что, хабраюзер, страшно?

Ну что, хабраюзер, страшно?

Полное видео (ускорено в 4 раза от оригинала):

Заключение

Несмотря на шутливый тон статьи, меня крайне впечатляет тот факт, что я не сообщил толком никаких вводных данных, дал довольно общий промпт, и агент сам понял, как найти пользователя, как посмотреть список его статей, открыть статью, долистать до блока с комментами, и так далее.

Как думаете, сколько таких агентов ползающих по интернету мы увидим в 2025? Далеко ли тот мир, где сложные капчи будут буквально на каждом углу, на каждое действие? Не знаю.

Ссылка на LangChain: https://www.langchain.com/

Ссылка на browser use: https://browser-use.com/

----

P.S. Конечно же, как и у любого уважающего себя человека, у меня есть Telegram-канал. В нём я пишу про ИИ, крипту, а скоро буду писать о том, как создаю виртуальную компанию, в которой все сотрудники — ИИ агенты. Велком!

© Habrahabr.ru