Multi-agent systems con LangGraph y CrewAI: patrones prácticos
Descubre cómo construir sistemas multi-agente robustos con LangGraph y CrewAI. Aprende patrones de diseño, ejemplos de código y mejores prácticas para orquestar agentes de IA en producción.
Multi-agent systems con LangGraph y CrewAI: patrones prácticos
¿Tu empresa está lista para IA? Descargá nuestro checklist gratuito →
Descargar checklistMulti-agent systems con LangGraph y CrewAI: patrones prácticos
En el panorama actual de la inteligencia artificial, los sistemas multi-agente (MAS) se han convertido en una pieza clave para resolver problemas complejos que requieren la colaboración de múltiples entidades inteligentes. Mientras que un solo agente puede manejar tareas sencillas, los escenarios del mundo real a menudo demandan la coordinación de varios agentes especializados, cada uno con sus propias capacidades, herramientas y conocimiento. En este artículo, exploraremos dos frameworks líderes en la construcción de sistemas multi-agente: LangGraph y CrewAI. Analizaremos sus características, compararemos sus enfoques y presentaremos patrones prácticos que puedes implementar hoy mismo.
¿Por qué sistemas multi-agente?
Antes de sumergirnos en los frameworks, es crucial entender el valor de los MAS. Los sistemas multi-agente ofrecen ventajas como:
- Escalabilidad: Dividir tareas complejas en subtareas más pequeñas que pueden ser procesadas en paralelo.
- Especialización: Cada agente puede estar altamente optimizado para una tarea específica (por ejemplo, análisis de datos, generación de texto, llamadas a APIs).
- Robustez: Si un agente falla, otros pueden asumir sus responsabilidades o el sistema puede degradarse de manera controlada.
- Flexibilidad: Permiten adaptarse a diferentes dominios y requisitos cambiantes.
Sin embargo, los MAS también introducen complejidades como la coordinación, el manejo de estados compartidos y la comunicación entre agentes. Aquí es donde entran en juego LangGraph y CrewAI.
Visión general de LangGraph
LangGraph es una extensión de LangChain que se centra en la creación de grafos de estado para agentes. En lugar de un flujo lineal, LangGraph permite definir nodos (agentes o funciones) y aristas (transiciones) que forman un grafo dirigido. Este enfoque es especialmente útil para flujos de trabajo complejos donde las decisiones dependen del estado actual y de las entradas de múltiples fuentes.
Características clave de LangGraph
- Grafo de estado: Los nodos representan pasos de procesamiento y las aristas definen las transiciones basadas en condiciones.
- Persistencia: Permite guardar el estado en cada paso, lo que facilita la reanudación de tareas y la depuración.
- Control fino: Tienes control total sobre cuándo y cómo se ejecutan los agentes.
- Integración con LangChain: Aprovecha toda la ecosistema de LangChain, incluyendo herramientas, memoria y modelos.
Ejemplo básico con LangGraph
Imagina un sistema que recibe una consulta de un usuario, la analiza, decide si necesita información de una API externa o si puede responder directamente, y luego genera una respuesta. En LangGraph, podrías modelar esto con nodos: recepción, análisis, búsqueda, generación. Las aristas con condiciones dirigen el flujo.
from langgraph.graph import StateGraph, END
from typing import TypedDict, Dict, Any
class State(TypedDict):
query: str
response: str
needs_search: bool
def receive(state: State) -> State:
# Procesar la entrada
state["needs_search"] = "search" in state["query"].lower()
return state
def search(state: State) -> State:
# Simular búsqueda en API
state["response"] = f"Resultados de búsqueda para: {state['query']}"
return state
def generate(state: State) -> State:
if "response" not in state:
state["response"] = f"Respuesta directa a: {state['query']}"
return state
graph = StateGraph(State)
graph.add_node("receive", receive)
graph.add_node("search", search)
graph.add_node("generate", generate)
graph.add_edge("receive", "generate")
graph.add_conditional_edges(
"receive",
lambda state: "search" if state["needs_search"] else "generate",
{"search": "search", "generate": "generate"}
)
graph.add_edge("search", "generate")
graph.set_entry_point("receive")
graph.add_edge("generate", END)
app = graph.compile()
result = app.invoke({"query": "¿qué es LangGraph? búsqueda"})
print(result["response"])
Este ejemplo muestra cómo LangGraph maneja el control de flujo de manera explícita, lo que es ideal para procesos bien definidos.
Visión general de CrewAI
CrewAI adopta un enfoque más orientado a roles y tareas. Inspirado en el concepto de "tripulaciones" (crews), donde cada agente tiene un rol específico y colabora con otros para completar una misión. CrewAI abstrae gran parte de la complejidad de coordinación, permitiendo a los desarrolladores definir agentes con roles, herramientas y objetivos, y luego dejar que el framework orqueste la ejecución.
Características clave de CrewAI
- Definición declarativa: Configuras agentes y tareas en un estilo declarativo.
- Ejecución automática: CrewAI gestiona la asignación de tareas a los agentes y la recopilación de resultados.
- Herramientas integradas: Cada agente puede tener sus propias herramientas, como APIs o funciones personalizadas.
- Colaboración flexible: Los agentes pueden comunicarse entre sí para compartir información.
Ejemplo básico con CrewAI
Supongamos que queremos construir un sistema que investigue un tema y genere un informe. Podemos definir dos agentes: un investigador y un redactor. El investigador busca información y el redactor la convierte en un informe estructurado.
from crewai import Agent, Task, Crew, Process
investigador = Agent(
role='Investigador',
goal='Encontrar información precisa y relevante sobre el tema dado',
backstory='Eres un investigador experto con acceso a herramientas de búsqueda.',
tools=[search_tool]
)
redactor = Agent(
role='Redactor',
goal='Redactar un informe claro y conciso basado en la información proporcionada',
backstory='Eres un redactor profesional especializado en informes técnicos.'
)
tarea_investigacion = Task(
description='Investiga sobre {topic} y recopila los puntos clave.',
agent=investigador,
expected_output='Una lista de puntos clave con fuentes.'
)
tarea_redaccion = Task(
description='Redacta un informe final sobre {topic} usando la información del investigador.',
agent=redactor,
expected_output='Un informe en formato markdown.'
)
crew = Crew(
agents=[investigador, redactor],
tasks=[tarea_investigacion, tarea_redaccion],
process=Process.sequential
)
resultado = crew.kickoff(inputs={'topic': 'Sistemas multi-agente'})
print(resultado)
CrewAI maneja la secuencia de tareas automáticamente, pasando el resultado de una tarea como entrada a la siguiente.
Patrones prácticos de diseño
Tanto LangGraph como CrewAI ofrecen herramientas poderosas, pero la clave está en aplicar patrones de diseño adecuados. Aquí presentamos varios patrones que puedes implementar.
Patrón 1: Orquestador y trabajadores
Este es el patrón más común. Un agente orquestador descompone la tarea principal en subtareas y las asigna a agentes trabajadores. Luego recopila los resultados y los combina.
Implementación con LangGraph: El orquestador es un nodo que genera el plan y luego invoca a otros nodos (trabajadores) en paralelo o secuencialmente. Puedes usar send para enviar mensajes a nodos específicos.
Implementación con CrewAI: Define un agente gestor que coordina a los trabajadores. Puedes usar Process.hierarchical para que el gestor asigne tareas.
Patrón 2: Pipeline secuencial
En este patrón, los agentes se ejecutan en una secuencia fija, donde la salida de uno es la entrada del siguiente. Es útil para procesos como: análisis -> transformación -> generación.
LangGraph: Define un grafo con aristas directas entre nodos en orden.
¿Querés un diagnóstico personalizado? Completá el checklist gratuito →
Descargar checklistCrewAI: Usa Process.sequential como en el ejemplo anterior.
Patrón 3: Colaboración con retroalimentación
Aquí los agentes interactúan en un bucle, proporcionando retroalimentación hasta que se alcanza un criterio de parada. Por ejemplo, un agente genera una respuesta y otro la evalúa; si no es satisfactoria, se repite el proceso.
LangGraph: Puedes implementar un bucle con aristas condicionales que regresen a un nodo anterior.
CrewAI: Aunque CrewAI no soporta bucles directamente, puedes usar tareas dinámicas o invocar el crew varias veces.
Patrón 4: Agentes con herramientas especializadas
Cada agente puede tener acceso a herramientas específicas (búsqueda web, cálculo, APIs). Esto permite una especialización efectiva.
LangGraph: Cada nodo puede definir sus propias herramientas usando la integración de LangChain.
CrewAI: Las herramientas se asignan a cada agente en su definición.
Comparación: LangGraph vs CrewAI
| Característica | LangGraph | CrewAI |
|---|---|---|
| Modelo de programación | Basado en grafos de estado | Declarativo con roles y tareas |
| Control de flujo | Explícito y flexible | Automático (secuencial o jerárquico) |
| Complejidad | Alta (requiere diseño de grafo) | Baja (configuración simple) |
| Persistencia | Sí (estado en cada paso) | Limitada (no nativo) |
| Casos de uso | Flujos complejos y dinámicos | Procesos estándar con roles claros |
| Curva de aprendizaje | Media-alta | Baja |
| Comunidad | Creciente (LangChain) | Creciente |
Mejores prácticas y consejos
- Empieza simple: Si tu flujo es lineal, CrewAI es más rápido de implementar. Para procesos con ramificaciones y bucles, LangGraph ofrece más control.
- Diseña el grafo antes de codificar: En LangGraph, dibuja el grafo en papel para visualizar las transiciones.
- Usa herramientas con moderación: No sobrecargues a los agentes con demasiadas herramientas; esto puede ralentizar la ejecución y aumentar errores.
- Implementa logging y monitoreo: Ambos frameworks permiten registrar la actividad de los agentes. Usa esto para depurar y optimizar.
- Prueba con casos límite: Asegúrate de que tu sistema maneje entradas inesperadas y fallos de herramientas.
- Mantén los agentes desacoplados: Cada agente debe tener una responsabilidad única y comunicarse mediante mensajes bien definidos.
- Considera la escalabilidad: Si esperas un alto volumen, evalúa el rendimiento de tu orquestación y considera la ejecución paralela cuando sea posible.
Caso de estudio: Asistente de soporte técnico
Imaginemos que queremos construir un asistente de soporte técnico que pueda clasificar tickets, buscar soluciones en una base de conocimientos y escalar a un humano si es necesario.
Con CrewAI: Definimos agentes: clasificador, resolvedor, escalador. El clasificador determina la categoría del problema, el resolvedor busca soluciones y el escalador decide si se necesita un humano. Usamos Process.sequential para ejecutarlos en orden.
Con LangGraph: Creamos un grafo con nodos para clasificación, búsqueda, resolución y escalado. Las aristas condicionales permiten que si la confianza en la solución es baja, se escale automáticamente.
Ambos enfoques funcionan, pero LangGraph ofrece más control sobre la lógica de escalado.
Conclusión
Los sistemas multi-agente son esenciales para construir aplicaciones de IA robustas y escalables. LangGraph y CrewAI son dos herramientas sobresalientes que simplifican el desarrollo, aunque con filosofías diferentes. LangGraph brinda un control granular mediante grafos de estado, ideal para flujos complejos y dinámicos. CrewAI ofrece una abstracción de alto nivel basada en roles, perfecta para procesos estándar y prototipos rápidos.
La elección depende de tus necesidades específicas: si necesitas flexibilidad y control, opta por LangGraph; si buscas simplicidad y velocidad de desarrollo, CrewAI es tu mejor aliado.
En Tanok Tech, ayudamos a las empresas a implementar soluciones de IA avanzadas. Si estás considerando adoptar sistemas multi-agente en tu organización, nuestro equipo de expertos puede guiarte en la selección del framework adecuado y en el diseño de la arquitectura. ¡Contáctanos para una consultoría gratuita!
Recursos adicionales
Última actualización: 2025
¿Listo para dar el próximo paso? Evaluá tu empresa con nuestro checklist gratuito →
Descargar checklistPublicaciones relacionadas
- AI & ML◈
IA Generativa y Agentic AI: Las Tendencias que Transformarán 2026
IA Generativa y Agentic AI: Las Tendencias que Transformarán 2026
18 oct 2026
- AI & ML◈
JAX vs TensorFlow: el framework que domina el ecosistema de IA en 2026
JAX vs TensorFlow: el framework que domina el ecosistema de IA en 2026
17 oct 2026
- AI & ML◈
La Máquina de Turing Universal: cómo una idea de 1936 dio origen a la era digital
La Máquina de Turing Universal: cómo una idea de 1936 dio origen a la era digital
16 oct 2026