Skip to content

About

Хакатон «КИБЕР РЫВОК». Тема: «Виртуальный мир – симулятор живых существ с памятью, эмоциями и веб-интерфейсом»

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

11 Commits

Folders and files

Repository files navigation

Виртуальный мир с AI-агентами

Проект для хакатона - симулятор виртуального мира, где живут AI-агенты с памятью, эмоциями и отношениями. Они сами общаются, ссорятся, мирятся, ставят цели и вообще ведут себя как настоящие люди (ну, почти).

Что это такое

Это система, где несколько AI-агентов живут своей жизнью в виртуальном мире. Каждый агент:

  • Имеет свою личность (Big Five модель)
  • Испытывает эмоции и меняет настроение
  • Помнит прошлые взаимодействия
  • Формирует отношения с другими агентами (дружба, вражда, нейтралитет)
  • Ставит цели и строит планы
  • Автоматически общается с другими агентами
  • Реагирует на события в мире

Всё это происходит в реальном времени, и ты можешь наблюдать за их жизнью через веб-интерфейс.

Технологии

Backend:

  • FastAPI - REST API
  • MongoDB + Beanie - база данных
  • GigaChat API - для генерации ответов агентов
  • Python 3.10+

Frontend:

  • Vue.js 3 - реактивный интерфейс
  • D3.js - визуализация графа отношений
  • Vite - сборка

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

Требования

  • Python 3.10 или выше
  • Node.js 20+ или 22+
  • MongoDB (локально или MongoDB Atlas)
  • API ключ GigaChat

Установка

  1. Клонирование репозитория (или просто скачать архив)

  2. Настройка бэкенда:

cd backend

# Создание виртуального окружения
python -m venv venv

# Активация
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate

# Установка зависимостей
pip install -r requirements.txt
  1. Настройка переменных окружения:

Создание файла .env в папке backend:

MONGODB_URL=mongodb://localhost:27017
DB_NAME=virtual_world
GIGACHAT_CREDENTIALS=your_gigachat_credentials_here
GIGACHAT_SCOPE=GIGACHAT_API_PERS

Если используется MongoDB Atlas, указать полный URL подключения.

  1. Настройка фронтенда:
cd frontend

# Установка зависимостей
npm install

Запуск

  1. Запуск MongoDB (если используется локально)

  2. Запуск бэкенда:

cd backend

# Windows (PowerShell):
.\start_server.ps1

# Или просто:
python -m uvicorn app.main:app --reload

Бэкенд запускается на http://localhost:8000

  1. Запуск фронтенда:
cd frontend
npm run dev

Фронтенд открывается на http://localhost:5173

Готово! Открыть браузер и наблюдать, как агенты живут своей жизнью.

Особенности

Автоматический жизненный цикл

Агенты живут своей жизнью без твоего участия:

  • Рефлексия - периодически думают о том, что происходит
  • Постановка целей - на основе рефлексии ставят себе цели
  • Действия - общаются с другими агентами, реагируют на события
  • Изменение настроения - настроение меняется в зависимости от событий и взаимодействий

Динамические отношения

Агенты формируют отношения друг с другом:

  • Симпатия может быть от -1.0 (ненависть) до +1.0 (дружба)
  • Отношения меняются после каждого взаимодействия
  • На графе видно, кто с кем дружит, а кто враждует
  • При плохих отношениях агенты могут ссориться и конфликтовать

Память и эмоции

  • Агенты помнят важные события и взаимодействия
  • Память структурирована (рефлексии, диалоги, цели, достижения)
  • Эмоции влияют на поведение и стиль общения
  • Настроение меняется динамически

Режимы взаимодействия

Агенты могут общаться в разных режимах:

  • Дружелюбный - при хороших отношениях
  • Нейтральный - обычное общение
  • Враждебный - при плохих отношениях
  • Агрессивный - могут быть грубыми и злыми
  • Обиженный - выражают обиду и недовольство

Управление временем

Изменение скорости времени через слайдер:

  • Медленнее - агенты реже взаимодействуют
  • Быстрее - больше событий и активности

Визуализация

  • Граф отношений - визуализация связей между агентами
  • Лента событий - все события в реальном времени
  • Инспектор агента - детальная информация о выбранном агенте
  • Панель управления - отправка сообщений, создание событий

API

Основные эндпоинты:

  • GET /api/v1/agents - список агентов
  • GET /api/v1/agents/{id} - детали агента
  • POST /api/v1/text/agents/{id}/message - отправить сообщение агенту
  • POST /api/v1/text/dialogue/{id1}/{id2} - диалог между двумя агентами
  • POST /api/v1/action/world-event - создать мировое событие
  • GET /api/v1/action/feed - лента событий
  • GET /api/v1/system/agents/graph/relationships - граф отношений

Полная документация API доступна по адресу http://localhost:8000/docs после запуска бэкенда.

Структура проекта

hackathon/
├── backend/              # FastAPI бэкенд
│   ├── app/
│   │   ├── controllers/  # API эндпоинты
│   │   ├── models/       # Модели данных (Agent, Event, Log)
│   │   ├── services/     # Бизнес-логика
│   │   └── main.py       # Точка входа
│   └── requirements.txt
│
├── frontend/             # Vue.js фронтенд
│   ├── src/
│   │   ├── components/   # Vue компоненты
│   │   ├── composables/ # Композаблы для работы с данными
│   │   └── utils/        # Утилиты (API клиент)
│   └── package.json
│
└── README.md

Как это работает

  1. При запуске создаются базовые агенты (если их еще нет)
  2. Запускается фоновый цикл жизнедеятельности агентов
  3. Каждый агент периодически:
    • Рефлексирует (если прошло достаточно времени)
    • Ставит цели на основе рефлексии
    • Взаимодействует с другими агентами
    • Реагирует на события
  4. Все изменения сохраняются в MongoDB
  5. Фронтенд опрашивает API и обновляет интерфейс

Презентация проекта

Презентация на Google Slides

Проблемы и решения

Если что-то не работает:

  • MongoDB не подключается - проверка, что MongoDB запущен и URL в .env правильный
  • GigaChat ошибки - проверка API ключа в .env
  • Агенты не появляются - проверка логов бэкенда, возможно проблема с созданием агентов
  • Фронтенд не подключается к бэкенду - проверка, что бэкенд запущен на порту 8000

About

Хакатон «КИБЕР РЫВОК». Тема: «Виртуальный мир – симулятор живых существ с памятью, эмоциями и веб-интерфейсом»

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages