# FAQ‑бот: ChromaDB + MCP‑tool ## 📖 Описание проекта Этот проект реализует **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