Кейс Локальный ИИ-ассистент прямо в мессенджере HalChat: без серверов, без рисков, только приватность и RAG. Я занимаюсь разработкой собственного мессенджера HalChat и недавно я запустил систему локальных ИИ, с которыми можно общаться прямо в браузере через обычный чат.И мне потребовался ИИ помощник, который бы вводил в курс дела внутри экосистемы и помогал пользователям обосноваться. Назвал я его — Halwashka AI. Почему бы не использовать готовые решения? Во первых, это приватность, главный принцип HalChat — это сохранность ваших данных, значит ваши сообщения не должны расшифровываться, и передаваться ИИ.Во вторых, хотелось бы продемонстрировать пользователям сами локальные ИИ, чтобы могли начать пользоваться и другими локальными ИИ, выбрав их на HalNetMarket. Проблема Сейчас существует огромное количество разных ИИ моделей, но все они обучены на многосторонних данных. Переобучать их не имеет смысла, из-за огромных погрешностей и возможность повредить модель, нужный результат таким образом очень сложно получить. Один из главных вариантов решения, я выбрал: RAG (Retrieval-Augmented Generation) — это метод, который объединяет два этапа: Retrieval (поиск): ИИ ищет релевантные данные из внешней базы (например, документы, файлы, базы знаний). Generation (генерация): ИИ использует найденные данные для формирования ответа, не обучаясь на них. Архитектура От запроса до ответа. Принцип работы Этап 0:Пользователь заходит в чат. Плагин загружается и загружает ИИ модель (скачивает, либо из кэша). Сообщение от бота показывает процент загрузки. Когда модель загрузится он изменит сообщение на модель загружена.Этап 1:Пользователь отправляет сообщение "Привет! Что такое HalChat?". Оно передаётся к HalSM плагину. После, плагин передаёт запрос с промптом и списком файлов для RAG и др. параметрами в LocalLLMHalSM.jsЭтап 2:LocalLLMHalSM.js преобразовывает HalSM переменные в javascript (temp, top_k, system_prompt и т.д.).Загружает RAG хранилище по предоставленным ссылкам, запускает маленькую модель для поиска топ-3 подходящих контекста (находит что такое HalChat или похожие на то что написал пользователь). Превращает в пользовательское сообщение, как контекст.Этап 3:LocalLLMHalSM.js создаёт потоковый чат с LLM моделью с историей сообщений и указанными параметрами. На каждый загруженный токен срабатывает эвент и плагин обновляет локально сообщение.Этап 4:ИИ закончил и срабатывает итоговое событие и плагин обновляет сообщения на сервере. Практическое применение Общение с ИИ помощником и проводником по экосистеме HalNet. Базовая техподдержка и возможность вызвать ручную техподдержку. Недостатки Самый главный минус — это производительность, пока что на данный момент генерация одного ответа занимает от 2-х до 4-х минут, и это почти не зависит от мощности вашего устройства, ведь он уходит в один поток.Мало знаний — это маленькая модель, так что она не может позволить себе поддерживать полноценный информативный диалог и давать советы, вне знаний RAG хранилища. Перспективы Улучшение производительности, за счёт многопоточности и перехода на Web-LLM. Интеграция в экосистему, и автоматизация чатов, и анализ чатов для пользователя. Полноценный помощник с возможностью живого общения. Реализация Я добавил новый файл HalChatRAG.js, где будет находиться система RAG. Сделана она на базе библиотеке transformers.js и модели Xenova/all-mpnet-base-v2.Также обновил код LocalLLMHalSM.js для взаимодействия с RAG. А именно добавил отображение RAG как сообщение от пользователя, чтобы он его воспринимал как контекст.И написал ИИ-плагин на HalSM, где уже прописан промпт и взаимодействие с пользователем, и ещё вызов техподдержки, если он не знает ответа, или пользователь сам запросил, в таком случае он приглашает в чат меня. Для этого пользователю появляется окошко с предложением пригласить пользователя (для безопасности и согласованности действия). Модель Библиотеки: https://github.com/ngxson/wllama https://huggingface.co/docs/transformers.js/en/index Код Приглашение техподдержки в чат. Создаём чат с ИИ, дожидаемся загрузки модели, и пишем наши запросы. Получаем ответы) Общение с Halwashka AI. Итог У меня получилось реализовать — локального ИИ помощника, с загрузкой дополнительной информации без переобучения модели. Это создаёт потенциал и для поиска в интернете благодаря RAG системе.Жду ваших вопросов связанной с этой статьёй, так и про мою экосистему и язык программирования HalSM. Только зарегистрированные пользователи могут участвовать в опросе. Войдите , пожалуйста. Как вы относитесь к локальным ИИ? 100%Я за развитие локальных ИИ4 0%Поддерживаю традиционные серверные варианты0 0%Нейтралитет0 Проголосовали 4 пользователя. Воздержался 1 пользователь. Теги: Source: https://habr.com/ru/articles/973006/