Повторный экзамен: FAQ-бот — ChromaDB + один MCP-tool: README.md

This commit is contained in:
2026-06-02 16:20:59 +00:00
parent b5463da6e0
commit 4d462fb7f9
+94 -2
View File
@@ -1,3 +1,95 @@
# task-6a1d75c5-povtornyy-ekzamen-faq-bot # 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