ИИ интерфейс с технологией RAG
Веб-приложение представляет собой систему взаимодействия с LLM через API c использованием технологии RAG (Retrieval-Augmented Generation).
Цель:
Легкий и быстрый доступ к ИИ без VPN и без оплаты иностранных сервисов. Для чат-ботов, ИИ-ассистентов итп.
Результаты:
- Осуществил продакт-менеджмент от идеи до конечного продукта.
- Использовал отечественные сервисы для доступа к многочисленным LLM через API.
- Рализовал загрузку пользовательских данных, их векторизацию и хранение в векторной БД для создания локальной базы знаний и её использования для RAG.
- Разделил серверную и клиентскую части, что позволило интегрировать систему в любую веб-страницу и кардинально улучшить совместимость.
- Использовал стек LAMP, что позволило легко разворачивать систему на самых доступных виртуальных хостингах.
- Система предоставляет доступ к десяткам LLM, от бюджетных до продвинутых, со средней стоимостью 1 руб/запрос.
- Система позволяет использовать собственную базу знаний до 4ГБ бесплатно.
- Этот интерфейс успешно используется в виде автоматического консультанта для СНТ, быстро предоставляющего любую информацию (тарифы, события, контакты итд), а также для создания чат-ботов.
Стек:
PHP 8.2+, Laravel 12, MySQL/MariaDB 10, vanilla JS, CSS.
Основные особенности приложения
1. Функциональные возможности
- Интерактивный чат-бот для консультаций по вопросам СНТ
- Поддержка темной и светлой тем оформления
- Адаптивный дизайн для работы на различных устройствах
- Возможность установки как Progressive Web App (PWA)
- Поддержка многоязычности
- Защита от спама с помощью Cloudflare Turnstile
- Доступ к API методом CORS
2. Технологический стек
- HTML5, CSS3, JavaScript (ES6+)
- Bootstrap Icons
- Cloudflare Turnstile для защиты от ботов
- Service Worker для PWA функциональности
- Web Share API для функции "Поделиться"
Архитектурные решения и паттерны программирования
1. Модульная архитектура
Приложение следует модульному подходу, разделяя функциональность на отдельные компоненты:
- **chat-service.js** - сервис для работы с API чата
- **chat-widget.js** - виджет пользовательского интерфейса чата
- **chat-init.js** - инициализация чата
- **app.js** - основной скрипт приложения
2. Объектно-ориентированный подход
Используются классы для инкапсуляции функциональности:
- `ChatService` - управление взаимодействием с API
- `AISupportChatWidget` - управление пользовательским интерфейсом чата
3. Паттерн наблюдатель (Observer)
Используется для обработки событий DOM:
- `DOMContentLoaded` для инициализации компонентов
- Обработчики событий для пользовательских действий
4. Асинхронное программирование
Широко используется async/await для работы с API и асинхронными операциями:
- Отправка запросов к серверу
- Опрос результатов (polling)
- Обработка пользовательского ввода
Пользовательский интерфейс (UI) и пользовательский опыт (UX)
1. Дизайн и темизация
- Поддержка темной и светлой тем с использованием CSS переменных
- Адаптивный дизайн с медиа-запросами для различных устройств
- Использование системных предпочтений пользователя (prefers-color-scheme)
- Сохранение выбранной темы в localStorage
2. Компоненты интерфейса
- Чат-интерфейс с разделением сообщений пользователя и ассистента
- Анимированный индикатор набора текста
- Адаптивное текстовое поле с автоматическим изменением размера
- Контекстное меню в заголовке
- Кнопка отправки сообщения с состоянием disabled
3. Адаптивность
- Отдельные стили для планшетов и мобильных устройств
- Гибкие размеры элементов
- Оптимизация отступов и размеров шрифтов для разных экранов
4. Доступность
- Использование семантической разметки HTML
- ARIA-атрибуты для интерактивных элементов
- Клавиатурная навигация (Enter для отправки сообщений)
Безопасность и защита
1. Защита от ботов
- Интеграция с Cloudflare Turnstile для защиты от спама
- Токены CAPTCHA для публичного режима
2. Аутентификация
- Поддержка JWT токенов для аутентификации
- Автоматическое обновление токенов при истечении срока действия
- CORS (Cross-Origin Resource Sharing) для безопасного взаимодействия с API
PWA функциональность
1. Service Worker
- Кэширование ресурсов для работы в офлайн-режиме
- Стратегия кэширования "cache-first" для статических ресурсов
- Очистка устаревших кэшей при обновлении
2. Манифест приложения
- Поддержка установки как нативного приложения
- Иконки для различных платформ
- Настройки отображения (standalone mode)
Производительность
1. Оптимизация загрузки
- Использование rel="preload" для критических ресурсов
- Ленивая загрузка шрифтов иконок
2. Управление состоянием
- Локальное кэширование токенов аутентификации
- Оптимизированный polling для получения результатов чата
Интернационализация
1. Поддержка многоязычности
- Атрибуты data-i18n для элементов интерфейса
- Файлы конфигурации и переводов (config.js, translations.js)
Основные достоинства приложения:
- **Модульность и разделение ответственности** - код четко разделен на отдельные компоненты
- **Отличный UX/UI** - продуманный интерфейс чата с анимациями и адаптивностью
- **PWA функциональность** - полноценное приложение с возможностью установки
- **Безопасность** - защита от ботов и управление аутентификацией
- **Производительность** - оптимизация загрузки и кэширования
