Uso de Strands Agents para crear una solución multiagente con Meta's Llama 4 y Amazon Bedrock

Las soluciones multiagente, en las que redes de agentes colaboran, se coordinan y razonan juntos, están cambiando la forma en que abordamos los desafíos del mundo real. Las empresas gestionan entornos con múltiples fuentes de datos, objetivos cambiantes y diversas limitaciones. Aquí es donde brillan las arquitecturas multiagente. Al empoderar a múltiples agentes, cada uno de los cuales tiene herramientas, memoria o perspectivas especializadas para interactuar y razonar como colectivo, las organizaciones desbloquean nuevas y poderosas capacidades:

Escalabilidad: los marcos multiagente manejan tareas de creciente complejidad, distribuyendo la carga de trabajo de manera inteligente y adaptándose a la escala en tiempo real. Resiliencia: cuando los agentes trabajan juntos, el fallo de uno puede ser compensado o mitigado por otros, creando sistemas robustos y tolerantes a fallos. Especialización: los agentes individuales se destacan en dominios específicos (como finanzas, transformación de datos y soporte al usuario) pero pueden cooperar sin problemas para resolver problemas interdisciplinarios. Resolución dinámica de problemas: los sistemas multiagente pueden reconfigurarse, pivotar y responder rápidamente al cambio, lo cual es esencial en entornos comerciales, de seguridad y de operaciones volátiles.

Los lanzamientos recientes en marcos de IA agentes, como Strands Agents, facilitan que los desarrolladores participen en la creación e implementación de soluciones multiagente basadas en modelos. Puede definir indicaciones e integrar conjuntos de herramientas, lo que permite que modelos de lenguaje sólidos razonen, planifiquen e invoquen herramientas de forma autónoma en lugar de depender de flujos de trabajo frágiles y hechos a mano.

En producción, servicios como Amazon Bedrock AgentCore admiten una implementación segura y escalable con características como memoria persistente, integración de identidades y observabilidad de nivel empresarial. Este cambio hacia soluciones de IA colaborativas y multiagente está revolucionando las arquitecturas de software al hacerlas más autónomas, resilientes y adaptables. Desde la resolución de problemas en tiempo real en la infraestructura de la nube hasta la automatización entre equipos en servicios financieros y asistentes basados ​​en chat que coordinan procesos comerciales complejos de varios pasos, las organizaciones que adoptan soluciones multiagente se están posicionando para una mayor agilidad e innovación. Ahora, con marcos abiertos como Strands, cualquiera puede empezar a construir sistemas inteligentes que piensen, interactúen y evolucionen juntos.

En esta publicación, exploramos cómo crear un flujo de trabajo de procesamiento de video de múltiples agentes utilizando Strands Agents, los modelos Llama 4 de Meta y Amazon Bedrock para analizar y comprender automáticamente el contenido de video a través de agentes de IA especializados que trabajan en coordinación. Para mostrar la solución, utilizaremos Amazon SageMaker AI para guiarle a través del código.

Meta's Llama 4: desbloqueando el valor de más de 1 millón de ventanas contextuales

Llama 4 es la última familia de modelos de lenguaje grande (LLM) de Meta que se destaca por sus capacidades de ventana de contexto e inteligencia multimodal. Ambos modelos utilizan una arquitectura de combinación de expertos (MoE) para lograr eficiencia, están diseñados para entradas multimodales y están optimizados para impulsar sistemas agentes y flujos de trabajo complejos. La variante insignia, Llama 4 Scout de Meta, admite una ventana de contexto de 10 millones de tokens (una primicia en la industria) que permite al modelo procesar y razonar grandes cantidades de datos en un solo mensaje.

Esto admite aplicaciones como resumir bibliotecas enteras de libros, analizar bases de código masivas, realizar investigaciones holísticas en miles de documentos y mantener un contexto de conversación profundo y persistente a lo largo de interacciones prolongadas. La variante Llama 4 Maverick también ofrece una ventana de 1 millón de tokens, lo que la hace adecuada para tareas exigentes de lenguaje, visión y documentos cruzados. Estas ventanas de contexto ultralargas abren nuevas posibilidades para resúmenes avanzados, retención de memoria y flujos de trabajo complejos de varios pasos, posicionando a Llama 4 de Meta como una solución versátil para aplicaciones de IA de nivel empresarial y de investigación.

