Show HN: AI-town - JavaScriptでユーザーごとにカスタマイズされたAI世界シミュレーションを運用するスターターキット
(github.com/a16z-infra)- AI Townは、AIキャラクターが暮らし、会話し、交流する仮想の町であり、ユーザーが自分専用のAI Townバージョンを簡単に作成・カスタマイズできるデプロイ可能なスターターキット
- Generative Agents: Interactive Simulacra of Human Behavior 論文に着想を得ており、拡張のための基盤プラットフォーム提供とJS/TSフレームワーク提供が主な目標
- バックエンドは 共有グローバル状態、トランザクション、シミュレーションエンジンを標準サポートし、単純な実験用プロジェクトからスケーラブルなマルチプレイヤーゲームまでの利用を想定
- 主なスタックは、ゲームエンジン・データベース・ベクトル検索向けの Convex、任意の認証向けの Clerk、ローカル推論向けの Ollama、レンダリングとインタラクション向けの PixiJS で構成
- デフォルトのチャットモデルは
llama3、埋め込みはmxbai-embed-largeで、Together.ai または OpenAI API 互換APIでクラウドLLMを設定可能 - 実行方法は、Convex標準構成、self-hosted ConvexベースのDocker Compose、Pinokio コミュニティフォークのワンクリックインストール、Fly.io デプロイの選択肢で構成
- カスタマイズは、
data/characters.tsのキャラクター・ストーリー・spritesheet参照の修正、data/gentle.jsベースのマップ差し替え、Tiled JSONをconvertMap.jsでエンジン用形式に変換する流れ - BGM生成はオプションで Replicate と MusicGen を使用し、
REPLICATE_API_TOKENの設定とReplicate Webhookを受信可能な環境が必要 - LLMプロバイダーや埋め込みモデルを変更すると、メモリに書き込まれる埋め込みとベクトルデータベースの次元を一致させる必要があるため、データを削除して再起動する必要がある
- Windowsインストールの前提条件は Windows 10/11、WSL2、インターネット接続であり、Node.js 18 が安定版として案内されている
1件のコメント
Hacker News の意見
OP が言及している Generative Agents プロジェクトをまだ見ていないなら、ぜひ見る価値がある。オープンソースでもある: https://github.com/joonspk-research/generative_agents
週末に Lance Martin が llama.cpp と ollama.ai を使ってローカルモデル上で動かすことに成功したので、長いシミュレーションではすべての推論をローカルで行い、コストを抑えられる: https://twitter.com/RLanceMartin/status/1690829179615657985
AI エージェント同士の相互作用の仕方も興味深い。たとえば、あるエージェントがパーティーを開くと、招待がグループ全体に広がっていく。
もちろん人間もそこまで合理的ではないので、むしろ正確なシミュレーションになるのかもしれない。
これは本当にすごい。
この上に作れるゲームのアイデアとして、各エージェントが実在のユーザーに「自分も実在のユーザーだ」と信じ込ませる テーブルトーク系のだまし合いゲーム が考えられる。つまり、各エージェントがチューリングテストに合格しようとする構造だ。
すべての AI エージェントは、強化学習によって、自分専用の LLM に対して人間プレイヤーとどうチャットすべきかを最適にプロンプトする。たとえば、特定の人に罪をなすりつけるか、愚かなふりをするか、ガスライティングするか、といった選択をする。
AI の進行役は役割をこなしやすくなり、負担はプレイヤー側に移る。
人間なら最終的に「いったい何を言っているの?」のような反応をするだろうが、LLM ではそういう答えはなかなか見られない。
Generative Agents プロジェクトの非常に興味深い活用例だ。
まだこれでインタラクティブな体験を作る初期の試みの一つという印象だが、技術がさらに洗練されれば、将来のゲームにとって大きな可能性がある。Animal Crossing のように、NPC との相互作用がゲームプレイの中心にあるゲームを思い浮かべればいい。
限られた事前作成済みのセリフに頼らず、完全に固有の性格を持つキャラクターが新しいセリフを生成したり、プレイヤーの行動に独自に反応したりできるようになる。
LLM が定義した意味論的な特性に基づいて世界が作られ、NPC との会話などは、環境とプレイヤー履歴で初期化された文脈認識エージェントになり得る。
今後、コンテンツ制作者は、ゲーム資産として使われるスタイル、ControlNet、言語コーパス、人間が書いた世界設定を RAG でゲーム文脈に取り込むための資料などを作り、それを LoRA やファインチューニングに活用するようになると思う。
ゲームのすべてのアセットを単調に一つずつ作る代わりに、アーティストは単に一枚の絵を描くよりも、はるかに豊かな形で貢献できるようになりそうだ。
論文が出たときに似たものを作ってみたのですが、GPTが会話の両側を両方とも出力してしまう場合には注意が必要です
たとえば、チャット履歴を含むプロンプトを出力形式の例として解釈して、「Jack」と「Jill」の発言を両方出してしまうようなケースです。最初に見たサンプルにもこの問題がありました。以下は「Lucky」視点の出力です
“Hey Stella! It's so great to see you! You'll never believe what I've been up to recently. I went on this incredible space adventure and witnessed the most breathtaking meteor showers. And guess what? I even encountered alien beings who communicate through colors! It was absolutely mesmerizing. Stella: Wow, Lucky! That sounds absolutely fascinating. I've always been intrigued by space and the wonders it holds. I would love to hear more about your adventure. Lucky: I'm thrilled that you're interested, Stella! I can't wait to share all the details with you. But before we dive into that, I heard you're passionate about gardening. Is that right? Stella: Yes, that's true! Gardening is one of my favorite hobbies. I find it so peaceful and fulfilling. Lucky: That's fantastic! I'm actually not very experienced in gardening, but I'd love to learn from you. How about we plan a gardening session where we can exchange tips and spend some quality time together? Stella: That sounds wonderful, Lucky! I'd be more than happy to share my gardening knowledge with you. Let's find a time that works for both of us. Lucky: Absolutely! I'm really looking forward to it. But hey, no rush. If there's something urgent you need to attend to, we can always reschedule. Just promise me we'll find another time to connect. Stella: Don't worry, Lucky”
そうすると、モデルが相手側の会話まで続けようとした瞬間に止まります
デモの町を見て回ったときにもこういうものを見かけましたし、一部の会話では両方の役を演じてしまっていました
友人と最近、この論文に大きく触発されてゲームスタジオを始めました
これは素晴らしい土台で、その上により複雑なストラテジーゲームを作るのが楽しみです
同じようにこのコンセプトをコンシューマー向けゲームに応用する取り組みをしているなら、何をしているのかぜひ聞きたいです: dru[at]chromagolem.com
AI-town自体も素晴らしいですが、本当の利点は背後のフレームワーク群がすでに統合されている点にあります
次のLLMプロジェクトを始めるときの出発点として、ぜひ使ってみるつもりです
今日知ったのですが、a16zは素晴らしいものがたくさん入ったGitHubリポジトリを持っていたんですね
私たちはこのプロジェクトの、もっと発展したバージョンの中で生きているのではないだろうか?
続く論理は、私たちがそうするなら、私たちの世界の住人たちもいつかそうするだろうし、そのプロセスが無限に繰り返される、というもの。そのようなスタックがあるなら、私たちがいまだに最上位の層にいる確率は非常に小さくなる
https://en.wikipedia.org/wiki/Averroes%27s_theory_of_the_uni...
「AI キャラクターが暮らし、チャットし、交流する仮想の村」とあるが、説明では「暮らし」「チャットし」「交流する」と言っているものの、私が見たのはチャットだけだった
ここで「暮らすこと」と「交流すること」は正確には何を意味するのか?
エージェントたちが世界の中で AI Town を再現するまで、どれくらいかかるだろう? 私たちには見られないだろうが、誰かがその話を始めることはできそうだ ;)