Cómo darle vida al tres en raya con los servicios de IA de AWS

Los modelos de lenguajes grandes (LLM) ahora admiten una amplia gama de casos de uso, desde el resumen de contenido hasta la capacidad de razonar sobre tareas complejas. Un tema nuevo e interesante es llevar la IA generativa al mundo físico aplicándola a la robótica y al hardware físico.

Inspirándonos en esto, desarrollamos un juego para AWS re:Invent 2024 Builders Fair utilizando Amazon Bedrock, Strands Agents, AWS IoT Core, AWS Lambda y Amazon DynamoDB. Nuestro objetivo era demostrar cómo los LLM pueden razonar sobre estrategias de juegos, tareas complejas y controlar robots físicos en tiempo real.

RoboTic-Tac-Toe es un juego interactivo en el que dos robots físicos se mueven alrededor de un tablero de tres en raya, y tanto el juego como los movimientos de los robots son orquestados por LLM. Los jugadores pueden controlar los robots usando comandos en lenguaje natural, indicándoles que coloquen sus marcadores en el tablero de juego. En esta publicación, exploramos la arquitectura y las técnicas de ingeniería rápida utilizadas para razonar sobre un juego de tres en raya y decidir la siguiente mejor estrategia de juego y plan de movimiento para el jugador actual.

Una experiencia interactiva

RoboTic-Tac-Toe demuestra una interacción intuitiva entre humanos, robots e inteligencia artificial. Los participantes pueden acceder al portal del juego escaneando un código QR y elegir entre múltiples modos:

Jugador contra jugador: desafía a un oponente humano. Jugador contra LLM: prueba tus habilidades contra un LLM impulsado por IA. LLM contra LLM: observa cómo dos modelos de IA elaboran estrategias y compiten de forma autónoma.

Cuando un jugador elige una celda objetivo, los dos robots, ubicados junto a un tablero de tres en raya, responden a las órdenes ejecutando movimientos precisos para colocar marcadores X u O. El siguiente vídeo muestra esto en acción.

Descripción general de la solución

RoboTic-Tac-Toe presenta una integración perfecta de los servicios de AWS, lo que alivia la necesidad de secuencias preprogramadas. En cambio, la IA genera dinámicamente instrucciones descriptivas en tiempo real. El siguiente diagrama describe la arquitectura construida en AWS IoT Core, que permite la comunicación entre los robots controlados por Raspberry Pi y la nube.

La solución utiliza los siguientes servicios clave:

Hardware y software

La configuración física del proyecto incluye un tablero de tres en raya con indicadores LED para resaltar las ubicaciones de X y O. Los dos robots (modelos de juguete modificados) operan a través de controladores Raspberry Pi equipados con módulos de infrarrojos y RF. Una cámara Raspberry Pi montada permite el análisis basado en la visión, capturando el estado de la placa y transmitiendo datos para su posterior procesamiento de visión por computadora. Además, un controlador de hardware dedicado actúa como un dispositivo IoT que se conecta a AWS IoT Core, lo que promueve interacciones fluidas en el juego.

En el lado del software, AWS Lambda se encarga de invocar al supervisor Strands Agent, para la orquestación y la lógica central del juego. Las capacidades de visión por computadora, impulsadas por OpenCV, analizan el diseño de la placa y potencian movimientos precisos del robot. Los agentes de Amazon Bedrock organizan tareas para generar planes de movimiento y estrategias de juego.

Agentes de Strands en acción

Los agentes de Strands automatizan tareas para los usuarios de su aplicación orquestando interacciones entre el modelo básico (FM), fuentes de datos, aplicaciones de software y conversaciones de usuarios.

Agente supervisor

El Agente Supervisor actúa como un orquestador que gestiona tanto el Agente de Movimiento como el Agente de Juego, coordinando y agilizando las decisiones en todo el sistema. Este proceso consta de los siguientes pasos:

