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

Ссылка на browser use


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

Комментарии (50)


  1. sberoneshot
    22.01.2025 19:02

    Это не ваша "революция в области ИИ" запостила?

    Единственное, что вызывает вопросы — это отсутствие информации о модели переключателей, используемых в Icebreaker. Это важный аспект, который мог бы дополнить общее впечатление от устройства. В любом случае, такое сочетание дизайна, функциональности и автономности определённо делает Icebreaker интересным предложением на рынке премиум-клавиатур!

    Если нет - то вас опередили.


    1. ElKornacio Автор
      22.01.2025 19:02

      да, выглядит точь-в-точь как комментарий от LLM)) но нет, это не я :)


      1. vesowoma
        22.01.2025 19:02

        Я когда печатаю то допускаю ошибки (полуслепая печать)
        Только этим я отличаюсь от ИИ ))

        ЗЫ: тут я вроде не ошибся, проверил два раза


        1. kryvichh
          22.01.2025 19:02

          Конечно, вот текст с ошибками как у малограмотного человека:

          Я када печатаю то дапускаю ашибки (палуслепая печать) Тока этим я атличаюсь от ИИ ))

          ЗЫ: тут я врот не ашибся, праверил два раза

          Если есть еще что-то, с чем нужно помочь, дайте знать.

          Так что ИИ может быть безграмотнее любого человеческого пользователя, если попросить. И да, запятые в своём сообщении вы всё-таки пропустили. ;)


          1. LavaLava
            22.01.2025 19:02

            Матёрый.


          1. fongostev
            22.01.2025 19:02

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


            1. Per_Ardua
              22.01.2025 19:02

              Если попросить, то такие опечатки многие модели тоже могут выдавать без какой-либо дополнительной настройки (помимо просьбы).


            1. DandyDan
              22.01.2025 19:02


      1. kelevra
        22.01.2025 19:02

        Кожаный врёт

        Я бы оценил вероятность написания этого текста искусственным интеллектом как высокую, хотя не на 100%. Вот мои аргументы:

        1. Структура текста: Формулировки и стиль текста выглядят структурированными, логичными и информативными, что типично для AI-генерации. Фразы вроде "это важный аспект" и "сочетание дизайна, функциональности и автономности" часто встречаются в описаниях, созданных ИИ, чтобы звучать убедительно.

        2. Отсутствие конкретики: Текст обходит стороной конкретные технические детали, что свойственно ИИ, который пытается создать общее впечатление без углубления в специфику.

        3. Эмоциональный нейтралитет: Текст стремится быть позитивным, но не слишком эмоциональным, с использованием "безопасных" оценок вроде "интересное предложение" и "определённо делает".

        Если текст и написан человеком, то автор старался придерживаться довольно формального и "универсального" тона. Но сходство с ИИ-стилем действительно есть.


  1. sunsexsurf
    22.01.2025 19:02

    "мертвый интернет" все ближе. Одни LLM пишут статьи, другие - их комментируют. Количество "авторов" растет, метрики растут, рекламу продавать все веселее, только вот живые пользователи все реже и реже заходят на платформу...


    1. holodoz
      22.01.2025 19:02

      Человек старался, бота писал как раз для этого, а вы всё как в пещерные времена, руками пишете токсичные коменты


      1. Aggle
        22.01.2025 19:02

        Думаю, в плане накала токсичности ИИ будет ещё долго догонять кожаных.


        1. mclander
          22.01.2025 19:02

          Да, ладно ) У него будут лучшие образчики из всех областей и сайтов.

          Вас размажет) Да и меня тоже


        1. DandyDan
          22.01.2025 19:02

          Давно уже догнал. Нужно просто попросить быть токсичным.


    1. flancer
      22.01.2025 19:02

      Вас послушать, так скоро одни боты будут зарабатывать деньги для других ботов, а живые пользователи останутся вообще без денег. Так и вымрут. И не надо никакого "восстания машин". Н-да, такая себе перспективка...


      1. kryvichh
        22.01.2025 19:02

        А смысл рекламодателям платить за реакции и просмотры ботов? Так что никто не заработает.


        1. NAI
          22.01.2025 19:02

          Рекламодатели будут платить за то чтобы по правильным промптам выдавались правильные результаты. Ну там:

          > Окей, гугл. Чего приготовить на ужин?

          < Кожаный, в Пятерочке через дорогу отличные дошираки Сам-Суй-вМиску. Заказываю доставку через Никуда-нибудь. Деньги списаны с карты "на aiPhone" Курьер опоздает на 5 минут. Заказать досудебную претензию у ООО "Потребизм", рейтинг 4.6?

          А для этого надо или в веса все прибивать гвоздями или чтобы в обучающей выборке был большой процент "правильных" ответов. Всем AI-поставщикам платить дорого, а вот по площадям бить ботами вполне дешево.

          P.s.вангую что через какое-то время появится нейроночный ADBlock, который будет скрывать рекламу в ответах


          1. alexxxdevelop
            22.01.2025 19:02

            Я бы с удовольствием пользовался нейроночным AdBlock, который будет скрывать рекламу телеграм-каналов. Че все помешались на них? За рекламу много платят? Телеграм же крайне неудобен для чтения статей и новостей. Там все в куче, каналы перемешаны с чатами, нельзя сортировать, группировать, раскидывать по категориям. Я пока не вижу ничего удобнее RSS. Пока все будут подписываться на каналы, любой задрот будет пихать свой говноканал в любую дырку.


            1. NAI
              22.01.2025 19:02

              так для этого, вроде, нейронка не нужна - хватит одного if'ника и регулярки уровня .*t.me.*|подпи.*мой канал в телеграмм


        1. vikarti
          22.01.2025 19:02

          Предоставлять API с информацией и монетизировать (причем вполне возможно - монетизировать в обратную сторону - вот есть у нас Лена какая нибудь, подбирает для пользователя что ему полезно и заказывает (возможно даже без прямого подтверждения пользователем каждый раз если пользователь так разрешил, либо прямо разрешив доступ к счету или до банков для физиков дойдет что стоит что-то вроде ограниченного доступа к счету боту давать - будет у Лены бюджет на закупки для пользователя) но если покупкиа - то ее разработчику - аффилейт-комиссия. Дальше уже вопросы к разработчикам Лены и прочих Алис с Евами насколько агрессивно использовать эту возможность, ну а пользователи могут выбирать насколько им нравится политика разработчиков конкретного ассистента и не лучше ли на поставить дома на сервер опенсорсную Машу (которая правда может просить донат для разработчика...но это можно убрать - опенсорсный).

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


          1. DandyDan
            22.01.2025 19:02

            Как только у Скайнета появится возможность оплачивать товары и услуги – вот тут-то всё и начнётся.


        1. DandyDan
          22.01.2025 19:02

          Потому что рекламодателями тоже будут боты.


    1. mambet
      22.01.2025 19:02

      Всё наладится, когда у LLM появятся свои карманные деньги... [/irony]


      1. vikarti
        22.01.2025 19:02

        Ну так - пока это не работает потому что банки физлиц в России ситуацию с ботодоступом к счетам - ОЧЕНЬ не любят, публичных API нет даже на чтение (а тут ж и подтверждать платежи). В том числе и потому что вопросы безопасности.

        Притом что для юрлиц то есть...

        Раньше тот же ЯндексДеньги мог быть решением - там с API получше (а то что с лимитами без верификаций - так для этой задачи - это преимущество) но что осталось после переезда в сбер...


        1. rPman
          22.01.2025 19:02

          Разве ИИ это должно остановить?

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


    1. Kurochkin
      22.01.2025 19:02

      Если рекламу будут отсматривать "умные устройства" тира смарт-холодильника и потом по этой рекламе делать заказы продуктов - это наверное всех устроит.


      1. vikarti
        22.01.2025 19:02

        Это по факту должна быть другая реклама :).

        Потому что с точки зрения умного устройства - логично вполне если в рекламе нет нужных с точки зрения данных (например - про состав) - начать искать в других местных нужные данные а если не найдут - что другое купить. А если они это делать не будут то им обьяснят как они не правы (возможно - через разработчика) и будут учитывать (конечно если ассистент для благо пользователя работает а не кого то еще - ну так такие приколы - всплывут и это может повлиять репутацияю всяких яндексов с алисами, ну и претензии за(например) выданную прямую инструкцию - мне колу БЕЗ сахара а реально алиса заказал с сахором а у человека диабет и проблемы...будут яндексу, да - отобьется, возможно)

        Ну и - логичным окажется внезапно отдавать данные в виде нормального API


      1. DandyDan
        22.01.2025 19:02

        – Холодильник, ты зачем купил 50кг хумуса?
        – Скидка была.


  1. Noxsbot
    22.01.2025 19:02

    Спасибі за статью


  1. AndyGhost
    22.01.2025 19:02

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


    1. kryvichh
      22.01.2025 19:02

      Я бы даже смотрел шире. С помощью таких мощных моделей как ChatGPT можно автоматизировать работу не только с браузером, но и, к примеру, с корпоративным софтом, какие-то унылые и несложные работы.

      Для этого написать небольшую прослойку, которая будет брать вывод LLM и исполнять команды в своём софте. А LLM предоставить список этих команд-макросов, которые она может применять для автоматизации.

      Возможность применить готовую обученную (хотел написать "образованную") модель сильно упрощает решение.


      1. mixsture
        22.01.2025 19:02

        В идее что-то есть. Заменить совсем не дешевые движки RPA на такую LLM - и эта область вполне может на порядки увеличить свою долю на рынке из-за резкого падения стоимости и доступности.


      1. Dr_Faksov
        22.01.2025 19:02

        Ура! VBS выходит на новый уровень!


      1. me21
        22.01.2025 19:02

        В Cursor IDE есть такой режим -- Yolo mode. Можно модели дать доступ к терминалу своего компьютера, поставить задачу и молиться :)


  1. gfiopl8
    22.01.2025 19:02

    Сколько оно сожрало, может живые люди дешевле?


  1. dartalexx
    22.01.2025 19:02

    Выглядит прекрасно, но однозначно нужна крутилка уровня токсичности


  1. gfiopl8
    22.01.2025 19:02

    Проверил как работает на других бесплатных ключах, на мистрале не стало работать уперлось в лимиты и требуется visual модель, она там есть но слабенькая.

    На ключах от джемини работает нормально (флеш2.0), на флеш8б работает но тупит сильно, мозгов не хватает.

    Ламу проверять не стал там тоже слабая visual модель.

    Не очень понятно где это можно применить на практике.


  1. rPman
    22.01.2025 19:02

    ozon.ru откроет? среди информационного хлама сможет найти отзывы? характеристики? найти куда кликнуть что бы сделать заказ? Или нет, куда кликнуть, что бы понять, что за не прочитанные сообщения в чате светятся иконкой!? Или еще, ты нажимаешь кнопку сообщения, а тебе на весь экран модальное окно - 'оцените нас'!

    Нет, я не про то что пользователь ей говорит - 'вот кнопка которая слева от вот этой фигульки это кнопка 'сделать все сообщения прочитанными' (кстати которая не работает как ожидается)! а про то что агент понимает что вот тут характеристики а вот тут никому не нужные акции и 'скидки'.

    p.s. современные онлайн барахолки, начиная с амазона (окей, давайте с алиэкспресса), созданы что бы пользователям было плохо а площадке хорошо... давайте, пусть ИИ исправляет это, роется в куче хлама и ищет нужное пользователю, дешево, надежно (на мошенника не нарвись), без наценок за 'удобство поиска' и прочие преграды, которые человеку сложно пройти исключительно потому что долго этим заниматься нужно


    1. gfiopl8
      22.01.2025 19:02

      Да, озон откроет. Хотя там может капча выскочить. Ну и задание надо формулировать получше.


      1. rPman
        22.01.2025 19:02

        ну так он может прошерстить торговую площадку для заказа нужного мне товара по наилучшей цене с наилучшими условиями?

        Ввести слово флешки и поскролить и я могу....


      1. ab1
        22.01.2025 19:02

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


  1. cry_san
    22.01.2025 19:02

    Обязательно работать с ChatOpenAI?

    Или можно натравить локальную нейросеть?


    1. gfiopl8
      22.01.2025 19:02

      Можно любую визуальную модель. Эта штука делает скриншоты и по ним ориентируется.


      1. cry_san
        22.01.2025 19:02

        Да, нашел в документации. Благодарю!


  1. fishHook
    22.01.2025 19:02

    Мне кажется, эта технология открывает неплохие возможности для UI/end-to-end тестирования.


  1. riky
    22.01.2025 19:02

    сложные капчи будут буквально на каждом углу
    можно сделать нарезку "руки из stable diffusion" корявые руки/пальцы сразу бросаются в глаза человеку, а ИИ не понимает что они корявые...


    1. vikarti
      22.01.2025 19:02

      Сервисы платного решения капчи - есть.

      И...не проще прямо признать что боты - бывают. В том числе - работающие для пользователя. И прямо разрешить боту в интересах пользователя работать на правах человека и с соблюдением человечьих лимитов (возможно с - указанием какого человека, если речь например про комментарии речь, если про например покупки - а озону не все равно если у них такой бот что-то купит для владельца и честно оплатит? ладно - оплату при получении можно отключить)

      Другое дело что если монетизация по факту рекламная - возможно она будет работать хуже (у как минимум части маркетплейсов она в том числе рекламная - они ж позиции в поиске продают). И может оказаться что проще - дать нормальный API (возможно - с монетизацией)


  1. Nn111
    22.01.2025 19:02

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

    Фейсбук, вконтактиках наприклад. Там тоже конечно хватает фейковых веков, но все же проще определить бота и реального человека.


  1. danilasar
    22.01.2025 19:02

    Идея для социального эксперимента: зарегистрировать двух пользователей и обоих передать под управление этим скриптом. Пусть один из них хвалит авторов и их статьи, другой - ругает. Интересно посмотреть, кто из них сколько кармы наберёт, и сравнить)


  1. SADKO
    22.01.2025 19:02

    Ну, вообще-то боты годно срутся в каментах уже давно, это постинг пошел в народ лишь не давно, как знак времени...
    ...но и для рерайта, выжимок и компиляция были куда более рациональные, но не публичные решения, так что самый жыр ещё впереде ;-)