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-канал. В нём я пишу про ИИ, крипту, и о том, как создаю компанию, в которой все сотрудники - ИИ агенты. Велком!

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


  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. 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. flancer
      22.01.2025 19:02

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


      1. kryvichh
        22.01.2025 19:02

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


  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. 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. cry_san
    22.01.2025 19:02

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

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


    1. gfiopl8
      22.01.2025 19:02

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


  1. fishHook
    22.01.2025 19:02

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