Los sistemas de AI multi-agente representan uno de los avances más importantes en aplicaciones prácticas de AI hoy.

A diferencia de los enfoques de un solo agente, los sistemas multi-agente distribuyen tareas complejas entre agentes especializados, y cada uno hace lo que mejor sabe hacer.

En este artículo exploraremos un ejemplo práctico con agentes especializados que tienen acceso a herramientas de Gmail y Slack. Esto implica integrar dos frameworks. El OpenAI Agents SDK ejecutará y orquestará los agentes, y Arcade.dev se encargará de las herramientas y la autenticación necesaria para usarlos.

Entenderás los conceptos clave detrás de los handoffs entre agentes, los controles human-in-the-loop y las bases técnicas para construir tus propias aplicaciones multi-agente.

Entendiendo la Arquitectura Multi-Agente

Un sistema multi-agente consiste en agentes de AI especializados diseñados para manejar tareas específicas mientras colaboran a través de un framework de comunicación estructurado.
Esta arquitectura ofrece varias ventajas sobre los enfoques de un solo agente:

  • Separación de responsabilidades: Un agente único probablemente sea aceptable en la mayoría de las cosas, pero no excelente en nada en particular. Al dividir las tareas en dominios más acotados, podemos asignar agentes expertos a cada tarea relevante, lo que aumenta la precisión y el rendimiento de cada una.
  • Optimización de costos: Los LLMs más recientes son muy impresionantes en sus capacidades de razonamiento, pero también muy caros de ejecutar. Un sistema multi-agente nos permite combinar cada tarea con un agente que use modelos más pequeños para sus tareas específicas.
  • Composabilidad y adaptabilidad: Los sistemas multi-agente se adaptan fácilmente a situaciones dinámicas. Agregar o quitar agentes es simple y no implica reentrenar ni reoptimizar un agente único.
  • Procesamiento paralelo: Un agente único generalmente opera de forma secuencial, enfocándose en una tarea a la vez. Un sistema multi-agente puede ejecutar múltiples tareas en paralelo de forma nativa, entregando resultados más rápido y mejorando la experiencia del usuario.
  • Robustez: Si tu sistema de un solo agente no puede resolver un problema específico, ahí termina todo. En cambio, los sistemas multi-agente pueden abordar el problema desde múltiples ángulos, lo que aumenta las probabilidades de éxito.
  • Resolución de Problemas Complejos: Los sistemas multi-agente integran de forma nativa las fortalezas de varios agentes para abordar problemas complejos con mayor efectividad que un agente único. Esto es especialmente relevante para tareas que requieren una combinación de habilidades, como análisis de datos en múltiples pasos y flujos de trabajo.

Ejemplo práctico

Nuestra app de ejemplo consiste en 3 agentes:

  • Agente Conversacional: Maneja la interacción con el usuario y la delegación de tareas
  • Agente Gmail: Se especializa en operaciones de correo (lectura, redacción, envío)
  • Agente Slack: Gestiona las interacciones en la plataforma de mensajería

Esta separación permite que cada agente mantenga instrucciones enfocadas y capacidades especializadas, sin crear un sistema inmanejable que “hace todo”.

También están totalmente conectados, lo que significa que cualquier agente puede pasar el control a otro, creando un sistema flexible capaz de manejar flujos de trabajo complejos de múltiples pasos.

Definición y Conexiones de Agentes

Los agentes que llaman herramientas necesitan acceso a las herramientas disponibles para resolver sus tareas asignadas. Logramos esto usando la librería agents-arcade de Arcade, que maneja la autenticación y el llamado de herramientas de forma transparente:

google_tools = await get_arcade_tools(client, tools=["Google_ListEmails", "Google_SendEmail"])
slack_tools = await get_arcade_tools(client, tools=["Slack_ListUsers", "Slack_SendDmToUser"])

El mecanismo clave que habilita la colaboración multi-agente es el handoff: la capacidad de un agente para pasar el control a otro cuando encuentra una tarea fuera de su dominio. A cada agente le damos un nombre e instrucciones sobre lo que debe hacer. También lo conectamos con otros agentes usando la propiedad handoffs y exponemos las capacidades a otros agentes usando handoff_description.

# Declare a new agent
google_agent = Agent(
    name="Google Agent",
    instructions="You are a helpful assistant that can assist using tools"
                 " to manage a Google account, contacts, and inbox.",
    handoff_description="An agent equipped with Google tools",
    model=os.environ["OPENAI_MODEL"],
    tools=google_tools, # Provide access to relevant tools
    hooks=CustomAgentHooks(display_name="Google Agent")
)

slack_agent = Agent(
    name="Slack agent",
    instructions="You are a helpful assistant that can assist using tools"
                 " to interact with Slack."
                 " You have tools to manage channels and send DMs.",
    handoff_description="An agent equipped with Slack tools",
    model=os.environ["OPENAI_MODEL"],
    tools=slack_tools,
    hooks=CustomAgentHooks(display_name="Slack Agent"),
)

triage_agent = Agent(
    name="conversation_agent",
    instructions="You are a helpful assistant that can help with everyday"
                 " tasks. You can handoff to another agent with access to"
                 " Gmail tools if needed. You can also handoff to an agent"
                 " with Slack tools if needed. Handoff to the appropriate"
                 " agent based on the services required.",
    model=os.environ["OPENAI_MODEL"],
    handoffs=[google_agent, slack_agent], # connect it to other agents
    hooks=CustomAgentHooks(display_name="Conversation Agent")
)

# Buld remaining connections
google_agent.handoffs.extend([triage_agent, slack_agent])
slack_agent.handoffs.extend([triage_agent, google_agent])