Nombre del modelo Ventana contextual Capacidades clave y casos de uso Meta's Llama 4 Scout 10 millones de tokens (hasta 3,5 millones usando Amazon Bedrock) Procesamiento de documentos ultralargo, ingestión de todo el libro o base de código, resumen a gran escala, amplia memoria de diálogo, investigación avanzada Meta's Llama 4 Maverick 1M tokens Tareas multimodales de contexto grande, comprensión avanzada de documentos e imágenes, análisis de código, preguntas y respuestas integrales, resumen sólido

Descripción general de la solución

Esta publicación demuestra cómo crear un flujo de trabajo de procesamiento de video de múltiples agentes utilizando el SDK de Strands Agents, Llama 4 de Meta con sus capacidades multimodales y ventana de contexto, y la infraestructura escalable de Amazon Bedrock. Aunque esta publicación se centra principalmente en la creación de agentes especializados para crear esta solución de análisis de video, las prácticas de creación de un flujo de trabajo de múltiples agentes se pueden utilizar para crear su propia solución automatizada y adaptable a nivel empresarial.

Para escalar, este enfoque se extiende naturalmente para manejar cargas de trabajo más grandes y diversas, como el procesamiento de transmisiones de video desde millones de dispositivos conectados en ciudades inteligentes, la automatización industrial para el mantenimiento predictivo a través del análisis continuo de datos de sensores y videos, sistemas de vigilancia en tiempo real en múltiples ubicaciones o compañías de medios que administran vastas bibliotecas para indexación y recuperación de contenido. El uso de la integración integrada de Strands Agents con los servicios de Amazon Web Services (AWS) y la infraestructura de inteligencia artificial administrada de Amazon Bedrock significa que sus flujos de trabajo de múltiples agentes pueden escalar elásticamente, distribuir tareas de manera eficiente y mantener una alta disponibilidad y tolerancia a fallas. Puede crear flujos de trabajo complejos de varios pasos a través de fuentes de datos y casos de uso heterogéneos, desde análisis de video en vivo hasta experiencias multimedia personalizadas, mientras mantiene la agilidad para adaptarse y expandirse a medida que evolucionan las necesidades comerciales.

Introducción a los flujos de trabajo agentes utilizando Strands Agents

Esta publicación muestra una solución de procesamiento de video que implementa un flujo de trabajo de agentes utilizando seis agentes especializados. Cada agente desempeña una función específica y pasa su resultado al siguiente agente para completar tareas de varios pasos en el proceso. Esto se lleva a cabo mediante el mismo análisis que la arquitectura de investigación profunda, en la que hay un agente orquestador que coordina el proceso de los otros agentes que trabajan juntos en conjunto. Este concepto en Strands Agents se llama Agentes como herramientas.

Este patrón arquitectónico en los sistemas de IA permite que los agentes de IA especializados se envuelvan como funciones (herramientas) invocables que pueden ser utilizadas por otros agentes. Este flujo de trabajo agente tiene los siguientes agentes especializados:

Llama4_coordinator_agent: tiene acceso a los otros agentes e inicia el proceso desde el agente de extracción de cuadros hasta la generación de resumen s3_frame_extraction_agent: utiliza la biblioteca OpenCV para extraer cuadros significativos de videos, manejando la complejidad de las operaciones de archivos de video s3_visual_analysis_agent: tiene las herramientas necesarias que procesan los cuadros analizando cada imagen y almacenándola como un archivo JSON en el depósito proporcionado por Amazon Simple Storage Service (Amazon S3) retrieve_json_agent: Recupera el análisis de los fotogramas en forma de archivo JSON c_temporal_analysis_agent – Agente de IA que se especializa en secuencias temporales en fotogramas de video analizando imágenes cronológicamente. resumen_generación_agent – Se especializa en crear un resumen del análisis temporal de las imágenes

Modularizando la solución de análisis de vídeo con Agentes como Herramientas

