이 저장소는 "생성 에이전트 : 인간 행동의 대화식 시뮬 라 크라"라는 제목의 연구 논문과 함께 제공됩니다. 여기에는 생성 에이전트 (믿을 수있는 인간 행동을 시뮬레이션하는 컴퓨터 에이전트)와 게임 환경을위한 핵심 시뮬레이션 모듈이 포함되어 있습니다. 아래에서는 로컬 컴퓨터에서 시뮬레이션 환경을 설정하고 시뮬레이션을 데모 애니메이션으로 재생하기위한 단계를 문서화합니다.
환경을 설정하려면 OpenAI API 키가 포함 된 utils.py
파일을 생성하고 필요한 패키지를 다운로드해야합니다.
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>
OpenAi API 키로 바꾸고 <name>
이름으로 바꾸십시오.
requirements.txt
파일에 나열된 모든 것을 설치하십시오 (먼저 평소와 같이 virtualenv를 설정하는 것이 좋습니다). Python 버전에 대한 메모 : Python 3.9.12에서 환경을 테스트했습니다.
새 시뮬레이션을 실행하려면 환경 서버와 에이전트 시뮬레이션 서버의 두 서버를 동시에 시작해야합니다.
다시 말하지만, 환경은 Django 프로젝트로 구현되므로 Django 서버를 시작해야합니다. 이렇게하려면 먼저 명령 줄에서 environment/frontend_server
( manage.py
있는 위치)로 이동하십시오. 그런 다음 다음 명령을 실행합니다.
python manage.py runserver
그런 다음 좋아하는 브라우저에서 http : // localhost : 8000/로 이동하십시오. "Environment Server가 UP 및 실행중인"이라는 메시지가 표시되면 서버가 올바르게 실행 중입니다. 시뮬레이션을 실행하는 동안 환경 서버가 계속 실행되는지 확인 하므로이 명령 줄 탭을 열어 두십시오! (참고 : Chrome 또는 Safari를 사용하는 것이 좋습니다. Firefox는 실제 시뮬레이션을 방해해서는 안되지만 일부 프론트 엔드 결함을 생성 할 수 있습니다.)
다른 명령 줄을 열어 놓으십시오 (1 단계에서 사용한 사람은 여전히 환경 서버를 실행해야하므로 그대로 두십시오). reverie/backend_server
로 이동하여 reverie.py
실행하십시오.
python reverie.py
시뮬레이션 서버가 시작됩니다. "포크 시뮬레이션의 이름을 입력하십시오 :". Isabella Rodriguez, Maria Lopez 및 Klaus Mueller와 함께 3 에이전트 시뮬레이션을 시작하려면 다음을 입력하십시오.
base_the_ville_isabella_maria_klaus
프롬프트는 "새 시뮬레이션의 이름을 입력합니다."라고 묻습니다. 현재 시뮬레이션을 표시하려면 이름을 입력하십시오 (예 : 현재 "테스트 시뮬레이션"이 수행됩니다).
test-simulation
시뮬레이터 서버를 계속 실행하십시오. 이 단계에서는 다음 프롬프트가 표시됩니다. "옵션을 입력하십시오 :"
브라우저에서 http : // localhost : 8000/simulator_home으로 이동하십시오. Smallville의지도와지도에서 활성 에이전트 목록을 볼 수 있습니다. 키보드 화살표를 사용하여지도 주위를 이동할 수 있습니다. 이 탭을 열어 두십시오. 시뮬레이션을 실행하려면 프롬프트에 응답하여 Simulation Server에 다음 명령을 입력하십시오.
run <step-count>
위의 <step-count>
시뮬레이션하려는 게임 단계의 수를 나타내는 정수로 바꾸려면 참조하십시오. 예를 들어, 100 게임 단계를 시뮬레이션하려면 run 100
입력해야합니다. 한 게임 단계는 게임에서 10 초를 나타냅니다.
시뮬레이션이 실행 중이며 에이전트가 브라우저의지도에서 이동하는 것을 볼 수 있습니다. 시뮬레이션이 실행되면 "Enter 옵션"프롬프트가 다시 나타납니다. 이 시점에서 원하는 게임 단계로 실행 명령을 다시 입력하여 더 많은 단계를 시뮬레이션하거나 exit
입력하여 저장하지 않고도 시뮬레이션을 종료하거나 fin
입력하여 저장 및 종료 할 수 있습니다.
다음에 시뮬레이션 서버를 실행할 때는 시뮬레이션 이름을 포크 시뮬레이션으로 제공하여 저장된 시뮬레이션에 액세스 할 수 있습니다. 이를 통해 중단 된 시점에서 시뮬레이션을 다시 시작할 수 있습니다.
환경 서버를 실행하고 브라우저의 다음 주소로 탐색하여 이미 실행 한 시뮬레이션을 http://localhost:8000/replay/<simulation-name>/<starting-time-step>
수 있습니다. . <simulation-name>
재생하려는 시뮬레이션의 이름으로 바꾸고 <starting-time-step>
재생을 시작하려는 정수 시간 단계로 바꾸십시오.
예를 들어, 다음 링크를 방문하면 시간 단계 1에서 시작하여 사전 시뮬레이션 된 예제를 시작합니다.
http : // localhost : 8000/Replay/7 월 1_the_ville_isabella_maria_klaus-step-3-20/1/
당신은 재생의 모든 캐릭터 스프라이트가 동일하게 보인다는 것을 알았을 것입니다. 재생 함수는 주로 디버깅 목적으로 의도되어 있으며 시뮬레이션 폴더 또는 비주얼의 크기를 최적화하는 데 우선 순위를 정하지 않음을 명확히하고 싶습니다. 적절한 문자 스프라이트로 시뮬레이션을 올바르게 보여 주려면 먼저 시뮬레이션을 압축해야합니다. 이렇게하려면 텍스트 편집기를 사용하여 reverie
디렉토리에 위치한 compress_sim_storage.py
파일을 엽니 다. 그런 다음 대상 시뮬레이션의 이름으로 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/7 월 1_the_ville_isabella_maria_klaus-step-3-20/1/3/
OpenAI의 API가 시간당 요율 제한에 도달하면 매달릴 수 있음을 알았습니다. 이 경우 시뮬레이션을 다시 시작해야 할 수도 있습니다. 지금은 진행하면서 시뮬레이션을 자주 저장하는 것이 좋습니다. 중지 및 재실행이 필요할 때 가능한 한 시뮬레이션을 거의 잃을 수 있도록하는 것이 좋습니다. 적어도 2023 년 초부터 이러한 시뮬레이션을 실행하는 것은 특히 환경에 많은 에이전트가있을 때 다소 비용이 많이들 수 있습니다.
저장 한 모든 시뮬레이션은 environment/frontend_server/storage
에 있으며 모든 압축 데모는 environment/frontend_server/compressed_storage
에 있습니다.
시뮬레이션을 선택적으로 사용자 정의하는 두 가지 방법이 있습니다.
첫 번째는 시뮬레이션이 시작될 때 고유 한 기록을 가진 에이전트를 초기화하는 것입니다. 이렇게하려면 1) 기본 시뮬레이션 중 하나와 2) 저자 및로드 에이전트 기록을 사용하여 시뮬레이션을 시작해야합니다. 보다 구체적으로 다음은 다음과 같습니다.
저장소에는 25 명의 에이전트가있는 base_the_ville_n25
와 3 개의 에이전트가있는 base_the_ville_isabella_maria_klaus
두 가지 기본 시뮬레이션이 있습니다. 위의 2 단계까지 단계를 수행하여 기본 시뮬레이션 중 하나를로드하십시오.
그런 다음 "Enter 옵션 :"로 프롬프트되면 다음 명령으로 응답하여 에이전트 기록을로드해야합니다.
call -- load history the_ville/<history_file_name>.csv
<history_file_name>
기존 기록 파일의 이름으로 바꿔야합니다. 예제로 repo에 포함 된 두 가지 기록 파일이 있습니다 : agent_history_init_n25.csv
for base_the_ville_n25
및 agent_history_init_n3.csv
for base_the_ville_isabella_maria_klaus
. 이 파일에는 각 에이전트에 대한 세미콜론 구분 된 메모리 레코드 목록이 포함되어 있습니다.
자신의 히스토리 파일을 작성하여 초기화를 사용자 정의하려면 파일을 다음 폴더에 배치하십시오 : environment/frontend_server/static_dirs/assets/the_ville
. 사용자 정의 기록 파일의 열 형식은 포함 된 예제 히스토리 파일과 일치해야합니다. 따라서 이미 리포지토리에있는 프로세스를 복사하고 붙여 넣어 프로세스를 시작하는 것이 좋습니다.
보다 관련된 사용자 정의를 위해서는 자신의 기본 시뮬레이션 파일을 작성해야합니다. 가장 간단한 접근 방식은 기존 기본 시뮬레이션 폴더를 복사하여 붙여 넣어 요구 사항에 따라 이름을 바꾸고 편집하는 것입니다. 에이전트 이름을 변경하지 않기로 결정하면이 프로세스가 더 간단합니다. 그러나 Smallville지도에서 수용 할 수있는 에이전트 수를 늘리거나 TILED 맵 편집기를 사용하여 맵을 직접 편집해야 할 수도 있습니다.
저자 : Joon Sung Park, Joseph C. O'Brien, Carrie J. Cai, Meredith Ringel Morris, Percy Liang, Michael S. Bernstein
이 저장소에서 코드 또는 데이터를 사용하는 경우 논문을 인용하십시오.
@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}
}
이 프로젝트의 게임 자산을 설계 한 다음 세 명의 놀라운 아티스트를 지원하는 것이 좋습니다. 특히 자체 프로젝트에 포함 된 자산을 사용할 계획이라면 다음과 같습니다.
또한 Lindsay Popowski, Philip Guo, Michael Terry 및 통찰력, 토론 및 지원에 대한 행동 과학 (CASBS) 커뮤니티 고급 연구 센터에 감사드립니다. 마지막으로, 스몰빌에 소개 된 모든 위치는 Joon이 학부 및 대학원생으로 자주 방문한 실제 위치에서 영감을 얻었습니다. 그는 몇 년 동안 먹이를주고 지원해 주셔서 감사합니다.