Repositori ini menyertai makalah penelitian kami yang berjudul "Agen Generatif: Simulacra Interaktif Perilaku Manusia." Ini berisi modul simulasi inti kami untuk agen generatif - agen komputasi yang mensimulasikan perilaku manusia yang dapat dipercaya - dan lingkungan permainan mereka. Di bawah ini, kami mendokumentasikan langkah -langkah untuk menyiapkan lingkungan simulasi pada mesin lokal Anda dan untuk memutar ulang simulasi sebagai animasi demo.
Untuk mengatur lingkungan Anda, Anda perlu menghasilkan file utils.py
yang berisi kunci API openai Anda dan mengunduh paket yang diperlukan.
Di folder reverie/backend_server
(di mana reverie.py
berada), buat file baru berjudul utils.py
dan salin dan tempel konten di bawah ini ke dalam file:
# 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
Ganti <Your OpenAI API>
dengan kunci API OpenAI Anda, dan <name>
dengan nama Anda.
Instal semua yang tercantum dalam file requirements.txt
(saya sangat merekomendasikan pertama -tama mengatur virtualEnv seperti biasa). Catatan tentang Versi Python: Kami menguji lingkungan kami di Python 3.9.12.
Untuk menjalankan simulasi baru, Anda harus secara bersamaan memulai dua server: server lingkungan dan server simulasi agen.
Sekali lagi, lingkungan diimplementasikan sebagai proyek Django, dan dengan demikian, Anda harus memulai server Django. Untuk melakukan ini, pertama -tama navigasikan ke environment/frontend_server
(di sinilah manage.py
berada) di baris perintah Anda. Kemudian jalankan perintah berikut:
python manage.py runserver
Kemudian, di browser favorit Anda, buka http: // localhost: 8000/. Jika Anda melihat pesan yang mengatakan, "Server lingkungan Anda sudah habis dan berjalan," server Anda berjalan dengan benar. Pastikan server lingkungan terus berjalan saat Anda menjalankan simulasi, jadi tetap buka tab baris perintah ini! (Catatan: Saya sarankan menggunakan Chrome atau Safari. Firefox dapat menghasilkan beberapa gangguan frontend, meskipun tidak boleh mengganggu simulasi yang sebenarnya.)
Buka baris perintah lain (yang Anda gunakan pada langkah 1 masih harus menjalankan server lingkungan, jadi biarkan itu). Arahkan ke reverie/backend_server
dan jalankan reverie.py
.
python reverie.py
Ini akan memulai server simulasi. Prompt baris perintah akan muncul, menanyakan yang berikut: "Masukkan nama simulasi bercabang:". Untuk memulai simulasi 3-agen dengan Isabella Rodriguez, Maria Lopez, dan Klaus Mueller, ketik berikut ini:
base_the_ville_isabella_maria_klaus
Prompt kemudian akan bertanya, "Masukkan nama simulasi baru:". Ketikkan nama apa pun untuk menunjukkan simulasi Anda saat ini (misalnya, hanya "simulasi tes" yang akan dilakukan untuk saat ini).
test-simulation
Jaga agar server simulator tetap berjalan. Pada tahap ini, itu akan menampilkan prompt berikut: "Masukkan opsi:"
Di browser Anda, navigasikan ke http: // localhost: 8000/simulator_home. Anda harus melihat peta Smallville, bersama dengan daftar agen aktif di peta. Anda dapat bergerak di sekitar peta menggunakan panah keyboard Anda. Tolong jaga tab ini terbuka. Untuk menjalankan simulasi, ketik perintah berikut di server simulasi Anda sebagai respons terhadap prompt, "masukkan opsi":
run <step-count>
Perhatikan bahwa Anda akan ingin mengganti <step-count>
di atas dengan integer yang menunjukkan jumlah langkah permainan yang ingin Anda simulasikan. Misalnya, jika Anda ingin mensimulasikan 100 langkah permainan, Anda harus memasukkan run 100
. Satu langkah permainan mewakili 10 detik dalam game.
Simulasi Anda harus berjalan, dan Anda akan melihat agen bergerak di peta di browser Anda. Setelah simulasi selesai berjalan, prompt "Enter opsi" akan muncul kembali. Pada titik ini, Anda dapat mensimulasikan lebih banyak langkah dengan memasuki kembali perintah RUN dengan langkah-langkah permainan yang Anda inginkan, keluar dari simulasi tanpa menyimpan dengan mengetik exit
, atau menyimpan dan keluar dengan mengetik fin
.
Simulasi yang disimpan dapat diakses saat berikutnya Anda menjalankan server simulasi dengan memberikan nama simulasi Anda sebagai simulasi bercabang. Ini akan memungkinkan Anda untuk memulai kembali simulasi Anda dari titik di mana Anda tinggalkan.
Anda dapat memutar ulang simulasi yang telah Anda jalankan hanya dengan menyuruh server lingkungan Anda berjalan dan menavigasi ke alamat berikut di browser Anda: http://localhost:8000/replay/<simulation-name>/<starting-time-step>
. Pastikan untuk mengganti <simulation-name>
dengan nama simulasi yang ingin Anda ubah ulang, dan <starting-time-step>
dengan langkah waktu integer dari mana Anda ingin memulai replay.
Misalnya, dengan mengunjungi tautan berikut, Anda akan memulai contoh yang telah disimulasikan, mulai dari langkah waktu 1:
http: // localhost: 8000/replay/juli1_the_ville_isabella_maria_klaus-step-3-20/1/
Anda mungkin telah memperhatikan bahwa semua sprite karakter dalam replay terlihat identik. Kami ingin mengklarifikasi bahwa fungsi replay terutama dimaksudkan untuk tujuan debugging dan tidak memprioritaskan mengoptimalkan ukuran folder simulasi atau visual. Untuk mendemonstrasikan simulasi dengan sprite karakter yang sesuai, Anda perlu mengompres simulasi terlebih dahulu. Untuk melakukan ini, buka file compress_sim_storage.py
yang terletak di direktori reverie
menggunakan editor teks. Kemudian, jalankan fungsi compress
dengan nama simulasi target sebagai inputnya. Dengan melakukan itu, file simulasi akan dikompresi, membuatnya siap untuk demonstrasi.
Untuk memulai demo, buka alamat berikut di browser Anda: http://localhost:8000/demo/<simulation-name>/<starting-time-step>/<simulation-speed>
. Perhatikan bahwa <simulation-name>
dan <starting-time-step>
menunjukkan hal yang sama seperti yang disebutkan di atas. <simulation-speed>
dapat diatur untuk mengontrol kecepatan demo, di mana 1 adalah yang paling lambat, dan 5 adalah yang tercepat. Misalnya, mengunjungi tautan berikut akan memulai contoh yang telah disimulasikan, dimulai pada waktu-langkah 1, dengan kecepatan demo sedang:
http: // localhost: 8000/demo/juli1_the_ville_isabella_maria_klaus-step-3-20/1/3/
Kami telah memperhatikan bahwa API Openai dapat digantung ketika mencapai batas tarif per jam. Ketika ini terjadi, Anda mungkin perlu memulai kembali simulasi Anda. Untuk saat ini, kami sarankan menyimpan simulasi Anda sesering mungkin saat Anda maju untuk memastikan bahwa Anda kehilangan simulasi sesedikit mungkin ketika Anda perlu berhenti dan menjalankannya kembali. Menjalankan simulasi ini, setidaknya pada awal 2023, bisa agak mahal, terutama ketika ada banyak agen di lingkungan.
Semua simulasi yang Anda simpan akan berlokasi di environment/frontend_server/storage
, dan semua demo terkompresi akan berlokasi di environment/frontend_server/compressed_storage
.
Ada dua cara untuk secara opsional menyesuaikan simulasi Anda.
Pertama adalah menginisialisasi agen dengan sejarah unik di awal simulasi. Untuk melakukan ini, Anda ingin 1) memulai simulasi Anda menggunakan salah satu simulasi dasar, dan 2) riwayat penulis dan agen beban. Lebih khusus lagi, berikut adalah langkah -langkahnya:
Ada dua simulasi dasar yang termasuk dalam repositori: base_the_ville_n25
dengan 25 agen, dan base_the_ville_isabella_maria_klaus
dengan 3 agen. Muat salah satu simulasi dasar dengan mengikuti langkah hingga langkah 2 di atas.
Kemudian, ketika diminta dengan "Enter opsi:", Anda harus memuat riwayat agen dengan menanggapi dengan perintah berikut:
call -- load history the_ville/<history_file_name>.csv
Perhatikan bahwa Anda perlu mengganti <history_file_name>
dengan nama file riwayat yang ada. Ada dua file riwayat yang termasuk dalam repo sebagai contoh: agent_history_init_n25.csv
untuk base_the_ville_n25
dan agent_history_init_n3.csv
untuk base_the_ville_isabella_maria_klaus
. File-file ini termasuk daftar catatan memori yang dipisahkan semikolon untuk masing-masing agen-menguatkannya akan memasukkan catatan memori ke dalam aliran memori agen.
Untuk menyesuaikan inisialisasi dengan menulis file riwayat Anda sendiri, tempatkan file Anda di folder berikut: environment/frontend_server/static_dirs/assets/the_ville
. Format kolom untuk file riwayat khusus Anda harus mencocokkan file riwayat contoh yang disertakan. Oleh karena itu, kami sarankan memulai proses dengan menyalin dan menempelkan yang sudah ada di repositori.
Untuk kustomisasi yang lebih terlibat, Anda perlu menulis file simulasi dasar Anda sendiri. Pendekatan yang paling mudah adalah menyalin dan menempelkan folder simulasi dasar yang ada, mengganti nama dan mengeditnya sesuai dengan kebutuhan Anda. Proses ini akan lebih sederhana jika Anda memutuskan untuk menjaga nama agen tidak berubah. Namun, jika Anda ingin mengubah nama mereka atau meningkatkan jumlah agen yang dapat ditampung oleh peta Smallville, Anda mungkin perlu secara langsung mengedit peta menggunakan editor peta ubin.
Penulis: Joon Sung Park, Joseph C. O'Brien, Carrie J. Cai, Meredith Ringel Morris, Percy Liang, Michael S. Bernstein
Harap kutip makalah kami jika Anda menggunakan kode atau data di repositori ini.
@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}
}
Kami mendorong Anda untuk mendukung tiga artis luar biasa berikut yang telah merancang aset permainan untuk proyek ini, terutama jika Anda berencana untuk menggunakan aset yang termasuk di sini untuk proyek Anda sendiri:
Selain itu, kami berterima kasih kepada Lindsay Popowski, Philip Guo, Michael Terry, dan Pusat Studi Lanjutan dalam Komunitas Perilaku Ilmu Perilaku (CASBS) untuk wawasan, diskusi, dan dukungan mereka. Terakhir, semua lokasi yang ditampilkan di Smallville terinspirasi oleh lokasi dunia nyata yang dikunjungi Joon sebagai mahasiswa sarjana dan pascasarjana --- ia berterima kasih kepada semua orang di sana untuk memberi makan dan mendukungnya selama bertahun-tahun.