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

77 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 |
## Установка
```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)
```
## MCPstyle tool
`fetch_course_meta` имитирует вызов MCP‑сервера метаданных курса.
В production‑среде это был бы `mcp tool list` + `mcp tool call` к реальному MCP‑серверу.
Текущая реализация использует статический JSON — достаточно для демонстрации паттерна.
## Демо‑вопросы
| Вопрос | Источник |
|--------|---------|
| Что такое LangGraph и как он отличается от LangChain? | chroma |
| Как создать инструмент tool в LangChain? | chroma |
| Когда дедлайн финального проекта? | mcp_meta |