LangChain y LangGraph
LangChain nació en 2022 y en pocos meses se volvió el framework más popular para apps de IA, con miles de estrellas en GitHub. Su idea central es la "cadena" (chain): une componentes —prompt template, modelo, parser, memoria— usando el operador pipe igual que en Unix (`prompt | modelo | parser`).
Esto hace el código modular y reutilizable: puedes cambiar el modelo de GPT-4 a Claude con una línea sin tocar el resto del código.
LangGraph (del mismo equipo) lleva el concepto más allá para agentes: en lugar de cadenas lineales, define grafos donde cada nodo es un paso y las aristas son condiciones. Esto permite ciclos —el agente puede revisar su propio trabajo y repetir pasos hasta quedar satisfecho.
La crítica común a LangChain es que abstrae demasiado y puede ser difícil de debuggear; muchos equipos maduros prefieren llamar las APIs directamente. Úsalo para prototipar rápido; luego evalúa si necesitas la abstracción.
// npm install langchain @langchain/openai @langchain/core
import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";
const modelo = new ChatOpenAI({
model: "gpt-4o-mini",
temperature: 0,
});
// Prompt Template
const prompt = ChatPromptTemplate.fromMessages([
["system", "Eres un asistente que responde en {idioma}."],
["human", "{pregunta}"],
]);
const parser = new StringOutputParser();
// Chain = prompt | model | parser
const chain = prompt.pipe(modelo).pipe(parser);
const respuesta = await chain.invoke({
idioma: "español",
pregunta: "¿Cuál es la capital de Francia?",
});
// Conversación con memoria
import { ConversationChain } from "langchain/chains";
import { BufferMemory } from "langchain/memory";
const conversacion = new ConversationChain({
llm: modelo,
memory: new BufferMemory(),
});
const r1 = await conversacion.call({ input: "Hola, me llamo Ana" });
const r2 = await conversacion.call({ input: "¿Cómo me llamo?" }); // Recuerda: Ana
// Streaming con LangChain
const stream = await chain.stream({
idioma: "español",
pregunta: "Explica qué es recursión"
});
for await (const chunk of stream) {
process.stdout.write(chunk);
}
Practica esta lección
Resuelve los ejercicios del curso de IA para Devs en la app, gratis y con corrección automática.
Empezar a practicar