Как (не)удачно превращали LLM в 2d виртуальных сотрудников
Идея превратить языковые модели в виртуальных сотрудников, которые могут выполнять задачи на веб-страницах и в приложениях, увлекала многие стартапы и корпорации. Вместо того, чтобы самим кликать кнопки или интегрироваться с легаси-системами типо sap и 1с, почему бы не поручить это ИИ? А так просто создал виртуального сотрудника, посадил его на виртуальный рабочий стол, закидываешь ему в слак таски и в полглаза проверяешь. Однако на практике всё оказалось не так просто.
Впервые такая идея была и у adept.ai — стартапа от создателей легендарной статьи Attention is all you need (создатели архитектуры трансформер). Они еще в эпоху до chat gpt показали какую то странную демку где их бот выбирает недвижимость по параметрам на сайте, получили просто овердохрена инвестиций и пропали (пример работы в видео).
Эта идея получила новую жизнь примерно восемь месяцев назад, когда Reworked AI представили llama 2d. Они научили языковые модели не просто «читать» текст, а по-настоящему воспринимать структуру и смысл двухмерных документов, таких как веб-страницы. Перед тем как расскажу как это работает — пару не очень удачных подходов, по которым пытались идти их конкуренты
Почему не вижн модели?
Год назад еще не было хороших vision моделей, например статья про llava (это первая opensource vison модель приемлемого качества) вышла в декабре 2023 — , нормально понять что там к чему с обрабокой картинок в ллм смогли только сейчас с выходом Qwen-v. К тому же все еще vision модели остаются очень дорогими на обучении и инференсе, так себе по качеству (особенно при работе с мелкими элементами) — думаю уже почти все читали работу — Vision language models are blind
Почему не HTML based подходы
Можно подавать на вход в LLM html код страницы, и просить сгенерировать какие то действия которые нужно с ней сделать (например в виде python кода для selenium). Однако в большинстве современных сайтов html и js код очень сложны и к тому же обфусцированы, так что LLM будет очень сложно разобраться в этом месиве.
К тому же html код очень объемен. Главная страница суперминималистичного дейтинг приложения pure занимает у модели 200к токенов контекста. Пока моделей, которые могут уверенно работать с таким объемом информации нет.
Пример HTML based LLM агента можете найти тут
Подход llama — 2d
Любую вебстраницу они представляют в виде холста с блоками текста (надписями) в разных частях страницы. В каждом блоке текста считается позиционный эмбединг + 2d (по Ox и Oy) эмбединг самого блока текста.
Таким образом LLM помимо того, что может воспринимать каждый конкретный элемент вебстраницы по отдельности, имеет хорошее представление о общей структуре страницы.
Для взаимодействия модели со страницей на каждый «нажимаемый» html элемент помещается специальный тег, так же как это делает Vimium. Модель учится предсказывать токены следующего действия (нажать на $12, ввести какой то текст итп…
Работает ли это?
В целом модель сходится! При таком экзотическом подходе к обучению — можно сказать что это уже оглушительный успех.
На первый взгляд она даже генерит что то в тему, и справляется с простейшими сценариями.
Но к сожалению это довольно узкая ниша и тут нет каких то классных бенчмарков, так что объективно сравнить данный подход с другими сложно, как и понять какое количество сценариев эта моделька сможет закрывать.
Мне интересно, что еще почитать/посмотреть/поделать?
В первую очередь тред от автора этой модели в твитере — 1
Во вторую попробовать завести их решение и потыкать в своих задачах, оно имеет довольно приятное апи — 2
from llama2d.vision import Llama2dScreen
screen = Llama2dScreen()
screen.push_word(word="north",xy=(0.5,0))
screen.push_word(word="south",xy=(0.5,1))
screen.push_word(word="east",xy=(1,0.5))
screen.push_word(word="west",xy=(0,0.5))
В третьих посмотреть в сторону моего телеграм канала — там есть очень недооцененных материалов — ностальгический пост про развитие LLM последние 2 года, а так же про подхалимство моделей от антропиков — mlphys