Este proyecto es una arquitectura de extremo a extremo diseñada para mejorar Pokémon Go UX. Aquí se muestra un proceso secuencial que involucra múltiples agentes gpt-4
del modelo de lenguaje grande (LLM), aprovechando un sistema de generación aumentada de recuperación (RAG) para brindar respuestas personalizadas.
Para comprender en profundidad la arquitectura y acceder al artículo completo, visite mi sitio web.
Para profundizar en la arquitectura y explorar la aplicación, asegúrese de tener instalado Python 3.10
, junto con la biblioteca Langchain y Faiss by Meta.
Notas importantes:
Sistema : todo el proceso de configuración está diseñado para sistemas basados en Unix, por lo que puede usar los siguientes comandos de Makefile para ejecutar localmente su sistema; de lo contrario, puede replicar los comandos de Makefile en su terminal.
Variables de entorno : cada uno de los siguientes comandos source
las variables definidas en su archivo .env
, así que verifique que su clave API OpenAI esté en su lugar. Si desea realizar cambios permanentes, deberá agregar estas variables a su script de inicialización de shell (como .bashrc
, .bash_profile
o .zshrc
para Unix/Linux/MacOS, o variables de entorno en Windows).
Cree un entorno virtual usando el siguiente comando:
make create_venv
Active el entorno virtual usando el siguiente comando:
source .venv/bin/activate
Instale las dependencias usando el siguiente comando:
make install_dev
Instale las dependencias de prueba usando el siguiente comando:
make install_test
Ejecute el servidor API usando el siguiente comando:
make api_server
Muestre la documentación de la interfaz de usuario de Swagger para ver los puntos finales disponibles en: http://localhost:8000/docs
Ejecute la aplicación Streamlit usando el siguiente comando:
make display_ui
Los siguientes son ejemplos de los diferentes tipos de interacciones que el sistema puede manejar, que se clasifican por tipo de intención y tipo de estructura.
defense_suggestion
: Ha aparecido un Pokémon desconocido y el usuario necesita una sugerencia para usar un Pokémon contra él. El usuario debe proporcionar el nombre del Pokémon como parte de la entrada.
information_request
: El usuario quiere saber más sobre un Pokémon. En la entrada, el usuario debe proporcionar una de las siguientes estructuras de texto de entrada: (1) el nombre del Pokémon con una solicitud de información, (2) una descripción de un Pokémon en lenguaje natural sin mencionar explícitamente el nombre del Pokémon con la intención de adivinar qué es el Pokémon, O (3) una pregunta sobre el Pokémon con el nombre del Pokémon mencionado explícitamente, preguntando por un atributo específico como: Evolución, Dieta, Hábitat, Estadísticas Base, etc.
squad_build
: El usuario quiere formar un escuadrón de Pokémon basado en los tipos de Pokémon del oponente. El usuario debe proporcionar una lista de nombres de Pokémon como parte de la entrada.
None
: devuelve la propia respuesta de GPT-4. La solicitud del usuario no entra en ninguna de las categorías anteriores.
Ejemplos rápidos :
Tipo de intención | Tipo de estructura | Ejemplo |
---|---|---|
sugerencia_defensa | any | ¡Me topé con un Grovyle salvaje descansando en el parque! ¿Qué Pokémon debería elegir para una batalla épica para derrotarlo? |
solicitud_información | pokemon_names | ¡Muy bien, Pokédex! ¡Es hora de descubrir todo sobre Snorlax y Pikachu! |
solicitud_información | natural_language_question | ¿Sabes en qué tipo de hábitats puedo encontrar un Psyduck? |
solicitud_información | natural_language_description | ¿Puedes adivinar qué Pokémon es un Pokémon de doble tipo Planta/Veneno conocido por el bulbo vegetal en su espalda, que crece hasta convertirse en una planta grande a medida que evoluciona? |
escuadrón_build | any | ¡Es hora de desafiar al líder del gimnasio de bomberos! Tiene un equipo duro con Ninetales y Combusken, pero necesito tu ayuda para formar un equipo. |
Ninguno | any | me encantan los pretzels |
Ejemplos de respuesta :
Pregunta: ¿Sabes en qué tipo de hábitats puedo encontrar un Lucario?
Responda con JSON mode
habilitado:
{
"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 "
}