Consultoría IA para empresas — 100% remoto, trabajamos con tu equipo in-house

javi@javadex.es — Diagnóstico gratuito 30 min
Despliega tu proyecto IA hoy — VPS desde 4,99€/mes con SSD NVMeVer Hostinger
Inicio/Blog/Crear Agentes IA con LangChain: Guía Completa [2026]
Volver al Blog
Tutoriales IA2 de febrero de 202622 min

Crear Agentes IA con LangChain: Guía Completa [2026]

Tutorial completo para crear agentes de IA con LangChain. Desde agentes básicos hasta sistemas multi-agente complejos con herramientas.

Crear Agentes de IA con LangChain: Tutorial Completo [2026]

TLDR: Los agentes de IA son LLMs que pueden usar herramientas, tomar decisiones, y ejecutar acciones autónomamente. Con LangChain, puedes crear agentes en minutos: define tools (funciones que el agente puede usar), conecta un LLM (GPT-4, Claude), y deja que el agente decida cómo resolver la tarea.


¿Qué es un agente de IA?

Definición simple

Un agente de IA es un sistema que:

  1. Recibe una tarea en lenguaje natural
  2. Decide qué acciones tomar
  3. Usa herramientas para ejecutar acciones
  4. Observa resultados
  5. Repite hasta completar la tarea

Diferencia: Chatbot vs Agente

ChatbotAgente
Solo responde textoPuede ejecutar acciones
No usa herramientasUsa tools (APIs, código, etc.)
Una respuesta por inputMúltiples pasos si es necesario
Sin autonomíaDecide cómo resolver

Ejemplo: Agente de investigación

code
1Usuario: "Investiga las últimas noticias sobre OpenAI y
2 escribe un resumen de 3 párrafos"
3 
4Agente piensa: "Necesito buscar noticias recientes"
5
6Agente usa: Tool "web_search" con query "OpenAI news 2026"
7
8Agente recibe: [Resultados de búsqueda]
9
10Agente piensa: "Tengo info, ahora debo resumir"
11
12Agente escribe: [Resumen de 3 párrafos]


Arquitectura de agentes en LangChain

Componentes principales

code
1┌─────────────────────────────────────────────────┐
2│ AGENTE │
3├─────────────────────────────────────────────────┤
4│ │
5│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
6│ │ LLM │ │ Tools │ │ Memory │ │
7│ │ (cerebro)│ │(acciones)│ │(contexto)│ │
8│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
9│ │ │ │ │
10│ └───────────────┴───────────────┘ │
11│ │ │
12│ ┌───────┴───────┐ │
13│ │ Agent Loop │ │
14│ │ (ReAct/LCEL) │ │
15│ └───────────────┘ │
16└─────────────────────────────────────────────────┘

El Agent Loop (ReAct)

code
11. THOUGHT: Pensar qué hacer
22. ACTION: Elegir tool y parámetros
33. OBSERVATION: Ver resultado del tool
44. Repetir hasta: tener respuesta final
55. FINAL ANSWER: Responder al usuario


Tu primer agente: paso a paso

Instalación

bash
1pip install langchain langchain-openai langchain-community

Agente básico con búsqueda web

python
1from langchain_openai import ChatOpenAI
2from langchain.agents import AgentExecutor, create_react_agent
3from langchain_community.tools import DuckDuckGoSearchRun
4from langchain import hub
5 
6# 1. Configurar LLM
7llm = ChatOpenAI(model="gpt-4o", temperature=0)
8 
9# 2. Definir tools
10search = DuckDuckGoSearchRun()
11tools = [search]
12 
13# 3. Cargar prompt de agente ReAct
14prompt = hub.pull("hwchase17/react")
15 
16# 4. Crear agente
17agent = create_react_agent(llm, tools, prompt)
18 
19# 5. Crear executor
20agent_executor = AgentExecutor(
21 agent=agent,
22 tools=tools,
23 verbose=True, # Ver el razonamiento
24 max_iterations=5
25)
26 
27# 6. Ejecutar
28response = agent_executor.invoke({
29 "input": "¿Cuáles son las últimas noticias sobre IA en España?"
30})
31 
32print(response["output"])

Output del agente (verbose=True)

code
1> Entering new AgentExecutor chain...
2Thought: Necesito buscar noticias recientes sobre IA en España.
3Action: duckduckgo_search
4Action Input: "noticias inteligencia artificial España 2026"
5Observation: [Resultados de búsqueda...]
6 
7Thought: Tengo información relevante. Voy a resumir los puntos principales.
8Final Answer: Las últimas noticias sobre IA en España incluyen:
91. [Noticia 1]
102. [Noticia 2]
113. [Noticia 3]
12 
13> Finished chain.


