Configuración del entorno y primeros pasos con LangGraph

Lectura
15 min~4 min lectura

Concepto clave

LangGraph es un framework para construir agentes de IA que pueden tomar decisiones secuenciales, mantener memoria entre interacciones y utilizar herramientas externas. Piensa en un agente como un asistente virtual que no solo responde preguntas, sino que planifica acciones, recuerda conversaciones pasadas y ejecuta tareas usando APIs o bases de datos.

La arquitectura se basa en grafos dirigidos donde los nodos representan estados o acciones, y las aristas definen transiciones condicionales. Esto permite modelar flujos complejos como: "si el usuario pide un informe, primero consulta la base de datos, luego formatea los datos, y finalmente envía un correo". La memoria se implementa como un estado persistente que se actualiza en cada paso, permitiendo al agente aprender del contexto.

"LangGraph transforma prompts estáticos en procesos dinámicos que pueden adaptarse en tiempo real."

Cómo funciona en la práctica

Para configurar el entorno, sigue estos pasos:

  1. Instala LangGraph y dependencias: pip install langgraph langchain-openai
  2. Configura tu API key de OpenAI en variables de entorno.
  3. Crea un archivo Python con la estructura básica de un agente.

Ejemplo de código inicial:

from langgraph.graph import StateGraph, END
from typing import TypedDict

class AgentState(TypedDict):
    message: str
    memory: list
    tools_used: list

def process_input(state: AgentState):
    # Lógica para procesar entrada
    return {"memory": state["memory"] + [state["message"]]}

graph = StateGraph(AgentState)
graph.add_node("procesar", process_input)
graph.add_edge("procesar", END)
graph.set_entry_point("procesar")
app = graph.compile()

Este código define un grafo simple que procesa un mensaje y lo almacena en memoria. El estado AgentState incluye campos para el mensaje, la memoria y las herramientas usadas.

Caso de estudio

Imagina un agente para soporte técnico que usa herramientas y memoria. El agente debe:

  • Recordar problemas previos del usuario (memoria).
  • Consultar una base de conocimientos (herramienta).
  • Decidir si escalar a un humano (decisión condicional).

Implementación clave:

PasoAcciónHerramienta
1Recibir consultaNinguna
2Buscar en memoriaBase de datos local
3Si no hay solución, buscar en KBAPI de conocimientos
4Decidir escalarLógica condicional

El grafo controla este flujo, actualizando la memoria después de cada paso para evitar repeticiones.

Errores comunes

  • No inicializar memoria correctamente: Olvidar definir un estado inicial puede causar errores en tiempo de ejecución. Siempre prueba con un estado vacío.
  • Mal manejo de herramientas asíncronas: Si usas APIs externas, asegúrate de manejar tiempos de espera y fallos con try-except.
  • Grafos cíclicos infinitos: Diseña transiciones que siempre lleven a un nodo final o condición de salida.
  • Ignorar el costo computacional: Agregar muchas herramientas o nodos puede ralentizar el agente. Optimiza con caching.

Checklist de dominio

  1. ¿Puedes instalar LangGraph y configurar un entorno de desarrollo?
  2. ¿Entiendes cómo definir un estado personalizado con TypedDict?
  3. ¿Sabes agregar nodos y aristas a un grafo?
  4. ¿Puedes implementar una herramienta simple (ej., consultar una API)?
  5. ¿Comprendes cómo la memoria persiste entre llamadas?
  6. ¿Eres capaz de depurar un grafo que falla en tiempo de ejecución?
  7. ¿Puedes explicar la diferencia entre un nodo y una herramienta en LangGraph?

Construye un agente de recordatorios con memoria y herramientas

Crea un agente que gestione recordatorios usando LangGraph. Sigue estos pasos:

  1. Configura un entorno virtual e instala LangGraph y una biblioteca para fechas (ej., datetime).
  2. Define un estado con campos para: tarea (string), fecha (datetime), memoria (lista de tareas completadas).
  3. Implementa dos nodos: uno para agregar una tarea a la memoria, y otro para listar tareas pendientes (usando la fecha actual como filtro).
  4. Añade una herramienta que use una API ficticia para enviar un correo de recordatorio (simula la llamada con una función que imprima en consola).
  5. Conecta los nodos en un grafo donde, después de agregar una tarea, se decida si enviar un recordatorio basado en la fecha.
  6. Prueba el agente con al menos tres tareas diferentes y verifica que la memoria persista.

Entrega el código completo y una explicación de cómo el grafo maneja las decisiones.

Pistas
  • Usa StateGraph para definir el grafo y add_node para cada función.
  • Para la decisión condicional, investiga el método add_conditional_edges en la documentación.
  • Simula la herramienta de correo con un print para evitar dependencias externas.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.