Разработчик взял языковую модель с 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 инструментов и позволяет держать объем данных для дообучения небольшим.

Три инженерных решения позволяют системе оставаться легковесной:

  1. Фиксированный список инструментов — модель видит ограниченный набор действий, поэтому ей не требуется огромный словарь названий инструментов.
  2. RAG как инструмент — генерация с дополнением извлечением (RAG) работает как любая другая функция. Агент вызывает search_knowledge, чтобы получить текст, а затем вставляет этот текст напрямую в свой ответ, избегая отдельного конвейера извлечения, который увеличил бы задержку и потребление памяти.
  3. Декодирование с грамматическими ограничениями — во время генерации декодер следует простой грамматике, которая принудительно приводит вывод к валидной структуре вызова инструмента. Это ограничение устраняет лишние токены и сокращает количество некорректных команд.

Для обучения использовалась дистилляция синтетических данных. Автор определил 18 сценариев взаимодействия, каждый из которых описывал типичный обмен репликами между пользователем и ассистентом. Более крупная «модель-учитель» генерировала текстовую часть на естественном языке, в то время как детерминированный скрипт создавал точный формат вызова инструментов. Процесс дообучения потребил примерно 30 миллионов токенов и уместился на одной GPU с 16 ГБ памяти.

Почему важно выполнение на устройстве

  • Конфиденциальность — все промпты пользователя остаются в памяти браузера. Никакая телеметрия не покидает устройство, что критически важно для конфиденциальных запросов.
  • Автономность — поскольку модель кэшируется локально, ассистент работает без интернет-соединения, что открывает возможности для работы в полевых условиях или в поездках.
  • Стоимость — поставка статических файлов модели избавляет от необходимости содержать постоянно работающие серверы для инференса на GPU или платить за каждый вызов API.
  • Доступность — голосовая навигация по сложным веб-интерфейсам становится возможной даже на устройствах с низкой производительностью, расширяя охват веб-приложений для пользователей, полагающихся на вспомогательные технологии.

Эти преимущества смещают фокус обсуждения с вопроса «Может ли гигантская модель ответить на это?» на вопрос «Насколько маленькой может быть модель, чтобы всё еще оказывать полезную помощь?».

Потенциальные ограничения

Модель такого размера не может удерживать в себе энциклопедические знания. Когда пользователь запрашивает цену конкретного товара или свежую новость, ассистент либо извлекает информацию через search_knowledge, либо вежливо отказывает. Такой дизайн защищает конфиденциальность, но также привязывает систему к качеству и актуальности её внешнего источника знаний.

За чем следить дальше

Публичное демо доступно по простой ссылке на GitHub Pages, а исходный код открыт.

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