يرافق هذا المستودع ورقة البحث بعنوان "العوامل التوليدية: Simulacra التفاعلية للسلوك البشري". أنه يحتوي على وحدة المحاكاة الأساسية الخاصة بنا للعوامل التوليدية - وكلاء الأوساط التي تحاكي السلوكيات البشرية المعقولة - وبيئة لعبتها. أدناه ، نقوم بتوثيق خطوات إعداد بيئة المحاكاة على جهازك المحلي وإعادة تشغيل المحاكاة كرسوم متحركة تجريبية.
لإعداد بيئتك ، ستحتاج إلى إنشاء ملف utils.py
يحتوي على مفتاح Openai API الخاص بك وتنزيل الحزم اللازمة.
في مجلد 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/. إذا رأيت رسالة تقول ، "خادم البيئة الخاص بك يعمل ،" الخادم يعمل بشكل صحيح. تأكد من استمرار تشغيل خادم البيئة أثناء تشغيل المحاكاة ، لذا احتفظ بعلامة تبويب سطر الأوامر هذه! (ملاحظة: أوصي باستخدام إما Chrome أو Safari.
افتح سطر أوامر آخر (يجب أن يظل الخط الذي استخدمته في الخطوة 1 يعمل على تشغيل خادم البيئة ، لذلك اترك ذلك كما هو). انتقل إلى reverie/backend_server
وتشغيل reverie.py
.
python reverie.py
سيبدأ هذا خادم المحاكاة. ستظهر موجه سطر الأوامر ، يسأل ما يلي: "أدخل اسم المحاكاة المتشعب:". لبدء محاكاة 3 وكيل مع إيزابيلا رودريغيز وماريا لوبيز وكلاوس مولر ، اكتب ما يلي:
base_the_ville_isabella_maria_klaus
ستسأل المطالبة بعد ذلك ، "أدخل اسم المحاكاة الجديدة:". اكتب أي اسم للدلالة على المحاكاة الحالية (على سبيل المثال ، فقط "اختبار الاختبار" سيفعل في الوقت الحالي).
test-simulation
الحفاظ على تشغيل خادم Simulator. في هذه المرحلة ، سيعرض المطالبة التالية: "إدخال الخيار:"
في متصفحك ، انتقل إلى http: // localhost: 8000/simulator_home. يجب أن ترى خريطة سمولفيل ، جنبا إلى جنب مع قائمة الوكلاء النشطين على الخريطة. يمكنك التحرك حول الخريطة باستخدام أسهم لوحة المفاتيح. يرجى الحفاظ على علامة التبويب هذه مفتوحة. لتشغيل المحاكاة ، اكتب الأمر التالي في خادم المحاكاة الخاص بك استجابةً للمطالبة ، "Enter Option":
run <step-count>
لاحظ أنك سترغب في استبدال <step-count>
أعلاه مع عدد صحيح يشير إلى عدد خطوات اللعبة التي تريد محاكاةها. على سبيل المثال ، إذا كنت ترغب في محاكاة 100 خطوة لعبة ، فيجب عليك إدخال run 100
. تمثل خطوة لعبة واحدة 10 ثوانٍ في اللعبة.
يجب أن تكون المحاكاة الخاصة بك قيد التشغيل ، وسترى الوكلاء يتحركون على الخريطة في متصفحك. بمجرد الانتهاء من تشغيل المحاكاة ، سيتم إعادة ظهور موجه "Enter Option". في هذه المرحلة ، يمكنك محاكاة المزيد من الخطوات من خلال إعادة إدخال الأمر Run مع خطوات اللعبة المطلوبة ، والخروج من المحاكاة دون حفظ عن طريق كتابة exit
، أو حفظها والخروج من خلال كتابة fin
.
يمكن الوصول إلى المحاكاة المحفوظة في المرة التالية التي تقوم فيها بتشغيل خادم المحاكاة من خلال توفير اسم المحاكاة الخاصة بك كمحاكاة متشعب. سيسمح لك هذا بإعادة تشغيل المحاكاة الخاصة بك من النقطة التي توقفت فيها.
يمكنك إعادة تشغيل محاكاة قمت بتشغيلها بالفعل ببساطة عن طريق تشغيل خادم البيئة الخاص بك والتنقل إلى العنوان التالي في متصفحك: http://localhost:8000/replay/<simulation-name>/<starting-time-step>
. يرجى التأكد من استبدال <simulation-name>
باسم المحاكاة التي تريد إعادة تشغيلها ، و <starting-time-step>
مع خطوة الوقت الصحيح التي ترغب في بدء تشغيلها.
على سبيل المثال ، من خلال زيارة الرابط التالي ، ستبدأ مثالًا محاكيًا مسبقًا ، بدءًا من خطوة الوقت 1:
http: // localhost: 8000/replay/July1_the_ville_isabella_maria_klaus-step-3-20/1/
ربما لاحظت أن كل الأحرف العفوية في إعادة التشغيل تبدو متطابقة. نود أن نوضح أن وظيفة إعادة التشغيل مخصصة في المقام الأول لأغراض تصحيح الأخطاء ولا تعطي الأولوية لتحسين حجم مجلد المحاكاة أو الصور المرئية. لإظهار محاكاة مع Sprites ذات الأحرف المناسبة ، ستحتاج إلى ضغط المحاكاة أولاً. للقيام بذلك ، افتح ملف 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/juls1_the_ville_isabella_maria_klaus-step-3-20/1/3/
لقد لاحظنا أن واجهة برمجة تطبيقات 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 أعلاه.
ثم ، عند المطالبة بـ "Enter Option:" ، يجب عليك تحميل سجل الوكيل من خلال الرد على الأمر التالي:
call -- load history the_ville/<history_file_name>.csv
لاحظ أنك ستحتاج إلى استبدال <history_file_name>
باسم ملف السجل الموجود. يوجد ملفان سجلان في REPO كأمثلة: agent_history_init_n25.csv
لـ base_the_ville_n25
و agent_history_init_n3.csv
لـ base_the_ville_isabella_maria_klaus
. تتضمن هذه الملفات قوائم Semicolon التي يتم فصلها عن سجلات الذاكرة لكل من الوكلاء-سيؤدي تحميلها إلى إدراج سجلات الذاكرة في دفق ذاكرة الوكلاء.
لتخصيص التهيئة عن طريق تأليف ملف السجل الخاص بك ، ضع ملفك في المجلد التالي: environment/frontend_server/static_dirs/assets/the_ville
. سيتعين على تنسيق العمود لملف السجل المخصص مطابقة ملفات السجل المدرجة. لذلك ، نوصي ببدء العملية عن طريق نسخ ولصق تلك الموجودة بالفعل في المستودع.
لتخصيص أكثر مشاركة ، ستحتاج إلى تأليف ملفات المحاكاة الأساسية الخاصة بك. سيكون النهج الأكثر وضوحًا هو نسخ ولصق مجلد محاكاة قاعدة موجود ، وإعادة تسمية وتحريره وفقًا لمتطلباتك. ستكون هذه العملية أكثر بساطة إذا قررت الحفاظ على أسماء الوكيل دون تغيير. ومع ذلك ، إذا كنت ترغب في تغيير أسمائهم أو زيادة عدد الوكلاء التي يمكن أن تستوعبها خريطة سمولفيل ، فقد تحتاج إلى تحرير الخريطة مباشرة باستخدام محرر الخريطة المبلطة.
المؤلفون: جون سونغ بارك ، جوزيف سي. أوبراين ، كاري ج. كاي ، ميريديث رينيل موريس ، بيرسي ليانغ ، مايكل س. بيرنشتاين
يرجى استشهاد ورقتنا إذا كنت تستخدم الرمز أو البيانات في هذا المستودع.
@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) على رؤاتهم ومناقشاتهم ودعمهم. أخيرًا ، تستلهم جميع المواقع التي ظهرت في سمولفيل مواقع العالم الحقيقي والتي كان يتردد عليها جون كطالب دراسات عليا وخريجين-ويشكر الجميع هناك على إطعامه ودعمه طوال هذه السنوات.