e9e013fe97057d2e0fc5775c300193babe5bce5c
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 |
Установка
ollama pull nomic-embed-text
pip install -r requirements.txt
Добавь в .env:
JOURNAL_MCP_PAT=твой_токен
Запуск
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 |
Description
Languages
Python
100%