En el post anteriorde esta serie, exploramos Human-in-the-Loop. Aquí exploramos los Handoffs, que yo prefiero llamar “Delegación Agéntica”

Este post es un complemento de un video, ¡te invito a verlo!

Así está configurado el experimento

Uso el mismo sistema agéntico, implementado con tres frameworks distintos:

  • LangGraph
  • Agents SDK de OpenAI
  • Agent Development Kit (ADK) de Google

En todos los casos, el agente usa una arquitectura de “supervisor”, donde un solo agente recibe la mayoría de los prompts del usuario y decide si delegar una tarea a otros agentes más especializados. En este caso, tengo un agente de Google capaz de leer y enviar correos, y un agente de Slack capaz de leer y enviar mensajes. Aplico aprobación HITL explícita en todas las herramientas de “envío”.

Y claro, como estas herramientas son reales integraciones, las implementé con Arcade.dev

¿Qué es la Delegación Agéntica?

En los sistemas multi-agente hay varias formas de organizar a los agentes para que colaboren (o compitan) y logren sus tareas. Una de ellas es la delegación agéntica (también conocida como handoffs), que consiste simplemente en que un agente delega una tarea a otro agente del sistema según sus propios criterios internos.

Este mecanismo está lejos de ser el único para distribuir y coordinar tareas entre agentes, pero está ganando popularidad en los sistemas multi-agente basados en LLMs.

¿Cómo aborda cada framework la Delegación Agéntica?

Lo que comparten todos los frameworks es que siempre involucran una herramienta que transfiere el control a otro agente, comúnmente llamado “sub-agente”. Me gusta este patrón porque se apoya en primitivas bien establecidas y controlables para implementar un control fino. Las diferencias prácticas entre las implementaciones son:

  • El grado de transparencia del handoff
  • El grado de control sobre el contexto involucrado

Todo lo demás es básicamente solo una llamada a función.

Como mencioné antes, creo que usar tool calling como mecanismo de delegación agéntica es lo correcto, y me alegró ver que los 3 frameworks lo implementan exactamente así. Desde esa perspectiva, los tres pasaron la prueba, así que ahora me pongo el sombrero de criticón y señalo las diferencias.

Agent Development Kit de Google

Este framework aborda los handoffs implementando una herramienta que recibe el agente destino como argumento, junto con el contexto de invocación, que contiene el contexto desde el prompt inicial del usuario.

Creo que esta implementación funciona en el 90% de los casos, pero no es lo suficientemente flexible para situaciones donde el contexto puede crecer por la complejidad del prompt. Por ejemplo, si mi prompt requiere decenas de llamadas a múltiples herramientas antes de agregar al contexto para su resumen, y luego delegar a un agente que envíe ese resumen por correo, no veo en ADK una forma de decir “envía solo el resumen al agente de email”. Puede ser ineficiente, aunque reconozco que es un caso edge.

Agents SDK de OpenAI

Este framework modela los Handoffs de forma explícita y ofrece dos enfoques distintos:

  • Handoffs: es una llamada a herramienta donde el control del flujo se delega por completo al agente destino, y el contexto completo se le transfiere. Las respuestas al usuario vendrán ahora de este agente, a menos que delegue a través de un handoff posterior.
  • Agente como herramienta: es una herramienta explícita que envuelve a un agente, y el flujo de conversación no se transfiere al agente receptor. El agente recibirá input generado por el agente que lo llama, y se espera que responda a este, no al usuario.

Esto le da mayor versatilidad al creador de agentes. Podemos decidir con cierta granularidad qué se envía al agente receptor según cómo lo conectemos al agente que hace la llamada. La ergonomía todavía me parece inmadura: puedo imaginar casos donde quiero guardar elementos explícitamente pensando en agentes específicos de la topología, y este framework me lo va a poner difícil para lograr ese nivel de control. Pero diría que cubre el 95%+ de los casos de orquestación agéntica.

LangGraph

De nuevo, este es el framework que, en mi opinión, ofrece la experiencia más completa. Incluye funciones de conveniencia como create_supervisor, que implementa excelentemente algo equivalente a los handoffs del Agents SDK de OpenAI. El contexto se puede controlar con un nivel similar de granularidad mediante el parámetro output_mode.

Lo que hace que LangGraph sea mi framework favorito otra vez es que puedo construir el grafo desde cero y agregar elementos específicos al estado del grafo en cualquier punto del flujo.

Entonces, ¿cuál es el mejor framework?

A diferencia de Human-in-the-Loop, aquí no hay un ganador claro.

Sí, prefiero LangGraph sobre los otros frameworks para un control muy fino. Pero eso no aplica para la mayoría de los proyectos agénticos. Para agentes que requieren menos control sobre el contexto, LangGraph y el Agents SDK de OpenAI son equivalentes, y es difícil arrepentirse de elegir cualquiera de los dos. Si no te importa ceder todo el control del contexto al framework de orquestación, ¡Google ADK te va a funcionar bien!

Pruébalo hoy

El código y los recursos de este experimento son open-source.

Vas a necesitar:

¡A construir!