Этот проект — результат борьбы обычного школьника с четырьмя томами «Войны и мира» и лимитами видеопамяти моей RTX 3080.
Проблема: Читать 2000+ страниц — долго, а найти внятное краткое содержание по главам (без воды и пропусков) — задача со звездочкой. Решение: Скормить текст Льва Николаевича нейросети. Нюанс: 10 ГБ VRAM превращают обычную задачу в увлекательный квест по квантованию и промпт-инжинирингу.
- Модель:
IlyaGusev/saiga_llama3_8b(лучшее решение для русского языка на данный момент). - Оптимизация: 4-битное квантование через
bitsandbytes(NF4) — без этого модель просто не влезала в память вместе с контекстом. - Архитектура: Парсинг текста по главам с «умной» обрезкой по словам (лимит ~7500 символов на проход).
- Контроль качества: Gemini 1.5 Flash (в роли строгого рецензента).
Нейросеть упорно пыталась «убить» Николая Ростова при Шенграбене. Почему? Потому что Толстой пишет о ранении на 3000 токенов, а о том, что герой выжил — в паре слов. Модель просто выбирала наиболее вероятный (по её мнению) финал. Решение: Внедрение «Базы данных персонажей» прямо в системный промпт с жестким запретом на изменение их жизненного статуса.
В процессе тестов на свет появился новый герой — Пьер Бездаровский.
- Как это вышло? Пьер в тексте называет себя «бездарным». Модель при генерации фамилии [Без...] подхватила токен [дар] и добавила типичное окончание [-овский].
- Это наглядный пример того, как особенности токенизации и контекст могут порождать уникальные галлюцинации.
При настройке логических фильтров я столкнулся с ситуацией, когда вероятность ответов «Умер» и «Выжил» распределилась ровно 50/50. Промпт настолько сильно сместил веса модели, что она буквально замерла в неопределенности.
- GPU с 10 ГБ VRAM (минимум).
- Python 3.10+
- Установленные библиотеки:
pip install torch transformers bitsandbytes accelerate
- Положите текстовый файл с книгой (
tolstoy_voyna-i-mir.txt) в корень проекта. - Запустите основной скрипт:
python main.py
- Результат будет записываться в
war_and_peace_summarized.mdв реальном времени.
Скрипт поддерживает автоматическое возобновление: если генерация прервется, он найдет последнюю обработанную главу и продолжит с неё.
- Исходный текст: ~230 000 слов.
- Выжимка: ~18 000 слов (чистые факты и сюжет).
- Точность: ~95% по оценке внешних LLM.
- Главные ошибки: Редкие путаницы в фамилиях (Андрей Безухов вместо Болконского) и «галлюцинаторные» фамилии.
Если ваш учитель литературы спросит, почему в вашем кратком содержании Наташа Ростова чуть не вышла замуж за Пьера Бездаровского — автор ответственности не несет. ИИ — это инструмент, а Толстого лучше всё-таки почитать в оригинале (когда-нибудь).
Сделано школьником для школьников. 2026.