Show HN: AI-town - ชุดเริ่มต้นสำหรับรันการจำลองโลก AI แบบปรับแต่งตามผู้ใช้ด้วย JavaScript
(github.com/a16z-infra)- AI Town คือหมู่บ้านเสมือนที่ตัวละคร AI ใช้ชีวิต พูดคุย และเข้าสังคมกัน และเป็นชุดเริ่มต้นที่พร้อมนำไปใช้งานจริง ซึ่งช่วยให้ผู้ใช้สร้างและปรับแต่ง AI Town เวอร์ชันของตนเองได้อย่างง่ายดาย
- ได้แรงบันดาลใจจากงานวิจัย Generative Agents: Interactive Simulacra of Human Behavior โดยมีเป้าหมายหลักคือการมอบแพลตฟอร์มพื้นฐานสำหรับการขยายต่อ และเฟรมเวิร์ก JS/TS
- ฝั่งแบ็กเอนด์รองรับ สถานะส่วนกลางแบบใช้ร่วมกัน, ธุรกรรม และเอนจินจำลองเป็นพื้นฐาน โดยมุ่งรองรับตั้งแต่โปรเจ็กต์ทดลองแบบง่ายไปจนถึงเกมหลายผู้เล่นที่ขยายต่อได้
- สแตกหลักประกอบด้วย Convex สำหรับเกมเอนจิน ฐานข้อมูล และการค้นหาเวกเตอร์, Clerk สำหรับการยืนยันตัวตนแบบเลือกใช้, Ollama สำหรับการอนุมานแบบโลคัล, และ PixiJS สำหรับการเรนเดอร์และการโต้ตอบ
- โมเดลแชตเริ่มต้นคือ
llama3ส่วน embedding ใช้mxbai-embed-largeและสามารถตั้งค่า cloud LLM ผ่าน API ที่เข้ากันได้กับ Together.ai หรือ OpenAI API - วิธีรันประกอบด้วยการตั้งค่ามาตรฐานของ Convex, Docker Compose บน Convex แบบ self-hosted, การติดตั้งแบบวันคลิกจาก community fork ของ Pinokio, และตัวเลือกการดีพลอยบน Fly.io
- การปรับแต่งทำได้โดยแก้ไขตัวละคร เรื่องราว และการอ้างอิง spritesheet ใน
data/characters.ts, เปลี่ยนแผนที่ที่อิงจากdata/gentle.js, และแปลง JSON จาก Tiled เป็นรูปแบบสำหรับเอนจินด้วยconvertMap.js - การสร้างเพลงพื้นหลังสามารถเลือกใช้ Replicate และ MusicGen ได้ โดยต้องตั้งค่า
REPLICATE_API_TOKENและมีสภาพแวดล้อมที่รับ Replicate webhook ได้ - หากเปลี่ยนผู้ให้บริการ LLM หรือโมเดล embedding ต้องให้ embedding ที่เขียนลงหน่วยความจำและมิติของฐานข้อมูลเวกเตอร์ตรงกัน ดังนั้นจึงต้องลบข้อมูลแล้วเริ่มใหม่
- การติดตั้งบน Windows ต้องมี Windows 10/11, WSL2 และการเชื่อมต่ออินเทอร์เน็ตเป็นเงื่อนไขพื้นฐาน โดยแนะนำ Node.js 18 เป็นเวอร์ชันเสถียร
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ถ้ายังไม่ได้ดูโปรเจกต์ Generative Agents ที่ OP พูดถึง ก็คุ้มค่ามาก และเป็นโอเพนซอร์สด้วย: https://github.com/joonspk-research/generative_agents
ช่วงสุดสัปดาห์ Lance Martin ทำให้มันรันบนโมเดลโลคัลด้วย llama.cpp และ ollama.ai ได้สำเร็จ ดังนั้นในการจำลองระยะยาว การอนุมานทั้งหมดจะเกิดขึ้นในเครื่อง ช่วยประหยัดค่าใช้จ่ายได้: https://twitter.com/RLanceMartin/status/1690829179615657985
วิธีที่ AI agent โต้ตอบกันเองก็น่าสนใจ เช่น ถ้า agent ตัวหนึ่งจัดปาร์ตี้ คำเชิญก็จะแพร่กระจายไปทั่วทั้งกลุ่ม
แน่นอนว่ามนุษย์เองก็ไม่ได้มีเหตุผลขนาดนั้น บางทีอาจกลายเป็นการจำลองที่แม่นยำก็ได้
อันนี้เจ๋งจริง ๆ
ไอเดียเกมที่สร้างบนสิ่งนี้ได้คือ เกมหลอกลวงแบบ tabletop ที่แต่ละ agent พยายามโน้มน้าวผู้ใช้จริงว่าตัวเองก็เป็นผู้ใช้จริง กล่าวคือเป็นโครงสร้างที่ agent แต่ละตัวพยายามผ่านการทดสอบทัวริง
AI agent ทุกตัวจะใช้ reinforcement learning เพื่อพรอมป์ LLM ส่วนตัวของตัวเองให้เหมาะที่สุดว่าควรแชตกับผู้เล่นมนุษย์อย่างไร เช่น เลือกว่าจะใส่ร้ายคนใดคนหนึ่ง แกล้งโง่ หรือ gaslight เป็นต้น
AI ผู้ดำเนินเกมจะเล่นบทบาทได้ง่ายขึ้น และภาระจะย้ายไปอยู่ที่ผู้เล่น
ถ้าเป็นมนุษย์ สุดท้ายก็คงตอบประมาณว่า “นี่พูดเรื่องอะไรอยู่กันแน่?” แต่กับ LLM มักจะเห็นคำตอบแบบนั้นได้ยาก
เป็นกรณีใช้งานที่น่าสนใจมากของโปรเจกต์ Generative Agents
ตอนนี้ยังรู้สึกเหมือนเป็นหนึ่งในความพยายามช่วงแรก ๆ ในการสร้างประสบการณ์แบบโต้ตอบด้วยสิ่งนี้ แต่ถ้าเทคโนโลยีขัดเกลามากขึ้น ก็มีศักยภาพสูงมากสำหรับเกมในอนาคต ลองนึกถึงเกมอย่าง Animal Crossing ที่การโต้ตอบกับ NPC เป็นแกนหลักของเกมเพลย์
มันจะทำให้ตัวละครที่มีบุคลิกเฉพาะตัวอย่างสมบูรณ์สามารถสร้างบทพูดใหม่ หรือโต้ตอบกับการกระทำของผู้เล่นอย่างมีเอกลักษณ์ได้ โดยไม่ต้องพึ่งบทพูดที่เขียนไว้ล่วงหน้าแบบจำกัด
โลกจะถูกสร้างขึ้นจากคุณลักษณะเชิงความหมายที่ LLM กำหนด และ NPC รวมถึงบทสนทนาอาจเป็น agent ที่รับรู้บริบท โดยเริ่มต้นจากสภาพแวดล้อมและประวัติของผู้เล่น
ต่อไปผู้สร้างคอนเทนต์น่าจะสร้างสไตล์, ControlNet, คลังข้อความภาษา, และวัสดุอย่างโลกทัศน์ที่มนุษย์เขียนเพื่อใส่เข้าไปในบริบทของเกมด้วย RAG สำหรับใช้เป็นสินทรัพย์เกม และนำสิ่งเหล่านี้ไปใช้กับ LoRA และการ fine-tuning
แทนที่จะสร้างสินทรัพย์ทั้งหมดของเกมทีละชิ้นอย่างจำเจ ศิลปินน่าจะมีส่วนร่วมได้อย่างลึกซึ้งกว่าการวาดภาพเพียงภาพเดียวมาก
ตอนที่เปเปอร์นี้ออกมา ผมเคยลองทำอะไรคล้าย ๆ กัน และต้องระวังเรื่องที่ 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 repository ที่มีของเจ๋ง ๆ อยู่เยอะมาก
บางทีเราอาจกำลังอาศัยอยู่ในเวอร์ชันที่พัฒนากว่านี้ของโปรเจกต์นี้อยู่หรือเปล่า?
ตรรกะที่ตามมาก็คือ ถ้าเราทำเช่นนั้น ผู้อยู่อาศัยในโลกของเราก็คงจะทำเช่นนั้นได้สักวันหนึ่งด้วย และกระบวนการนี้ก็จะเกิดซ้ำไปไม่สิ้นสุด หากมีสแต็กแบบนั้น โอกาสที่เรายังคงอยู่ชั้นบนสุดก็จะน้อยมาก
https://en.wikipedia.org/wiki/Averroes%27s_theory_of_the_uni...
เขียนไว้ว่า “หมู่บ้านเสมือนที่ตัวละคร AI อาศัยอยู่ แชต และเข้าสังคม” แต่ในคำอธิบายบอกว่า “อาศัยอยู่”, “แชต” และ “เข้าสังคม” ทว่าสิ่งที่ผมเห็นมีแค่ การแชต เท่านั้น
ในที่นี้ “การอาศัยอยู่” และ “การเข้าสังคม” หมายถึงอะไรกันแน่?
ต้องใช้เวลานานแค่ไหนกว่าเอเจนต์ทั้งหลายจะ สร้าง AI Town ขึ้นใหม่ ภายในโลกนั้นเอง? พวกเราอาจไม่ได้เห็น แต่คงมีใครสักคนเริ่มเล่าเรื่องนั้นได้ ;)