Разработчик взял языковую модель с 350 миллионами параметров, провел её дообучение и развернул в виде полнофункционального ИИ-ассистента, который работает в любом современном веб-браузере — без обращений к серверу, без API-ключей и без счетов за облачные вычисления.
Проект поставляется вместе с весами модели и статической веб-страницей, что позволяет агенту выбирать инструменты, привязывать аргументы, разрешать ссылки вроде «второй» и отказываться отвечать при нехватке информации — и всё это при условии, что ваши данные остаются на вашем устройстве.
Как был создан браузерный агент
Отправной точкой стало семейство моделей LFM2.5 от LiquidAI, а именно варианты с 230 млн и 350 млн параметров.
Вместо того чтобы впихивать в модель каталоги товаров или таблицы цен, тренер обучал её паттернам взаимодействия. Агент никогда не знает конкретный артикул (SKU); он учится тому, как:
- Выбирать подходящий инструмент для конкретного запроса.
- Привязывать нужные аргументы и идентификаторы к этому инструменту.
- Интерпретировать неоднозначные ссылки («дюжина», «второй»).
- Извлекать внешний текст и использовать его для ответов на вопросы.
- Отказываться от ответа, если необходимая информация отсутствует.
- Придерживаться темы разговора.
Набор инструментов намеренно статичен: list_items, get_item, search_knowledge, add_to_cart, remove_from_cart, clear_cart, checkout и navigate. Фиксация списка инструментов предотвращает заучивание моделью ID инструментов и позволяет держать объем данных для дообучения небольшим.
Три инженерных решения позволяют системе оставаться легковесной:
- Фиксированный список инструментов — модель видит ограниченный набор действий, поэтому ей не требуется огромный словарь названий инструментов.
- RAG как инструмент — генерация с дополнением извлечением (RAG) работает как любая другая функция. Агент вызывает
search_knowledge, чтобы получить текст, а затем вставляет этот текст напрямую в свой ответ, избегая отдельного конвейера извлечения, который увеличил бы задержку и потребление памяти. - Декодирование с грамматическими ограничениями — во время генерации декодер следует простой грамматике, которая принудительно приводит вывод к валидной структуре вызова инструмента. Это ограничение устраняет лишние токены и сокращает количество некорректных команд.
Для обучения использовалась дистилляция синтетических данных. Автор определил 18 сценариев взаимодействия, каждый из которых описывал типичный обмен репликами между пользователем и ассистентом. Более крупная «модель-учитель» генерировала текстовую часть на естественном языке, в то время как детерминированный скрипт создавал точный формат вызова инструментов. Процесс дообучения потребил примерно 30 миллионов токенов и уместился на одной GPU с 16 ГБ памяти.
Почему важно выполнение на устройстве
- Конфиденциальность — все промпты пользователя остаются в памяти браузера. Никакая телеметрия не покидает устройство, что критически важно для конфиденциальных запросов.
- Автономность — поскольку модель кэшируется локально, ассистент работает без интернет-соединения, что открывает возможности для работы в полевых условиях или в поездках.
- Стоимость — поставка статических файлов модели избавляет от необходимости содержать постоянно работающие серверы для инференса на GPU или платить за каждый вызов API.
- Доступность — голосовая навигация по сложным веб-интерфейсам становится возможной даже на устройствах с низкой производительностью, расширяя охват веб-приложений для пользователей, полагающихся на вспомогательные технологии.
Эти преимущества смещают фокус обсуждения с вопроса «Может ли гигантская модель ответить на это?» на вопрос «Насколько маленькой может быть модель, чтобы всё еще оказывать полезную помощь?».
Потенциальные ограничения
Модель такого размера не может удерживать в себе энциклопедические знания. Когда пользователь запрашивает цену конкретного товара или свежую новость, ассистент либо извлекает информацию через search_knowledge, либо вежливо отказывает. Такой дизайн защищает конфиденциальность, но также привязывает систему к качеству и актуальности её внешнего источника знаний.
За чем следить дальше
Публичное демо доступно по простой ссылке на GitHub Pages, а исходный код открыт.
Итог: Обучая LLM скромного размера строгому синтаксису инструментов и рассматривая извлечение данных как обычную функцию, разработчики могут создавать полезных ИИ-ассистентов, работающих полностью в браузере — обеспечивая конфиденциальность, автономность и отсутствие затрат на облако без ущерба для основных способностей к ведению диалога.
