Skip to content

Clase 5 — Sistemas Multiagente - Clase 5

Clase 5 — Plataforma JADE: Arquitectura, Comunicación y Conceptos de Despliegue

Resumen Ejecutivo

En esta sesión se profundizó en la plataforma JADE (Java Agent DEvelopment Framework), sus orígenes ligados a la estandarización FIPA, y sus principios de diseño arquitectónico. Se abordaron conceptos clave como la comunicación asíncrona entre agentes, el patrón publicación-suscripción, la gestión de estado (stateful vs stateless), y la arquitectura basada en contenedores. Además, se discutieron conceptos modernos relacionados como MCP, A2A, PaaS/SaaS y contenedores efímeros.

Conceptos Clave

  • JADE: Plataforma de middleware en Java (1998) para desarrollo de sistemas multiagente, conforme a especificaciones FIPA. ⚠️ EXAMEN
  • FIPA: Organismo de estandarización cuyas especificaciones JADE implementa para interoperabilidad entre agentes.
  • Comunicación asíncrona: Los agentes se comunican mediante paso de mensajes sin dependencia temporal entre emisor y receptor. ⚠️ EXAMEN
  • Páginas blancas vs páginas amarillas: Dos servicios de directorio distintos en JADE. ⚠️ EXAMEN
  • Publicación-suscripción (pub/sub): Patrón donde un agente se suscribe a eventos y es notificado cuando ocurren, en lugar de hacer polling.
  • Stateful vs Stateless: Agentes con o sin persistencia de estado entre ejecuciones. ⚠️ EXAMEN
  • Contenedor efímero: Entorno de ejecución que se crea, ejecuta y desaparece sin persistir datos.
  • MCP (Model Context Protocol): Protocolo que habilita a un agente el uso de herramientas (tools) internas o externas.
  • A2A (Agent-to-Agent): Protocolo de comunicación directa entre agentes; cuidado con la complejidad al escalar coreografías. ⚠️ EXAMEN

Desarrollo del Temario

1. Origen e Historia de JADE

JADE fue creado en 1998, motivado por la necesidad de validar las especificaciones de FIPA. Lo que comenzó como un proyecto de validación evolucionó a una plataforma de middleware completa gracias a apoyo financiero. Su objetivo: proporcionar servicios fácilmente accesibles tanto para desarrolladores experimentados como novatos, con énfasis en la simplicidad de su API.

JADE se distribuye bajo licencia LGPL, que a diferencia de la GPL, no pone restricciones sobre el software que usa JADE y permite fusionar software propietario con el cubierto por LGPL.

2. Principios de Diseño de Agentes en JADE

Los agentes en JADE siguen estos principios fundamentales:

  • Autonomía y proactividad: Un agente no proporciona callbacks ni referencias de su objeto a otros agentes, evitando que otras entidades co-opten el control de sus servicios. ⚠️ EXAMEN
  • Hilo de ejecución propio: Cada agente tiene su propio hilo, controlando su ciclo de vida y decidiendo autónomamente cuándo realizar acciones.
  • Acoplamiento débil: Los agentes están débilmente acoplados entre sí.
  • Los agentes pueden decir "no": No están obligados a responder a todas las peticiones.

3. Comunicación Asíncrona Basada en Mensajes

La comunicación entre agentes en JADE es asíncrona basada en paso de mensajes. ⚠️ EXAMEN

Características: - No hay dependencia temporal entre emisor y receptor. - El receptor puede no estar disponible cuando el emisor envía el mensaje. - No se necesita la referencia del objeto del agente receptor, solo su identidad (nombre). - El sistema de transporte resuelve identidades en direcciones de transporte. - Se puede definir un conjunto de receptores mediante agrupación intencional o mediante un agente proxy.

Ejemplo: Se puede enviar un mensaje "a todos los agentes que prestan servicio de venta de libros" (agrupación intencional) o decir "propagar este mensaje a todos los agentes en el dominio de casalibro.es" (mediado por proxy).

4. Orquestación vs Coreografía de Agentes

Se distingue entre: - Orquestación: Control centralizado de la ejecución de agentes, puede estar dentro o fuera de la plataforma. - Coreografía: Comunicación agente-agente (A2A) descentralizada; se complica al escalar con muchos agentes. ⚠️ EXAMEN

En entornos reales, suele sacarse la orquestación fuera de la plataforma de runtime para: - Tener control de errores independiente. - Poder relanzar agentes si fallan. - Orquestar diferentes soluciones/plataformas de runtime de agentes.

5. Servicios de Directorio: Páginas Blancas y Páginas Amarillas

JADE implementa dos tipos de directorio: ⚠️ EXAMEN

Servicio Función
Páginas blancas Registra la identidad de cada agente (ID único global + dirección de transporte). Permite localizar agentes.
Páginas amarillas Registra los servicios que los agentes implementan y ofrecen.

Cada agente recibe al crearse: 1. Un identificador único global a toda la plataforma. 2. Una dirección de transporte.

Ambos quedan registrados en el servicio de páginas blancas.

Ejemplo (del profesor): En un sistema corporativo es "súper relevante" tener catalogados todos los agentes, saber cuáles existen, cuáles se han ejecutado y cómo.

