Повторный экзамен: FAQ-бот — ChromaDB + один MCP-tool: README.md
This commit is contained in:
@@ -1,3 +1,95 @@
|
||||
# task-6a1d75c5-povtornyy-ekzamen-faq-bot
|
||||
# FAQ‑бот: ChromaDB + MCP‑tool
|
||||
|
||||
Решения домашних заданий
|
||||
## 📖 Описание проекта
|
||||
Этот проект реализует **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` файлов и улучшить чанкинг.
|
||||
|
||||
---
|
||||
|
||||
**Автор:** *Ваше имя*
|
||||
**Дата:** 2026‑06‑02
|
||||
Reference in New Issue
Block a user