LangChain vs LangGraph: Qué muestran realmente las dependencias del paquete
Un desglose a nivel de dependencias revela que LangGraph es una parte necesaria de LangChain, lo que reconfigura la elección del framework en tres paquetes, y no en dos.
El debate entre LangChain y LangGraph aparece constantemente en las conversaciones de ingeniería, y la respuesta habitual es casi siempre la misma: opta por LangChain cuando necesites cadenas de operaciones y llamadas a herramientas, y elige LangGraph cuando necesites agentes con estado y bucles. Esa respuesta no es falsa, pero se basa en una premisa que deja de ser válida al analizarla más de cerca.
Resulta que una respuesta más precisa está justo delante de nuestros ojos, dentro de los metadatos del paquete en sí.
Lo que revela una instalación sencilla
Prueba a ejecutar pip install langchain y luego examina qué es lo que realmente se ha guardado en el disco.
langchain-core==1.5.0
langgraph==1.2.9
pydantic==2.7.4
LangGraph se incluye automáticamente junto con LangChain. No es un complemento opcional que pueda omitirse; es una dependencia obligatoria. Al examinar el manifiesto de langchain 1.3.14, solo tres paquetes se listan como requisitos estrictos, y langgraph, restringido a versiones entre 1.2.5 y menores que 1.3.0, se encuentra entre ellos.
Ahora pruebe lo contrario: pip install langgraph. Esto instala langchain-core junto con los subpaquetes propios de LangGraph, pero langchain en sí nunca se instala.
Esto significa que la forma típica de enmarcar la situación —considerando la decisión como una elección entre dos opciones— describe algo que su gestor de paquetes simplemente no le permitirá hacer. Instalar LangChain garantiza que LangGraph venga incluido con él. No existe una garantía opuesta.
Tres paquetes, no dos
La mayoría de las comparaciones presentan esto como una decisión bidireccional. En realidad existen tres paquetes distintos, y una vez que se nombra correctamente cada uno, desaparece la mayor parte de la confusión.
langchain-core es la base común sobre la que se asienta todo lo demás. Contiene los tipos de mensaje, la abstracción Runnable, BaseTool y RunnableConfig. Tanto langchain como langgraph dependen de él directamente; nada en ninguno de los paquetes funciona sin él.
langgraph es el motor de ejecución real. Pensemos en él como una máquina de estados compuesta por nodos, aristas condicionales, un objeto de estado compartido y soporte para puntos de control. Está diseñado para manejar ciclos, que es esencialmente lo que constituye el bucle de un agente en su núcleo. Aproximadamente el 40,2% de los propios archivos fuente de LangGraph importan directamente langchain_core, lo que indica que no es una alternativa competitiva a LangChain: está construido sobre las abstracciones básicas de LangChain.
langchain se sitúa por encima de ambos como un paquete rector. Agrupa integraciones de modelos, conectores de proveedores y envoltorios prácticos para crear agentes basados en los dos paquetes mencionados anteriormente. Es lo que se instalaría si se desea tener ChatOpenAI o ChatAnthropic listos para usar sin tener que desarrollar un cliente HTTP desde cero.
Describir esto como “cadenas lineales frente a grafos con estado” refleja una división antigua que ya no existe en el código. Una forma más precisa de expresarlo hoy en día es: LangGraph es el entorno de ejecución que realiza el trabajo real, mientras que LangChain es una capa de conveniencia que agrupa ese entorno junto con integraciones de proveedores.
La verdadera elección que estás haciendo
Una vez que comprendes claramente la dirección de las dependencias — LangChain se encuentra sobre LangGraph, nunca al revés — la pregunta a la que realmente respondes cambia de enfoque.
langchain, con integraciones de proveedores, ChatOpenAI, asistentes para crear agentes y más de 30 paquetes opcionales adicionales? ¿O prefiere desarrollar directamente con langchain-core y langgraph, evitando esa capa adicional?
Cualquiera de las opciones sigue funcionando bajo LangGraph. Lo que cambia es todo lo demás que se incluye en su entorno junto con ellos.
Si está creando una imagen de agente para producción en la que desea un conjunto de dependencias bien delimitado y fácilmente auditable, instalar langgraph junto con el cliente del proveedor que realmente necesite le permitirá tener un tamaño más reducido. Si está prototipando rápidamente y quiere que ChatOpenAI funcione sin tener que crear manualmente un wrapper del proveedor, pip install langchain[openai] le ayudará a lograrlo con menos configuración.
Un detalle que vale la pena mencionar explícitamente: langchain-core instala LangSmith, el cliente de seguimiento de LangChain, como una dependencia obligatoria. No enviará ningún dato a menos que usted lo configure explícitamente para ello. Pero si está revisando exactamente qué contenido termina dentro de su contenedor, ese componente estará presente independientemente de si lo activa o no.
Por qué la elección es importante más allá del tamaño de instalación
Se realizó una comparación controlada entre LangGraph 1.2.9 y Pydantic AI 2.13.0 en cuatro tareas, con un total de 160 ejecuciones utilizando gpt-4o. Ambos frameworks alcanzaron un 100% de precisión. LangGraph fue aproximadamente de 1.4 a 1.8 segundos más rápido en tiempo real, una diferencia atribuible al mecanismo de conversión asíncrono a síncrono de Pydantic AI, pero la precisión fue indistinguible entre ambos.
Lo que realmente influyó en los resultados fue el modelo subyacente, no la elección del framework. Al ejecutar las mismas tareas con gpt-4o-mini se obtuvo un fracaso total: 0 de 20 en una tarea que involucraba cálculos con fechas, un caso límite que el modelo más grande manejó sin problemas.
En resumen: elegir entre LangChain y LangGraph significa, en su mayor parte, decidir cuánto del ecosistema de LangChain que los rodea se quiere integrar en el proyecto, ya que ambos funcionan con el mismo motor subyacente. Por otro lado, elegir entre LangGraph y Pydantic AI implica comparar dos bibliotecas realmente separadas; los resultados anteriores sugieren que, con gpt-4o, la corrección no favorece a ninguno de los dos, aunque la diferencia en latencia es lo suficientemente significativa como para medirla en su propia configuración.
Lecturas relacionadas
- Qué automatiza realmente LangChain una vez que has creado un bucle de agente — Explica cómo LangChain, LangGraph y SDK similares utilizan el mismo bucle de agente básico creado desde cero, y cuándo recurrir a un framework ayuda o perjudica.