El agente recibe instrucciones de alto nivel o eventos de juego (por ejemplo, “El jugador X se movió a 2B, genera la respuesta del robot”) y determina qué agente especializado (Agente de movimiento o Agente de juego) debe ser invocado. La función Supervisor AWS Lambda actúa como controlador central. Cuando se activa, analiza la solicitud entrante, valida el contexto y luego enruta la solicitud al Agente de Strands apropiado. El seguimiento está habilitado para todo el flujo de trabajo para permitir la supervisión y la depuración. Dependiendo del tipo de solicitud: si se trata de actualizar o analizar el estado del juego, el Supervisor invoca al Agente del Juego, que recupera el estado del tablero y genera el siguiente movimiento impulsado por la IA. Si se trata de navegación física del robot, el Supervisor invoca al Agente de Movimiento, que produce las instrucciones de movimiento en código Python. El Agente Supervisor consolida las respuestas de los agentes subyacentes y las estructura en un formato de salida unificado. Esto permite coherencia ya sea que el resultado sea una orden del robot, un movimiento del juego o una combinación de ambos. Las interacciones, incluidas las rutas de decisión y los resultados finales, se registran en un depósito de S3. Este mecanismo de registro proporciona trazabilidad entre múltiples agentes y admite el manejo de errores al devolver mensajes de error estructurados cuando surgen problemas.

Este módulo proporciona una capa de gobernanza sobre el entorno impulsado por IA, lo que permite una orquestación escalable entre agentes. Al dirigir solicitudes de manera inteligente y unificar respuestas, el Agente Supervisor facilita una ejecución confiable, un monitoreo simplificado y una experiencia de usuario mejorada.

Mover agente

Move Agent genera código Python paso a paso. Este proceso consta de los siguientes pasos:

El agente recibe una posición de inicio y destino en una cuadrícula (por ejemplo, “3A a 4B Norte”), determina los movimientos necesarios y envía comandos al robot apropiado. La función LLM Navigator AWS Lambda genera instrucciones de movimiento para robots que utilizan Strands Agents. Cuando se activa, recibe una solicitud que contiene una ID de sesión y un texto de entrada que especifica la posición inicial y el destino del robot. Luego, la función invoca al agente Strands y envía la solicitud junto con el seguimiento habilitado para permitir la depuración. La respuesta del agente consiste en órdenes de movimiento como girar y avanzar en centímetros. Estos comandos se procesan y registran en un depósito de S3 en un archivo CSV. Si el archivo de registro existe, se agregan nuevas entradas. De lo contrario, se crea un nuevo archivo. La función devuelve una respuesta JSON que contiene las instrucciones generadas y el tiempo necesario para ejecutar la solicitud. Si se produce un error, se devuelve un mensaje de error estructurado.

Este módulo proporciona una navegación eficiente y rastreable para robots mediante el uso de generación de instrucciones impulsada por IA y al mismo tiempo mantiene un mecanismo de registro sólido para monitoreo y depuración.

Agente de juego

El Agente de Juego funciona como un oponente, capaz de jugar contra usuarios humanos. Para mejorar la accesibilidad, los jugadores utilizan un portal web compatible con dispositivos móviles para interactuar con el juego, que incluye un panel de administración para administrar partidas impulsadas por IA. El reproductor LLM es una aplicación sin servidor que combina AWS Lambda, Amazon DynamoDB y Strands Agent para gestionar y automatizar los movimientos. Realiza un seguimiento del progreso del juego almacenando el historial de movimientos en una tabla de Amazon DynamoDB, lo que le permite reconstruir el estado actual del tablero cuando sea necesario. El proceso de juego consta de los siguientes pasos:

Cuando un jugador hace un movimiento, el supervisor Strands Agent recupera esta función de estado y luego llama a la función Strands Agent para generar el siguiente movimiento. La selección del agente depende del marcador del jugador (‘X’ u ‘O’), asegurándose de que se utilice el modelo correcto para la toma de decisiones. El agente procesa el tablero de juego actual como entrada y devuelve el siguiente movimiento recomendado a través de un flujo de eventos. Todo el flujo de trabajo está orquestado por el supervisor Strands Agent. Este agente recibe solicitudes de API, valida entradas, recupera el estado del tablero, invoca el modelo LLM y devuelve una respuesta estructurada que contiene el estado actualizado del juego.

Este sistema permite un juego en tiempo real impulsado por IA, lo que hace posible que los jugadores compitan contra un oponente inteligente impulsado por LLM.

Impulsando la navegación robótica con visión por computadora

