25 人の AI エージェントはここで働き、チャットし、社交し、友達を作り、さらには恋に落ちることさえできるだけでなく、各エージェントには独自の性格と背景ストーリーがあります。
しかし、彼らは自分たちがシミュレーションの中で生きているとは知りません。
Nvidia の上級科学者 Jim Fan 氏は次のようにコメントしています。
スタンフォード エージェント タウンは、2023 年に最もエキサイティングな AI エージェント実験の 1 つです。私たちは単一の大規模言語モデルの新たな機能についてよく話しますが、複数の AI エージェントが存在する現在、状況はより複雑で興味深いものになっています。
AI のグループは文明全体の進化過程を推定することができます。
John Lin は、顧客が医薬品をより入手しやすくする方法を常に模索している親切な薬局のオーナーです。
ジョン リンの妻メイ リンは大学教授で、息子のエディ リンは音楽理論を勉強しており、一緒に住んでいます。ジョン リンは家族をとても愛しています。
ジョン・リンは隣の老夫婦、サム・ムーアとジェニファー・ムーアを数年前から知っており、ジョン・リンはサム・ムーアは優しい人だと思っている。
ジョン・リンは隣人の山本百合子ととても仲が良い。ジョン・リンは隣人のタマラ・テイラーとカルメン・オルティスのことを知っていたが、会ったことはなかった。
John Lin と Tom Moreno は薬局の同僚であり、地元の政治などについて話し合うのが好きな友人です。
ウエストワールドがここにある!スタンフォードの人気の「街」がオープンソース化、25人のAIエージェントが恋して友達に|ナニーレベルのチュートリアル付き
出典:「新志源」(ID:AI_era)、著者:新志源
準備をしましょう。AI コミュニティ全体にセンセーションを巻き起こしたスタンフォード スマート タウンが正式にオープンソースになりました。
このデジタルの「西部世界」のサンドボックス仮想都市には、学校、病院、家族があります。
25 人の AI エージェントはここで働き、チャットし、社交し、友達を作り、さらには恋に落ちることさえできるだけでなく、各エージェントには独自の性格と背景ストーリーがあります。
しかし、彼らは自分たちがシミュレーションの中で生きているとは知りません。
さて、最初に影響を受けるのはゲームフィールドかもしれない。
つまり、この先には無限の新たな可能性が待っているのです。
ネチズン: ゲームメーカーの皆さん、私の言っている意味が分かりますか?
多くの人は、このスタンフォード論文が AGI の始まりであると信じています。
ネチズンたちも非常に興奮し、頭をフル回転させた。
ポケモンを見たい人、殺人探偵ものを見たい人、恋愛バラエティを見たい人…。
「AIエージェント間の三角関係を見るのが待ちきれません。」
以前、元 Tesla 取締役で OpenAI の第一人者である Karpathy 氏は、AI エージェントは現在、将来の最も最先端の方向性であると述べました。
OpenAI のチームは過去 5 年間を他の場所で過ごしてきましたが、Karpathy 氏は現在、「エージェントは AI の一種の未来を表している」と信じています。
しかし、論文から AI エージェントが登場するたびに、同僚全員が非常に興味を持ちます。
「ウエストワールド」の AI エージェント 25 人
アメリカのテレビ シリーズ「ウエスタン ワールド」では、あらかじめ設定されたストーリーラインを持つロボットがテーマパークに入れられ、人間のように行動した後、記憶がリセットされ、新しい日に独自の核となるストーリーラインに入れられます。
### 建築
エージェントを生成するために、研究者らは、大規模言語モデルを拡張し、エージェントのエクスペリエンスを自然言語で保存できる新しいアーキテクチャを提案しています。
時間の経過とともに、これらの記憶はより高いレベルの反映に合成され、エージェントはそれを動的に取得してアクションを計画できます。
最終的に、ユーザーは自然言語を使用して町内の 25 人のエージェント全員と対話できるようになります。
この関数は、エージェントの現在の状況を入力として受け取り、言語モデルに渡すメモリ ストリームのサブセットを返します。
一方、取得には、エージェントがどのように行動するかを決定する際に考慮する重要な要素に応じて、多くの実装が可能です。
生成エージェント アーキテクチャの中心的な課題は、保持する必要がある多数のイベントとメモリをどのように管理するかです。
この問題を解決するために、アーキテクチャの核となるのはメモリ ストリームです。メモリ ストリームは、エージェントのエクスペリエンス全体を記録するデータベースです。
エージェントは、メモリ ストリームから関連するメモリを取得できます。これにより、アクションを計画し、正しく応答することができ、各アクションがメモリ ストリームにフィードバックされて、将来のアクションが再帰的に改善されます。
さらに、この研究では、2 番目のタイプの記憶、つまり反省も導入されました。リフレクションは、エージェントが最近の経験に基づいて生成する高レベルの抽象的思考です。
生成エージェントは、妥当な計画を作成するために、上から下まで再帰的に詳細を生成します。
そして、これらの計画は当初、その日に何をするかを大まかに記述しただけでした。
観察を手がかりとして使用することで、言語モデルにエージェントの次の行動を決定させます: 現在の計画を続行するか、そうでない場合に応答します。
実験的評価では、研究者らはこのフレームワークの制御された評価とエンドツーエンドの評価を実行しました。
コントロールの評価は、エージェントが独立してもっともらしい個別の行動を生成できるかどうかを理解することです。エンドツーエンドの評価は、エージェントの出現能力と安定性を理解することです。
たとえば、イザベラはバレンタインデーのパーティーを計画し、みんなを招待します。 12 人のエージェントのうち、7 人はまだ検討中です (3 人は別の計画を持っており、4 人はアイデアがありません)。
このリンクは人間の対話モードと非常によく似ています。
エージェントは、自分が見ている世界の部分を反映するサブグラフを記憶しています。
研究者らは、職業や他のエージェントとの関係など、各エージェントのアイデンティティをシードメモリとして記述する自然言語をプログラムした。
たとえば、エージェント John Lin のシード メモリは次のようになります -
以下はジョン・リンの朝です。6 時に起き、歯を磨き始め、シャワーを浴び、朝食を食べ、仕事に出かける前に妻のメイと息子のエディに会いに行きます。
これらのエージェントは互いに社会的に対話します。お互いに気づくと会話が生まれるかもしれません。
時間が経つにつれて、これらのエージェントは新しい関係を築き、他のエージェントとのやり取りを記憶します。
興味深い話は、シミュレーションの開始時に、エージェントがバレンタインデー パーティーを開催するように初期化されたということです。
その後の一連の出来事には失敗点があり、エージェントがその意図を主張し続けなかったり、周囲に伝え忘れたり、あるいは出社し忘れたりすることもあります。
幸いなことに、シミュレーションではバレンタインデーのパーティーが実際に行われ、多くのエージェントが集まり、興味深い交流が行われました。
ナニー レベルのチュートリアル
構成環境
環境を構成する前に、まず OpenAI API キーを含む utils.py ファイルを生成し、必要なパッケージをダウンロードする必要があります。
ステップ 1. Utils ファイルの生成
reverie/backend_server フォルダー (reverie.py が存在するフォルダー) に新しい utils.py ファイルを作成し、次の内容をコピーしてファイルに貼り付けます。
OpenAI API をコピーして貼り付けます Keyopenai_api_key = ""# 名前を入力しますkey_owner = ""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 = "../../環境/frontend_server/storage"fs_temp_storage = "../../environment/frontend_server/temp_storage"collision_block_id = "32125"# 詳細デバッグ = True
は OpenAI API キーに置き換えられ、あなたの名前に置き換えられます。
ステップ 2.requirements.txt をインストールする
requirements.txt ファイルにリストされているものをすべてインストールします (最初に仮想環境をセットアップすることを強くお勧めします)。
現在、チームは Python 3.9.12 でテストを行っています。
シミュレーションを実行する
新しいシミュレーションを実行するには、環境サーバーとエージェント シミュレーション サーバーの 2 つのサーバーを同時に起動する必要があります。
ステップ 1. 環境サーバーを起動します
環境は Django プロジェクトとして実装されるため、Django サーバーを起動する必要があります。
これを行うには、まずコマンド ラインでenvironment/frontend_server (manage.pyが存在する場所)に移動します。次に、次のコマンドを実行します。
python manage.py 実行サーバー
次に、お気に入りのブラウザでアクセスしてください。
「環境サーバーは稼働中です」というプロンプトが表示された場合は、サーバーが正常に稼働していることを意味します。シミュレーションの実行中は環境サーバーが実行し続けるようにするため、このコマンド ライン タブを開いたままにしてください。
(注: Chrome または Safari をお勧めします。Firefox ではフロントエンドの不具合が発生する可能性がありますが、実際のシミュレーションには影響しません。)
ステップ 2. モックサーバーを起動します
別のコマンド ライン ウィンドウを開きます (手順 1 で使用した環境サーバーはまだ実行中であり、そのままにしておく必要があります)。 reverie/backend_server に移動し、reverie.py を実行してモック サーバーを起動します。
Python夢想.py
この時点で、コマンド ライン プロンプトが表示され、「フォークされたシミュレーションの名前を入力してください:」と尋ねられます。
たとえば、イザベラ ロドリゲス、マリア ロペス、クラウス ミュラーという 3 人のエージェントを含むシミュレーションを開始し、次のように入力します。
ベース_ザ_ヴィル_イザベラ_マリア_クラウス
次に、「新しいシミュレーションの名前を入力してください」というプロンプトが表示されます。
現時点では、現在のシミュレーションを表す任意の名前 (「test-simulation」など) を入力するだけです。
テストシミュレーション
エミュレータ サーバーを実行したままにします。この段階で、「オプションを入力してください」というプロンプトが表示されます。
ステップ 3. シミュレーションの実行と保存
ブラウザで simulator_home に移動し、タブを開いたままにしてください。
町の地図とその地図上でアクティブなエージェントのリストが表示され、キーボードの矢印を使用して地図上を移動できます。
シミュレーションを実行するには、「オプションを入力してください」というメッセージが表示されるシミュレーション サーバーで次のコマンドを入力する必要があります。
走る
上記は、シミュレートするゲームの動きの数を表す整数に置き換える必要があることに注意してください。
たとえば、100 ステップのゲームをシミュレートする場合は、「run 100」と入力します。ここで、ゲーム ステップはゲーム内の 10 秒を表します。
これで、シミュレーションが実行され、ブラウザーのマップ上でエージェントが移動するのを確認できます。
実行が完了すると、「オプションの入力」プロンプトが再び表示されます。この時点で、run コマンドを再入力して必要なゲーム ステップ数を指定するか、「exit」と入力して保存せずに終了するか、「fin」と入力して保存して終了することで、シミュレーションを続行できます。
次回シミュレーション サーバーを実行するときは、シミュレーションの名前を指定するだけで、保存されたシミュレーションにアクセスできます。こうすることで、中断したところからシミュレーションを再開できます。
ステップ 4. リプレイ シミュレーション
実行中のシミュレーションを再生するには、環境サーバーを実行し、ブラウザで次のアドレスに移動します:replay//。
ここで、 は再生されるシミュレーションの名前に置き換える必要があり、再生を開始する整数のタイムステップが置き換えられます。
ステップ 5. デモ シミュレーション
リプレイではすべてのキャラクター スプライトが同じに見える場合があります。これは、再生機能は主にデバッグを目的としており、モック フォルダーのサイズやビジュアルの最適化を優先していないためです。
キャラクター スプライトを使用したシミュレーションを適切にデモンストレーションするには、まずシミュレーションを圧縮する必要があります。これを行うには、テキスト エディタを使用して、reverie ディレクトリにある compress_sim_storage.py ファイルを開きます。次に、ターゲット モックの名前を入力として圧縮関数が実行されます。このようにして、シミュレーション ファイルが圧縮され、プレゼンテーションの準備が整います。
デモを開始するには、ブラウザでアドレス「demo///」を開いてください。
と は上記と同じ意味であることに注意してください。プレゼンテーションの速度を制御するために使用できます。1 が最も遅く、5 が最も速くなります。
カスタムシミュレーション
モックをカスタマイズするには 2 つのオプションがあります。
方法 1: エージェント履歴を書き込んでロードする
1 つ目は、シミュレーションの開始時に固有の履歴を使用してエージェントを初期化することです。
これを行うには、1) 基本シミュレーションの 1 つから開始し、2) エージェント履歴を書き込んでロードする必要があります。
ステップ 1. 基本的なシミュレーションを開始する
リポジトリには、base_the_ville_n25 (エージェント 25 人) と Base_the_ville_isabella_maria_klaus (エージェント 3 人) の 2 つの基本シミュレーションが含まれています。上記の手順に従って、基本シミュレーションの 1 つをロードできます。
ステップ 2. 履歴ファイルをロードする
次に、「オプションを入力してください」というプロンプトが表示されたら、次のコマンドを使用してエージェント履歴をロードする必要があります。
呼び出し -- 履歴をロードします_ville/.csv
ここで、 は既存の履歴ファイルの名前に置き換える必要があります。
リポジトリには、agent_history_init_n25.csv (base_the_ville_n25 用) と、agent_history_init_n3.csv (base_the_ville_isabella_maria 用) の 2 つの履歴ファイルの例が含まれています。 _クラウス)。これらのファイルには、各エージェントのメモリ レコードのリストが含まれています。
ステップ 3. さらにカスタマイズする
独自の履歴ファイルを作成して初期化をカスタマイズするには、ファイルを次のフォルダーに配置します:environment/frontend_server/static_dirs/assets/the_ville。
カスタム履歴ファイルの列形式は、添付されたサンプル履歴ファイルと一致する必要があります。したがって、作成者は、リポジトリにすでにあるファイルをコピーして貼り付けることでプロセスを開始することをお勧めします。
方法 2: 新しいベース モックを作成する
さらに詳細なカスタマイズを行うには、独自の基本シミュレーション ファイルを作成する必要があります。
最も簡単な方法は、既存のベース エミュレーション フォルダーをコピーして貼り付け、要件に応じて名前を変更し、編集することです。
参考資料: