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

5.7 KiB
Raw Blame History

FAQ‑бот: ChromaDB + MCPtool

📖 Описание проекта

Этот проект реализует FAQ‑бота, который отвечает на вопросы по локальным конспектам курса и при необходимости обращается к внешнему MCP‑подобному инструменту (HTTP‑API).

  • ChromaDB хранит разрезанные фрагменты .md файлов из папки data/.
  • LangChain формирует агента, который выбирает правильный источник:
    • вопросы о содержимом материалов → Chroma.
    • вопросы о расписании / метаданных курса → MCP‑tool (fetch_course_meta).

Бот умеет работать в интерактивном режиме и содержит три готовых примера вопросов (два из Chroma, один из MCP).

🚀 Установка зависимостей

# Клонируйте репозиторий
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.

ollama pull nomic-embed-text

📂 Структура проекта

faq-bot/
├── data/                # .md файлы с FAQ курса
├── chroma_faq/          # Папка, куда сохраняется ChromaDB (создаётся автоматически)
├── solution.py          # Основной скрипт бота
└── README.md            # Это файл

🛠️ Запуск

1. Загрузка FAQ в ChromaDB

python -c "from solution import load_faq_to_chroma; load_faq_to_chroma()"

После выполнения появится папка chroma_faq/ с сохранённой базой.

2. Запуск бота (интерактивный режим)

python solution.py

Бот предложит задать вопрос. Введите любой из трёх примеров:

Пример Ожидаемый источник
Какова дата следующего занятия по теме "Машинное обучение" mcp_meta
Что изучается в разделе 3 курса? chroma
Кто является преподавателем курса? chroma

3. Запуск отдельного вопроса из кода

from solution import run_agent

# Пример запроса к Chroma
print(run_agent("Какие темы рассматриваются в разделе 2?"))

# Пример запроса к MCP‑tool
print(run_agent("Когда начинается следующий семестр?"))

📌 Пример использования

$ 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 противоречит требованиям и не соответствует критериям зачёта.

Код полностью соответствует условию задания.