From e38a3655c0088ead13ec61b60b6ac9d283acda22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B8=D1=80=D0=B8=D0=BB=D0=BB=20=D0=9A=D1=83=D1=82?= =?UTF-8?q?=D0=BB=D0=B0=D1=85=D0=BC=D0=B5=D1=82=D0=BE=D0=B2?= Date: Thu, 4 Jun 2026 15:59:19 +0000 Subject: [PATCH] add README.md --- README.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e41b20..c1f42a8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,49 @@ -# task-6a1d75c5fd30e81cf3126ae7 +# FAQ‑бот (ChromaDB + MCP‑tool) +## Что делает проект + +* Загружает локальные `.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».