2307c63bf116f99d381dff7cf25ebc86270730fc
AIUI Chat
AIUI Chat — это современный веб-интерфейс для общения с LLM (большими языковыми моделями), вдохновленный Open WebUI. Поддерживает любой OpenAI-compatible API (OpenAI, Ollama, LM Studio, vLLM и другие).
Особенности
- Чат с поддержкой streaming ответов
- Управление историей диалогов
- Настройки API, модели, temperature, max tokens
- Загрузка файлов в чат
- Базы знаний с ChromaDB — загружайте документы и получайте ответы с учетом контекста
- Адаптивный дизайн (десктоп + мобильные)
- Темная тема в стиле modern tech
Структура проекта
AIUI/
├── frontend/ # React + TypeScript + Tailwind CSS
│ ├── src/
│ │ ├── components/ # UI компоненты
│ │ │ ├── chat/ # Компоненты чата
│ │ │ ├── layout/ # Layout компоненты
│ │ │ └── knowledge/ # Компоненты баз знаний
│ │ ├── services/ # API сервисы
│ │ ├── stores/ # Zustand stores
│ │ ├── types/ # TypeScript типы
│ │ └── utils/ # Утилиты
│ └── package.json
├── backend/ # Express.js proxy сервер
│ └── src/
│ └── index.js # Основной сервер
└── package.json # Root package.json
Быстрый старт
1. Установка зависимостей
npm install
Это установит зависимости для root, frontend и backend.
2. Настройка API
Запустите frontend и backend, затем откройте настройки (иконка шестеренки) и укажите:
- API Base URL — например
https://api.openai.com/v1илиhttp://localhost:11434/v1(для Ollama) - API Key — ваш ключ
- Model — например
gpt-4,gpt-3.5-turbo,llama2и т.д. - Temperature и Max Tokens — по желанию
- System Prompt — системный промпт
- Embedding Model — для баз знаний (например
text-embedding-3-small) - ChromaDB Directory — путь к хранилищу ChromaDB
3. Запуск
# Запуск backend (порт 3001)
npm run dev:backend
# В другом терминале — запуск frontend (порт 3000)
npm run dev:frontend
Frontend запустится на http://localhost:3000 и будет проксировать API-запросы на backend.
Production сборка
# Сборка frontend
npm run build:frontend
# Запуск backend (раздает собранный frontend)
npm run start:backend
Базы знаний (Knowledge Bases)
Базы знаний позволяют загружать документы и использовать их как контекст для ответов LLM.
Как использовать:
- Откройте панель Knowledge Bases (иконка базы данных в сайдбаре)
- Создайте новую базу знаний
- Загрузите документы (
.txt,.md,.pdf,.docx) - В сайдбаре выберите базу знаний для текущего диалога
- Задавайте вопросы — LLM будет использовать контекст из документов
Технические детали:
- Документы разбиваются на чанки по ~500 символов с перекрытием
- Для каждого чанка генерируется embedding через API
- Чанки хранятся в ChromaDB (векторная база данных)
- При отправке сообщения запрос эмбеддится и ищутся похожие чанки через semantic search
- Найденный контекст добавляется к системному промпту
API Endpoints
Backend проксирует запросы к OpenAI-compatible API:
| Endpoint | Method | Описание |
|---|---|---|
/api/v1/chat/completions |
POST | Streaming чат |
/api/v1/models |
POST | Список моделей |
/api/files/upload |
POST | Загрузка файлов |
/api/files |
GET | Список файлов |
/api/files/:id |
DELETE | Удаление файла |
/api/knowledge |
GET | Список баз знаний |
/api/knowledge |
POST | Создать базу знаний |
/api/knowledge/:id |
DELETE | Удалить базу знаний |
/api/knowledge/:id/files |
POST | Добавить файл в базу |
/api/knowledge/:id/files/:fileId |
DELETE | Удалить файл из базы |
/api/knowledge/:id/query |
POST | Поиск по базе знаний |
Технологии
- Frontend: React 18, TypeScript, Tailwind CSS, Zustand, Lucide icons
- Backend: Node.js, Express.js, ChromaDB, Multer
- Build: Vite
Languages
TypeScript
80.5%
JavaScript
16.4%
CSS
2.2%
Dockerfile
0.6%
HTML
0.3%