111 lines
5.7 KiB
Markdown
111 lines
5.7 KiB
Markdown
|
|
# 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
|