add README.md
This commit is contained in:
@@ -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 |
|
||||||
|
|||||||
Reference in New Issue
Block a user