[ PLAYBOOK · 09 ] · 13 DE MAYO, 2026 · 7 min

LangChain en 2026: qué conservar, qué descartar.

LangChain v1.0 reescribió el framework encima de LangGraph. Conserva LCEL para pipelines lineales, create_agent para trabajo con estado, los paquetes partner como adaptadores y LangSmith para tracing. Descarta el resto y aprende los SDKs de los modelos.


La postura

Si eliges LangChain en 2026, estás eligiendo LangGraph. Ese es el hecho que la mayoría de los equipos sigue pasando por alto. El lanzamiento de LangChain y LangGraph 1.0 en octubre de 2025 colapsó el framework sobre un único runtime de grafos. Lo que antes era una "librería de agentes" separada ahora es LangGraph con convenciones encima. Las abstracciones de chains originales, el AgentExecutor y los imports desde langchain.agents tal como los recuerdan los equipos pasaron al paquete langchain-classic, con cadencia de releases más lenta.

El framework por el que apostaste en 2023 fue reescrito debajo de tus pies, dos veces. La jugada correcta en 2026 es conservar las piezas que aún pagan, descartar las que quedaron como legacy y bajar al SDK del modelo cuando ninguno de los dos caminos encaja.

Qué es realmente v1.0

Un mapa práctico de qué vive dónde, porque los nombres de los paquetes cambiaron y la mayoría de los resultados de la segunda página de Google siguen siendo pre-v1.

langchain v1.x. Más delgado que v0.x. Incluye LCEL (el lenguaje de expresión prompt | model | parser), el nuevo entry point create_agent que devuelve un grafo de LangGraph, un formato de mensaje con bloques de contenido que normaliza trazas de razonamiento, citas, llamadas a herramientas y partes multimodales entre proveedores, y algunas utilidades. Esta es la capa desde la que la mayoría del código de aplicación debería importar.

langgraph v1.x. El runtime de ejecución durable. Estado, checkpointing, time travel, interrupts con humano en el loop, persistencia y streaming viven aquí. Los agentes de LangChain son grafos de LangGraph por debajo, así que esta dependencia no es opcional para nada más allá de un pipeline de un solo paso.

langchain-classic. La superficie vieja (el AgentExecutor de v0.x, los helpers de chains legacy) renombrada y congelada en gran parte. Recibe parches de seguridad y poco más. Código nuevo no debería importar desde aquí.

Paquetes partner. Los adaptadores por proveedor (langchain-anthropic, langchain-openai, langchain-google-genai, langchain-aws, langchain-mistralai y unos cincuenta más) viven en sus propios repos con su propia cadencia. Son la razón por la que el framework sigue ofreciendo portabilidad entre proveedores.

LangSmith. El servicio de tracing, evaluación y gestión de prompts. Misma empresa. Opcional, pero integrado a fondo.

Lo que se gana su lugar en 2026

Cuatro piezas de la superficie v1 justifican la dependencia.

LCEL para pipelines lineales. Retrievers de RAG, Q&A sobre documentos, pipelines de output estructurado, flujos simples de prompt y parse: LCEL es rápido de escribir, fácil de debuggear y trae batching, streaming y async por defecto. Un chain de RAG típico son seis líneas. Usamos LCEL donde el trabajo realmente es un pipeline (la entrada fluye hacia adelante, sin loops, sin branching, sin esperar a un humano). En el momento en que el flujo necesita estado entre turnos, LCEL deja de pagar.

create_agent para agentes sobre un set de tools. El nuevo create_agent recibe un modelo, una lista de tools y un system prompt opcional, y devuelve un grafo de LangGraph listo para invocar. En nuestras auditorías, la mayoría de los caminos de agente (leer tools, consultar una base de datos, llamar a una API, devolver una respuesta) encajan en este nivel. Por debajo queda una máquina de estados de LangGraph a la que puedes bajar cuando la abstracción no encaja. Por encima queda el mismo formato de mensaje en bloques que emiten los paquetes partner. Esa estratificación es la parte de v1.0 que mejora de verdad la experiencia de agentes de v0.x.

Paquetes partner como capa de adaptación. Si tienes una razón real para cambiar de proveedor (variaciones de costo, capacidades, caídas, restricciones regulatorias), los paquetes partner son la forma más barata de mantener la opción abierta. Un único model.invoke() funciona contra Claude Opus 4.7, GPT-5, Gemini 3, Llama hosteado en Bedrock y modelos de Mistral con la misma interfaz. El costo es una abstracción fina sobre el SDK de cada proveedor; el upside es un cambio de proveedor de una línea cuando cambian las condiciones.

LangSmith para tracing en producción. Si el stack es LangChain o LangGraph, LangSmith es el camino de menor resistencia para tracing, gestión de datasets y versionado de prompts. La integración es una variable de entorno. La alternativa (montar tu propia capa de tracing o cablear Langfuse a través del SDK) es válida, pero cuesta tiempo de setup que LangSmith no cuesta. La elección depende de soberanía de datos: LangSmith es hosteado, Langfuse se autohospeda con Docker Compose en cuestión de minutos.

Qué descartar

Cinco patrones que marcamos rutinariamente en auditorías.

AgentExecutor y cualquier cosa en langchain-classic. El loop de agente original quedó superado por create_agent y el runtime de LangGraph. El paquete classic recibe menos fixes que core, y todos los tutoriales de antes de finales de 2025 lo siguen enseñando. Código nuevo que importa langchain.agents.AgentExecutor nace con deuda legacy el día uno. La guía de migración cubre el cambio; en las migraciones que hemos corrido, el diff para un agente estándar es pequeño y mecánico.

