Bei diesem Projekt handelt es sich um eine End-to-End-Architektur zur Verbesserung von Pokémon Go UX. Hier wird ein sequenzieller Prozess gezeigt, der mehrere gpt-4
Agenten des Large Language Model (LLM) umfasst und ein Retrieval-Augmented Generation (RAG)-System nutzt, um personalisierte Antworten zu liefern.
Um ein tieferes Verständnis der Architektur zu erhalten und auf den vollständigen Artikel zuzugreifen, besuchen Sie bitte meine Website.
Um in die Architektur einzutauchen und die Anwendung zu erkunden, stellen Sie bitte sicher, dass Sie Python 3.10
zusammen mit der Langchain-Bibliothek und Faiss by Meta installiert haben.
Wichtige Hinweise:
System – Der gesamte Einrichtungsprozess ist für Unix-basierte Systeme konzipiert, sodass Sie die nächsten Makefile-Befehle verwenden können, um Ihr System lokal auszuführen. Andernfalls können Sie die Befehle des Makefiles in Ihrem Terminal replizieren.
Umgebungsvariablen – jeder der nächsten Befehle source
sich auf die in Ihrer .env
Datei definierten Variablen. Überprüfen Sie daher noch einmal, ob Ihr OpenAI-API-Schlüssel vorhanden ist. Wenn Sie dauerhafte Änderungen vornehmen möchten, müssen Sie diese Variablen zu Ihrem Shell-Initialisierungsskript hinzufügen (wie .bashrc
, .bash_profile
oder .zshrc
für Unix/Linux/MacOS oder Umgebungsvariablen unter Windows).
Erstellen Sie eine virtuelle Umgebung mit dem folgenden Befehl:
make create_venv
Aktivieren Sie die virtuelle Umgebung mit dem folgenden Befehl:
source .venv/bin/activate
Installieren Sie die Abhängigkeiten mit dem folgenden Befehl:
make install_dev
Installieren Sie die Testabhängigkeiten mit dem folgenden Befehl:
make install_test
Führen Sie den API-Server mit dem folgenden Befehl aus:
make api_server
Zeigen Sie die Swagger-UI-Dokumentation an, um die verfügbaren Endpunkte anzuzeigen: http://localhost:8000/docs
Führen Sie die Streamlit-App mit dem folgenden Befehl aus:
make display_ui
Im Folgenden finden Sie Beispiele für die verschiedenen Arten von Interaktionen, die das System verarbeiten kann. Diese sind nach Absichtstyp und Strukturtyp kategorisiert.
defense_suggestion
: Ein unbekanntes Pokémon ist aufgetaucht und der Benutzer benötigt einen Vorschlag, ein Pokémon dagegen einzusetzen. Der Benutzer muss als Teil der Eingabe den Namen des Pokémon angeben.
information_request
: Der Benutzer möchte mehr über ein Pokémon erfahren. In der Eingabe muss der Benutzer eine der folgenden Eingabetextstrukturen bereitstellen: (1) den Namen des Pokémon mit einer Informationsanfrage, (2) eine Beschreibung eines Pokémon in natürlicher Sprache, ohne den Namen des Pokémon explizit zu erwähnen die Absicht, zu erraten, um welches Pokémon es sich handelt, ODER (3) eine Frage zu dem Pokémon, bei dem der Pokémon-Name explizit erwähnt wird und nach einem bestimmten Attribut fragt, wie zum Beispiel: Entwicklung, Ernährung, Lebensraum, Basiswerte usw.
squad_build
: Der Benutzer möchte eine Pokémon-Truppe aufbauen, die auf den Pokémon-Typen des Gegners basiert. Der Benutzer muss als Teil der Eingabe eine Liste mit Pokémon-Namen bereitstellen.
None
: Gibt die eigene GPT-4-Antwort zurück. Die Benutzeranfrage fällt in keine der oben genannten Kategorien.
Prompt-Beispiele :
Absichtstyp | Strukturtyp | Beispiel |
---|---|---|
Verteidigungsvorschlag | any | Ich bin zufällig auf einen wilden Grovyle gestoßen, der im Park herumlungerte! Welches Pokémon sollte ich für einen epischen Kampf wählen, um es zu besiegen? |
information_request | pokemon_names | Alles klar, Pokédex! Es ist Zeit, alles über Relaxo und Pikachu herauszufinden! |
information_request | natural_language_question | Wissen Sie, in welchen Lebensräumen ich eine Psyente finden kann? |
information_request | natural_language_description | Können Sie erraten, welches Pokémon ein Gras-/Gift-Pokémon mit zwei Typen ist, das für die Pflanzenzwiebel auf seinem Rücken bekannt ist, die im Laufe ihrer Entwicklung zu einer großen Pflanze heranwächst? |
Squad_build | any | Zeit, den Leiter der Feuerwehrhalle herauszufordern! Er hat mit Ninetales und Combusken ein starkes Team, aber ich brauche deine Hilfe, um einen Kader aufzubauen |
Keiner | any | Ich liebe Brezeln |
Antwortbeispiele :
Eingabeaufforderung: Wissen Sie, in welchen Lebensräumen ich einen Lucario finden kann?
Antwort mit aktiviertem JSON mode
:
{
"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 "
}