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.

Как использовать:

  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
S
Description
No description provided
Readme
127 KiB
Languages
TypeScript 80.5%
JavaScript 16.4%
CSS 2.2%
Dockerfile 0.6%
HTML 0.3%