Agentes Concurrentes
En esta sección, exploramos el uso de múltiples agentes trabajando concurrentemente. Cubrimos tres patrones principales:
Mensaje Único y Múltiples Procesadores Demuestra cómo un único mensaje puede ser procesado simultáneamente por múltiples agentes suscritos al mismo tópico.
Múltiples Mensajes y Múltiples Procesadores Ilustra cómo tipos específicos de mensajes pueden ser dirigidos a agentes dedicados según los tópicos.
Mensajería Directa Se enfoca en enviar mensajes entre agentes y desde el runtime hacia los agentes.
import asyncio
from dataclasses import dataclass
from saptiva_agents.core import (
AgentId,
ClosureAgent,
ClosureContext,
DefaultTopicId,
MessageContext,
RoutedAgent,
SingleThreadedAgentRuntime,
TopicId,
TypeSubscription,
default_subscription,
message_handler,
type_subscription,
)Mensaje Único y Múltiples Procesadores
El primer patrón muestra cómo un único mensaje puede ser procesado por múltiples agentes simultáneamente:
Cada agente Processor se suscribe al tópico por defecto usando el decorador
default_subscription().Al publicar un mensaje en el tópico por defecto, todos los agentes registrados procesarán el mensaje de forma independiente.
Below, we are subscribing Processor using the default_subscription() decorator, there’s an alternative way to subscribe an agent without using decorators altogether as shown in Subscribe and Publish to Topics, this way the same agent class can be subscribed to different topics.
Múltiples Mensajes y Múltiples Procesadores
Este patrón demuestra cómo enrutar diferentes tipos de mensajes a procesadores específicos:
UrgentProcessorse suscribe al tópico "urgent"NormalProcessorse suscribe al tópico "normal"
Hacemos que un agente se suscriba a un tipo de tópico específico usando el decorador type_subscription().
Después de registrar los agentes, publicamos mensajes en los tópicos “urgent” y “normal”:
Recolectando Resultados
En el ejemplo anterior usamos print, pero en aplicaciones reales normalmente queremos recolectar y procesar resultados programáticamente.
Usamos un ClosureAgent para recolectar los mensajes publicados por ambos procesadores:
Mensajes Directos
Este patrón se enfoca en mensajes directos. Demostramos dos formas:
Mensajería directa entre agentes
Envío de mensajes desde el runtime a agentes específicos
Puntos clave:
Los mensajes se dirigen usando
AgentId.El emisor puede esperar una respuesta del agente objetivo.
Solo registramos una vez
WorkerAgent, pero enviamos tareas a dos instancias distintas.¿Cómo? Como se explicó en Ciclo de vida del agente, el runtime crea instancias si no existen cuando recibe un
AgentId.
Última actualización