Делаю своего ИИ-помощника для экосистемы HalNet. HalChat.. HalChat. HalSM.. HalChat. HalSM. JavaScript.. HalChat. HalSM. JavaScript. WLamma.. HalChat. HalSM. JavaScript. WLamma. ИИ.. HalChat. HalSM. JavaScript. WLamma. ИИ. ии помощник.. HalChat. HalSM. JavaScript. WLamma. ИИ. ии помощник. искусственный интеллект.. HalChat. HalSM. JavaScript. WLamma. ИИ. ии помощник. искусственный интеллект. локальный ИИ.. HalChat. HalSM. JavaScript. WLamma. ИИ. ии помощник. искусственный интеллект. локальный ИИ. Мессенджеры.. HalChat. HalSM. JavaScript. WLamma. ИИ. ии помощник. искусственный интеллект. локальный ИИ. Мессенджеры. приватность.. HalChat. HalSM. JavaScript. WLamma. ИИ. ии помощник. искусственный интеллект. локальный ИИ. Мессенджеры. приватность. Программирование.. HalChat. HalSM. JavaScript. WLamma. ИИ. ии помощник. искусственный интеллект. локальный ИИ. Мессенджеры. приватность. Программирование. Развитие стартапа.. HalChat. HalSM. JavaScript. WLamma. ИИ. ии помощник. искусственный интеллект. локальный ИИ. Мессенджеры. приватность. Программирование. Развитие стартапа. экосистема.

Локальный ИИ-ассистент прямо в мессенджере HalChat: без серверов, без рисков, только приватность и RAG.

Введение

Я занимаюсь разработкой собственного мессенджера HalChat и недавно я запустил систему локальных ИИ, с которыми можно общаться прямо в браузере через обычный чат.
И мне потребовался ИИ помощник, который бы вводил в курс дела внутри экосистемы и помогал пользователям обосноваться. Назвал я его — Halwashka AI.

Почему бы не использовать готовые решения?

Во первых, это приватность, главный принцип HalChat — это сохранность ваших данных, значит ваши сообщения не должны расшифровываться, и передаваться ИИ.
Во вторых, хотелось бы продемонстрировать пользователям сами локальные ИИ, чтобы могли начать пользоваться и другими локальными ИИ, выбрав их на HalNetMarket.

Проблема

Сейчас существует огромное количество разных ИИ моделей, но все они обучены на многосторонних данных. Переобучать их не имеет смысла, из-за огромных погрешностей и возможность повредить модель, нужный результат таким образом очень сложно получить. Один из главных вариантов решения, я выбрал:

RAG (Retrieval-Augmented Generation) — это метод, который объединяет два этапа:

  1. Retrieval (поиск): ИИ ищет релевантные данные из внешней базы (например, документы, файлы, базы знаний).

  2. 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://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct

Библиотеки:
https://github.com/ngxson/wllama
https://huggingface.co/docs/transformers.js/en/index

Код: https://github.com/halwarsing/Halwashka-AI1

Приглашение техподдержки в чат.

Приглашение техподдержки в чат.

Демо

Создаём чат с ИИ, дожидаемся загрузки модели, и пишем наши запросы. Получаем ответы)

Общение с Halwashka AI.

Общение с Halwashka AI.

Итог

У меня получилось реализовать — локального ИИ помощника, с загрузкой дополнительной информации без переобучения модели. Это создаёт потенциал и для поиска в интернете благодаря RAG системе.

Жду ваших вопросов связанной с этой статьёй, так и про мою экосистему и язык программирования HalSM.

Соц. сети:
https://halch.at/c/tZgWWT
https://t.me/halwarsingchat
https://www.youtube.com/@halwarsing
https://vk.com/halwarsingnet

Автор: halwarsing

Источник

Rambler's Top100