Herramientas (Tools) personalizadas

Crear un tool simple

python
1from langchain.tools import tool
2 
3@tool
4def calcular_precio(cantidad: int, precio_unitario: float) -> float:
5 """
6 Calcula el precio total de una compra.
7 Args:
8 cantidad: Número de unidades
9 precio_unitario: Precio por unidad
10 Returns:
11 Precio total
12 """
13 return cantidad * precio_unitario
14 
15# Usar en agente
16tools = [calcular_precio, search]

Tool con llamada a API externa

python
1import requests
2from langchain.tools import tool
3 
4@tool
5def obtener_clima(ciudad: str) -> str:
6 """
7 Obtiene el clima actual de una ciudad.
8 Args:
9 ciudad: Nombre de la ciudad
10 Returns:
11 Descripción del clima actual
12 """
13 api_key = "tu-api-key"
14 url = f"https://api.weatherapi.com/v1/current.json?key={api_key}&q={ciudad}"
15 
16 response = requests.get(url)
17 data = response.json()
18 
19 return f"En {ciudad}: {data['current']['condition']['text']}, {data['current']['temp_c']}°C"

Tool con acceso a base de datos

python
1from langchain.tools import tool
2import sqlite3
3 
4@tool
5def consultar_productos(categoria: str) -> str:
6 """
7 Busca productos en la base de datos por categoría.
8 Args:
9 categoria: Categoría de productos a buscar
10 Returns:
11 Lista de productos encontrados
12 """
13 conn = sqlite3.connect("productos.db")
14 cursor = conn.cursor()
15 
16 cursor.execute(
17 "SELECT nombre, precio FROM productos WHERE categoria = ?",
18 (categoria,)
19 )
20 resultados = cursor.fetchall()
21 conn.close()
22 
23 if not resultados:
24 return f"No se encontraron productos en la categoría '{categoria}'"
25 
26 return "\n".join([f"- {nombre}: €{precio}" for nombre, precio in resultados])

Toolkit completo de ejemplo

python
1@tool
2def enviar_email(destinatario: str, asunto: str, cuerpo: str) -> str:
3 """Envía un email."""
4 # Implementación...
5 return f"Email enviado a {destinatario}"
6 
7@tool
8def crear_evento_calendario(titulo: str, fecha: str, hora: str) -> str:
9 """Crea un evento en Google Calendar."""
10 # Implementación...
11 return f"Evento '{titulo}' creado para {fecha} a las {hora}"
12 
13@tool
14def buscar_en_documentos(query: str) -> str:
15 """Busca información en los documentos internos de la empresa."""
16 # Implementación con RAG...
17 return "Resultados relevantes..."
18 
19tools = [
20 search,
21 enviar_email,
22 crear_evento_calendario,
23 buscar_en_documentos,
24 calcular_precio,
25 obtener_clima
26]


Memoria y contexto

Memoria de conversación

python
1from langchain.memory import ConversationBufferMemory
2 
3# Memoria que guarda el historial completo
4memory = ConversationBufferMemory(
5 memory_key="chat_history",
6 return_messages=True
7)
8 
9# Incluir en el executor
10agent_executor = AgentExecutor(
11 agent=agent,
12 tools=tools,
13 memory=memory,
14 verbose=True
15)
16 
17# Primera interacción
18agent_executor.invoke({"input": "Me llamo Carlos"})
19 
20# El agente recuerda
21agent_executor.invoke({"input": "¿Cómo me llamo?"})
22# Output: "Te llamas Carlos"

Memoria con ventana

python
1from langchain.memory import ConversationBufferWindowMemory
2 
3# Solo guarda los últimos N intercambios
4memory = ConversationBufferWindowMemory(
5 k=5, # Últimas 5 conversaciones
6 memory_key="chat_history",
7 return_messages=True
8)

Memoria con resumen

python
1from langchain.memory import ConversationSummaryMemory
2 
3# Resume conversaciones largas automáticamente
4memory = ConversationSummaryMemory(
5 llm=llm,
6 memory_key="chat_history"
7)

Memoria persistente (Redis)

python
1from langchain.memory import RedisChatMessageHistory
2from langchain.memory import ConversationBufferMemory
3 
4# Memoria que persiste en Redis
5message_history = RedisChatMessageHistory(
6 url="redis://localhost:6379/0",
7 session_id="user-123"
8)
9 
10memory = ConversationBufferMemory(
11 chat_memory=message_history,
12 memory_key="chat_history",
13 return_messages=True
14)


Agentes multi-tool avanzados

Agente asistente personal

