Mezcla De Agentes (Mixture Of Agents)

Mezcla de Agentes (Mixture of Agents)arrow-up-right es un patrón de diseño multi-agente que se inspira en la arquitectura de una red neuronal feed-forward.

El patrón consiste en dos tipos de agentes: agentes trabajadores (worker agents) y un único agente orquestador (orchestrator agent). Los agentes trabajadores están organizados en múltiples capas, donde cada capa contiene un número fijo de agentes. Los mensajes provenientes de los agentes trabajadores en una capa anterior son concatenados y enviados a todos los agentes de la capa siguiente.

Este ejemplo implementa el patrón Mixture of Agents usando la librería core, siguiendo la implementación original de mezcla de agentes en múltiples capas.

A continuación, se muestra una descripción general del procedimiento del patrón:

  1. El agente orquestador recibe como entrada una tarea del usuario y la distribuye a los agentes trabajadores de la primera capa.

  2. Los agentes de la primera capa procesan la tarea y devuelven los resultados al agente orquestador.

  3. El agente orquestador sintetiza los resultados de la primera capa y envía una tarea actualizada (incluyendo los resultados anteriores) a los agentes trabajadores de la segunda capa.

  4. Este proceso continúa capa por capa hasta llegar a la última capa.

  5. En la capa final, el agente orquestador agrega todos los resultados y devuelve un resultado final único al usuario.

Se utiliza la API de mensajería directa send_message() para implementar este patrón. Esto facilita la incorporación futura de características como la cancelación de tareas de los trabajadores y el manejo de errores.

import asyncio
from dataclasses import dataclass
from typing import List

from saptiva_agents import SAPTIVA_LEGACY
from saptiva_agents.core import AgentId, MessageContext, RoutedAgent, SingleThreadedAgentRuntime, message_handler
from saptiva_agents.models import SystemMessage, UserMessage
from saptiva_agents.base import SaptivaAIChatCompletionClient

Protocolo de Mensajes

Los agentes se comunican utilizando los siguientes mensajes:


Agente de Trabajo (Worker Agent)

Cada agente de trabajo recibe una tarea del agente orquestador y la procesa de manera independiente. Una vez completada la tarea, el agente de trabajo devuelve el resultado.


Agente Orquestador (Orchestrator Agent)

El agente orquestador recibe tareas del usuario y las distribuye entre los agentes de trabajo, iterando sobre múltiples capas de agentes de trabajo. Una vez que todos los agentes de trabajo han procesado la tarea, el agente orquestador agrega los resultados y publica el resultado final.


Ejecutando Mixture of Agents (Mezcla de Agentes)

Vamos a ejecutar el patrón mixture of agents en una tarea matemática. Puedes cambiar la tarea para hacerla más desafiante, por ejemplo, utilizando problemas de la Olimpiada Internacional de Matemáticas (International Mathematical Olympiad)arrow-up-right.

Vamos a configurar el entorno de ejecución (runtime) con 3 capas de agentes worker, donde cada capa contiene 3 agentes worker. Solo necesitamos registrar un único tipo de agente worker, llamado "worker", ya que todos los agentes compartirán la misma configuración de cliente de modelo (es decir, Saptiva Legacy).

Si deseas utilizar modelos distintos en cada capa, deberás registrar múltiples tipos de agentes worker (uno por modelo), y actualizar la lista worker_agent_types en la función factory del agente orquestador.

✅ Las instancias de agentes trabajadores se crean automáticamente cuando el agente orquestador les asigna tareas.

Última actualización