Этот репозиторий сопровождает нашу исследовательскую статью под названием «Генеративные агенты: интерактивная симулякра человеческого поведения». Он содержит наш основной модуль моделирования для генеративных агентов - агентов, которые имитируют правдоподобное человеческое поведение - и их игровую среду. Ниже мы документируем шаги для настройки среды моделирования на вашей локальной машине и для воспроизведения симуляции в качестве демонстрационной анимации.
Чтобы настроить вашу среду, вам нужно будет сгенерировать файл utils.py
, который содержит ваш ключ API OpenAI и загрузить необходимые пакеты.
В папке reverie/backend_server
(где находится reverie.py
) создайте новый файл под названием utils.py
, скопируйте и вставьте контент ниже в файл:
# Copy and paste your OpenAI API Key
openai_api_key = "<Your OpenAI API>"
# Put your name
key_owner = "<Name>"
maze_assets_loc = "../../environment/frontend_server/static_dirs/assets"
env_matrix = f"{maze_assets_loc}/the_ville/matrix"
env_visuals = f"{maze_assets_loc}/the_ville/visuals"
fs_storage = "../../environment/frontend_server/storage"
fs_temp_storage = "../../environment/frontend_server/temp_storage"
collision_block_id = "32125"
# Verbose
debug = True
Замените <Your OpenAI API>
на ключ API Openai и <name>
на ваше имя.
Установите все, что указано в файле requirements.txt
(я настоятельно рекомендую сначала настройка VirtualENV, как обычно). Примечание на версии Python: мы проверили нашу среду на Python 3.9.12.
Чтобы запустить новое симуляцию, вам нужно будет одновременно запустить два сервера: сервер среды и сервер моделирования агента.
Опять же, среда реализована как проект Django, и поэтому вам нужно будет запустить сервер Django. Для этого сначала перейдите к environment/frontend_server
(вот где находится manage.py
) в вашей командной строке. Затем запустите следующую команду:
python manage.py runserver
Затем, в вашем любимом браузере, перейдите по адресу http: // localhost: 8000/. Если вы видите сообщение, в котором говорится: «Ваш сервер среды работает и работает», ваш сервер работает должным образом. Убедитесь, что сервер среды продолжает работать во время запуска симуляции, так что держите эту вкладку командной строки открытой! (Примечание: я рекомендую использовать Chrome или Safari. Firefox может произвести некоторые сбои в Frontend, хотя это не должно мешать фактическому моделированию.)
Откройте другую командную строку (та, которую вы использовали на шаге 1, все еще должен запускать сервер окружения, поэтому оставьте это таким, каким оно есть). Перейдите к reverie/backend_server
и запустите reverie.py
.
python reverie.py
Это запустит сервер моделирования. Появится подсказка командной строки, спросив следующее: «Введите имя викированного симуляции:». Чтобы начать симуляцию с 3-агентом с Изабеллой Родригес, Марией Лопес и Клаусом Мюллером, введите следующее:
base_the_ville_isabella_maria_klaus
Затем в приглашении спросят: «Введите имя новой симуляции:». Введите любое имя, чтобы обозначить ваше текущее моделирование (например, только «тест-симуляция» подойдет на данный момент).
test-simulation
Держите сервер Simulator. На этом этапе он отобразит следующую подсказку: «Введите опцию:»
В вашем браузере перейдите к http: // localhost: 8000/simulator_home. Вы должны увидеть карту Смолвиля, а также список активных агентов на карте. Вы можете перемещаться по карте, используя стрелки клавиатуры. Пожалуйста, держите эту вкладку открытой. Чтобы запустить симуляцию, введите следующую команду в вашем сервере моделирования в ответ на подсказку «Введите опцию»:
run <step-count>
Обратите внимание, что вы захотите заменить <step-count>
выше на целое число, указывающее количество игровых шагов, которые вы хотите моделировать. Например, если вы хотите имитировать 100 игровых шагов, вы должны ввести run 100
. Один шаг игры представляет 10 секунд в игре.
Ваше симуляция должна работать, и вы увидите агентов, движущихся на карте в вашем браузере. После того, как моделирование завершится запуск, подсказка «Введите опцию» повторно применяется. На этом этапе вы можете смоделировать больше шагов, повторно введя команду Run с желаемыми игровыми шагами, выйти из симуляции без сохранения, набрав exit
, или сохранить и выйти, вводя fin
.
Сохраняемое моделирование можно получить в следующий раз, когда вы запустите сервер моделирования, предоставив имя вашего моделирования в качестве раздвоенного моделирования. Это позволит вам перезапустить моделирование с точки зрения, где вы остановились.
Вы можете воспроизвести симуляцию, которую вы уже запустили, просто запустив свой сервер среды и перейдя к следующему адресу в вашем браузере: http://localhost:8000/replay/<simulation-name>/<starting-time-step>
Полем Пожалуйста, убедитесь, что замените <simulation-name>
с именем моделирования, которое вы хотите воспроизвести, и <starting-time-step>
с целочисленным временным шагом, с которого вы хотите начать повтор.
Например, посетив следующую ссылку, вы инициируете предварительно отработанный пример, начиная с временного шага 1:
http: // localhost: 8000/replay/июль1_the_ville_isabella_maria_klaus-step-3-20/1/
Возможно, вы заметили, что все спрайты персонажей в воспроизведении выглядят одинаково. Мы хотели бы уточнить, что функция воспроизведения в основном предназначена для целей отладки и не приоритет оптимизации размера папки моделирования или визуальных эффектов. Чтобы правильно продемонстрировать моделирование с соответствующими символами спрайты, вам нужно сначала сжать моделирование. Для этого откройте файл compress_sim_storage.py
, расположенный в каталоге reverie
, используя текстовый редактор. Затем выполните функцию compress
с именем целевого моделирования в качестве ее ввода. Таким образом, файл моделирования будет сжат, что готовит его к демонстрации.
Чтобы запустить демонстрацию, перейдите по следующему адресу в вашем браузере: http://localhost:8000/demo/<simulation-name>/<starting-time-step>/<simulation-speed>
. Обратите внимание, что <simulation-name>
и <starting-time-step>
обозначают те же вещи, что и упомянуто выше. <simulation-speed>
может быть установлено для управления демонстрационной скоростью, где 1 является самым медленным, а 5-самый быстрый. Например, посещение следующей ссылки запустит предварительно-симулированный пример, начиная с временного шага 1, со средней демонстрационной скоростью:
http: // localhost: 8000/demo/июль1_the_ville_isabella_maria_klaus-step-3-20/1/3/
Мы заметили, что API Openai может повесить, когда он достигнет почасовой предела. Когда это произойдет, вам может потребоваться перезагрузить симуляцию. На данный момент мы рекомендуем часто сохранять вашу симуляцию по мере того, как вы прогрессируете, чтобы убедиться, что вы потеряете как можно меньше симуляции, когда вам нужно остановиться и повторно его. Запуск этих симуляций, по крайней мере, с начала 2023 года, может быть несколько дорогостоящим, особенно когда в окружающей среде много агентов.
Все симуляции, которые вы сохраняете, будут расположены в environment/frontend_server/storage
, и все сжатые демонстрации будут расположены в environment/frontend_server/compressed_storage
.
Есть два способа, чтобы при желании настроить ваши симуляции.
Во -первых, инициализация агентов с уникальной историей в начале симуляции. Для этого вы захотите 1) начать моделирование, используя одно из базовых симуляций, и 2) историю автора и нагрузки. Более конкретно, вот шаги:
В репозиторий включено два базовых симуляции: base_the_ville_n25
с 25 агентами и base_the_ville_isabella_maria_klaus
с 3 агентами. Загрузите одно из базовых моделирования, выполнив шаги до шага 2 выше.
Затем, когда его предложено с «Введите опцию:», вы должны загрузить историю агента, ответив следующей командой:
call -- load history the_ville/<history_file_name>.csv
Обратите внимание, что вам нужно будет заменить <history_file_name>
с именем существующего файла истории. Есть два исторических файла, включенные в репо в примерах: agent_history_init_n25.csv
для base_the_ville_n25
и agent_history_init_n3.csv
для base_the_ville_isabella_maria_klaus
. Эти файлы включают в себя полуколонные списки записей памяти для каждого из агентов-загрузка их вставит записи памяти в поток памяти агентов.
Чтобы настроить инициализацию, создав свой собственный файл истории, поместите свой файл в следующую папку: environment/frontend_server/static_dirs/assets/the_ville
. Формат столбца для вашего пользовательского исторического файла должен соответствовать включенным файлам истории примеров. Поэтому мы рекомендуем начать процесс, копируя и вставая те, которые уже находятся в репозитории.
Для более сложной настройки вам нужно будет создавать свои собственные базовые файлы моделирования. Наиболее простым подходом будет копирование и вставка существующей папки базовой моделирования, переименование и редактирование ее в соответствии с вашими требованиями. Этот процесс будет проще, если вы решите оставить имена агентов неизменными. Однако, если вы хотите изменить их имена или увеличить количество агентов, которые может разместить карта Slampleville, вам может потребоваться напрямую отредактировать карту, используя редактор Tiled Map.
Авторы: Джун Сан Парк, Джозеф С. О'Брайен, Кэрри Дж. Кай, Мередит Рингел Моррис, Перси Лян, Майкл С. Бернштейн
Пожалуйста, процитируйте нашу статью, если вы используете код или данные в этом репозитории.
@inproceedings{Park2023GenerativeAgents,
author = {Park, Joon Sung and O'Brien, Joseph C. and Cai, Carrie J. and Morris, Meredith Ringel and Liang, Percy and Bernstein, Michael S.},
title = {Generative Agents: Interactive Simulacra of Human Behavior},
year = {2023},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
booktitle = {In the 36th Annual ACM Symposium on User Interface Software and Technology (UIST '23)},
keywords = {Human-AI interaction, agents, generative AI, large language models},
location = {San Francisco, CA, USA},
series = {UIST '23}
}
Мы призываем вас поддержать следующих трех удивительных художников, которые разработали игровые активы для этого проекта, особенно если вы планируете использовать активы, включенные здесь для вашего собственного проекта:
Кроме того, мы благодарим Линдсей Поповски, Филиппа Го, Майкла Терри и Центр передового изучения в сообществе поведенческих наук (CASBS) за их понимание, дискуссии и поддержки. Наконец, все места, представленные в Смолвилле, вдохновлены реальными местами, которые Джун часто посещал в качестве студента и аспиранта-он благодарит всех там за кормление и поддержку его все эти годы.