python
1from langchain_openai import ChatOpenAI
2from langchain.agents import AgentExecutor, create_openai_functions_agent
3from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
4 
5# Prompt personalizado
6prompt = ChatPromptTemplate.from_messages([
7 ("system", """Eres un asistente personal inteligente.
8 
9Tienes acceso a las siguientes herramientas:
10- Búsqueda web para información actualizada
11- Calendario para gestionar eventos
12- Email para enviar mensajes
13- Base de datos de documentos internos
14 
15Siempre:
161. Piensa qué herramientas necesitas
172. Ejecuta las acciones necesarias
183. Proporciona respuestas claras y útiles
19 
20Fecha actual: {current_date}
21"""),
22 MessagesPlaceholder(variable_name="chat_history"),
23 ("human", "{input}"),
24 MessagesPlaceholder(variable_name="agent_scratchpad"),
25])
26 
27# Crear agente con function calling (más preciso)
28agent = create_openai_functions_agent(llm, tools, prompt)
29 
30agent_executor = AgentExecutor(
31 agent=agent,
32 tools=tools,
33 memory=memory,
34 verbose=True,
35 handle_parsing_errors=True
36)

Ejemplo de uso complejo

python
1# El agente puede encadenar múltiples herramientas
2response = agent_executor.invoke({
3 "input": """
4 Necesito preparar la reunión con el cliente de mañana:
5 1. Busca información sobre su empresa (TechCorp)
6 2. Revisa si tenemos documentos previos sobre ellos
7 3. Crea un evento en el calendario para mañana a las 10:00
8 4. Envía un email de confirmación a cliente@techcorp.com
9 """,
10 "current_date": "2026-02-02"
11})

Output del agente

code
1> Entering new AgentExecutor chain...
2 
3Invoking: search with {'query': 'TechCorp empresa información'}
4[Resultados de búsqueda...]
5 
6Invoking: buscar_en_documentos with {'query': 'TechCorp cliente'}
7"Encontré 3 documentos: propuesta_2025.pdf, contrato_2024.pdf..."
8 
9Invoking: crear_evento_calendario with {'titulo': 'Reunión TechCorp', 'fecha': '2026-02-03', 'hora': '10:00'}
10"Evento creado correctamente"
11 
12Invoking: enviar_email with {'destinatario': 'cliente@techcorp.com', 'asunto': 'Confirmación reunión mañana', 'cuerpo': '...'}
13"Email enviado"
14 
15Final Answer: He preparado todo para la reunión:
161. TechCorp es una empresa de tecnología fundada en 2015...
172. Encontré documentos previos: propuesta y contrato de años anteriores
183. Evento creado: "Reunión TechCorp" mañana a las 10:00
194. Email de confirmación enviado al cliente
20 
21> Finished chain.


Sistemas multi-agente

Arquitectura supervisor

python
1from langchain.agents import AgentExecutor
2from langgraph.graph import StateGraph
3 
4# Definir agentes especializados
5researcher_agent = create_agent(llm, [search], "Investigador")
6writer_agent = create_agent(llm, [write_file], "Escritor")
7reviewer_agent = create_agent(llm, [review_tool], "Revisor")
8 
9# Supervisor que coordina
10def supervisor_node(state):
11 """Decide qué agente debe actuar"""
12 messages = state["messages"]
13 last_message = messages[-1]
14 
15 # Lógica de routing
16 if "investigar" in last_message.lower():
17 return "researcher"
18 elif "escribir" in last_message.lower():
19 return "writer"
20 elif "revisar" in last_message.lower():
21 return "reviewer"
22 else:
23 return "end"
24 
25# Crear grafo de agentes
26workflow = StateGraph(AgentState)
27workflow.add_node("supervisor", supervisor_node)
28workflow.add_node("researcher", researcher_agent)
29workflow.add_node("writer", writer_agent)
30workflow.add_node("reviewer", reviewer_agent)
31 
32# Definir transiciones
33workflow.add_edge("supervisor", "researcher")
34workflow.add_edge("researcher", "supervisor")
35workflow.add_edge("supervisor", "writer")
36workflow.add_edge("writer", "supervisor")
37workflow.add_edge("supervisor", "reviewer")
38workflow.add_edge("reviewer", "end")
39 
40app = workflow.compile()

Uso del sistema multi-agente

python
1result = app.invoke({
2 "messages": ["Investiga sobre IA generativa, escribe un artículo, y revísalo"]
3})
4 
5# El supervisor coordina:
6# 1. researcher investiga
7# 2. writer escribe basándose en la investigación
8# 3. reviewer revisa y sugiere mejoras


Deployment en producción

API con FastAPI

