Un animal de compagnie virtuel 100 % local, généré et piloté par LLM, avec des pensées, des sentiments et des commentaires. Ravivez vos bons souvenirs de Tamagotchi ! https://ai-tamago.fly.dev/
Toutes les animations ascii sont générées à l'aide de chatgpt (invites incluses dans le dépôt).
Vous avez des questions ? Rejoignez les développeurs d'AI Stack et retrouvez-moi sur la chaîne #ai-tamago.
Démo ?
Tout ce qui précède, plus :
Forkez le dépôt sur votre compte Github, puis exécutez la commande suivante pour cloner le dépôt :
git clone [email protected]:[YOUR_GITHUB_ACCOUNT_NAME]/AI-tamago.git
cd ai-tamago
npm install
Tout le code tamagotchi côté client est dans Tamagotchi.tsx
Les instructions sont ici.
brew install supabase/tap/supabase
Assurez-vous que vous êtes dans le répertoire /ai-tamago
et exécutez :
supabase start
Conseils : pour exécuter des migrations ou réinitialiser la base de données : seed.sql et les migrations exécuteront supabase db reset
Remarque : Les secrets ici concernent votre instance de supabase locale .
cp .env.local.example .env.local
Ensuite, récupérez SUPABASE_PRIVATE_KEY
en exécutant
supabase status
Copiez service_role key
et enregistrez-la sous SUPABASE_PRIVATE_KEY
dans .env.local
npx inngest-cli@latest dev
Assurez-vous que votre application est opérationnelle. Les fonctions Ingest (qui sont utilisées pour piloter l'état du jeu) doivent s'enregistrer automatiquement.
Vous êtes maintenant prêt à tester l’application localement ! Pour ce faire, exécutez simplement npm run dev
sous la racine du projet et visitez http://localhost:3000
.
Maintenant que vous avez joué avec l'IA tamago localement, il est temps de le déployer dans un endroit plus permanent afin que vous puissiez y accéder à tout moment !
0. Choisissez le modèle que vous souhaitez utiliser en production
LLM_MODEL=ollama
de .env.local
et remplissez OPENAI_API_KEY
LLM_MODEL=replicate_llama
et remplissez REPLICATE_API_TOKEN
performance-4x
avec un volume de 100gb
, mais si vous pouvez accéder aux GPU, ils sont beaucoup plus rapides. Rejoignez la liste d'attente GPU de Fly ici si vous n'y avez pas encore accès ! 1. Basculez vers la branche deploy
: cette branche comprend tout ce dont vous avez besoin pour déployer une application comme celle-ci.
git co deploy
Cette branche contient une application prête pour la multi-location (grâce à Clerk), ce qui signifie que chaque utilisateur peut obtenir son propre IA-tamago et a une limite de jetons intégrée - vous pouvez définir le nombre de fois qu'un utilisateur peut envoyer des demandes dans l'application. (voir ratelimit.ts
)
2. Passez à Supabase Cloud :
.env.local
SUPABASE_URL
est la valeur de l'URL sous "URL du projet".SUPABASE_PRIVATE_KEY
est la clé qui commence par ey
sous les clés API du projetDepuis la racine de votre projet Ai-tamago, exécutez :
supabase link --project-ref [insert project-id]
supabase migration up
supabase db reset --linked
3. Créez une instance Upstash Redis pour limiter le débit
Cela garantira qu'aucun utilisateur n'appelle une API trop de fois et n'absorbe toutes les charges de travail d'inférence. Nous utilisons ici l'impressionnant SDK de limitation de débit d'Upstash.
UPSTASH_REDIS_REST_URL
et UPSTASH_REDIS_REST_TOKEN
) dans votre .env.local4. Vous êtes maintenant prêt à tout déployer sur Fly.io !
fly launch
sous la racine du projet. Cela générera un fly.toml
qui comprend toutes les configurations dont vous aurez besoinfly scale memory 512
pour augmenter la mémoire fly vm pour cette application.fly deploy --ha=false
pour déployer l'application. L'indicateur --ha garantit que fly ne lance qu'une seule instance, qui est incluse dans le plan gratuit.cat .env.local | fly secrets import
.env.prod
localement et renseignez tous les secrets de l'environnement de production. N'oubliez pas de mettre à jour NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
et CLERK_SECRET_KEY
en copiant les secrets de l'instance de production de Clerk - cat .env.prod | fly secrets import
pour télécharger des secrets.Si vous avez des questions, rejoignez les développeurs d'AI Stack et retrouvez-moi sur la chaîne #ai-tamago.