Заменяем хабраюзеров ИИ-агентами. Гайд по 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 может легко принимать решение о том, куда кликнуть, где писать, и так далее.
Именно этот подход и позволил им добиться очень высокого уровня точности — агенты не только успешно справляются с задачами, но и зачастую могут находить «обходные пути» для моментов, когда они застряли. К примеру, в этой статье я приведу пример того, как агент не смог понять, как на Хабре найти юзера, и решил просто воспользоваться гуглом (вот бы люди умели так же, да?).
Поехали!
Установка
В примерах, которые я буду показывать ниже, используется 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-канал. В нём я пишу про ИИ, крипту, а скоро буду писать о том, как создаю виртуальную компанию, в которой все сотрудники — ИИ агенты. Велком!