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-канал. В нём я пишу про ИИ, крипту, и о том, как создаю компанию, в которой все сотрудники - ИИ агенты. Велком!
Комментарии (23)
sunsexsurf
22.01.2025 19:02"мертвый интернет" все ближе. Одни LLM пишут статьи, другие - их комментируют. Количество "авторов" растет, метрики растут, рекламу продавать все веселее, только вот живые пользователи все реже и реже заходят на платформу...
flancer
22.01.2025 19:02Вас послушать, так скоро одни боты будут зарабатывать деньги для других ботов, а живые пользователи останутся вообще без денег. Так и вымрут. И не надо никакого "восстания машин". Н-да, такая себе перспективка...
kryvichh
22.01.2025 19:02А смысл рекламодателям платить за реакции и просмотры ботов? Так что никто не заработает.
AndyGhost
22.01.2025 19:02С точки зрения практического применения, можно такого агента настроить на свою статью с отслеживанием комментариев к ней. На какие-то он бы отвечал / пояснял, а о слишком критичных - сообщал бы юзеру. В интересное время живем... Спасибо за статью.
kryvichh
22.01.2025 19:02Я бы даже смотрел шире. С помощью таких мощных моделей как ChatGPT можно автоматизировать работу не только с браузером, но и, к примеру, с корпоративным софтом, какие-то унылые и несложные работы.
Для этого написать небольшую прослойку, которая будет брать вывод LLM и исполнять команды в своём софте. А LLM предоставить список этих команд-макросов, которые она может применять для автоматизации.
Возможность применить готовую обученную (хотел написать "образованную") модель сильно упрощает решение.
mixsture
22.01.2025 19:02В идее что-то есть. Заменить совсем не дешевые движки RPA на такую LLM - и эта область вполне может на порядки увеличить свою долю на рынке из-за резкого падения стоимости и доступности.
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Да, озон откроет. Хотя там может капча выскочить. Ну и задание надо формулировать получше.
fishHook
22.01.2025 19:02Мне кажется, эта технология открывает неплохие возможности для UI/end-to-end тестирования.
sberoneshot
Это не ваша "революция в области ИИ" запостила?
Если нет - то вас опередили.
ElKornacio Автор
да, выглядит точь-в-точь как комментарий от LLM)) но нет, это не я :)
vesowoma
Я когда печатаю то допускаю ошибки (полуслепая печать)
Только этим я отличаюсь от ИИ ))
ЗЫ: тут я вроде не ошибся, проверил два раза
kryvichh
Так что ИИ может быть безграмотнее любого человеческого пользователя, если попросить. И да, запятые в своём сообщении вы всё-таки пропустили. ;)
LavaLava
Матёрый.
kelevra
Кожаный врёт