3.9 KiB
3.9 KiB
FAQ‑бот: ChromaDB + MCP‑tool
📖 Описание проекта
Этот проект реализует 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файлов и улучшить чанкинг.
Автор: Ваше имя
Дата: 2026‑06‑02