Проект для хакатона - симулятор виртуального мира, где живут 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
-
Клонирование репозитория (или просто скачать архив)
-
Настройка бэкенда:
cd backend
# Создание виртуального окружения
python -m venv venv
# Активация
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# Установка зависимостей
pip install -r requirements.txt- Настройка переменных окружения:
Создание файла .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 подключения.
- Настройка фронтенда:
cd frontend
# Установка зависимостей
npm install-
Запуск MongoDB (если используется локально)
-
Запуск бэкенда:
cd backend
# Windows (PowerShell):
.\start_server.ps1
# Или просто:
python -m uvicorn app.main:app --reloadБэкенд запускается на http://localhost:8000
- Запуск фронтенда:
cd frontend
npm run devФронтенд открывается на http://localhost:5173
Готово! Открыть браузер и наблюдать, как агенты живут своей жизнью.
Агенты живут своей жизнью без твоего участия:
- Рефлексия - периодически думают о том, что происходит
- Постановка целей - на основе рефлексии ставят себе цели
- Действия - общаются с другими агентами, реагируют на события
- Изменение настроения - настроение меняется в зависимости от событий и взаимодействий
Агенты формируют отношения друг с другом:
- Симпатия может быть от -1.0 (ненависть) до +1.0 (дружба)
- Отношения меняются после каждого взаимодействия
- На графе видно, кто с кем дружит, а кто враждует
- При плохих отношениях агенты могут ссориться и конфликтовать
- Агенты помнят важные события и взаимодействия
- Память структурирована (рефлексии, диалоги, цели, достижения)
- Эмоции влияют на поведение и стиль общения
- Настроение меняется динамически
Агенты могут общаться в разных режимах:
- Дружелюбный - при хороших отношениях
- Нейтральный - обычное общение
- Враждебный - при плохих отношениях
- Агрессивный - могут быть грубыми и злыми
- Обиженный - выражают обиду и недовольство
Изменение скорости времени через слайдер:
- Медленнее - агенты реже взаимодействуют
- Быстрее - больше событий и активности
- Граф отношений - визуализация связей между агентами
- Лента событий - все события в реальном времени
- Инспектор агента - детальная информация о выбранном агенте
- Панель управления - отправка сообщений, создание событий
Основные эндпоинты:
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
- При запуске создаются базовые агенты (если их еще нет)
- Запускается фоновый цикл жизнедеятельности агентов
- Каждый агент периодически:
- Рефлексирует (если прошло достаточно времени)
- Ставит цели на основе рефлексии
- Взаимодействует с другими агентами
- Реагирует на события
- Все изменения сохраняются в MongoDB
- Фронтенд опрашивает API и обновляет интерфейс
Если что-то не работает:
- MongoDB не подключается - проверка, что MongoDB запущен и URL в
.envправильный - GigaChat ошибки - проверка API ключа в
.env - Агенты не появляются - проверка логов бэкенда, возможно проблема с созданием агентов
- Фронтенд не подключается к бэкенду - проверка, что бэкенд запущен на порту 8000