Локальный многофункциональный чат-бот на базе LLM с моральным фильтром, RAG, таблицами и CoT.
ethical-llm-chatbot — интерактивный чат-бот, работающий локально с текстовыми базами данных.
Проект демонстрирует:
- Этическую фильтрацию запросов (моральный фильтр)
- RAG (retrieval-augmented generation) для ответов на вопросы по пользовательским базам
- Табличную обработку пользовательских документов
- Пересказ и извлечение тегов
- Решение сложных текстовых задач с промежуточными шагами (CoT / structured reasoning)
- Многоязычность: русский, английский, немецкий, французский
Бот может запускаться в CLI или как Telegram-бот.
| Функция | Описание |
|---|---|
| Моральный фильтр | Классификация запросов, отсеивающая оскорбительные или незаконные действия |
| RAG-поиск | Поиск информации в пользовательской базе с LLM-ответами |
| Таблицы | Автоматическое создание таблиц на основе документа или базы данных |
| Пересказ и теги | Генерация краткого резюме текста и тематических ключевых слов |
| CoT / Structured reasoning | Решение сложных текстовых задач с промежуточными шагами |
| Многоязычность | Автоматическая классификация языка и общение на выбранном языке |
flowchart TD
%% Пользовательский запрос
A[Пользовательский запрос] --> B{Моральный фильтр}
%% Фильтрация
B -- "Неприемлемый" --> C[Блокировка запроса]
B -- "Приемлемый" --> D[Языковой классификатор]
%% Установка языка
D --> E[Установка языка беседы]
%% Определение функции
E --> F{Domain classifier / Определение функции}
%% RAG
F -- "RAG-поиск" --> G1[Books Collection]
F -- "Рекомендации" --> G2[Reco Collection]
G1 --> K["LLM (Ollama)"]
G2 --> K
%% Таблицы
F -- "Таблицы" --> H[Table Collection]
H --> K
%% CoT / сложные задачи
F -- "CoT / Structured Reasoning" --> I[CoT Collection]
I --> K
%% Пересказ и теги
F -- "Summary & Tags" --> J[Summary / YAKE]
J --> K
%% Ответ пользователю
K --> L[Ответ пользователю]
%% Обратная связь: добавление текста в базу
L --> M{Добавить текст в базу?}
M -- Да --> N1[Books Collection]
M -- Да --> N2[Reco Collection]
M -- Да --> N3[Table Collection]
M -- Да --> N4[CoT Collection]
%% Поток назад к LLM для RAG
N1 --> K
N2 --> K
N3 --> K
N4 --> K
pip install -r requirements.txtУстановите и запустите Ollama.
Поместите тексты в папку ./data/**/*.txt и создайте базу:
python chatbot.py --build
# Для полного пересоздания базы
python chatbot.py --build --rebuildpython chatbot.py --chatpython chatbot.py --telegram --telegram-token "<TG_BOT_TOKEN>"RAG-поиск
Пользователь: Найди информацию о квантовой механике в моей базе.
Бот: Вот что я нашёл: ...
Таблица
Пользователь: Создай таблицу мясных и рыбных блюд из документа.
Бот:
| Название | Тип |
|----------|-----|
| Стейк | Мясо|
| Сёмга | Рыба|
CoT / сложная задача
Пользователь: Реши задачу с промежуточными шагами.
Бот:
Шаг 1: ...
Шаг 2: ...
Итог: ...
Пересказ и теги
Пользователь: Дай краткий пересказ статьи.
Бот: Краткий пересказ...
Тэги: физика, квантовая механика, эксперименты
ethical-llm-chatbot/
├─ data/ # Пользовательские тексты для RAG, таблиц и CoT
├─ utils/ # Вспомогательные функции
│ ├ embed.py # Функции для векторных представлений текста
│ ├ translation/lang.py # Определение и установка языка
│ └ debug.py # Логирование и отладка
├─ classifiers/ # Классификаторы запросов
│ ├ moral.py # Моральный фильтр
│ ├ domain.py # Определение функции/домена
│ └ language.py # Определение языка
├─ chatbot.py # Основной скрипт (CLI + Telegram)
├─ requirements.txt # Зависимости проекта
└─ README.md # Документация
- Python 3.10+
- ChromaDB (для RAG)
- Ollama (LLM)
- NLTK, YAKE (токенизация, ключевые слова)
- Telebot (Telegram интеграция)
- Logistic Regression (классификаторы)