2026-06-19 11:28:04 +03:00
2026-06-19 11:28:04 +03:00
2026-06-19 11:28:04 +03:00
2026-06-19 11:28:04 +03:00
2026-06-19 11:28:04 +03:00
2026-06-19 11:28:04 +03:00
2026-06-19 11:28:04 +03:00

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-вызовов в БД

Быстрый старт

# 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)   │
                  └──────────┘  └──────────┘ └─────────┘

Локальная разработка

# 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

Description
No description provided
Readme 803 KiB
Languages
Python 53.9%
TypeScript 45.4%
CSS 0.4%
JavaScript 0.2%