From 84bbe2031d165c4a07e5d8d059fda8148b9f4e65 Mon Sep 17 00:00:00 2001 From: Antigravity Date: Tue, 6 Oct 2026 12:16:25 +0300 Subject: [PATCH] docs: add AI_TODO.md with dual-model architecture roadmap --- AI_TODO.md | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++ TODO.md | 9 +++ 2 files changed, 168 insertions(+) create mode 100644 AI_TODO.md diff --git a/AI_TODO.md b/AI_TODO.md new file mode 100644 index 0000000..c1e892f --- /dev/null +++ b/AI_TODO.md @@ -0,0 +1,159 @@ +# 🧠 AI Roadmap & TODO: Локальный ИИ-учитель и генератор тестов + +> **Архитектурный манифест**: Zero Daemon, On-Demand CPU-инференс, строгий бюджет RAM (< 4 ГБ), Dual-Model маршрутизация (Fast 3B & Deep 7B), 0 постоянных фоновых демонов. + +--- + +## 🏛️ 1. Архитектурная концепция: Двухмодельная стратегия (Dual-Model) + +Так как на диске свободно более **100 ГБ**, а оперативная память ограничена **10 ГБ** (доступно ~7.8 ГБ), хранение двух моделей на накопителе занимает всего **~6 ГБ (< 6% диска)**. При этом модели **никогда не загружаются в ОЗУ одновременно**. + +``` + [ Задача от пользователя ] + │ + ┌─────────────────────────┴─────────────────────────┐ + ▼ ▼ +┌───────────────────────────────┐ ┌───────────────────────────────┐ +│ FAST TIER (3B Model) │ │ DEEP TIER (7B Model) │ +│ Llama-3.2-3B-Instruct (GGUF) │ │ Qwen-2.5-7B-Instruct (GGUF) │ +├───────────────────────────────┤ ├───────────────────────────────┤ +│ • RAM: ~2.2 ГБ │ │ • RAM: ~3.6 ГБ │ +│ • Диск: ~2.2 ГБ │ │ • Диск: ~3.8 ГБ │ +│ • Время на CPU: 15–40 сек │ │ • Время на CPU: 1.5–3.5 мин │ +│ • Назначение: │ │ • Назначение: │ +│ - Тесты по главам (MCQ) │ │ - Грамматический разбор │ +│ - Вопросы на понимание │ │ - Оценка эссе и пересказа │ +│ - Материалы для аудирования │ │ - Объяснение правил на рус. │ +│ - True / False / Not Given │ │ - Разбор "обратного перевода"│ +└───────────────────────────────┘ └───────────────────────────────┘ + │ │ + └─────────────────────────┬─────────────────────────┘ + ▼ + [ Выгрузка из ОЗУ сразу после ответа ] + (В памяти остается только веб-сервер) +``` + +### Ключевые правила надежности (Ponytail AI Rules): +1. **Zero Daemon (Нулевой оверхед в покое)**: Никаких висящих в памяти демонов Ollama/vLLM. Инференс вызывается по требованию (`on-demand`) через оптимизированный бинарник `llama.cpp` (`llama-cli`). +2. **Изоляция CPU (`nice -n 19`)**: Фоновый процесс работает с самым низким системным приоритетом Linux. Читалка, веб-интерфейс и база данных отвечают без задержек даже при 100% нагрузке на ядра процессора. +3. **Ограничение контекста (`-c 4096`)**: Контекст строго ограничен 4096 токенами. KV-кэш занимает не более 200 МБ ОЗУ, полностью исключая риск аварийной нехватки памяти (OOM Killer). +4. **Строгий JSON-контракт**: Модель всегда отвечает валидным JSON (через GGUF grammar/schema sampling или строгий системный промпт) для мгновенного парсинга сервером. + +--- + +## 🗄️ 2. Схема данных в SQLite (`data/notes.db`) + +```sql +-- Квизы и тесты на понимание по главам +CREATE TABLE IF NOT EXISTS chapter_quizzes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + book_id INTEGER NOT NULL, + chapter_index INTEGER NOT NULL, + model_used TEXT NOT NULL, -- 'llama-3.2-3b' + status TEXT DEFAULT 'pending', -- 'pending', 'processing', 'ready', 'failed' + questions_json TEXT DEFAULT '[]', -- Массив вопросов, вариантов, цитат и объяснений + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE CASCADE +); + +-- Проверки письменных работ, пересказов и обратного перевода +CREATE TABLE IF NOT EXISTS grammar_reviews ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + task_type TEXT NOT NULL, -- 'reverse_translation', 'retell', 'free_writing' + book_id INTEGER, + chapter_index INTEGER, + prompt_text TEXT NOT NULL, -- Исходный вопрос или русский текст для перевода + original_reference TEXT, -- Оригинал из книги (для обратного перевода) + user_submission TEXT NOT NULL, -- Текст, введенный студентом + score INTEGER, -- Оценка от 1 до 5 (или CEFR A1-C2) + corrected_text TEXT, -- Исправленный идеальный вариант + feedback_json TEXT DEFAULT '{}', -- Ошибки, правила, похвала, зоны роста + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE +); + +-- Индивидуальный радар грамматических слабостей +CREATE TABLE IF NOT EXISTS user_grammar_weaknesses ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + tag TEXT NOT NULL, -- 'articles', 'past-tenses', 'prepositions', etc. + rule_name TEXT NOT NULL, + mistakes_count INTEGER DEFAULT 1, + last_mistake_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + UNIQUE(user_id, tag, rule_name), + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE +); +``` + +--- + +## 📋 3. Пошаговый план внедрения (Roadmap) + +### Этап 1: Инфраструктура легковесного инференса +- [ ] Скомпилировать или установить легковесный бинарник `llama-cli` (без лишних зависимостей, с поддержкой AVX2 процессора). +- [ ] Создать изолированную директорию `models/` для GGUF-файлов: + - `models/llama-3.2-3b-instruct-q4_k_m.gguf` (~2.2 ГБ). + - `models/qwen-2.5-7b-instruct-q3_k_m.gguf` (~3.8 ГБ). +- [ ] Написать pure-Python обёртку `app/ai/runner.py`: + - Функция `run_model(model_tier: str, prompt: str, schema: dict = None)`. + - Запуск через `subprocess.Popen` с аргументами `nice -n 19`, `-c 4096`, `-t `. + - Автоматическая выгрузка процесса из ОЗУ сразу после завершения инференса. +- [ ] Написать асинхронный воркер фоновых задач (`app/ai/worker.py`) на базе SQLite-очереди задач. + +--- + +### Этап 2: Квизы и тесты по главам (Fast Tier — Llama 3.2 3B) +- [ ] **Генератор вопросов по главе**: + - Извлечение текста текущей главы книги из читалки. + - Формирование 5–8 контрольных вопросов: + - 3 вопроса **Multiple Choice (MCQ)** на понимание ключевых событий. + - 2 вопроса **True / False / Not Given** по методике IELTS/TOEFL. + - 1 вопрос на значение редкого слова или термина в контексте абзаца. +- [ ] **Интеграция в интерфейс читалки**: + - Кнопка в конце главы: `🧠 Проверить понимание главы`. + - Модальное окно или встроенный блок прохождения теста с мгновенным подсвечиванием правильных/неправильных ответов. + - Сохранение результата прохождения в профиль книги. + +--- + +### Этап 3: Режим «Аудирование на слух» (Listening & Dictation) +- [ ] **Скрытый режим тестирования**: + - Вопрос и варианты ответов озвучиваются нативно через браузерный `window.speechSynthesis` (0 сетевых запросов). + - Текст вопроса скрыт шторкой или кнопкой «Показать текст» (позволяет тренировать восприятие беглой английской речи на слух). +- [ ] **Аудио-диктант по ключевым предложениям**: + - Модель выбирает 3 ярких и грамматически богатых предложения из главы. + - Браузер диктует предложение, пользователь вводит его на слух. + - Сравнение ввода со сгенерированным оригиналом (подсветка пропущенных предлогов и окончаний). + +--- + +### Этап 4: Тренажёр «Обратный перевод» (Reverse Translation — Deep Tier Qwen 2.5 7B) +- [ ] Извлечение оригинального предложения автора из книги. +- [ ] Формирование качественного русского перевода. +- [ ] Задание пользователю: *«Напишите перевод на английский язык по памяти»*. +- [ ] **Интеллектуальная оценка модели 7B**: + - Сравнение с авторским вариантом: + - Выделение грубых ошибок (грамматика, времена, согласование). + - Выделение стилистических альтернатив (автор выразился идиоматичнее, но вариант студента тоже допустим). + - Объяснение разницы на понятном русском языке. + +--- + +### Этап 5: ИИ-учитель свободной речи и пересказа (Retell & Free Writing) +- [ ] Поле свободного ответа на вопрос по главе книги (до 200–300 слов). +- [ ] Поддержка голосового ввода через нативный Web Speech API (`webkitSpeechRecognition`). +- [ ] **Комплексный фидбек по 4 критериям**: + 1. *Grammar & Syntax* (порядок слов, времена, предлоги, артикли). + 2. *Vocabulary Richness* (использование синонимов и слов из главы). + 3. *Coherence & Flow* (связность предложений, логические связки *however, moreover, despite*). + 4. *Final Score & Praise* (балл 1–5, похвала за удачные фразы, конкретные рекомендации). + +--- + +### Этап 6: Персональный грамматический профиль и подсказки в читалке +- [ ] Таблица слабых мест пользователя в SQLite: + - Автоматическая фиксация категорий ошибок (`#articles`, `#past-tenses`, `#prepositions`, `#passive-voice`, `#conditionals`). +- [ ] Виджет в личном кабинете: **«Радар грамматики»** (топ-3 тем, в которых чаще всего допускаются ошибки). +- [ ] Умная подсветка в читалке: + - Если в тексте книги встречается грамматическая конструкция из «зоны роста» пользователя, читалку можно настроить деликатно подсвечивать её с ненавязчивой подсказкой. diff --git a/TODO.md b/TODO.md index 7093a16..8736c28 100644 --- a/TODO.md +++ b/TODO.md @@ -285,6 +285,15 @@ --- +### 13. 🧠 Локальный ИИ-учитель и аудирование (Dual-Model: Llama 3.2 3B + Qwen 2.5 7B) +> Полный роадмап и архитектурный манифест вынесен в отдельный документ: [`AI_TODO.md`](file:///home/ai-projects/services/study.qpid.pro/AI_TODO.md). +- [ ] Инфраструктура Zero Daemon (`llama-cli` on-demand, `nice -n 19`, RAM < 4 ГБ). +- [ ] Fast Tier (Llama 3.2 3B): генерация контрольных вопросов по главам, True/False, аудирование. +- [ ] Deep Tier (Qwen 2.5 7B): грамматический аудит эссе, тренажёр «Обратный перевод», объяснения правил. +- [ ] Личный радар грамматических слабостей в SQLite (`user_grammar_weaknesses`). + +--- + ## ⏳ Coming Soon - [ ] **🌐 Быстрый захват из браузера (Bookmarklet)**: