# AI RPG — гибкая ролевая игра с ИИ Веб-приложение для проведения ролевых игр с искусственным интеллектом. FastAPI (backend) + React/Vite/TypeScript (frontend) + PostgreSQL + Redis + Qdrant. Упаковано в Docker Compose. ## Возможности - Регистрация / аутентификация пользователей - Первичная инициализация администратора по одноразовому токену (выводится в консоль backend при первом запуске) - Панель администратора: настройка OpenAI-совместимого endpoint'а, токена, модели, параметров генерации, лимитов контекста - Создание мира: пресет (встроенный Fantasy) или с нуля через многошаговый диалог с ИИ - ИИ генерирует: расширенный сеттинг, правила, JSON-схему состояния мира (характеристики, инвентарь, статы), начальную дату/время, общие рельсы сюжета - Игрок правит и подтверждает → запускается первая итерация - Сессия: чат-интерфейс со стримингом, глоссарий (RAG), лист персонажа, кнопки опций + свободный ввод - Итерация: ИИ использует инструменты (dice, RAG, обновление состояния, sub-агенты, отложенные триггеры) и пишет сценарный шаг + технический "за-кадровый" шаг - Контекстный менеджер: гарантированные последние N сообщений + динамическая граница с суммаризацией - Отложенные триггеры, привязанные к дате/времени мира (background worker) - Двуязычный UI (RU/EN) - Логирование всех LLM-вызовов в БД ## Быстрый старт ```bash # 1. Скопировать .env и при необходимости отредактировать cp .env.example .env # 2. Поднять стек docker compose up --build # 3. В логах backend найти строку: # "ADMIN_SETUP_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxx" # (или задать ADMIN_SETUP_TOKEN в .env вручную) # 4. Открыть http://localhost:5173 # - Перейти на /admin/setup # - Ввести токен → создать учётку администратора # - Зайти в Admin Panel → настроить LLM endpoint # 5. Зарегистрировать обычного пользователя и начать создавать мир ``` ## Архитектура ``` ┌────────────┐ SSE ┌────────────────────────────┐ │ Frontend │ <──────► │ FastAPI backend │ │ React/Vite │ HTTP │ - auth (JWT) │ └────────────┘ │ - admin / settings │ │ - worlds / sessions │ │ - engine (orchestrator) │ │ - tools (dice/rag/...) │ │ - context manager │ │ - trigger runner │ └──┬──────────┬──────────┬───┘ │ │ │ ┌────────▼─┐ ┌─────▼────┐ ┌───▼─────┐ │PostgreSQL│ │ Redis │ │ Qdrant │ │ (data) │ │ (queues) │ │ (RAG) │ └──────────┘ └──────────┘ └─────────┘ ``` ## Локальная разработка ```bash # Backend hot reload docker compose up backend postgres redis qdrant # Frontend dev docker compose up frontend # Миграции (автоматически при старте backend, но можно вручную) docker compose exec backend python -m app.migrations.init_db ``` ## Структура проекта ``` ai-rpg/ ├── docker-compose.yml ├── .env.example ├── backend/ │ ├── Dockerfile │ ├── requirements.txt │ └── app/ │ ├── main.py # FastAPI entrypoint │ ├── config.py # Settings │ ├── api/ # Routers │ ├── core/ # LLM client, security, rag │ ├── engine/ # Game orchestrator │ │ └── tools/ # LLM tool-call handlers │ ├── models/ # SQLAlchemy models │ ├── schemas/ # Pydantic schemas │ ├── prompts/ # Bilingual prompt templates │ └── workers/ # Background workers (triggers) └── frontend/ ├── Dockerfile ├── package.json └── src/ ├── api/ # API client ├── components/ # UI components ├── pages/ # Page components ├── store/ # Zustand stores ├── hooks/ # React hooks └── i18n/ # RU/EN translations ``` ## Лицензия MIT