Show HN: AI-town - Bộ khởi động để vận hành mô phỏng thế giới AI tùy biến cho người dùng bằng JavaScript
(github.com/a16z-infra)- AI Town là một ngôi làng ảo nơi các nhân vật AI sinh sống, trò chuyện và giao lưu; đồng thời là một starter kit có thể triển khai, giúp người dùng dễ dàng tạo và tùy biến phiên bản AI Town của riêng mình
- Dự án được lấy cảm hứng từ bài báo Generative Agents: Interactive Simulacra of Human Behavior, với mục tiêu chính là cung cấp nền tảng cơ sở để mở rộng và framework JS/TS
- Backend hỗ trợ sẵn trạng thái toàn cục dùng chung, transaction và simulation engine, hướng tới cả các dự án thử nghiệm đơn giản lẫn game nhiều người chơi có khả năng mở rộng
- Stack chính gồm Convex cho game engine, cơ sở dữ liệu và tìm kiếm vector; Clerk cho xác thực tùy chọn; Ollama cho suy luận cục bộ; và PixiJS cho render và tương tác
- Mô hình chat mặc định là
llama3, embedding làmxbai-embed-large, và có thể cấu hình LLM trên cloud thông qua API tương thích với Together.ai hoặc OpenAI API - Các cách chạy bao gồm cấu hình chuẩn của Convex, Docker Compose dựa trên Convex self-hosted, cài đặt một cú nhấp qua community fork của Pinokio, và tùy chọn triển khai trên Fly.io
- Việc tùy biến theo quy trình sửa tham chiếu nhân vật, câu chuyện và spritesheet trong
data/characters.ts, thay bản đồ dựa trêndata/gentle.js, rồi chuyển JSON từ Tiled sang định dạng dành cho engine bằngconvertMap.js - Việc tạo nhạc nền có thể dùng tùy chọn Replicate và MusicGen, đồng thời cần cấu hình
REPLICATE_API_TOKENvà một môi trường có thể nhận webhook từ Replicate - Nếu thay đổi nhà cung cấp LLM hoặc mô hình embedding, cần bảo đảm embedding được ghi vào bộ nhớ khớp với số chiều của cơ sở dữ liệu vector, vì vậy phải xóa dữ liệu và khởi động lại
- Cài đặt trên Windows yêu cầu Windows 10/11, WSL2 và kết nối Internet; Node.js 18 được khuyến nghị là phiên bản ổn định
1 bình luận
Ý kiến trên Hacker News
Nếu bạn chưa xem dự án Generative Agents mà OP nhắc tới thì rất đáng xem, và nó là mã nguồn mở: https://github.com/joonspk-research/generative_agents
Cuối tuần rồi, Lance Martin đã chạy thành công nó trên mô hình cục bộ bằng llama.cpp và ollama.ai, nên trong các mô phỏng dài, toàn bộ suy luận có thể diễn ra cục bộ để tiết kiệm chi phí: https://twitter.com/RLanceMartin/status/1690829179615657985
Cách các tác tử AI tương tác với nhau cũng rất thú vị; chẳng hạn khi một tác tử tổ chức tiệc, lời mời sẽ lan ra toàn bộ nhóm
Tất nhiên con người cũng không hợp lý đến vậy, nên biết đâu lại thành mô phỏng chính xác hơn
Cái này thật sự rất ngầu
Một ý tưởng game có thể xây trên nền tảng này là trò chơi đánh lừa dạng tabletop, trong đó mỗi tác tử cố thuyết phục người dùng thật rằng bản thân cũng là người dùng thật. Nói cách khác, cấu trúc là mỗi tác tử cố vượt qua bài kiểm tra Turing
Tất cả tác tử AI dùng học tăng cường để nhắc LLM cá nhân của mình theo cách tối ưu về việc nên chat với người chơi là con người như thế nào. Ví dụ như chọn có đổ tội cho một người cụ thể, giả vờ ngốc, hay gaslight hay không
Người dẫn trò AI sẽ dễ đảm nhiệm vai trò hơn, còn gánh nặng chuyển sang người chơi
Nếu là người, cuối cùng họ sẽ phản ứng kiểu “rốt cuộc bạn đang nói gì vậy?”, nhưng với LLM thì khó thấy câu trả lời như thế
Đây là một trường hợp ứng dụng rất thú vị của dự án Generative Agents
Hiện nó vẫn có cảm giác như một trong những nỗ lực ban đầu để tạo trải nghiệm tương tác bằng thứ này, nhưng khi công nghệ được trau chuốt hơn, tiềm năng cho game tương lai là rất lớn. Hãy nghĩ đến các game như Animal Crossing, nơi tương tác với NPC là trung tâm của lối chơi
Thay vì dựa vào các câu thoại viết sẵn hạn chế, có thể để nhân vật với tính cách hoàn toàn độc đáo tạo lời thoại mới hoặc phản ứng theo cách riêng trước hành động của người chơi
Thế giới có thể được tạo dựa trên các đặc tính ngữ nghĩa do LLM định nghĩa, còn NPC và hội thoại có thể trở thành các tác tử nhận biết ngữ cảnh, được khởi tạo bằng môi trường và lịch sử của người chơi
Trong tương lai, người tạo nội dung có lẽ sẽ tạo ra phong cách, ControlNet, kho ngữ liệu ngôn ngữ, tư liệu đưa bối cảnh thế giới do con người viết vào ngữ cảnh game bằng RAG để dùng làm tài sản game, rồi tận dụng chúng cho LoRA và tinh chỉnh
Thay vì đơn điệu tạo từng tài sản trong game một, các nghệ sĩ có vẻ sẽ có thể đóng góp theo cách phong phú hơn nhiều so với chỉ vẽ một bức tranh
Khi bài báo được công bố, tôi từng thử làm một thứ tương tự, và cần cẩn thận với trường hợp GPT xuất ra cả hai phía của cuộc hội thoại
Ví dụ, nó diễn giải prompt có lịch sử chat như một ví dụ về định dạng đầu ra, rồi xuất luôn lời của cả “Jack” lẫn “Jill”. Mẫu đầu tiên tôi thấy cũng gặp vấn đề này. Dưới đây là đầu ra từ góc nhìn của “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”
Như vậy khi mô hình định tiếp tục cả phần hội thoại của phía bên kia thì nó dừng ngay
Khi xem thử ngôi làng demo tôi cũng thấy chuyện này, và một số cuộc hội thoại đã đóng luôn cả hai vai
Gần đây tôi và một người bạn đã bắt đầu một studio game, lấy cảm hứng rất lớn từ bài báo này
Đây là một nền tảng tuyệt vời, và tôi rất hào hứng với việc xây dựng một game chiến thuật phức tạp hơn trên đó
Nếu bạn cũng đang làm việc để áp dụng khái niệm này vào game dành cho người tiêu dùng theo cách tương tự, tôi rất muốn nghe bạn đang làm gì: dru[at]chromagolem.com
Bản thân AI-town cũng rất hay, nhưng lợi ích thật sự nằm ở chỗ các framework phía sau đã được tích hợp sẵn
Tôi chắc chắn sẽ dùng nó làm điểm khởi đầu cho dự án LLM tiếp theo
Hôm nay tôi mới biết a16z có một kho GitHub chứa rất nhiều thứ thú vị
Liệu có phải chúng ta đang sống trong một phiên bản phát triển hơn của dự án này không?
Logic tiếp theo là, nếu chúng ta làm thế thì cư dân trong thế giới của chúng ta một ngày nào đó cũng sẽ làm vậy, và quá trình ấy lặp lại vô hạn. Nếu tồn tại một ngăn xếp như vậy, xác suất chúng ta vẫn đang ở tầng trên cùng sẽ trở nên rất nhỏ
https://en.wikipedia.org/wiki/Averroes%27s_theory_of_the_uni...
Bài viết nói “một ngôi làng ảo nơi các nhân vật AI sống, trò chuyện và giao tiếp xã hội”, nhưng trong phần mô tả thì nói “sống”, “trò chuyện” và “giao tiếp xã hội”, còn những gì tôi thấy chỉ là trò chuyện
Vậy ở đây “sống” và “giao tiếp xã hội” chính xác nghĩa là gì?
Sẽ mất bao lâu để các agent tái tạo AI Town bên trong thế giới đó? Chúng ta có thể sẽ không thấy được, nhưng chắc ai đó có thể bắt đầu câu chuyện ấy ;)