基于LLM的本地虚拟宠物模拟Tamagotchi体验
AI-tamago项目利用本地LLM技术创建虚拟宠物,模拟Tamagotchi体验。该项目集成Ollama推理、Inngest状态管理和Supabase向量数据库等技术。支持本地部署和云端运行,具备多租户和访问控制功能。
一个100%本地化、由大语言模型生成和驱动的虚拟宠物,具有思想、感情和反馈。重温您对电子宠物的美好回忆!https://ai-tamago.fly.dev/
所有ASCII动画均使用ChatGPT生成(提示词包含在仓库中)。
有问题吗?加入AI Stack开发者,在#ai-tamago频道找我。
演示 🪄
https://github.com/ykhli/AI-tamago/assets/3489963/8d7cb2ac-537a-45d4-98a5-1802b773e364
除上述所有外,还包括:
将仓库复刻到您的GitHub账户,然后运行以下命令克隆仓库:
git clone git@github.com:[您的GitHub账户名]/AI-tamago.git
cd ai-tamago
npm install
所有客户端电子宠物代码都在Tamagotchi.tsx中
安装说明在这里。
brew install supabase/tap/supabase
确保您在/ai-tamago
目录下,然后运行:
supabase start
提示:要运行迁移或重置数据库 -- seed.sql和migrations将运行
supabase db reset
注意:这里的密钥是针对您的本地Supabase实例的
cp .env.local.example .env.local
然后通过运行以下命令获取SUPABASE_PRIVATE_KEY
supabase status
复制service_role key
并将其保存为.env.local
中的SUPABASE_PRIVATE_KEY
npx inngest-cli@latest dev
确保您的应用程序正在运行 -- Inngest函数(用于驱动游戏状态)应该自动注册。
现在您已准备好在本地测试应用程序!只需在项目根目录下运行npm run dev
,然后访问http://localhost:3000
。
现在您已经在本地玩过AI宠物蛋了 -- 是时候将它部署到更持久的地方,这样您随时都可以访问它! 0. 选择你想在生产环境中使用的模型
.env.local
中删除LLM_MODEL=ollama
,并填写OPENAI_API_KEY
LLM_MODEL=replicate_llama
并填写REPLICATE_API_TOKEN
performance-4x
Fly虚拟机(CPU)上运行Ollama是可能的,需要100gb
的存储空间,但如果你能获得GPU访问权限,速度会快得多。如果你还没有访问权限,可以在这里加入Fly的GPU等待列表!1. 切换到deploy
分支 -- 这个分支包含了部署类似这样应用所需的一切。
git co deploy
这个分支包含了一个多租户就绪(感谢Clerk)的应用,这意味着每个用户都可以获得自己的AI-tamago,并且内置了令牌限制 -- 你可以在应用中设置用户可以发送请求的次数(参见ratelimit.ts
)
2. 迁移到Supabase云:
.env.local
中填写密钥SUPABASE_URL
是"Project URL"下的URL值SUPABASE_PRIVATE_KEY
是Project API Keys下以ey
开头的密钥在你的Ai-tamago项目根目录下运行:
supabase link --project-ref [插入项目ID]
supabase migration up
supabase db reset --linked
3. 为限速创建Upstash Redis实例
这将确保没有单个用户过多调用任何API,占用所有推理工作负载。我们在这里使用的是Upstash的出色的限速SDK。
UPSTASH_REDIS_REST_URL
和UPSTASH_REDIS_REST_TOKEN
)到你的.env.local中4. 现在你已准备好在Fly.io上部署所有内容!
fly launch
。这将生成一个包含你所需所有配置的fly.toml
fly scale memory 512
来扩展这个应用的fly虚拟机内存。fly deploy --ha=false
来部署应用。--ha标志确保fly只启动一个实例,这包含在免费计划中。cat .env.local | fly secrets import
将密钥上传到Fly.env.prod
并填写所有生产环境密钥。记得通过从Clerk的生产实例复制密钥来更新NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
和CLERK_SECRET_KEY
-cat .env.prod | fly secrets import
上传密钥。如果你有问题,加入AI Stack devs并在#ai-tamago频道找我。