Files
AIUI/README.md
T

123 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Установка зависимостей
```bash
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. Запуск
```bash
# Запуск backend (порт 3001)
npm run dev:backend
# В другом терминале — запуск frontend (порт 3000)
npm run dev:frontend
```
Frontend запустится на `http://localhost:3000` и будет проксировать API-запросы на backend.
### Production сборка
```bash
# Сборка frontend
npm run build:frontend
# Запуск backend (раздает собранный frontend)
npm run start:backend
```
## Базы знаний (Knowledge Bases)
Базы знаний позволяют загружать документы и использовать их как контекст для ответов LLM.
### Как использовать:
1. Откройте панель **Knowledge Bases** (иконка базы данных в сайдбаре)
2. Создайте новую базу знаний
3. Загрузите документы (`.txt`, `.md`, `.pdf`, `.docx`)
4. В сайдбаре выберите базу знаний для текущего диалога
5. Задавайте вопросы — 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