271 lines
11 KiB
Markdown
271 lines
11 KiB
Markdown
## Запрос
|
||
|
||
Хочу перенести всё это в Obsidian, сделав его плагином (для личного пользования). ПРи этом в средней колонке, где граф отображаетс яштатный обсидиана или замтеки - тм будет react-flow граф с историей взаимдействия (деревом диалогов), где можно быстро будет попросить сгенерировать картинки и одновременно сразу нагенерить в разных ветках , например, локации и персонажей нескольких для НРИ (однорвременно запустить друг за другом запросы в разных ветках и пусть обрабатываются) впараллельно, я на графе всё увижу). А сам чат чтобы вёлся справа в колонк, гнде теги , бэклинки, проперти или Copilot помощник из известного плагина. сначала скажи можно ли перенести и чтобы бы ты посоветовал (пока без кода), может , предлоишь что-то улучшить? Да, граф в пространстве, где новые заметки открываются, он просто открывается там, в новом табе, где новые заметикти открываются ли графы обсидианы. Сделай перенос. Пусть бэкенд, как есть, а фронт перенеси полностью
|
||
|
||
# LLM Agent для Obsidian
|
||
|
||
Плагин Obsidian для работы с LLM агентом, включающий граф диалогов и интерфейс чата с поддержкой слеш-команд.
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
ttrpg-obsidian-vault/
|
||
├── .obsidian/
|
||
│ └── plugins/
|
||
│ └── llm-agent-plugin/
|
||
│ ├── main.js
|
||
│ ├── manifest.json
|
||
│ ├── styles.css
|
||
│ └── src/
|
||
│ ├── views/
|
||
│ │ ├── GraphView.js
|
||
│ │ └── ChatView.js
|
||
│ ├── components/
|
||
│ │ ├── ChatPanel.js
|
||
│ │ ├── CommandInput.js
|
||
│ │ ├── GraphPanel.js
|
||
│ │ └── HistoryPanel.js
|
||
│ └── utils/
|
||
│ └── EventBus.js
|
||
├── llm-agent-backend/ # Backend на Python
|
||
│ ├── env/ # Виртуальное окружение Python
|
||
│ ├── app/ # Код приложения
|
||
│ │ ├── api.py
|
||
│ │ ├── workflows.py
|
||
│ │ └── ...
|
||
│ ├── requirements.txt
|
||
│ └── run.py # Точка входа
|
||
└── env/
|
||
```
|
||
|
||
## Установка и запуск
|
||
|
||
### 1. Настройка Backend
|
||
|
||
1. Перейдите в папку backend:
|
||
```bash
|
||
cd llm-agent-backend
|
||
```
|
||
|
||
2. Активируйте виртуальное окружение:
|
||
```bash
|
||
# Windows
|
||
env\Scripts\activate
|
||
|
||
# Linux/macOS
|
||
source env/bin/activate
|
||
```
|
||
|
||
3. Установите зависимости:
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
4. Запустите backend сервер:
|
||
```bash
|
||
python run.py
|
||
```
|
||
|
||
Backend будет доступен на `http://localhost:5000`
|
||
|
||
### 2. Установка плагина в Obsidian
|
||
|
||
1. **Автоматическая установка (если плагин уже находится в правильной папке):**
|
||
- Откройте Obsidian с этим хранилищем
|
||
- Перейдите в Настройки → Плагины сообщества
|
||
- Включите "Небезопасные плагины" (если требуется)
|
||
- Найдите "LLM Agent" в списке установленных плагинов
|
||
- Включите плагин
|
||
|
||
2. **Ручная установка (если нужно скопировать файлы):**
|
||
```bash
|
||
# Убедитесь, что файлы плагина находятся в:
|
||
.obsidian/plugins/llm-agent-plugin/
|
||
├── main.js
|
||
├── manifest.json
|
||
├── styles.css
|
||
└── src/
|
||
```
|
||
|
||
### 3. Использование
|
||
|
||
1. **Запуск интерфейса:**
|
||
- Нажмите иконку 🧠 в левой панели Obsidian
|
||
- Или используйте команду "Открыть граф диалогов LLM Agent" (Ctrl+P)
|
||
|
||
2. **Доступные слеш-команды:**
|
||
- `/help` - Список доступных команд
|
||
- `/imagine [промпт]` - Генерация изображений
|
||
- `/analyze [url] [промпт]` - Анализ изображения
|
||
- `/subtitles_meet` - Получение субтитров Google Meet
|
||
- `/subtitles_teams` - Получение субтитров MS Teams
|
||
- `/summarize` - Суммаризация истории диалога
|
||
- `/chat` - Обычный диалог с LLM
|
||
|
||
3. **Работа с графом:**
|
||
- Граф отображается в центральной области Obsidian
|
||
- Чат и история - в правой боковой панели
|
||
- Кликайте по узлам графа для навигации по веткам диалога
|
||
- Используйте "Новый чат" для создания нового диалога
|
||
|
||
## Конфигурация
|
||
|
||
### Backend API URL
|
||
|
||
По умолчанию плагин использует `http://localhost:5000/api`. Для изменения:
|
||
|
||
1. Откройте файл `.obsidian/plugins/llm-agent-plugin/main.js`
|
||
2. Найдите строку:
|
||
```javascript
|
||
const DEFAULT_SETTINGS = {
|
||
apiBaseUrl: 'http://localhost:5000/api'
|
||
};
|
||
```
|
||
3. Измените URL на нужный
|
||
|
||
### LLM модели
|
||
|
||
Конфигурация моделей находится в `backend/llm-agent-backend/app/llm_client.py`:
|
||
|
||
```python
|
||
MODELS = {
|
||
"gemini-2.5-flash": {
|
||
"apiBase": "https://your-api-endpoint.com",
|
||
"apiKey": "your-api-key",
|
||
# ...
|
||
}
|
||
}
|
||
```
|
||
|
||
## Устранение неполадок
|
||
|
||
### Backend не запускается
|
||
|
||
1. Проверьте, что виртуальное окружение активировано
|
||
2. Убедитесь, что все зависимости установлены:
|
||
```bash
|
||
pip install flask flask-cors langgraph langchain-core requests
|
||
```
|
||
3. Проверьте порт 5000 - он должен быть свободен
|
||
|
||
### Плагин не появляется в Obsidian
|
||
|
||
1. Убедитесь, что файлы находятся в правильной папке:
|
||
```
|
||
.obsidian/plugins/llm-agent-plugin/main.js
|
||
```
|
||
2. Проверьте, что включены "Плагины сообщества" в настройках
|
||
3. Перезапустите Obsidian
|
||
|
||
### Ошибки подключения к API
|
||
|
||
1. Убедитесь, что backend запущен на порту 5000
|
||
2. Проверьте консоль разработчика в Obsidian (Ctrl+Shift+I)
|
||
3. Проверьте настройки CORS в `backend/llm-agent-backend/app/api.py`
|
||
|
||
### Граф не отображается
|
||
|
||
1. Текущая версия использует упрощенную визуализацию
|
||
2. Для полноценного React Flow потребуется дополнительная настройка bundler'а
|
||
|
||
## Разработка
|
||
|
||
### Структура кода плагина
|
||
|
||
- `main.js` - Основной класс плагина
|
||
- `src/views/` - Views для Obsidian (GraphView, ChatView)
|
||
- `src/components/` - React-like компоненты
|
||
- `src/utils/` - Утилиты (EventBus)
|
||
|
||
### Отладка
|
||
|
||
1. Откройте консоль разработчика в Obsidian (Ctrl+Shift+I)
|
||
2. Логи плагина доступны в консоли
|
||
3. Backend логи выводятся в терминал где запущен сервер
|
||
|
||
### Добавление новых команд
|
||
|
||
1. Добавьте команду в `backend/llm-agent-backend/app/nodes.py` в `CommandManager`
|
||
2. Создайте соответствующий узел обработки
|
||
3. Обновите маршрутизацию в `workflows.py`
|
||
|
||
## API Documentation
|
||
|
||
### Основные эндпоинты
|
||
|
||
- `POST /api/chat` - Отправка сообщения
|
||
- `GET /api/graphs` - Список всех графов
|
||
- `GET /api/graphs/{id}` - Данные конкретного графа
|
||
- `DELETE /api/graphs/{id}` - Удаление графа
|
||
- `GET /api/messages/{graph_id}/{node_id}` - Сообщения от корня до узла
|
||
|
||
## Лицензия
|
||
|
||
Для личного использования.
|
||
```
|
||
|
||
**`backend/llm-agent-backend/requirements.txt`:**
|
||
```txt
|
||
flask==2.3.3
|
||
flask-cors==4.0.0
|
||
langgraph==0.0.40
|
||
langchain-core==0.1.45
|
||
requests==2.31.0
|
||
sqlite3
|
||
openai==1.3.0
|
||
```
|
||
|
||
**`backend/llm-agent-backend/run.py`:**
|
||
```python
|
||
"""
|
||
Точка входа для запуска LLM Agent backend сервера.
|
||
Запускает Flask приложение с настройками для разработки.
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
|
||
# Добавляем папку app в Python path
|
||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'app'))
|
||
|
||
from api import app2
|
||
|
||
if __name__ == "__main__":
|
||
print("🚀 Запуск LLM Agent Backend сервера...")
|
||
print("📍 API будет доступно на: http://localhost:5000/api")
|
||
print("📊 Список графов: http://localhost:5000/api/graphs")
|
||
print("💬 Чат эндпоинт: http://localhost:5000/api/chat")
|
||
print("\n⚠️ Для остановки нажмите Ctrl+C\n")
|
||
|
||
app2.run(
|
||
debug=True,
|
||
port=5000,
|
||
host='localhost'
|
||
)
|
||
```
|
||
|
||
**`backend/llm-agent-backend/app/__init__.py`:**
|
||
```python
|
||
# Пустой файл для создания Python пакета
|
||
```
|
||
|
||
## Быстрый старт:
|
||
|
||
1. **Запуск backend:**
|
||
```bash
|
||
cd backend/llm-agent-backend
|
||
env\Scripts\activate # Windows
|
||
python run.py
|
||
```
|
||
|
||
2. **Запуск Obsidian:**
|
||
- Откройте хранилище в Obsidian
|
||
- Включите плагин "LLM Agent" в настройках
|
||
- Нажмите иконку 🧠 в левой панели
|
||
|
||
3. **Проверка работы:**
|
||
- В правой панели должна появиться история диалогов
|
||
- В центре - область для графа
|
||
- Отправьте сообщение `/help` для проверки
|
||
|
||
**Важно:** Backend должен быть запущен перед использованием плагина. При первом запуске может потребоваться установка дополнительных зависимостей. |