
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? Далеко ли тот мир, где сложные капчи будут буквально на каждом углу, на каждое действие? Не знаю.
P.S. Конечно же, как и у любого уважающего себя человека, у меня есть Telegram-канал. В нём я пишу про ИИ, крипту, и о том, как создаю компанию, в которой все сотрудники - ИИ агенты. Велком!
Комментарии (50)
sunsexsurf
22.01.2025 19:02"мертвый интернет" все ближе. Одни LLM пишут статьи, другие - их комментируют. Количество "авторов" растет, метрики растут, рекламу продавать все веселее, только вот живые пользователи все реже и реже заходят на платформу...
holodoz
22.01.2025 19:02Человек старался, бота писал как раз для этого, а вы всё как в пещерные времена, руками пишете токсичные коменты
flancer
22.01.2025 19:02Вас послушать, так скоро одни боты будут зарабатывать деньги для других ботов, а живые пользователи останутся вообще без денег. Так и вымрут. И не надо никакого "восстания машин". Н-да, такая себе перспективка...
kryvichh
22.01.2025 19:02А смысл рекламодателям платить за реакции и просмотры ботов? Так что никто не заработает.
NAI
22.01.2025 19:02Рекламодатели будут платить за то чтобы по правильным промптам выдавались правильные результаты. Ну там:
> Окей, гугл. Чего приготовить на ужин?
< Кожаный, в Пятерочке через дорогу отличные дошираки Сам-Суй-вМиску. Заказываю доставку через Никуда-нибудь. Деньги списаны с карты "на aiPhone" Курьер опоздает на 5 минут. Заказать досудебную претензию у ООО "Потребизм", рейтинг 4.6?
А для этого надо или в веса все прибивать гвоздями или чтобы в обучающей выборке был большой процент "правильных" ответов. Всем AI-поставщикам платить дорого, а вот по площадям бить ботами вполне дешево.
P.s.вангую что через какое-то время появится нейроночный ADBlock, который будет скрывать рекламу в ответах
alexxxdevelop
22.01.2025 19:02Я бы с удовольствием пользовался нейроночным AdBlock, который будет скрывать рекламу телеграм-каналов. Че все помешались на них? За рекламу много платят? Телеграм же крайне неудобен для чтения статей и новостей. Там все в куче, каналы перемешаны с чатами, нельзя сортировать, группировать, раскидывать по категориям. Я пока не вижу ничего удобнее RSS. Пока все будут подписываться на каналы, любой задрот будет пихать свой говноканал в любую дырку.
NAI
22.01.2025 19:02так для этого, вроде, нейронка не нужна - хватит одного if'ника и регулярки уровня .*t.me.*|подпи.*мой канал в телеграмм
vikarti
22.01.2025 19:02Предоставлять API с информацией и монетизировать (причем вполне возможно - монетизировать в обратную сторону - вот есть у нас Лена какая нибудь, подбирает для пользователя что ему полезно и заказывает (возможно даже без прямого подтверждения пользователем каждый раз если пользователь так разрешил, либо прямо разрешив доступ к счету или до банков для физиков дойдет что стоит что-то вроде ограниченного доступа к счету боту давать - будет у Лены бюджет на закупки для пользователя) но если покупкиа - то ее разработчику - аффилейт-комиссия. Дальше уже вопросы к разработчикам Лены и прочих Алис с Евами насколько агрессивно использовать эту возможность, ну а пользователи могут выбирать насколько им нравится политика разработчиков конкретного ассистента и не лучше ли на поставить дома на сервер опенсорсную Машу (которая правда может просить донат для разработчика...но это можно убрать - опенсорсный).
А потом какие нибудь товарищи далеко - захотят чтобы ассистенты(они ж умные) в приоритетном порядке выбирали товары из правильной страны и от производителей из реестра правильных производителей...
DandyDan
22.01.2025 19:02Как только у Скайнета появится возможность оплачивать товары и услуги – вот тут-то всё и начнётся.
mambet
22.01.2025 19:02Всё наладится, когда у LLM появятся свои карманные деньги... [/irony]
vikarti
22.01.2025 19:02Ну так - пока это не работает потому что банки физлиц в России ситуацию с ботодоступом к счетам - ОЧЕНЬ не любят, публичных API нет даже на чтение (а тут ж и подтверждать платежи). В том числе и потому что вопросы безопасности.
Притом что для юрлиц то есть...
Раньше тот же ЯндексДеньги мог быть решением - там с API получше (а то что с лимитами без верификаций - так для этой задачи - это преимущество) но что осталось после переезда в сбер...
rPman
22.01.2025 19:02Разве ИИ это должно остановить?
Позвонит голосом владельца, назовет паспортные данные, покричит, все будет работать.. ведь сделать все те же действия что кожаный, ему не составит никакого труда.
Kurochkin
22.01.2025 19:02Если рекламу будут отсматривать "умные устройства" тира смарт-холодильника и потом по этой рекламе делать заказы продуктов - это наверное всех устроит.
vikarti
22.01.2025 19:02Это по факту должна быть другая реклама :).
Потому что с точки зрения умного устройства - логично вполне если в рекламе нет нужных с точки зрения данных (например - про состав) - начать искать в других местных нужные данные а если не найдут - что другое купить. А если они это делать не будут то им обьяснят как они не правы (возможно - через разработчика) и будут учитывать (конечно если ассистент для благо пользователя работает а не кого то еще - ну так такие приколы - всплывут и это может повлиять репутацияю всяких яндексов с алисами, ну и претензии за(например) выданную прямую инструкцию - мне колу БЕЗ сахара а реально алиса заказал с сахором а у человека диабет и проблемы...будут яндексу, да - отобьется, возможно)
Ну и - логичным окажется внезапно отдавать данные в виде нормального API
AndyGhost
22.01.2025 19:02С точки зрения практического применения, можно такого агента настроить на свою статью с отслеживанием комментариев к ней. На какие-то он бы отвечал / пояснял, а о слишком критичных - сообщал бы юзеру. В интересное время живем... Спасибо за статью.
kryvichh
22.01.2025 19:02Я бы даже смотрел шире. С помощью таких мощных моделей как ChatGPT можно автоматизировать работу не только с браузером, но и, к примеру, с корпоративным софтом, какие-то унылые и несложные работы.
Для этого написать небольшую прослойку, которая будет брать вывод LLM и исполнять команды в своём софте. А LLM предоставить список этих команд-макросов, которые она может применять для автоматизации.
Возможность применить готовую обученную (хотел написать "образованную") модель сильно упрощает решение.
mixsture
22.01.2025 19:02В идее что-то есть. Заменить совсем не дешевые движки RPA на такую LLM - и эта область вполне может на порядки увеличить свою долю на рынке из-за резкого падения стоимости и доступности.
me21
22.01.2025 19:02В Cursor IDE есть такой режим -- Yolo mode. Можно модели дать доступ к терминалу своего компьютера, поставить задачу и молиться :)
gfiopl8
22.01.2025 19:02Проверил как работает на других бесплатных ключах, на мистрале не стало работать уперлось в лимиты и требуется visual модель, она там есть но слабенькая.
На ключах от джемини работает нормально (флеш2.0), на флеш8б работает но тупит сильно, мозгов не хватает.
Ламу проверять не стал там тоже слабая visual модель.
Не очень понятно где это можно применить на практике.
rPman
22.01.2025 19:02ozon.ru откроет? среди информационного хлама сможет найти отзывы? характеристики? найти куда кликнуть что бы сделать заказ? Или нет, куда кликнуть, что бы понять, что за не прочитанные сообщения в чате светятся иконкой!? Или еще, ты нажимаешь кнопку сообщения, а тебе на весь экран модальное окно - 'оцените нас'!
Нет, я не про то что пользователь ей говорит - 'вот кнопка которая слева от вот этой фигульки это кнопка 'сделать все сообщения прочитанными' (кстати которая не работает как ожидается)! а про то что агент понимает что вот тут характеристики а вот тут никому не нужные акции и 'скидки'.
p.s. современные онлайн барахолки, начиная с амазона (окей, давайте с алиэкспресса), созданы что бы пользователям было плохо а площадке хорошо... давайте, пусть ИИ исправляет это, роется в куче хлама и ищет нужное пользователю, дешево, надежно (на мошенника не нарвись), без наценок за 'удобство поиска' и прочие преграды, которые человеку сложно пройти исключительно потому что долго этим заниматься нужно
gfiopl8
22.01.2025 19:02Да, озон откроет. Хотя там может капча выскочить. Ну и задание надо формулировать получше.
rPman
22.01.2025 19:02ну так он может прошерстить торговую площадку для заказа нужного мне товара по наилучшей цене с наилучшими условиями?
Ввести слово флешки и поскролить и я могу....
ab1
22.01.2025 19:02В примерх есть : открой страницу и реши капчу , с другой стороны уже есть программы для автовыкупа
fishHook
22.01.2025 19:02Мне кажется, эта технология открывает неплохие возможности для UI/end-to-end тестирования.
riky
22.01.2025 19:02сложные капчи будут буквально на каждом углу
можно сделать нарезку "руки из stable diffusion" корявые руки/пальцы сразу бросаются в глаза человеку, а ИИ не понимает что они корявые...vikarti
22.01.2025 19:02Сервисы платного решения капчи - есть.
И...не проще прямо признать что боты - бывают. В том числе - работающие для пользователя. И прямо разрешить боту в интересах пользователя работать на правах человека и с соблюдением человечьих лимитов (возможно с - указанием какого человека, если речь например про комментарии речь, если про например покупки - а озону не все равно если у них такой бот что-то купит для владельца и честно оплатит? ладно - оплату при получении можно отключить)
Другое дело что если монетизация по факту рекламная - возможно она будет работать хуже (у как минимум части маркетплейсов она в том числе рекламная - они ж позиции в поиске продают). И может оказаться что проще - дать нормальный API (возможно - с монетизацией)
Nn111
22.01.2025 19:02Это кончится тем, что для общению люди пойдут в сети с верификацией пользователей и проверкой на мультлогин и прочее.
Фейсбук, вконтактиках наприклад. Там тоже конечно хватает фейковых веков, но все же проще определить бота и реального человека.
danilasar
22.01.2025 19:02Идея для социального эксперимента: зарегистрировать двух пользователей и обоих передать под управление этим скриптом. Пусть один из них хвалит авторов и их статьи, другой - ругает. Интересно посмотреть, кто из них сколько кармы наберёт, и сравнить)
SADKO
22.01.2025 19:02Ну, вообще-то боты годно срутся в каментах уже давно, это постинг пошел в народ лишь не давно, как знак времени...
...но и для рерайта, выжимок и компиляция были куда более рациональные, но не публичные решения, так что самый жыр ещё впереде ;-)
sberoneshot
Это не ваша "революция в области ИИ" запостила?
Если нет - то вас опередили.
ElKornacio Автор
да, выглядит точь-в-точь как комментарий от LLM)) но нет, это не я :)
vesowoma
Я когда печатаю то допускаю ошибки (полуслепая печать)
Только этим я отличаюсь от ИИ ))
ЗЫ: тут я вроде не ошибся, проверил два раза
kryvichh
Так что ИИ может быть безграмотнее любого человеческого пользователя, если попросить. И да, запятые в своём сообщении вы всё-таки пропустили. ;)
LavaLava
Матёрый.
fongostev
Справедливости ради, ошибки от непопадания пальцами по клавиатуре сильно отличаются от типичных орфографических ошибок неграмотного человека.
Per_Ardua
Если попросить, то такие опечатки многие модели тоже могут выдавать без какой-либо дополнительной настройки (помимо просьбы).
DandyDan
kelevra
Кожаный врёт