El proceso comienza con el agente orquestador, implementado utilizando Meta's Llama 4, que coordina la comunicación y la delegación de tareas entre agentes especializados. Este agente central inicia y monitorea cada paso del proceso de procesamiento de video. Al utilizar el patrón Agentes como herramientas en Strands Agents, cada agente especializado se envuelve como una función (herramienta) invocable, lo que permite una comunicación perfecta entre agentes y una orquestación modular. Este patrón de delegación jerárquica permite al agente coordinador invocar dinámicamente agentes de dominios específicos, lo que refleja cómo funcionan los equipos humanos colaborativos.

Personalización: el indicador del sistema de cada agente se puede ajustar de forma independiente para lograr un rendimiento óptimo en su tarea especializada. Separación de preocupaciones: los agentes se centran en lo que mejor saben hacer, lo que hace que el sistema sea más sencillo de desarrollar y mantener. Flexibilidad del flujo de trabajo: el agente coordinador puede organizar componentes en diferentes secuencias para diversos casos de uso. Escalabilidad: los componentes se pueden optimizar individualmente en función de sus requisitos de rendimiento específicos. Extensibilidad: se pueden agregar nuevas capacidades mediante la introducción de nuevos agentes especializados sin alterar los existentes.

Al convertir a los agentes en herramientas, creamos bloques de construcción que se pueden combinar para resolver tareas complejas de comprensión de videos, demostrando cómo se pueden usar Strands Agents para respaldar sistemas de múltiples agentes con razonamiento especializado basado en LLM. Examinemos el agente_coordinador:

def new_llama4_coordinator_agent() -> Agente: """ Constructor de fábrica: crea una NUEVA instancia de agente con un historial de conversación nuevo. Utilice esto por solicitud de video para un aislamiento limpio. """ return Agente( system_prompt="""Usted es un coordinador de procesamiento de video. Su trabajo es procesar videos paso a paso. ##Cuando se le solicite procesar un video: 1. Extraiga cuadros de video S3 usando run_frame_extraction 2. Use la ubicación del cuadro del paso 1 a run_visual_analysis 3. ESPERE a que el análisis visual complete el envío del json a s3 4. Utilice el agente retrieve_json para extraer el json del paso 3 5. Utilice el resultado de texto de retrieve_json_from_s3 pasándolo a run_temporal_reasoning 6. Pase el resultado del razonamiento temporal a run_summary_generación 7. Cargue el análisis generado en run_summary_generación y devuelva la ubicación de s3 ##IMPORTANTE: – Llamar UNA herramienta a la vez y espere el resultado – Utilice el resultado EXACTO del paso anterior como entrada – NO llame a varias herramientas simultáneamente – NO devuelva JSON sin formato o sintaxis de llamada de función """, model=bedrock_model, tools=[ run_frame_extraction, run_visual_analysis, run_temporal_reasoning, run_summary_generation, upload_analysis_results, retrieve_json_from_s3, ],)

Llamar a coordinador_agent activa el flujo de trabajo del agente para llamar a s3_frame_extraction_agent. Este agente especializado tiene las herramientas necesarias para extraer fotogramas clave del vídeo de entrada utilizando OpenCV, cargar los fotogramas en Amazon S3 e identificar la ruta de la carpeta para pasarla al agente run_visual_analysis. El siguiente diagrama muestra este flujo.

Después de que los fotogramas se almacenen en Amazon S3, visual_analysis_agent tendrá acceso a herramientas que enumeran los fotogramas de la carpeta S3, usará Meta's Llama en Amazon Bedrock para procesar las imágenes y cargará el análisis como un archivo JSON en Amazon S3.

El siguiente código lo guiará a través de las diferentes partes clave de los diferentes agentes. El siguiente ejemplo muestra visual_analysis_agent:

