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

3.9 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