Mi primer intento de crear un agente de planificación de viajes se parecía exactamente a la mayoría de los primeros prototipos: un modelo grande, algunas herramientas y un mensaje de sistema largo. Funcionó bien hasta el momento en que apareció la complejidad del mundo real. Los vuelos provenían de una API limpia, los hoteles vivían detrás de una interfaz de usuario web cambiante y el modelo seguía mezclando instrucciones, olvidando el contexto o pasos alucinantes. Fue entonces cuando se hizo evidente: el agente único no era la solución, sino el cuello de botella.
Encontrar una solución significó dividir el trabajo en lugar de intentar arreglar el mensaje. Esta publicación explica cómo funciona en la práctica la colaboración entre agentes en Amazon Bedrock, utilizando Amazon Nova 2 Lite para la planificación y Amazon Nova Act para la interacción del navegador, para convertir una configuración frágil de un solo agente en un sistema predecible de múltiples agentes.
Descripción general de la solución
El sistema está construido como un pequeño grupo de agentes que trabajan juntos, como se muestra en el siguiente diagrama. Un agente planifica el trabajo y habla con el usuario. Los otros agentes se encargan de tareas específicas, como la búsqueda de vuelos o de hoteles. Se comunican a través de mensajes simples, de modo que cada agente se mantiene concentrado y es sencillo razonar sobre la tarea.
Cuando vi dónde se rompía el diseño de agente único, el patrón era obvio: el agente no estaba luchando porque la tarea fuera difícil, sino porque las tareas eran fundamentalmente diferentes. La búsqueda de vuelos está estructurada y predecible. La búsqueda de hoteles es confusa, visual y llena de elementos dinámicos. Obligar a un modelo a hacer malabarismos con ambos era como pedirle al mismo ingeniero que escribiera API de backend y también hiciera clic manualmente en un sitio web en tiempo real. Y cuanto más intentaba parchearlo con indicaciones, más herramientas y más lógica alternativa, peor se ponía. Cuando un solo agente está sobrecargado con demasiadas responsabilidades, se ralentiza, pierde contexto, toma decisiones inconsistentes y, finalmente, colapsa bajo su propio peso. El problema estaba en el diseño y tratar de solucionarlo mediante indicaciones no funcionaría. La solución fue dividir el trabajo entre tres agentes y dejar que cada uno se centrara en una única responsabilidad. El agente de viajes se encargaba de la intención y la planificación del usuario. El agente de vuelo habló con la API de vuelo estructurado. Y el agente hotelero utilizó la automatización del navegador para navegar por sitios de hoteles reales. En lugar de un modelo sobrecargado, cada agente hizo una cosa bien y se coordinaron a través de una capa simple de paso de mensajes, por lo que el flujo de trabajo aún parecía fluido desde el exterior. Cada agente tenía un trabajo muy claro. El agente de viajes fue el coordinador que interpretó la solicitud, la dividió en pasos y decidió qué agente debía ejecutar cada parte. Flight Agent se centró completamente en llamadas API estructuradas donde los datos eran predecibles. Y el agente hotelero se encargó de las partes complicadas: navegar por páginas web, manejar diseños dinámicos y extraer detalles del hotel de sitios reales. Separar el sistema de esta manera mantuvo la lógica limpia y evitó que los agentes individuales se sobrecargaran nuevamente.
Para que esta configuración funcionara, los agentes necesitaban una forma sencilla de comunicarse entre sí. El agente de viajes tenía que enviar una solicitud clara al agente de vuelos, esperar los resultados y luego activar al agente del hotel con el siguiente paso. No necesitábamos nada sofisticado, solo un formato de mensaje liviano que los agentes pudieran transmitir para que cada uno supiera qué hacer a continuación. Cuando se estableció ese bucle de comunicación, todo el flujo de trabajo finalmente se sintió coordinado en lugar de páginas caóticas con diseños dinámicos y sin API públicas. Usar el mismo agente para manejar ambos a menudo conduce a una sobrecarga de herramientas, instrucciones confusas y un mayor riesgo de alucinaciones.
Descripción general de la implementación
Ahora que la arquitectura estaba clara, llegó el momento de construir el sistema. Aquí es donde finalmente entran en juego las herramientas detrás de cada agente. Tanto el agente de viajes como el agente de vuelos utilizan Amazon Nova 2 Lite para razonar y planificar, y el agente de vuelos también llama a una API de vuelo estructurada para recuperar datos reales. El agente hotelero se basa en la Ley Amazon Nova para automatizar las interacciones del navegador cuando no existe una API. Los tres agentes se comunican a través de un sencillo patrón de paso de mensajes de agente a agente (A2A), donde los agentes intercambian mensajes pequeños y estructurados para coordinar su trabajo, lo que mantiene el flujo de trabajo predecible incluso cuando cada agente se ejecuta en un entorno de ejecución diferente. En un sistema multiagente, la coordinación es tan importante como la especialización. Los agentes necesitan una forma estructurada y predecible de intercambiar objetivos, compartir estados y desencadenar comportamientos, especialmente cuando colaboran en una tarea como planificar un viaje.
Implementación de agente de viajes (Amazon Nova 2 Lite)
El agente de viajes es el organizador de todo el flujo de trabajo. Recibe la solicitud del usuario, interpreta la intención mediante Amazon Nova 2 Lite y decide a qué agente llamar a continuación. Nova 2 Lite hace el razonamiento pesado aquí: divide la entrada en pasos, identifica cuándo activar el Agente de vuelo o el Agente de hotel y realiza un seguimiento del plan general. Debido a que el agente de viajes no toca los sistemas externos directamente, su único trabajo es pensar con claridad y enrutar mensajes utilizando A2A.
El siguiente ejemplo de código es una versión simplificada de cómo se inicializa el Agente de viajes:
En la práctica, el agente de viajes recibe una única solicitud en lenguaje natural, como "Búscame vuelos de Nueva York a Tokio el 10 de julio y un hotel hasta el 15 de julio". A partir de ahí, Amazon Nova 2 Lite hace el razonamiento complejo: reconoce que se requieren dos tareas separadas, genera un plan claro, envía un mensaje al agente de vuelo, espera los resultados y luego activa al agente del hotel con la siguiente instrucción. Finalmente, reúne ambos resultados en una respuesta coherente. Esto mantiene la lógica de orquestación limpia y fluida. Nova 2 Lite actúa efectivamente como el cerebro del flujo de trabajo y los agentes especializados se encargan de la ejecución real.
Implementación de agente de vuelo (Amazon Nova 2 Lite y API)
El agente de vuelo tiene un trabajo mucho más limitado: convertir una solicitud estructurada en opciones de vuelo reales. Utiliza Amazon Nova 2 Lite para el razonamiento ligero que necesita para validar entradas, formatear la búsqueda y decidir si llamar a la API de vuelo en vivo o recurrir a datos simulados cuando las credenciales no están disponibles. Después de realizar la llamada API, el agente devuelve una respuesta JSON limpia y predecible al agente de viajes a través de A2A.
El siguiente ejemplo de código muestra una versión simplificada de la herramienta de búsqueda de vuelos. La implementación completa, que incluye OAuth, lógica alternativa y manejo de códigos de aeropuerto, está disponible en el repositorio de Agente a Agente con Amazon Nova GitHub:
Debido a que este agente maneja datos limpios y estructurados, la carga de razonamiento es liviana y el trabajo de Amazon Nova 2 Lite consiste principalmente en elegir la ruta de ejecución correcta y normalizar el resultado. Esto mantiene todo el proceso predecible y evita incorporar lógica específica de API dentro del agente de viajes.
Implementación de agentes hoteleros (Amazon Nova Act)
Los hoteles no se parecen en nada a los vuelos. No existe una API limpia a la que puedas llamar y la mayoría de los sitios de reservas cargan contenido de maneras que cambian de una visita a la siguiente. Aquí es donde entra en juego Amazon Nova Act. El agente hotelero utiliza Nova Act para controlar un navegador real y seguir instrucciones en lenguaje natural. En lugar de escribir un código de raspado frágil, el agente le dice a Nova Act lo que necesita, y Nova Act se encarga de la navegación y devuelve datos estructurados.
Aquí hay una versión abreviada de la herramienta:
Y aquí hay un ejemplo simplificado de la respuesta. El código completo, incluido el desplazamiento, los banners de cookies y otros detalles, se encuentra en el repositorio de GitHub de Agente a Agente con Amazon Nova:
El uso de Amazon Nova Act evita que el agente hotelero se rompa cada vez que el sitio cambia su diseño. Y al usarlo, puede evitar escribir su propia lógica de análisis DOM o raspado.
Flujo de mensajes A2A (cómo hablan los agentes)
Ahora que cada agente sabe de qué es responsable, necesita una forma de comunicarse entre sí. Antes de que el agente de viajes comience a enviar trabajo real, primero verifica que los otros agentes estén despiertos llamando a sus puntos finales A2A. También carga la lista de herramientas que cada agente expone para que Nova 2 Lite sepa qué capacidades están disponibles. Una vez hecho esto, el flujo es sencillo. El agente de viajes envía un mensaje al agente de vuelos con los campos que necesita. Cuando el agente de vuelo termina, envía un mensaje de vuelta. Luego, el agente de viajes pasa el siguiente mensaje al agente del hotel. Cada mensaje es un pequeño objeto JSON con elementos como la acción, los datos de entrada y dónde enviar la respuesta.
Ejecución de ejemplo de un extremo a otro
Así es como se ve una ejecución completa. El usuario envía una única solicitud al Agente de Viajes:
Agente de viajes -> Agente de vuelos: el agente de viajes extrae la parte del vuelo de la solicitud y la envía al agente de vuelos. El agente de vuelos ofrece tres vuelos directos y baratos desde JFK a París, incluida la aerolínea, los horarios, el precio y la duración. Agente de viajes -> Agente hotelero: El Agente de viajes envía la parte del hotel de la solicitud al Agente hotelero. El agente hotelero, utilizando Nova Act, comprueba los hoteles de París y devuelve las tres opciones principales con nombres, precios y notas breves. Resultado final para el usuario El agente de viajes combina ambas respuestas y envía un resumen claro que incluye: El vuelo recomendado El hotel recomendado Las fechas de entrada y salida Los precios Una pregunta sobre si reservar
Conclusión
Crear este planificador de viajes con tres agentes pequeños resultó ser mucho más fácil de gestionar que uno grande. Cada agente se concentra en un trabajo y Amazon Nova 2 Lite maneja el pensamiento necesario para avanzar el trabajo de un paso a otro. Amazon Nova Act cubre las partes que no tienen API, como las búsquedas de hoteles, sin escribir código de raspado. El flujo de mensajes A2A mantiene todo conectado pero sigue siendo sencillo.
Esta configuración no está vinculada a los viajes. Las tareas que combinan diferentes conjuntos de habilidades pueden utilizar la misma idea: dejar que un agente planifique el trabajo, dejar que los demás hagan las partes en las que son buenos y pasar pequeños mensajes entre ellos. Hace que el sistema sea fácil de cambiar y explicar.
Si desea probar esto usted mismo, el código completo y los ejemplos se encuentran en el repositorio de GitHub de Agente a Agente con Amazon Nova.
Sobre los autores
Yoav Fishman es un arquitecto de soluciones de AWS con 12 años de experiencia en ingeniería y nube, y se especializa en GenAI, AI agente y ciberseguridad. Él guía a las empresas emergentes, desde las etapas iniciales hasta el crecimiento, en la construcción de arquitecturas seguras y escalables y en la implementación de flujos de IA agente que impulsan el impacto empresarial.
Elior Farajpur es arquitecto de soluciones en AWS con 7 años de experiencia en el mundo de la nube y pasión por la inteligencia artificial y las tecnologías de la nube. Ayuda a las organizaciones a diseñar soluciones innovadoras basadas en la nube que generan valor comercial real.
Dan Kolodny es un arquitecto de soluciones de AWS que se especializa en big data, análisis y GenAI. Le apasiona ayudar a los clientes a adoptar las mejores prácticas, descubrir conocimientos a partir de sus datos y adoptar nuevas tecnologías GenAI.