Show HN: AI-town - kit inicial para operar simulações de mundos de IA personalizadas com JavaScript
(github.com/a16z-infra)- AI Town é uma vila virtual onde personagens de IA vivem, conversam e socializam, além de ser um kit inicial implantável que permite aos usuários criar e personalizar facilmente sua própria versão do AI Town
- Inspirado no artigo Generative Agents: Interactive Simulacra of Human Behavior, seus principais objetivos são fornecer uma plataforma base para expansão e um framework JS/TS
- O backend oferece suporte nativo a estado global compartilhado, transações e um motor de simulação, com foco em usos que vão de projetos experimentais simples até jogos multiplayer escaláveis
- A stack principal é composta por Convex para engine de jogo, banco de dados e busca vetorial, Clerk para autenticação opcional, Ollama para inferência local e PixiJS para renderização e interação
- O modelo de chat padrão é
llama3, os embeddings usammxbai-embed-large, e é possível configurar LLMs em nuvem por meio de APIs compatíveis com Together.ai ou OpenAI API - As formas de execução incluem a configuração padrão do Convex, Docker Compose com Convex self-hosted, instalação com um clique via fork comunitário do Pinokio e opção de deploy no Fly.io
- A personalização segue o fluxo de editar referências de personagens, história e spritesheet em
data/characters.ts, trocar o mapa com base emdata/gentle.jse converter JSON do Tiled para o formato do engine comconvertMap.js - A geração de música de fundo usa opcionalmente Replicate e MusicGen, exigindo a configuração de
REPLICATE_API_TOKENe um ambiente capaz de receber webhooks do Replicate - Ao trocar o provedor de LLM ou o modelo de embeddings, as dimensões dos embeddings gravados na memória precisam corresponder às do banco de dados vetorial, então é necessário apagar os dados e reiniciar
- Para instalação no Windows, os pré-requisitos são Windows 10/11, WSL2 e conexão com a internet, com o Node.js 18 indicado como versão estável
1 comentários
Comentários do Hacker News
Se você ainda não viu o projeto Generative Agents mencionado pelo OP, vale muito a pena; ele é open source: https://github.com/joonspk-research/generative_agents
No fim de semana, Lance Martin conseguiu rodá-lo em modelos locais com llama.cpp e ollama.ai, então em simulações longas toda a inferência pode acontecer localmente, economizando custos: https://twitter.com/RLanceMartin/status/1690829179615657985
Também é interessante a forma como os agentes de IA interagem entre si; por exemplo, quando um agente dá uma festa, o convite se espalha pelo grupo inteiro
Claro, pessoas também não são tão racionais assim, então talvez acabe sendo uma simulação mais precisa
Isso é realmente incrível
Como ideia de jogo que poderia ser construída em cima disso, dá para imaginar um jogo de blefe de mesa em que cada agente tenta convencer usuários reais de que ele também é um usuário real. Ou seja, a estrutura é a de cada agente tentando passar no teste de Turing
Todos os agentes de IA usam aprendizado por reforço para criar, no seu LLM pessoal, o prompt ideal sobre como conversar com jogadores humanos. Por exemplo, escolhem coisas como incriminar uma pessoa específica, fingir burrice ou fazer gaslighting
Ficaria mais fácil para um mestre de jogo de IA cumprir o papel, e o peso passaria para os jogadores
Uma pessoa acabaria reagindo com algo como “do que diabos você está falando?”, mas é difícil ver esse tipo de resposta em um LLM
É um caso de uso muito interessante do projeto Generative Agents
Por enquanto, parece uma das primeiras tentativas de criar uma experiência interativa com isso, mas, quando a tecnologia for mais refinada, há um potencial enorme para jogos no futuro. Pense em jogos como Animal Crossing, em que a interação com NPCs é o centro da jogabilidade
Em vez de depender de falas pré-escritas limitadas, personagens com personalidades totalmente únicas poderiam gerar novas falas ou reagir de maneira própria às ações do jogador
O mundo poderia ser criado com base em características semânticas definidas por um LLM, e conversas com NPCs e afins poderiam ser agentes contextuais inicializados com o ambiente e o histórico do jogador
No futuro, imagino que criadores de conteúdo produzam estilos, ControlNet, corpora linguísticos e materiais para inserir no contexto do jogo via RAG, como universos escritos por humanos, para serem usados em LoRA e fine-tuning
Em vez de criar monotonicamente cada asset do jogo um por um, artistas poderiam contribuir de uma forma muito mais rica do que simplesmente desenhar uma única imagem
Quando o artigo saiu, tentei criar algo parecido, mas é preciso tomar cuidado com casos em que o GPT gera os dois lados da conversa
Por exemplo, ele interpreta um prompt com o histórico do chat como um exemplo do formato de saída e acaba emitindo as falas tanto de “Jack” quanto de “Jill”. A primeira amostra que vi também tinha esse problema. Abaixo está a saída do ponto de vista de “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”
Assim, quando o modelo tenta continuar também a fala do outro lado, ele para imediatamente
Também vi isso ao passear pela vila de demonstração, e algumas conversas acabavam fazendo os dois papéis
Recentemente, eu e um amigo começamos um estúdio de games, muito inspirados por esse artigo
Isto é uma ótima base, e estou animado para criar jogos de estratégia mais complexos em cima dela
Se alguém estiver trabalhando em algo semelhante, aplicando esse conceito a jogos para consumidores, adoraria ouvir o que vocês estão fazendo: dru[at]chromagolem.com
O AI-town em si também é legal, mas a verdadeira vantagem é que os frameworks por trás já estão integrados
Com certeza pretendo usá-lo como ponto de partida no meu próximo projeto com LLM
Descobri hoje que a a16z tinha um repositório no GitHub cheio de coisas legais
Será que não estamos vivendo dentro de uma versão mais avançada deste projeto?
A lógica que se segue é que, se fizermos isso, os habitantes do nosso mundo também acabarão fazendo o mesmo algum dia, e esse processo se repetirá infinitamente. Se existir uma pilha dessas, a probabilidade de ainda estarmos na camada mais alta fica muito pequena.
https://en.wikipedia.org/wiki/Averroes%27s_theory_of_the_uni...
Diz que é uma “vila virtual onde personagens de IA vivem, conversam e socializam”, mas, na descrição, embora diga que eles “vivem”, “conversam” e “socializam”, o que eu vi foi só conversa.
O que exatamente “viver” e “socializar” significam aqui?
Quanto tempo até os agentes recriarem AI Town dentro do mundo? Nós talvez não consigamos ver, mas alguém provavelmente pode começar essa história ;)