En nuestro proyecto RoboTic-Tac-Toe, la visión por computadora juega un papel crucial en la producción de movimientos precisos del robot y la precisión del juego. Veamos cómo implementamos la solución utilizando los servicios de AWS y técnicas avanzadas de visión por computadora. Nuestra configuración incluye una cámara Raspberry Pi montada sobre el tablero de juego, que monitorea continuamente las posiciones y movimientos de los robots. La cámara captura imágenes que se cargan automáticamente en Amazon S3, formando la base de nuestro proceso de procesamiento de visión.

Utilizamos el Análisis de Componentes Principales (PCA) para detectar y rastrear con precisión la orientación y posición del robot en el tablero de juego. Esta técnica ayuda a reducir la dimensionalidad manteniendo al mismo tiempo las características esenciales para el seguimiento del robot. El ángulo de orientación se calcula en función de los componentes principales de las características visuales del robot.

Nuestro módulo OpenCV está en contenedores y se implementa como un punto final de Amazon SageMaker. Procesa imágenes almacenadas en Amazon S3 para determinar lo siguiente:

Posicionamiento preciso del robot en el tablero de juego Ángulos de orientación actuales Validación de movimiento

Una función AWS Lambda dedicada organiza el flujo de trabajo de procesamiento de visión. Maneja lo siguiente:

Invocación de punto final de SageMaker Procesamiento de resultados de análisis de visión Actualizaciones de posición y orientación en tiempo real

Este sistema de visión por computadora facilita la navegación precisa del robot y el seguimiento del estado del juego, lo que contribuye a una experiencia de juego perfecta en RoboTic-Tac-Toe. La combinación de PCA para la detección de orientación, OpenCV para el procesamiento de imágenes y los servicios de AWS para la implementación ayuda a crear una solución de visión por computadora sólida y escalable.

Conclusión

RoboTic-Tac-Toe muestra cómo la IA, la robótica y la computación en la nube pueden converger para crear experiencias interactivas. Este proyecto destaca el potencial de AWS IoT, el aprendizaje automático (ML) y la IA generativa en los juegos, la educación y más. A medida que la robótica impulsada por la IA continúa evolucionando, RoboTic-Tac-Toe sirve como un vistazo al futuro de los juegos inteligentes e interactivos.

Estén atentos a futuras mejoras, modos de juego ampliados e interacciones impulsadas por IA aún más atractivas.

Sobre los autores

Georges Hamieh es gerente técnico senior de cuentas en Amazon Web Services, especializado en datos e inteligencia artificial. Apasionado por la innovación y la tecnología, se asocia con clientes para acelerar su transformación digital y su adopción de la nube. Georges, un orador público y mentor experimentado, disfruta capturar la vida a través de la fotografía y explorar nuevos destinos en viajes por carretera con su familia.

Mohamed Salah es arquitecto senior de soluciones en Amazon Web Services y brinda soporte a clientes de Medio Oriente y África del Norte en la creación de soluciones en la nube escalables e inteligentes. Le apasiona la IA generativa, los gemelos digitales y ayudar a las organizaciones a convertir la innovación en impacto. Fuera del trabajo, a Mohamed le gusta jugar a la PlayStation, construir sets de LEGO y ver películas con su familia.

Saddam Hussain es arquitecto senior de soluciones en Amazon Web Services y se especializa en las áreas de práctica aeroespacial, IA generativa e innovación y transformación. A partir del viaje pionero de Amazon.com en IA/ML e IA generativa, ayuda a las organizaciones a comprender metodologías comprobadas y mejores prácticas que se han extendido a millones de clientes. Su principal objetivo es ayudar a los clientes del sector público de los Emiratos Árabes Unidos a innovar en AWS, guiándolos a través del marco integral de adopción de la nube (CAF) para adoptar estratégicamente tecnologías de vanguardia y al mismo tiempo desarrollar capacidades sostenibles.

Dr. Omer Dawelbeit es arquitecto principal de soluciones en AWS. Le apasiona abordar desafíos tecnológicos complejos y trabajar en estrecha colaboración con los clientes para diseñar e implementar soluciones escalables y de alto impacto. Omer tiene más de dos décadas de experiencia en servicios financieros, sector público y telecomunicaciones en nuevas empresas, empresas y transformaciones tecnológicas a gran escala.