add README.md

This commit is contained in:
2026-06-04 15:59:19 +00:00
parent b9f90172d8
commit e38a3655c0
+48 -1
View File
@@ -1,2 +1,49 @@
# task-6a1d75c5fd30e81cf3126ae7
# FAQ‑бот (ChromaDB + MCPtool)
## Что делает проект
* Загружает локальные `.md` файлы с материалами курса в **Chroma**.
* Создаёт инструмент `search_course_docs(query, k=3)` для поиска по этим материалам.
* Реализует один MCP‑подобный HTTP‑инструмент `fetch_course_meta(query)` – возвращает метаданные расписания из статического JSON.
* Агент на базе **LangChain** маршрутизирует запросы: если вопрос относится к содержимому курса, он использует Chroma; если к расписанию/метаданным – MCP‑tool.
## Структура репозитория
```
├── data/ # исходные .md файлы
│ ├── faq1.md
│ └── faq2.md
├── meta.json # статический JSON с расписанием
├── main.py # точка входа, CLI и агент
├── requirements.txt # зависимости
└── README.md
```
## Установка
```bash
# 1. Откатить Ollama embedding model
ollama pull nomic-embed-text
# 2. Установить зависимости
pip install -r requirements.txt
```
## Запуск
```bash
python main.py
```
Вы увидите три готовых вопроса и сможете задать свой.
## Как работает агент
1. **Chroma** хранит векторные представления всех блоков текста из `data/*.md`.
2. При запросе агент сначала пытается понять, относится ли он к материалам курса (проверка ключевых слов «материал», «конспект» и т.п.).
3. Если да – вызывает `search_course_docs`, получает 3 наиболее релевантных фрагмента и формирует ответ.
4. Иначе – вызывает MCP‑tool `fetch_course_meta` и возвращает данные о расписании.
## Тестовые вопросы
1. *Какой материал по теме «LangChain» доступен в конспектах?*
2. *Кто преподавал лекцию 12 июня?*
3. *Что нужно сделать, чтобы подключить Ollama embeddings?*
---
**Важно:** проект не использует Tavily и не дублирует задание «Chroma + Tavily web search».