Files
task-6a219d2dfd30e81cf3146bad/README.md
T
2026-06-04 16:28:01 +00:00

2.6 KiB
Raw Blame History

FAQ‑бот курса KFU-26-1 (ChromaDB + MCPstyle tool)

Агент отвечает на вопросы по конспектам курса (ChromaDB) и при необходимости вызывает MCP‑style инструмент для метаданных (расписание, дедлайны, контакты).

Стек

Компонент Технология
LLM BroJS gpt-oss-20b (ChatOpenAI)
Embeddings Ollama nomic-embed-text
Векторная БД ChromaDB (langchain-chroma)
MCPstyle 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)

MCPstyle tool

fetch_course_meta имитирует вызов MCP‑сервера метаданных курса. В production‑среде это был бы mcp tool list + mcp tool call к реальному MCP‑серверу. Текущая реализация использует статический JSON — достаточно для демонстрации паттерна.

Демо‑вопросы

Вопрос Источник
Что такое LangGraph и как он отличается от LangChain? chroma
Как создать инструмент tool в LangChain? chroma
Когда дедлайн финального проекта? mcp_meta