La topología final se ve así, donde las flechas representan los posibles handoffs.

How to build AI Slack/Gmail Agent with OpenAI Agent SDK

Controles Human-in-the-Loop

Un aspecto crítico de los sistemas multi-agente, especialmente los que manejan operaciones sensibles como enviar correos o mensajes, es implementar controles human-in-the-loop.

# Example of human approval implementation
async def confirm_tool_usage(context, tool_arguments, tool_name, callable):
    """Request human approval before executing sensitive operations"""
    print(f"About to call {tool_name} with these arguments:")
    print(json.dumps(json.loads(tool_arguments), indent=2))

    confirmation = input("Approve this action? (y/n): ")
    if confirmation.lower() == "y":
        return await callable(context, tool_arguments)
    else:
        raise UserDeniedToolCall(tool_name)

Este enfoque garantiza que los usuarios mantengan el control sobre las acciones automatizadas, evitando operaciones no deseadas mientras aprovechan las capacidades del sistema.

Operaciones Multi-Turno con Gmail y Slack

Un sistema multi-agente brilla de verdad cuando maneja operaciones complejas de múltiples turnos entre distintos servicios. Considera este flujo de trabajo de ejemplo:

  1. El usuario pregunta: “Trae mis 5 correos más recientes, resúmelos y envíame los resúmenes por Slack”
  2. El agente conversacional identifica los componentes de correo y Slack
  3. Handoff al agente Gmail para recuperar los correos recientes
  4. El agente Gmail procesa los correos y extrae la información clave
  5. Handoff al agente Slack con el contenido resumido
  6. Se solicita aprobación humana antes de enviar el mensaje de Slack
  7. El mensaje se entrega tras la aprobación

Esta solicitud, aparentemente simple, involucra múltiples agentes especializados trabajando juntos, cada uno manejando sus tareas específicas del dominio mientras mantiene el contexto general de la conversación.

El componente del agente Gmail es especialmente importante, ya que necesita manejar diversas operaciones de correo como buscar, leer y redactar mensajes. Si te interesa construir un agente Gmail independiente antes de abordar un sistema multi-agente completo, revisa nuestra guía: Cómo Construir un Agente de AI para Gmail: Guía Completa para 2025.

Auth de Agentes: Resolviendo el Desafío de Autenticación Multi-Servicio

La autenticación de agentes es uno de los obstáculos más grandes al construir sistemas multi-servicio. Cada agente que requiere acceso a servicios externos como Gmail o Slack necesita credenciales de autenticación adecuadas, lo que genera varios desafíos técnicos:

  1. Complejidad de OAuth: Cada servicio implementa los flujos de OAuth de forma diferente
  2. Gestión de tokens: Almacenar, refrescar y administrar tokens de acceso de forma segura
  3. Experiencia del usuario: Crear experiencias de autenticación fluidas sin interrumpir los flujos de trabajo
  4. Identidad entre servicios: Mantener una identidad consistente entre múltiples servicios

Usar una plataforma como Arcade.dev puede simplificar enormemente la implementación de auth para agentes:

# Example of streamlined agent authentication
async def auth_tool(client, tool_name, user_id):
    """Authenticate an agent with external services"""
    result = await client.tools.auth.authorize(tool=tool_name, user_id=user_id)

    if result.status != "completed":
        print(f"Please complete authentication: {result.url}")

    await client.tools.auth.wait_for_completion(result)

Este enfoque maneja la complejidad de mantener sesiones autenticadas en múltiples servicios, permitiendo que los desarrolladores se enfoquen en la funcionalidad de los agentes en lugar de la logística de autenticación. Para aplicaciones empresariales que requieren una gestión de identidad más sofisticada, implementar SSO para agentes puede proporcionar controles adicionales de seguridad y administración.

Aplicaciones Prácticas de los Sistemas Multi-Agente

El ejemplo de integración Gmail-Slack demuestra solo una aplicación de los sistemas multi-agente. Otros casos de uso prácticos incluyen:

  1. Atención al Cliente: Enrutar consultas a agentes especializados que manejan distintos aspectos del soporte al cliente
  2. Asistencia en Investigación: Combinar agentes especializados en búsqueda, análisis de datos y generación de contenido
  3. Automatización de Flujos de Trabajo: Crear sistemas que manejen procesos de negocio de múltiples pasos en distintas plataformas
  4. Productividad Personal: Construir asistentes que coordinen tareas entre correo, calendarios y plataformas de comunicación

Construye Tu Propio Sistema Multi-Agente

Si te interesa implementar tu propio sistema multi-agente con el OpenAI Agents SDK, creamos un tutorial en video completo que recorre todo el proceso de construcción del sistema Gmail-Slack descrito en este artículo.

El tutorial cubre:

  • Configurar el entorno del OpenAI Agents SDK
  • Implementar handoffs entre agentes
  • Construir controles human-in-the-loop
  • Gestionar la autenticación entre servicios
  • Depurar interacciones multi-agente

Mira nuestro tutorial completo de sistemas multi-agente en YouTube →

El Futuro de los Sistemas Multi-Agente

A medida que los grandes modelos de lenguaje siguen evolucionando, las arquitecturas multi-agente serán cada vez más importantes para construir sistemas de AI prácticos y especializados. La capacidad de descomponer tareas complejas en componentes especializados que colaboran sin fricciones representa un paso importante hacia asistentes de AI más capaces y confiables.

Al entender los conceptos clave de los handoffs entre agentes, los controles human-in-the-loop y las operaciones multi-turno, los desarrolladores pueden crear sistemas de AI que superen las limitaciones de los enfoques de un solo agente.

Regístrate en arcade.dev y empieza a construir. →