Ce projet est une architecture de bout en bout conçue pour améliorer Pokémon Go UX. Voici une démonstration d'un processus séquentiel impliquant plusieurs agents gpt-4
du modèle LLM (Large Language Model), tirant parti d'un système de génération augmentée par récupération (RAG) pour fournir des réponses personnalisées.
Pour une compréhension approfondie de l’architecture et pour accéder à l’article complet, veuillez visiter mon site Web.
Pour approfondir l'architecture et explorer l'application, assurez-vous d'avoir installé Python 3.10
, ainsi que la bibliothèque Langchain et Faiss by Meta.
Remarques importantes :
Système - L'ensemble du processus d'installation est conçu pour les systèmes basés sur Unix, vous pouvez donc utiliser les commandes Makefile suivantes pour exécuter localement votre système, sinon vous pouvez répliquer les commandes du Makefile dans votre terminal.
Variables d'environnement - chacune des commandes suivantes source
les variables définies dans votre fichier .env
, alors vérifiez bien que votre clé API OpenAI est en place. Si vous souhaitez apporter des modifications permanentes, vous devrez ajouter ces variables à votre script d'initialisation shell (comme .bashrc
, .bash_profile
ou .zshrc
pour Unix/Linux/MacOS, ou des variables d'environnement sous Windows).
Créez un environnement virtuel à l'aide de la commande suivante :
make create_venv
Activez l'environnement virtuel à l'aide de la commande suivante :
source .venv/bin/activate
Installez les dépendances à l'aide de la commande suivante :
make install_dev
Installez les dépendances de test à l'aide de la commande suivante :
make install_test
Exécutez le serveur API à l'aide de la commande suivante :
make api_server
Affichez la documentation de l'interface utilisateur Swagger pour voir les points de terminaison disponibles sur : http://localhost:8000/docs
Exécutez l'application Streamlit à l'aide de la commande suivante :
make display_ui
Voici des exemples des différents types d'interactions que le système peut gérer, classées par type d'intention et type de structure.
defense_suggestion
: Un Pokémon inconnu est apparu et l'utilisateur a besoin d'une suggestion pour utiliser un Pokémon contre lui. L'utilisateur doit fournir le nom du Pokémon dans le cadre de la saisie.
information_request
: L'utilisateur souhaite en savoir plus sur un Pokémon. Lors de la saisie, l'utilisateur doit fournir l'une des structures de texte de saisie suivantes : (1) le nom du Pokémon avec une demande d'informations, (2) une description d'un Pokémon en langage naturel sans mentionner explicitement le nom du Pokémon avec l'intention de deviner ce qu'est le Pokémon, OU (3) une question sur le Pokémon avec le nom du Pokémon explicitement mentionné, demandant un attribut spécifique tel que : Evolution, Régime, Habitat, Statistiques de base, etc.
squad_build
: L'utilisateur souhaite constituer une équipe de Pokémon basée sur les types de Pokémon de l'adversaire. L'utilisateur doit fournir une liste de noms de Pokémon dans le cadre de la saisie.
None
: renvoie la propre réponse de GPT-4. La demande de l'utilisateur n'entre dans aucune des catégories ci-dessus.
Exemples rapides :
Type d'intention | Type de structure | Exemple |
---|---|---|
suggestion_defence | any | Je suis tombé sur un Grovyle sauvage se prélassant dans le parc ! Quel Pokémon dois-je choisir pour une bataille épique pour le vaincre ? |
information_request | pokemon_names | Très bien, Pokédex ! Il est temps de tout savoir sur Ronflex et Pikachu ! |
information_request | natural_language_question | Savez-vous dans quels types d'habitats je peux trouver un Psyduck ? |
information_request | natural_language_description | Pouvez-vous deviner quel Pokémon est un Pokémon double type Plante/Poison connu pour le bulbe végétal sur son dos, qui se transforme en une grande plante au fur et à mesure de son évolution. |
squad_build | any | Il est temps de défier le leader du Fire Gym ! Il a une équipe coriace avec des Ninetales et Combusken, mais j'ai besoin de votre aide pour constituer une équipe. |
Aucun | any | J'adore les bretzels |
Exemples de réponses :
Invite : Savez-vous dans quels types d'habitats je peux trouver un Lucario ?
Répondez avec JSON mode
activé :
{
"header" : " Lucario can be found in Cave, Forest, and Mountain habitats. n " ,
"body" : [
" ### Lucario nn **ID**: 448 nn **Stats**: - HP: 70 n - Speed: 90 n - Attack: 110 n - Special-Attack: 115 n - Defense: 70 n - Special-Defense: 70 nn **Height**: 1.2m **Weight**: 54.0kg nn **Types**: fighting, steel nn **Abilities**: steadfast, inner-focus, justified nn **Damage Relations**: n - no damage to: ghost n - half damage to: flying n - double damage to: normal n - half damage from: rock n - double damage from: flying n "
],
"sprites" : {
"Lucario" : [
" https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/448.png " ,
" https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/back/shiny/448.png " ,
" https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/448.png " ,
" https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/448.png "
]
},
"intent_type" : " information_request " ,
"intent_structure" : " natural_language_question "
}