python
1from fastapi import FastAPI
2from pydantic import BaseModel
3 
4app = FastAPI()
5 
6class Query(BaseModel):
7 input: str
8 user_id: str
9 
10@app.post("/agent")
11async def run_agent(query: Query):
12 # Obtener memoria del usuario
13 memory = get_user_memory(query.user_id)
14 
15 executor = AgentExecutor(
16 agent=agent,
17 tools=tools,
18 memory=memory,
19 max_iterations=10,
20 early_stopping_method="generate"
21 )
22 
23 try:
24 result = executor.invoke({"input": query.input})
25 return {"response": result["output"], "success": True}
26 except Exception as e:
27 return {"error": str(e), "success": False}

Manejo de errores

python
1agent_executor = AgentExecutor(
2 agent=agent,
3 tools=tools,
4 verbose=True,
5 max_iterations=10, # Evitar loops infinitos
6 max_execution_time=60, # Timeout de 60 segundos
7 handle_parsing_errors=True, # Recuperarse de errores de parsing
8 early_stopping_method="generate" # Generar respuesta si se alcanza límite
9)

Logging y monitoreo

python
1from langchain.callbacks import FileCallbackHandler
2from langchain.callbacks.manager import CallbackManager
3 
4# Log a archivo
5file_handler = FileCallbackHandler("agent_logs.txt")
6callback_manager = CallbackManager([file_handler])
7 
8agent_executor = AgentExecutor(
9 agent=agent,
10 tools=tools,
11 callbacks=callback_manager
12)


FAQ

¿Qué LLM usar para agentes?

GPT-4o es el más fiable para agentes complejos. Claude 3.5 Sonnet es excelente para agentes de código. GPT-4o-mini funciona para agentes simples y es más económico.

Los modelos necesitan ser buenos en "function calling" para agentes. Si quieres ejecutar agentes con modelos locales (Llama 3, Mistral) para no depender de APIs externas, necesitas un equipo con al menos 32 GB de RAM. Un Mac Mini M4 o un mini PC con 32 GB como el Blackview MP50 son opciones asequibles para correr agentes locales con Ollama.

¿Cuántas herramientas puede tener un agente?

Prácticamente sin límite técnico, pero:

  • 5-10 tools: Óptimo
  • 10-20 tools: Funciona bien con buen LLM
  • 20+ tools: Considerar agrupar o usar sub-agentes

¿Los agentes pueden ejecutar código peligroso?

Sí, ten cuidado. Mejores prácticas:

  • Sandboxing para ejecución de código
  • Validación de inputs en tools
  • Límites de tiempo y recursos
  • No dar acceso a credenciales sensibles directamente


Conclusión

Los agentes de IA con LangChain te permiten crear sistemas que van más allá de chatbots simples. Con tools, memoria, y coordinación multi-agente, puedes automatizar tareas complejas que antes requerían intervención humana.

Tu próximo paso:

  1. Crea un agente básico con búsqueda web
  2. Añade 2-3 tools personalizadas para tu caso de uso
  3. Implementa memoria para conversaciones
  4. Considera multi-agente si la tarea es muy compleja

Recursos relacionados:


Más tutoriales de IA en Javadex.es

Síguenos: YouTube @JavadexAI | TikTok @javadex

Recomendado

¿Listo para poner tu proyecto en producción?

Si estás siguiendo este tutorial, necesitas un servidor donde desplegarlo. Yo uso Hostinger para mis proyectos porque el panel es intuitivo, los VPS van con SSD NVMe, y a 4,99€/mes no hay nada comparable en relación calidad-precio.

SSL gratis + IP dedicada
SSD NVMe ultra rápido
Soporte 24/7 en español

* Enlace de afiliado. Si contratas a través de este enlace, nos ayudas a mantener este contenido gratuito.

Posts Relacionados

JS

Javier Santos Criado

Consultor de IA y Automatización | Fundador de Javadex

Experto en implementación de soluciones de Inteligencia Artificial para empresas. Especializado en automatización con n8n, integración de LLMs, y desarrollo de agentes IA.

RECOMENDADO

Lleva tu proyecto a producción

Hosting web desde 2,99€/mes o VPS con SSD NVMe desde 4,99€/mes. Panel intuitivo, IP dedicada y soporte 24/7 en español.

SSL gratis SSD NVMe Soporte 24/7 Panel intuitivo
Explorar planes de Hostinger

¿Quieres más contenido de IA?

Explora nuestras comparativas y guías

Consultoría y formación en IA para empresas

Implementamos soluciones de inteligencia artificial adaptadas a tu negocio. Proceso 100% remoto — trabajamos con tu equipo in-house sin que tengas que desplazarte.

javi@javadex.esSesión de diagnóstico gratuita · 30 min