Веб-приложение для обмена файлами с встроенным AI чат-ботом. Бот умеет искать файлы по запросу, отправлять их пользователю и вести осмысленную переписку — всё через локальную LLM, запущенную в LM Studio.
Файловый обозреватель
- Навигация по папкам в стиле Notion
- Предпросмотр изображений, PDF, видео, аудио, текстовых файлов
- Скачивание файлов с ограничением по размеру
AI Чат-бот
- Поиск файлов по ключевым словам, тегам, предметам
- Отправка файлов прямо в чат (скачивание по одному или всех разом в ZIP)
- Контекст переписки — бот помнит что обсуждали
- Многопользовательский режим — сессии изолированы, данные не пересекаются
- Экспорт истории чата в JSON
- Поддержка thinking-моделей (фильтрация
<think>тегов)
Индексация
- Автоматическое извлечение текста из PDF, DOCX, XLSX, CSV, TXT, MD
- OCR изображений через vision-модель (JPG, PNG, GIF, WebP, BMP)
- Генерация описаний и тегов через LLM
- Инкрементальная индексация — обрабатываются только новые/изменённые файлы
- Python 3.10+
- LM Studio с запущенным локальным сервером
- Модель с поддержкой tool calling (рекомендуется Qwen3, Qwen2.5, Mistral и др.)
- Для OCR изображений — модель с поддержкой vision
git clone https://github.com/Leon-Av/Streamlit-Fileshare-LLMpip install -r requirements.txtОткройте config.py и измените параметры под себя:
# Адрес LM Studio
LLM_BASE_URL = "http://localhost:1234/v1"
# Название модели (как отображается в LM Studio)
LLM_MODEL = "qwen3.5-9b"
# Думающая модель (фильтровать <think> теги)
IS_THINKING_MODEL = True
# Папка с файлами
ROOT_FOLDER = "./files"
# Порт сервера
PORT = 2345Положите файлы в папку ./files/ (создаётся автоматически). Поддерживается любая структура вложенных папок.
Убедитесь что в LM Studio:
- Загружена модель с поддержкой tool calling
- Запущен локальный сервер (вкладка «Local Server» → Start Server)
- Порт совпадает с
LLM_BASE_URLв конфиге
python indexer.pyИндексатор пройдёт по всем файлам, извлечёт текст и отправит его в LLM для генерации описаний и тегов. Это может занять время в зависимости от количества файлов и скорости модели.
python app.pyОткройте в браузере:
http://localhost:2345— файловый обозревательhttp://localhost:2345/chat— AI чат-бот
file-archive/
├── config.py # Все настройки в одном месте
├── database.py # Работа с SQLite (общий модуль)
├── indexer.py # Скрипт индексации файлов
├── app.py # Flask-сервер (файлы + чат-бот)
├── requirements.txt # Зависимости Python
├── files/ # Папка с файлами (создаётся автоматически)
└── files_index.db # БД с индексами (создаётся автоматически)
Все настройки находятся в config.py:
| Параметр | Описание | По умолчанию |
|---|---|---|
PORT |
Порт сервера | 2345 |
HOST |
Хост (0.0.0.0 — все, 127.0.0.1 — локально) |
0.0.0.0 |
ROOT_FOLDER |
Путь к папке с файлами | ./files |
LLM_BASE_URL |
URL API LM Studio | http://localhost:1234/v1 |
LLM_MODEL |
Название модели | qwen3.5-9b |
IS_THINKING_MODEL |
Фильтровать <think> теги |
True |
MAX_CONTEXT_MESSAGES |
Макс. сообщений в контексте чата | 30 |
MAX_FILE_SIZE_GB |
Лимит на скачивание | 5 ГБ |
MAX_PREVIEW_SIZE_MB |
Лимит на предпросмотр | 50 МБ |
SYSTEM_PROMPT |
Системный промпт для чат-бота | см. файл |
# Индексация новых и изменённых файлов
python indexer.py
# Полная переиндексация всех файлов
python indexer.py --reindex-allИндексатор автоматически:
- Пропускает уже проиндексированные файлы
- Переиндексирует изменённые файлы (по дате модификации)
- Удаляет из БД записи для удалённых файлов
Индексация (извлечение текста + описание от LLM):
| Формат | Расширения |
|---|---|
| Текст | .txt, .md |
.pdf |
|
| Word | .docx |
| Excel | .xlsx |
| CSV | .csv |
| Изображения (OCR) | .jpg, .jpeg, .png, .gif, .webp, .bmp |
Предпросмотр в браузере:
| Тип | Расширения |
|---|---|
| Изображения | .jpg, .jpeg, .png, .gif, .webp, .svg, .bmp, .ico |
.pdf |
|
| Видео | .mp4, .webm, .mov, .avi, .mkv |
| Аудио | .mp3, .wav, .ogg, .flac, .m4a |
| Код/текст | .txt, .md, .py, .js, .html, .css, .json, .csv, .xml, .yaml |
• материалы по физике для подготовки к экзамену
• конспекты лекций по математическому анализу
• какие предметы есть в базе?
• пришли все файлы по программированию
• задачи по линейной алгебре
Бот не отвечает / думает бесконечно
- Проверьте что LM Studio запущен и сервер активен
- Убедитесь что
LLM_MODELвconfig.pyсовпадает с названием модели в LM Studio - Смотрите логи в терминале — там подробно показан каждый шаг
Бот не находит файлы
- Убедитесь что индексация прошла успешно:
python indexer.py - Проверьте БД:
http://localhost:2345/api/stats - Попробуйте другие ключевые слова или спросите «какие предметы есть»
Ошибка подключения к LM Studio
- Проверьте
LLM_BASE_URLвconfig.py - Убедитесь что порт LM Studio совпадает (по умолчанию
1234) - Если сервер на другой машине — укажите её IP
MIT