Telegram-бот консультацій з RAG: як це виглядатиме у вашій магістерській

Демо-стенд під ваше ТЗ: aiogram 3 · LangChain · ChromaDB · SQLite · Gemini / GPT-4o-mini. Діалог і цифри нижче — приклад на згенерованих даних, щоб показати формат результату.

1. Діалог: відповідь з бази знань і ескалація

Під кожною відповіддю бот (у режимі налагодження) показує, з якого фрагмента FAQ взято відповідь і його схожість. Ескалація спрацьовує за двома сигналами: модель сама каже «не знаю» (структурована відповідь) або найкраща схожість нижче порогу. Обидва сигнали пишуться в лог, тож у дипломі видно, що саме спрацювало.

2. Структура проєкту

chatbot/
├─ config.py          # pydantic-settings, усе з .env
├─ bot/
│  ├─ main.py         # запуск aiogram 3, Dispatcher
│  ├─ handlers.py     # /start, повідомлення, «оператор»
│  └─ escalation.py   # пересилання історії в ADMIN_CHAT_ID
├─ database/
│  ├─ models.py       # SQLite: users, messages
│  └─ repo.py         # історія, останні N повідомлень
├─ llm_chain/
│  ├─ chain.py        # LangChain: system + RAG + 3-5 повідомлень
│  ├─ memory.py       # обрізка / стиснення старих реплік
│  └─ metrics.py      # tokens, latency → app.log
├─ rag_pipeline/
│  ├─ ingest.py       # .txt/.pdf → чанки → ембединги → Chroma
│  └─ retriever.py    # top-k + поріг схожості
├─ analysis/
│  ├─ eval_set.jsonl  # 30-50 питань з еталонними відповідями
│  ├─ run_eval.py     # точність, частка ескалацій, порівняння
│  └─ plots.py        # графіки з app.log для тексту диплому
├─ data/faq.txt       # тестова база знань
├─ .env.example · requirements.txt · README.md

Каталог analysis/ не входить у ваше ТЗ — це те, що перетворює лог на розділ «Експериментальні результати».

3. Метрики з app.log — те, що піде в графіки диплому

Latency LLM, мс (розподіл)
Токени на запит: prompt / completion

Рядок логу (один JSON на запит, через стандартний logging, легко читається pandas):


4. Порівняльний експеримент — готова таблиця для розділу 3

Конфігурація перемикається в .env, скрипт проганяє один і той самий набір питань і будує таблицю. Значення нижче — ілюстрація формату, реальні цифри отримаєте на своїй базі знань.

КонфігураціяТочністьЕскалаціїLatency p50Токенів / запит

5. Що ви отримуєте

  1. Код за ТЗ: модулі bot / database / llm_chain / rag_pipeline / config, type hints, docstrings, усі ключі з .env.
  2. Пам'ять у SQLite: system + знайдені фрагменти + останні 3-5 повідомлень, старіші обрізаються або стискаються.
  3. Ескалація «Перемикаю на людину» з пересиланням історії в ADMIN_CHAT_ID.
  4. app.log з user_id, часом, prompt/completion tokens і latency у мс.
  5. requirements.txt з фіксованими версіями, README з запуском на Windows і Linux, тестовий FAQ.
  6. Понад ТЗ: набір питань для оцінки, скрипт порівняння конфігурацій і графіки з логу.
  7. Підготовка до захисту: схема архітектури, розбір коду по модулях онлайн, список типових питань комісії з відповідями.

Демо підготовлено під проєкт на Freelancehunt. Текст диплому ми не пишемо: робимо інженерну частину і пояснюємо її так, щоб ви захищали її самостійно.