llm-agent-plugin/Readme.md
2025-09-12 00:39:44 +03:00

271 lines
11 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.

## Запрос
Хочу перенести всё это в 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 должен быть запущен перед использованием плагина. При первом запуске может потребоваться установка дополнительных зависимостей.