diff --git a/README.md b/README.md index e6e9d90..13d3d06 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,95 @@ -# task-6a1d75c5-povtornyy-ekzamen-faq-bot +# FAQ‑бот: ChromaDB + MCP‑tool -Решения домашних заданий \ No newline at end of file +## 📖 Описание проекта +Этот проект реализует **FAQ‑бота**, который отвечает на вопросы по локальным конспектам курса и при необходимости обращается к внешнему *MCP‑подобному* инструменту (HTTP‑API). +- **ChromaDB** хранит разрезанные фрагменты `.md` файлов из папки `data/`. +- **LangChain** формирует агента, который выбирает правильный источник: + - вопросы о содержимом материалов → Chroma. + - вопросы о расписании / метаданных курса → MCP‑tool (`fetch_course_meta`). + +Бот умеет работать в интерактивном режиме и содержит три готовых примера вопросов (два из Chroma, один из MCP). + +## 🚀 Установка зависимостей + +```bash +# Клонируйте репозиторий +git clone https://github.com/your-org/faq-bot.git +cd faq-bot + +# Создайте и активируйте виртуальное окружение (опционально) +python -m venv .venv +source .venv/bin/activate # Windows: .venv\Scripts\activate + +# Установите зависимости +pip install langchain langchain-chroma langchain-ollama chromadb httpx python-dotenv +``` + +> **Важно** – для работы с embeddings понадобится модель `nomic-embed-text`. +> ```bash +> ollama pull nomic-embed-text +> ``` + +## 📂 Структура проекта + +``` +faq-bot/ +├── data/ # .md файлы с FAQ курса +├── chroma_faq/ # Папка, куда сохраняется ChromaDB (создаётся автоматически) +├── solution.py # Основной скрипт бота +└── README.md # Это файл +``` + +## 🛠️ Запуск + +### 1. Загрузка FAQ в ChromaDB + +```bash +python -c "from solution import load_faq_to_chroma; load_faq_to_chroma()" +``` + +> После выполнения появится папка `chroma_faq/` с сохранённой базой. + +### 2. Запуск бота (интерактивный режим) + +```bash +python solution.py +``` + +Бот предложит задать вопрос. Введите любой из трёх примеров: + +| Пример | Ожидаемый источник | +|--------|--------------------| +| *Какова дата следующего занятия по теме "Машинное обучение"* | `mcp_meta` | +| *Что изучается в разделе 3 курса?* | `chroma` | +| *Кто является преподавателем курса?* | `chroma` | + +### 3. Запуск отдельного вопроса из кода + +```python +from solution import run_agent + +# Пример запроса к Chroma +print(run_agent("Какие темы рассматриваются в разделе 2?")) + +# Пример запроса к MCP‑tool +print(run_agent("Когда начинается следующий семестр?")) +``` + +## 📌 Пример использования + +```bash +$ python solution.py +Введите ваш вопрос (или 'выход' для завершения): Какова дата следующего занятия по теме "Машинное обучение"? +Ответ: 15 сентября 2024 г. (пятница). source: mcp_meta +``` + +## 🧩 Что дальше? + +- Добавить более сложные инструменты MCP‑стиля. +- Интегрировать с внешним API для реального расписания. +- Расширить набор `.md` файлов и улучшить чанкинг. + +--- + +**Автор:** *Ваше имя* +**Дата:** 2026‑06‑02 \ No newline at end of file