@tool def upload_local_json_to_s3(s3_video_path: str, local_filename: str = "visual_analysis_results.json") -> str: """Cargar archivo JSON local al depósito S3 en la carpeta de videos""" intente: s3_parts = [parte por parte en s3_video_path.replace('s3://', '').split('/') if part bucket = s3_partes[0]video_folder = s3_parts[-1] si '_' en video_folder: base_video_name = video_folder.split('_')[0]else: base_video_name = video_folder random_num = randint(1000, 9999) s3_key = f"videos/{base_video_name}/{random_num}_{local_filename}" s3_client = boto3.client('s3') s3_client.upload_file(local_filename, bucket, s3_key) return f"s3://{bucket}/{s3_key}" excepto Excepción como e: return f"Error al cargar el archivo: {str(e)}" s_visual_analysis_agent = Agent( system_prompt="""Usted es un agente de análisis de imágenes que procesa fotogramas de depósitos S3. Su flujo de trabajo: 1. Utilice las herramientas disponibles para analizar imágenes 2. Utilice la carpeta de ruta del vídeo para colocar los resultados del análisis IMPORTANTE: – NO genere, escriba ni devuelva ningún código – Enfóquese en que describe lo que ve en las imágenes – Las imágenes cambian de tamaño automáticamente si son demasiado grandes – Coloque etiquetas numeradas delante de cada descripción de imagen (p. ej., "1. ", "2. ", etc.) – Guarde siempre los resultados del análisis localmente primero y luego cárguelos en S3 Formato de retorno: el uri de la herramienta upload_local_json_to_s3""", model=bedrock_model, callback_handler=None, tools=[list_s3_frames, analice_image, analice_all_frames, analizar_frames_batch, subir_local_json_to_s3],)

Luego de cargar el JSON en Amazon S3, hay un agente especializado que recupera el archivo JSON de Amazon S3 y analiza el texto:

@tool def Process_s3_analysis_json(s3_uri: str) -> str: """Recuperar JSON de S3 y extraer solo el texto de análisis""" try: # Analizar URI de S3 y descargar JSON s3_parts = s3_uri.replace('s3://', ​​'').split('/', 1) bucket = s3_parts[0]clave = s3_parts[1]s3_client = boto3.client('s3') respuesta = s3_client.get_object(Bucket=bucket, Key=key) json_content = respuesta['Body'].read().decode('utf-8') # Analiza y extrae datos de texto = json.loads(json_content) # Maneja ambos formatos si hay 'análisis' en datos: análisis = datos['analyses'] elif 'sesiones' en datos: análisis = [sesión['datos'] para sesión en datos['sesiones'] si 'datos' en sesión] else: return "Error: No se encontró el campo 'análisis' o 'sesiones'" # Extraer solo texto text_only =[]para análisis en análisis: si 'análisis' en análisis: texto = análisis['análisis'] si no text.startswith("Failed:"): text_only.append(text) # Limpiar archivo local local_file = "visual_analysis_results.json" if os.path.exists(local_file): os.remove(local_file) return "n".join(text_only) excepto Excepción como e: return f"Error al procesar {s3_uri}: {str(e)}" bedrock_model = BedrockModel( model_id='us.meta.llama4-maverick-17b-instruct-v1:0', region_name=region, streaming=False, Temperature=0 ) retrieve_json_agent = Agent( system_prompt="Llame a process_s3_analysis_json con el URI de S3. Su respuesta debe ser el texto exacto salida de la herramienta, nada más.", model=bedrock_model, callback_handler=None, tools=[process_s3_analysis_json],)

Esta salida luego se enviará a

el temporal_analysis_agent para obtener conocimiento temporal de las secuencias en los cuadros de video y proporcionar una descripción detallada del contenido visual.

Una vez generado el resultado del análisis temporal, se iniciará el resumen_generación_agente para proporcionar el resumen final.

Requisitos previos y pasos de configuración

Para ejecutar la solución en la computadora portátil o en la interfaz de usuario de Gradio, necesita lo siguiente:

Una cuenta de AWS con acceso a Amazon Bedrock.

Para copiar el proyecto,

Clona el repositorio github Meta-LLama-on-AWS:

clon de git https://github.com/aws-samples/Meta-Llama-on-AWS.git cd agentes/strands/Bedrock/multi-agent-video-processing/

En tu terminal, instala las dependencias correctas:

instalación de pip -r requisitos.txt

Implementar una aplicación de procesamiento de video en Gradio

Para implementar la aplicación de procesamiento de video en Gradio, siga estas instrucciones de inicio de la aplicación:

Para iniciar la terminal Python, abra su interfaz de línea de comandos Python3. Para instalar dependencias, ejecute los comandos pip install para las bibliotecas requeridas (consulte la sección de instalación de la biblioteca anterior). Para ejecutar la aplicación, ejecute el comando python3 gradio_app.py. Para acceder a la interfaz, elija el enlace alojado generado que se muestra en la terminal. Para iniciar el procesamiento de video, cargue su archivo de video a través de la interfaz y luego elija Ejecutar.

El asistente de análisis de video Llama de Meta proporciona el siguiente resultado para el video buglifeflik.mp4 proporcionado en el repositorio de GitHub:

Llama Video Analysis Log Flik se muestra determinado frente a un árbol. Interactúa con otros insectos. Flik reúne elementos y construye un dispositivo. Presenta el invento a un grupo de insectos. El grupo reacciona con escepticismo. Flik es perseguido por un grupo de pájaros. Elementos visuales clave: Los elementos visuales clave incluyen la expresión decidida de Flik, ​​su interacción con otros insectos, los elementos que recolecta, el complejo dispositivo que construye, la reacción escéptica del grupo y la escena caótica de Flik siendo perseguido por pájaros. Narrativa general: La narrativa sigue el viaje de Flik mientras prepara y presenta un invento, enfrenta el rechazo y experimenta una consecuencia dramática. La historia está impulsada por los personajes, muestra las acciones de Flik y sus resultados, y se desarrolla hasta llegar a un evento culminante.

La siguiente captura de pantalla muestra la interfaz de usuario de Gradio con esta salida.

Ejecutando en el cuaderno Jupyter

Después de importar las bibliotecas necesarias, debe cargar manualmente su video en su depósito S3:

def upload_to_sagemaker_bucket(local_video_path, base_folder="videos/"): sagemaker = boto3.client('sagemaker') s3 = boto3.client('s3') # Obtener el depósito predeterminado de SageMaker account_id = boto3.client('sts').get_caller_identity()['Cuenta'] región = boto3.Session().region_name bucket_name = f"sagemaker-{region}-{account_id}" # Obtener el nombre del archivo y crear el nombre de la subcarpeta filename = os.path.basename(local_video_path) filename_ without_ext = os.path.splitext(filename)[0]# Cree la ruta S3 completa: videos/filename_ without_ext/filename s3_key = os.path.join(base_folder, filename_ without_ext, filename) # Suba el archivo s3.upload_file(local_video_path, bucket_name, s3_key) s3_uri = f"s3://{bucket_name}/{s3_key}" print(f"Subido a {s3_uri}") s3_folder_path = os.path.join(base_folder, filename_ without_ext) s3_folder_uri = f"s3://{bucket_name}/{s3_folder_path}" return s3_folder_uri # Ejemplo de uso: proporcione aquí la ruta de su video local s3_video_uri = upload_to_sagemaker_bucket(local_video_path)

Después de cargar el video, puede iniciar el flujo de trabajo del agente creando una instancia de un nuevo agente con un historial de conversaciones nuevo:

# Inicie el flujo de trabajo agente = new_llama4_coordinator_agent() video_instruction = f"Procese un video de {s3_video_uri}. Use herramientas en este orden: run_frame_extraction, run_visual_analysis, retrieve_json_from_s3, ejecute temporal_reasoning, run_summary_generation_ upload_analysis_results" respuesta = agente(video_instruction) print(respuesta) Herramienta #1: run_frame_extraction Herramienta n.° 2: run_visual_analysis Herramienta n.° 3: retrieve_json_from_s3 Herramienta n.° 4: run_temporal_reasoning Herramienta n.° 5: run_summary_generación Herramienta n.° 6: run_summary_generación **Qué sucede en el video:** El video sigue a Flik mientras navega a través de una serie de eventos, empezando por ser cauteloso en un entorno natural, buscar ayuda o comunicarse con otros insectos, participar en una discusión o planificación crucial y, finalmente, tomar medidas con el grupo. **Secuencia cronológica de eventos:** La secuencia comienza con Flik siendo cauteloso cerca de un árbol, seguido de él acercándose a un grupo de insectos, luego siendo parte de una reunión o discusión importante, y concluye con Flik y los insectos actuando juntos. **Secuencia de eventos:** 1. Inicialmente se ve a Flik siendo cauteloso en un entorno natural. 2. Luego se acerca a un grupo de insectos, probablemente para comunicarse o buscar ayuda. 3. Se muestra una reunión de insectos con Flik en el centro, lo que indica una discusión o planificación crucial. 4. La escena final muestra a Flik y los insectos en acción, posiblemente ejecutando un plan o enfrentando un desafío. **Elementos visuales clave:** Los elementos visuales clave incluyen la postura inicial cautelosa de Flik, ​​su interacción con otros insectos, la reunión o discusión y la escena de acción final, destacando la progresión de la soledad a la acción colectiva. **Narrativa general:** La narrativa sigue el viaje de Flik desde la precaución y la búsqueda de ayuda hasta la participación en una discusión crucial y, finalmente, la acción con un grupo de insectos, lo que sugiere un arco argumental que implica progresión, planificación y acción colectiva. Herramienta n.° 7: upload_analysis_results El procesamiento del video está completo. Los resultados del análisis final se guardan en s3://sagemaker-us-west-2-333633606362/videos/buglifeflik/analysis_results_20250818_190012.json. El procesamiento del video está completo. Los resultados del análisis final se guardan en s3://sagemaker-us-west-2-333633606362/videos/buglifeflik/analysis_results_20250818_190012.json.

Limpieza

Para evitar incurrir en cargos futuros innecesarios, limpie los recursos que creó como parte de esta solución: Para eliminar los archivos de Amazon S3:

Abra la Consola de administración de AWS Navegue hasta Amazon S3 Busque y seleccione su depósito de Amazon SageMaker Seleccione los archivos de video que cargó Elija Eliminar y confirme

Para detener y eliminar el cuaderno de SageMaker:

Vaya a Amazon SageMaker AI en la consola de administración de AWS Elija instancias de Notebook Seleccione su notebook Elija Detener si se está ejecutando Después de que se haya detenido, elija Eliminar

Conclusión

Esta publicación destaca cómo la combinación del SDK de Strands Agents con los modelos Llama 4 de Meta y la infraestructura de Amazon Bedrock permite crear flujos de trabajo de procesamiento de video avanzados con múltiples agentes. Al utilizar agentes altamente especializados que se comunican y colaboran a través del patrón Agentes como herramientas, los desarrolladores pueden modularizar tareas complejas como la extracción de cuadros, el análisis visual, el razonamiento temporal y el resumen. Esta separación de preocupaciones mejora la capacidad de mantenimiento, la personalización y la escalabilidad, al tiempo que permite una integración perfecta entre los servicios de AWS. Alentamos a los desarrolladores a explorar y ampliar esta arquitectura agregando nuevos agentes especializados y adaptando los flujos de trabajo a diversos casos de uso, desde ciudades inteligentes y automatización industrial hasta gestión de contenido multimedia. La combinación de Strands Agents, Meta's Llama 4 y Amazon Bedrock sienta una base sólida para crear soluciones de IA autónomas y resilientes que aborden la complejidad de los entornos empresariales modernos.

Para comenzar, visite el repositorio oficial de GitHub para el proyecto de agentes Meta-Llama-on-AWS para obtener ejemplos de código e instrucciones de implementación. Para obtener más información sobre la creación con Strands Agents, explore la documentación de Strands Agents, que ofrece un enfoque basado en el código para integrar agentes modulares de IA. Para un contexto más amplio sobre la orquestación y arquitecturas de IA de múltiples agentes, las publicaciones del blog de AWS sobre interoperabilidad de agentes y marcos de agentes autónomos brindan una valiosa orientación para dar forma al futuro de los sistemas inteligentes.

Sobre los autores

Sebastián Bustillo es arquitecto de soluciones empresariales en Amazon Web Services (AWS), trabaja con aerolíneas y es miembro activo de la comunidad de campo técnico de AI/ML. En AWS, ayuda a los clientes a desbloquear valor empresarial a través de la IA. Fuera del trabajo, le gusta pasar tiempo con su familia y explorar el aire libre. También le apasiona preparar cafés especiales.