🧠

Generative Agentのデモ実装をプレイしてみる

2023/08/13に公開

Key Visual

概要

「Generative Agent」(Generative Agents: Interactive Simulacra of Human Behavior)とは、スタンフォード大学とGoogleの共同研究のエージェント論文です。この論文では25人のAIエージェントに人間のような振る舞いを実装し、小規模な社会でのシミュレーションを実現しています。

今回紹介するデモ実装では、OpenAIなどのLLMを用いて人間らしい振る舞いをさせ、アニメーションを通して内容を確認することができます。

以下にその論文があります。

https://arxiv.org/abs/2304.03442

自分も読んでみましたが、とても興味深い考察と実装がされていました。実際に自分もLangChainなどを用いて実装したいと考えていたら、実際のデモのコードが公開されていたのでその紹介記事となります。

リポジトリは以下です↓

https://github.com/joonspk-research/generative_agents

セットアップ

READMEに沿ってセットアップしていきましょう。まずはリポジトリをクローンします。

clone
$ git clone https://github.com/joonspk-research/generative_agents.git

Utils Fileの作成

まず、OpenAIのAPI Keyなどを設定する utils.py を作成します。

生成する場所は reverie/backend_server 以下です。reverie.py ファイルがある場所です。

utils.pyの場所

READMEに内容のテンプレートが記載されているのでそれをコピペします。

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><Name> のところを自身の情報に置き換えます。それ以外はそのままでOKです。

依存関係のインストール

リポジトリルートに requirements.txt があるのでこれを使ってインストールします。

install-requirements
$ pip install -r requirements.txt

シミュレーションの実行

シミュレーションの実行にはふたつのサーバの実行が必要です。

環境サーバの起動

environment/frontend_server に移動します。そして manage.py を起動します。

launch-environment
$ python manage.py runserver

起動したらhttp://localhost:8000/にアクセスして正常に起動していることを確認します。
正常に起動している場合は画面に "Your environment server is up and running," と表示されます。

シミュレーションサーバの起動

続いてシミュレーションサーバを起動します。

reverie/backend_server に移動します。そして reverie.py を実行します。

launch-simulation
python reverie.py

上記コマンドを実行すると以下のようなメッセージが表示されます。

message1
"Enter the name of the forked simulation: "

名前は規定されているようなので、READMEに従って以下の3名の名前を入力します。

base_the_ville_isabella_maria_klaus

また続いて以下の入力を求められるので任意の名前を指定します。

message2
"Enter the name of the new simulation: "

READMEに従うなら以下のように入力します。

test-simulation

ステップ数を指定

上記を実行すると最後に以下の入力を求められます。

message3
"Enter option: "

ここには何ステップ進めるかを指定します。

run <step-count>

エラー対応

現状のリポジトリの状態だとフォルダがないためにエラーが発生してしまう箇所があります。

具体的には reverie.py のファイル生成処理時にディレクトリのチェックを行っていないためにエラーが出てしまいます。

この修正をするPRが出されているのでしばらくしたら解消されると思いますが、それまでは以下のPRを参考に reverie.py を書き換えてから実行してください。

https://github.com/joonspk-research/generative_agents/pull/55

シミュレーションを確認する

以上までを行うと、ブラウザで http://localhost:8000/simulator_home にアクセスすることでシミュレーションを確認することができます。

https://twitter.com/edo_m18/status/1690525319302922240

ちなみに結構なステップ数を指定して時間を進めないと、起動時は夜中から始まるので全員寝ていてなにもアクションが起きません。
リポジトリに保存されているデータを見ると8000ステップほど進めているのでかなりのステップが必要なようです。

なお、かなりの回数OpenAI APIを叩くのでわりとすぐ数ドル使用してしまうのでシミュレーションする際は値段に気をつけてください。

シミュレーションのリプレイ

上記でも書いたように、動きが見れるようになるのにかなりのステップ数が必要なのと、それなりに金額がかかってしまうので、実際に動いている様子を見るだけの場合はリプレイを利用するといいと思います。

リプレイを見たい場合は http://localhost:8000/replay/<simulation-name>/<starting-time-step> へアクセスすることで実行することができます。

  • <simulation-name> はシミュレーションの名前です。(自身で実行した場合はREADMEに test-simulation と指定したのが名前です)
  • <starting-time-step> はどのステップ数からリプレイを開始するかを整数で指定します。

最初からいくつかのシミュレーション結果が保存されているので、サーバが起動している状態であれば http://localhost:8000/replay/July1_the_ville_isabella_maria_klaus-step-3-20/1/ にアクセスすることでリプレイをすぐ見ることができます。

https://twitter.com/edo_m18/status/1690626134214627329

最後に

論文の内容はとても興味深い&長期記憶や人間らしい振る舞いを実現したい人はぜひ読んでみてください。色々と新しい発見があることは間違いないでしょう。

また、冒頭で紹介したLangChainの実装もとても面白いです。しかもLangChainの機能をベースに構築されているので、LangChainに詳しい人であれば比較的かんたんに実装を開始できると思います。

MESONではXR x AIの可能性を信じ、色々と試行錯誤や実験を行っています。AIにはとても可能性を感じますね。

今回の記事でAIに興味を持ってもらえたら幸いです。

エンジニア絶賛募集中!

MESONではUnityエンジニアを絶賛募集中です! 空間コンピューティングのプロジェクトに関わってみたい! 開発したい! という方はぜひご応募ください!

MESONの採用ページまたはMESONのメンバーページからご応募いただくか、TwitterのDMなどでご連絡ください。

書いた人

えど

比留間 和也(あだな:えど)

カヤック時代にWEBエンジニアとしてリーダーを務め、その後VRに出会いコロプラに転職。 コロプラでは仮想現実チームにてXRコンテンツ開発に携わる。 DAYDREAM向けゲーム「NYORO THE SNAKE & SEVEN ISLANDS」をリリース。その後、ARに惹かれてMESONに入社。 MESONではARエンジニアとして活躍中。
またプライベートでもAR/VRの開発をしており、インディー部門でTGSに出展など公私関わらずAR/VRコンテンツ制作に精を出す。プライベートな時間でも開発しているように、新しいことを学ぶことが趣味で、最近は英語を学んでいる。

GitHub / Twitter

MESON Works

MESONの制作実績一覧もあります。ご興味ある方はぜひ見てみてください。

MESON Works

Discussion