6. Patrón Publicación-Suscripción (Pub/Sub)

Dado que los agentes son asíncronos, no se debe hacer polling para saber si terminaron. ⚠️ EXAMEN

En su lugar se usa el patrón pub/sub: 1. Al desarrollar el agente, se le indica que al finalizar deje un mensaje (ej: en un topic de Kafka, una cola MSK). 2. El interesado se suscribe a ese evento. 3. Cuando el agente finaliza, el suscriptor es notificado automáticamente.

Ejemplo: "Le digo al agente en su desarrollo que cuando finalice me deje un mensaje, y yo estoy esperando a que finalice. No tengo que estar haciendo polling continuamente."

7. Agentes Stateful vs Stateless

⚠️ EXAMEN

Tipo Descripción Ventajas Desventajas
Stateless Se ejecuta y devuelve resultado. No guarda memoria entre ejecuciones. Simplicidad, efímero. Si se cae, vuelve al inicio. No aprende de errores previos.
Stateful Gestiona y persiste su estado. Mantiene memoria de ejecuciones anteriores. Recuperación desde punto de fallo. Capacidad de aprender de ejecuciones previas. Mayor complejidad, consumo de recursos.

Dos ventajas clave de tener estado: 1. Recuperación ante fallos: Si una ejecución de 300 pasos falla en el paso 150, puede retomar desde ahí. 2. Aprendizaje contextual: Si un enfoque falló antes, el agente puede intentar una alternativa.

Ejemplo del gazpacho: "Si para hacer un gazpacho necesito pimiento, cebolla y ajo, y en la primera ejecución el agente va a buscar el pimiento en segundo lugar y no lo encuentra, en la siguiente ejecución podrá cambiar el orden: buscar primero el pimiento, luego la cebolla y luego el ajo."

8. Funcionalidades de la Plataforma JADE

JADE proporciona: - Transparencia de red: API independiente de la ubicación del agente. - Sistema distribuido: Se ejecuta sobre múltiples máquinas conectadas en red. - Movilidad del agente: Tanto código como estado pueden migrar entre procesos y máquinas de forma transparente. - Gestión del ciclo de vida: API para controlar agentes local y remotamente. - Herramientas gráficas: Supervisión, simulación de conversaciones y depuración remota paso a paso. - Soporte de ontologías y lenguajes de contenido: Para intercambio de contenido semántico entre agentes. - Esqueletos de aplicaciones: Paquetes de clases Java listos para personalizar (concepto de marketplace). - Protocolos de interacción: Implementados como máquinas de estados finitos concurrentes. - Kernel extensible: Permite añadir servicios distribuidos, inspirado en programación orientada a aspectos.

9. Arquitectura de Contenedores en JADE

La plataforma se organiza en contenedores: ⚠️ EXAMEN - Un contenedor principal (main container) que se lanza primero e inicia toda la plataforma. - Contenedores secundarios (container-1, container-2...) que se registran con el principal. - Los contenedores son efímeros: se crean, ejecutan y desaparecen.

10. Conceptos Modernos Relacionados

  • PaaS vs SaaS: PaaS (Platform as a Service) ofrece recursos como bases de datos o funciones Lambda sobre infraestructura transparente. SaaS (Software as a Service) ofrece la aplicación directamente sin conocer los recursos subyacentes.
  • MCP: Protocolo que habilita a agentes el uso de herramientas internas o externas a la plataforma.
  • A2A: Comunicación agente-agente directa; precaución al escalar coreografías muchos-a-muchos.
  • Contenedores efímeros y warm pods: Pods precalentados (ya en ejecución) para arranque inmediato, especialmente relevante para Java cuyo arranque en contenedor puede tardar entre 10 segundos y 3 minutos frente a segundos en Python.

Preguntas de Autoevaluación

  1. ¿Qué diferencia hay entre el servicio de páginas blancas y páginas amarillas en JADE? ¿Qué registra cada uno?
  2. ¿Por qué la comunicación entre agentes en JADE es asíncrona? ¿Qué ventajas aporta frente a la comunicación síncrona?
  3. Explica el patrón publicación-suscripción y por qué es preferible al polling para monitorizar la finalización de un agente.
  4. ¿Cuáles son las dos ventajas principales de un agente stateful frente a uno stateless? Pon un ejemplo de cada una.
  5. ¿Qué principios de diseño sigue un agente en JADE respecto a autonomía y control? ¿Por qué no proporciona callbacks a otros agentes?
  6. ¿Qué diferencia hay entre orquestación y coreografía de agentes? ¿Cuándo conviene sacar la orquestación fuera de la plataforma de runtime?
  7. ¿Qué es la licencia LGPL y en qué se diferencia de la GPL en el contexto de JADE?
  8. ¿Qué relación tiene JADE con las especificaciones FIPA?
  9. ¿Qué significa que un contenedor sea "efímero"? ¿Qué es un "warm pod" y para qué sirve?
  10. ¿Qué son MCP y A2A en el contexto de agentes modernos?

Guía generada automáticamente a partir de transcripción con faster-whisper + Claude Sonnet.