Renderz Studio
Academia
Proyectos
Servicios
Arsenal
Repo
Herramientas
Skills
El Oráculo
Guía Gratis
← El Arsenal
ArquitecturaAvanzado50 min

LangChain en Producción

Chains · Agents · Memory · LCEL · el framework que conecta todo

LangChainAgentsChains
✓ Guía gratuita · Acceso completo

Mapa rápido · salta al paso que te interese

LCEL Basics

El nuevo estándar de composición

Chains útiles

Summarization, QA, extraction

Agents con tools

LLM que ejecuta acciones

01

LCEL: LangChain Expression Language

LCEL es el nuevo estándar para componer chains. Usa el operador pipe (|) para conectar componentes de forma declarativa.

lib/chains/basic.ts
import { ChatAnthropic } from '@langchain/anthropic'
import { ChatPromptTemplate } from '@langchain/core/prompts'
import { StringOutputParser } from '@langchain/core/output_parsers'

const model = new ChatAnthropic({
  model: 'claude-sonnet-4-20250514',
})

const prompt = ChatPromptTemplate.fromMessages([
  ['system', 'Eres un experto en {topic}. Responde de forma concisa.'],
  ['human', '{question}'],
])

// LCEL: componentes conectados con |
const chain = prompt.pipe(model).pipe(new StringOutputParser())

// Uso
const result = await chain.invoke({
  topic: 'inteligencia artificial',
  question: '¿Qué es un transformer?',
})
console.log(result)

Tip Pro

LCEL soporta streaming nativo. Cambia invoke por stream para obtener tokens uno a uno.
02

Chains útiles para producción

lib/chains/summarize.ts
import { loadSummarizationChain } from 'langchain/chains'
import { RecursiveCharacterTextSplitter } from 'langchain/text_splitter'
import { ChatAnthropic } from '@langchain/anthropic'

const model = new ChatAnthropic({ model: 'claude-sonnet-4-20250514' })

export async function summarizeLongDocument(text: string): Promise<string> {
  // 1. Dividir documento largo en chunks
  const splitter = new RecursiveCharacterTextSplitter({
    chunkSize: 4000,
    chunkOverlap: 200,
  })
  const docs = await splitter.createDocuments([text])

  // 2. Usar chain de summarization (map-reduce)
  const chain = loadSummarizationChain(model, {
    type: 'map_reduce',
  })

  // 3. Ejecutar
  const result = await chain.invoke({ input_documents: docs })
  return result.text
}
lib/chains/extract.ts
import { ChatAnthropic } from '@langchain/anthropic'
import { z } from 'zod'

const model = new ChatAnthropic({ model: 'claude-sonnet-4-20250514' })

// Schema de extracción
const PersonSchema = z.object({
  name: z.string().describe('Nombre completo'),
  email: z.string().email().optional(),
  company: z.string().optional(),
  role: z.string().optional(),
})

export async function extractPerson(text: string) {
  const structuredModel = model.withStructuredOutput(PersonSchema)
  return structuredModel.invoke(
    `Extrae la información de la persona de este texto: ${text}`
  )
}
03

Agents con tools

lib/agents/researcher.ts
import { ChatAnthropic } from '@langchain/anthropic'
import { TavilySearchResults } from '@langchain/community/tools/tavily_search'
import { createReactAgent } from '@langchain/langgraph/prebuilt'

const model = new ChatAnthropic({ model: 'claude-sonnet-4-20250514' })

// Tool de búsqueda web
const searchTool = new TavilySearchResults({
  maxResults: 3,
})

// Crear agent con tools
const agent = createReactAgent({
  llm: model,
  tools: [searchTool],
})

export async function research(query: string) {
  const result = await agent.invoke({
    messages: [{ role: 'user', content: query }],
  })
  return result.messages[result.messages.length - 1].content
}

// Uso
const answer = await research('¿Cuáles son las últimas noticias sobre Claude AI?')

Guías relacionadas

Function Calling Avanzado

Tools sin LangChain

RAG desde Cero

Retrieval con LangChain

¿Quieres el sistema completo?

500+ páginas, 25 capítulos, código de producción, acceso a todas las guías del Arsenal.

Curso Completo · €29

PayPal · Acceso inmediato

¿Hablamos?