From 4d462fb7f98bd52cf421b642a59a249d1a12c022 Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Tue, 2 Jun 2026 16:20:59 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B2=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D1=8D=D0=BA=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD:=20FA?= =?UTF-8?q?Q-=D0=B1=D0=BE=D1=82=20=E2=80=94=20ChromaDB=20+=20=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD=20MCP-tool:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 2 deletions(-) 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