このリポジトリには、「生成エージェント:人間の行動のインタラクティブなシミュレーション」というタイトルの研究論文が付属しています。生成エージェント用のコアシミュレーションモジュール(信じられる人間の行動をシミュレートするコンピュータ性エージェント)とゲーム環境が含まれています。以下に、ローカルマシンでシミュレーション環境をセットアップし、シミュレーションをデモアニメーションとして再生する手順を文書化します。
環境をセットアップするには、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
Openai APIキーに<Your OpenAI API>
を交換し、名前を<name>
に置き換えます。
requirements.txt
ファイル(最初にvirtualenvを通常どおりセットアップすることを強くお勧めします)。 Pythonバージョンに関するメモ:Python 3.9.12で環境をテストしました。
新しいシミュレーションを実行するには、環境サーバーとエージェントシミュレーションサーバーの2つのサーバーを同時に開始する必要があります。
繰り返しますが、環境はDjangoプロジェクトとして実装されているため、Djangoサーバーを開始する必要があります。これを行うには、最初にenvironment/frontend_server
(これがmanage.py
がある場所です)に移動します。次に、次のコマンドを実行します。
python manage.py runserver
次に、お気に入りのブラウザで、http:// localhost:8000/にアクセスしてください。 「環境サーバーが稼働している」というメッセージが表示された場合、サーバーは適切に実行されています。シミュレーションの実行中に環境サーバーが実行され続けることを確認してください。そのため、このコマンドラインタブを開いてください! (注:ChromeまたはSafariのいずれかを使用することをお勧めします。Firefoxは、実際のシミュレーションに干渉するべきではありませんが、フロントエンドのグリッチを生成する場合があります。)
別のコマンドラインを開きます(ステップ1で使用したものはまだ環境サーバーを実行している必要があるため、そのままにしておきます)。 reverie/backend_server
に移動し、 reverie.py
実行します。
python reverie.py
これにより、シミュレーションサーバーが開始されます。コマンドラインプロンプトが表示され、次のように尋ねます。「フォークシミュレーションの名前を入力してください:」。イザベラ・ロドリゲス、マリア・ロペス、およびクラウス・ミューラーとの3エージェントシミュレーションを開始するには、次のように入力してください。
base_the_ville_isabella_maria_klaus
プロンプトは、「新しいシミュレーションの名前を入力してください:」と尋ねます。任意の名前を入力して、現在のシミュレーションを示すものです(例えば、「テストシミュレーション」だけが今のところ実行されます)。
test-simulation
シミュレーターサーバーを実行し続けます。この段階では、次のプロンプトが表示されます。「オプションを入力:」
ブラウザでは、http:// localhost:8000/simulator_homeに移動します。地図上のアクティブなエージェントのリストとともに、Smallvilleのマップが表示されます。キーボードの矢印を使用してマップを移動できます。このタブを開いたままにしてください。シミュレーションを実行するには、プロンプト「Enter Option」に応じて、シミュレーションサーバーに次のコマンドを入力します。
run <step-count>
上記の<step-count>
を、シミュレートするゲームのステップの数を示す整数に置き換えることをお勧めします。たとえば、100のゲームステップをシミュレートする場合は、 run 100
入力する必要があります。 1つのゲームステップは、ゲームで10秒を表します。
シミュレーションが実行されているはずです。エージェントがブラウザのマップ上で動いているのがわかります。シミュレーションが実行されたら、「オプションのENTER」プロンプトが再表示されます。この時点で、目的のゲームステップで実行コマンドを再入力することで、より多くのステップをシミュレートすることができます。 exit
を入力して保存せずにシミュレーションを終了するか、 fin
を入力して保存して終了します。
保存されたシミュレーションは、シミュレーションの名前をフォークシミュレーションとして提供することにより、次回シミュレーションサーバーを実行するときにアクセスできます。これにより、中断したポイントからシミュレーションを再起動できます。
環境サーバーを実行してブラウザで次のアドレスにナビゲートするだけで、既に実行しているシミュレーションを再生できます: http://localhost:8000/replay/<simulation-name>/<starting-time-step>
。 <simulation-name>
リプレイするシミュレーションの名前に置き換えてください。また、リプレイを開始したい整数のタイムステップで<starting-time-step>
を使用してください。
たとえば、次のリンクにアクセスすることにより、タイムステップ1から始まる事前にシミュレートされた例を開始します。
http:// localhost:8000/replay/jure_the_ville_isabella_maria_klaus-step-3-20/1/
リプレイ内のすべてのキャラクタースプライトが同一に見えることに気付いたかもしれません。リプレイ関数は主にデバッグの目的を目的としており、シミュレーションフォルダーまたはビジュアルのサイズの最適化を優先しないことを明確にしたいと思います。適切な文字スプライトを使用したシミュレーションを適切に実証するには、最初にシミュレーションを圧縮する必要があります。これを行うには、テキストエディターを使用してreverie
Directoryにある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/jury1_the_ville_isabella_maria_klaus-step-3-20/1/3/
OpenaiのAPIが1時間ごとのレート制限に達したときにハングアップできることに気付きました。これが発生した場合、シミュレーションを再起動する必要がある場合があります。とりあえず、停止して再実行する必要があるときに、シミュレーションをできるだけ少ないことを保証するために、進行状況に応じてシミュレーションを保存することをお勧めします。少なくとも2023年初頭のように、これらのシミュレーションを実行するには、特に環境に多くのエージェントがいる場合は、やや費用がかかる可能性があります。
保存するすべてのシミュレーションはenvironment/frontend_server/storage
に配置され、すべての圧縮デモはenvironment/frontend_server/compressed_storage
に配置されます。
オプションでシミュレーションをカスタマイズする方法は2つあります。
まず、シミュレーションの開始時にユニークな履歴を持つエージェントを初期化することです。これを行うには、1)ベースシミュレーションのいずれかを使用してシミュレーションを開始し、2)著者とロードエージェントの履歴を使用してください。より具体的には、ここにステップがあります。
リポジトリには、25のエージェントを持つbase_the_ville_n25
と、3つのエージェントを持つbase_the_ville_isabella_maria_klaus
の2つのベースシミュレーションが含まれています。上記のステップ2まで手順に従って、ベースシミュレーションの1つをロードします。
次に、「Enter Option:」でプロンプトされたら、次のコマンドで応答してエージェントの履歴をロードする必要があります。
call -- load history the_ville/<history_file_name>.csv
<history_file_name>
既存の履歴ファイルの名前に置き換える必要があることに注意してください。例としてリポジトリに含まれる2つの履歴ファイルがあります: 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マップが収容できるエージェントの数を増やしたい場合は、タイル張りのマップエディターを使用してマップを直接編集する必要がある場合があります。
著者:ジュン・ソン・パーク、ジョセフ・C・オブライエン、キャリー・J・カイ、メレディス・リンゲル・モリス、パーシー・リアン、マイケル・S・バーンスタイン
このリポジトリのコードまたはデータを使用する場合は、私たちの論文を引用してください。
@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}
}
このプロジェクトのゲーム資産を設計した次の3人の素晴らしいアーティストをサポートすることをお勧めします。
さらに、リンゼイポポフスキー、フィリップグオ、マイケルテリー、および行動科学(CASBS)コミュニティの高度な研究センターの洞察、議論、サポートに感謝します。最後に、スモールビルで紹介されているすべての場所は、ジュンが学部生および大学院生として頻繁に訪れた現実世界の場所に触発されています。