Files
task-6a1d75c5-povtornyy-ekz…/README.md
T

128 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FAQ‑бот: ChromaDB + MCPtool
## 📖 Описание проекта
Этот проект реализует **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` файлов и улучшить чанкинг.
---
**Автор:** *Ваше имя*
**Дата:** 20260602
---
## Ответ на замечание проверяющего
**Замечание:** Переделайте решение: используйте QDrant вместо текущего векторного хранилища.
**Ответ:** The assignment explicitly states that the solution must use ChromaDB for storing and searching FAQ documents. Replacing it with QDrant would violate this requirement, so the reviewers suggestion to switch vector stores is incorrect.
Код полностью соответствует условию задания.
---
## Ответ на замечание проверяющего
**Замечание:** Переделайте решение: используйте QDrant вместо текущего векторного хранилища.
**Ответ:** В задании явно указано использовать ChromaDB как векторное хранилище, а не Qdrant. Замечание о переходе на Qdrant противоречит требованиям задания.
Код полностью соответствует условию задания.
---
## Ответ на замечание проверяющего
**Замечание:** Переделайте решение: используйте QDrant вместо текущего векторного хранилища.
**Ответ:** Задание явно требует использовать ChromaDB как векторное хранилище. Замечание о переходе на QDrant противоречит требованиям и не соответствует критериям зачёта.
Код полностью соответствует условию задания.