From e9e013fe97057d2e0fc5775c300193babe5bce5c 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 16:28:01 +0000 Subject: [PATCH] add README.md --- README.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5ae6862..878e114 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,76 @@ -# task-6a219d2dfd30e81cf3146bad +# FAQ‑бот курса KFU-26-1 (ChromaDB + MCP‑style tool) +Агент отвечает на вопросы по конспектам курса (ChromaDB) и при необходимости вызывает MCP‑style инструмент для метаданных (расписание, дедлайны, контакты). + +## Стек + +| Компонент | Технология | +|-----------|------------| +| LLM | BroJS gpt-oss-20b (ChatOpenAI) | +| Embeddings | Ollama nomic-embed-text | +| Векторная БД | ChromaDB (langchain-chroma) | +| MCP‑style tool | fetch_course_meta (httpx / static JSON) | +| Фреймворк | LangChain + LangGraph | + +## Установка + +```bash +ollama pull nomic-embed-text +pip install -r requirements.txt +``` + +Добавь в `.env`: +``` +JOURNAL_MCP_PAT=твой_токен +``` + +## Запуск + +```bash +python main.py +``` + +## Структура проекта + +| Файл | Назначение | +|------|-----------| +| `data/faq_general.md` | FAQ: общие вопросы курса | +| `data/faq_langchain.md` | FAQ: LangChain | +| `data/faq_langgraph.md` | FAQ: LangGraph | +| `vectorstore.py` | ChromaDB + Ollama embeddings + load_faq_to_chroma() | +| `tools.py` | search_course_docs (chroma) + fetch_course_meta (mcp) | +| `agent.py` | Агент с маршрутизацией по источнику | +| `main.py` | CLI: 3 демо‑вопроса + интерактивный режим | + +## Архитектура маршрутизации + +``` +Вопрос пользователя + | + v + Агент (LLM решает) + | + +---------+-----------+ + | | + v v +search_course_docs fetch_course_meta +[source: chroma] [source: mcp_meta] + | | + v v +ChromaDB Static JSON +(Ollama embeddings) (в проде — MCP tool call) +``` + +## MCP‑style tool + +`fetch_course_meta` имитирует вызов MCP‑сервера метаданных курса. +В production‑среде это был бы `mcp tool list` + `mcp tool call` к реальному MCP‑серверу. +Текущая реализация использует статический JSON — достаточно для демонстрации паттерна. + +## Демо‑вопросы + +| Вопрос | Источник | +|--------|---------| +| Что такое LangGraph и как он отличается от LangChain? | chroma | +| Как создать инструмент tool в LangChain? | chroma | +| Когда дедлайн финального проекта? | mcp_meta |