MemorySaver en producción. El checkpointer en memoria por defecto es para prototipos. El estado vive en la memoria del proceso, se evapora al reiniciar y no se comparte entre réplicas. Producción corre con el checkpointer de Postgres o Redis, con claves de persistencia bajo tu control, y con tests de serialización para cada tipo de estado que toca el grafo. La capa de persistencia es la parte del runtime con más footguns, y la falla (perder estado de sesión en el peor momento) es invisible hasta que muerde a un usuario real.

LCEL para flujos con estado. Branching condicional, loops, interrupts con humano en el loop, sesiones persistentes: estos pertenecen a LangGraph. Forzarlos dentro de LCEL con runnables custom y parsers con efectos secundarios produce código donde cada chain tiene un wrapper a medida y nadie encuentra el bug. La línea entre LCEL y LangGraph es aproximadamente la línea entre una función y una máquina de estados. Elige por lo que el trabajo realmente es.

Descomposición multi-agente antes de haberla ganado. La mayoría de los setups multi-agente no debería existir. Rara vez le ganan a un solo agente con el set de tools correcto, multiplican el costo (una llamada de inferencia se vuelve cinco) y fallan de formas difíciles de debuggear porque la forma de la falla se mueve entre agentes corrida a corrida. Conviene leer el post de Anthropic sobre un agente de investigación que sí necesitaba descomposición multi-agente; la conclusión es que los casos donde el patrón se gana su complejidad son más estrechos que lo que sugiere el marketing.

Tutoriales pre-v1. Cualquier cosa escrita antes de octubre de 2025 habla de un framework que ya no existe. El changelog oficial y los docs de LangChain v1.x son los únicos puntos de partida seguros. Respuestas de Stack Overflow de 2024 y videos de YouTube de antes del rewrite son ruido de fondo en el mejor caso, peligrosos en el peor.

Cuándo reemplazamos el framework por SDK directo

El valor del framework es la portabilidad y las convenciones. Cuando la portabilidad no está pagando y las convenciones estorban, la jugada correcta es bajar directo al SDK del modelo.

Tres señales aparecen.

Capacidades de modelo en el borde. Extended thinking en Claude, computer use, prompt caching, batch processing, inputs estructurados para tools, streaming multimodal: estas capacidades llegan al SDK de Anthropic y al SDK de OpenAI semanas antes de que los paquetes partner las alcancen. Código que depende de la capacidad más reciente o espera o sale del framework. Salimos.

No estás cambiando de proveedor. El impuesto de la abstracción se justifica por la opción de cambiar. Si el código lleva tres años en Anthropic y el equipo no tiene plan de moverse, la abstracción es overhead sin beneficio. Hemos visto wrappers de 800 líneas alrededor de langchain-anthropic que existen solo para pasar los mismos parámetros a través del framework, cuando una integración directa de 200 líneas haría lo mismo y dejaría a los ingenieros nuevos leer el código.

El código acumuló deuda de framework. Imports de tres versiones mayores de langchain. Runnables custom sin documentación. Cadenas de RunnablePassthrough de cinco niveles. Cuando el código del framework es más complejo que la lógica de negocio, el framework dejó de pagar. Migrar un camino a la vez al SDK directo suele ser más rápido que un rewrite completo de v0 a v1, porque el SDK directo es más estable que la historia del framework.

Un rollout en 5 pasos para un codebase existente

Si estás sobre un codebase de LangChain pre-v1, este es el orden que recomendamos.

Paso 1. Inventariar imports. Grepea el codebase por from langchain y agrupa por módulo. Cualquier cosa desde langchain.agents.AgentExecutor, langchain.chains o clases de memory pre-v1 va a la lista de migración. Cualquier cosa desde langchain_core, los paquetes partner o langchain v1 se queda.

Paso 2. Marcar caminos legacy. Añade un comentario # classic en cada import desde langchain-classic o su equivalente v0.x. Esto es una ayuda de navegación para el equipo, todavía no un refactor. El objetivo es hacer visible la frontera de migración en los PRs.

Paso 3. Migrar un agente a la vez. Elige el camino de agente con menos tráfico. Migra de AgentExecutor a create_agent. Corre el mismo set de eval contra ambos caminos en paralelo durante una semana. Promueve cuando el camino v1 iguala o supera al camino v0 en tu rúbrica binaria pass-fail.

Paso 4. Mover el estado a un checkpointer real. Reemplaza cualquier uso de MemorySaver por el checkpointer de Postgres o Redis. Testea serialización para cada tipo de estado que toca el grafo. Añade un test de caos que mata el proceso a mitad de grafo y resume; si el estado no hace round-trip limpio, la capa de persistencia no está lista para producción.

Paso 5. Añadir LangSmith o tracing equivalente. Si no hay tracing aún, esta es la media jornada de mayor apalancamiento en la migración. Las trazas son lo que te deja comparar el comportamiento del agente v0 y v1 lado a lado. Sin ellas, la migración es opinión. Con ellas, es medición.

Los equipos que salen bien parados de esto no son los que reescribieron todo. Son los que trazaron una línea, conservaron lo que aún paga, reemplazaron lo que no, y bajaron al SDK donde el framework dejó de ayudar.