AI Agent Develop: Agentes Inteligentes con LangChain y LangGraph

Jaime Hernández
3 min readDec 19, 2024

--

Curso Udemy Pablo Dichone

https://www.udemy.com/certificate/UC-780d6420-e70c-468d-800b-1cbf971835d9/

En este blog, exploraremos los conocimientos que adquirí en el curso “Master AI Agent Development: Build Scalable Agents with LangChain & LangGraph”. Este curso me permitió desarrollar agentes escalables utilizando herramientas avanzadas como LangChain y LangGraph, desde conceptos básicos hasta aplicaciones sofisticadas en casos reales.

¿Qué son los agentes inteligentes?

Los agentes inteligentes son sistemas diseñados para interactuar de forma autónoma con el entorno, tomando decisiones basadas en datos y modelos de lenguaje. Su aplicación abarca sectores como la atención al cliente, investigación de mercados, educación y análisis financieros.

En este curso, aprendí cómo implementar estos agentes desde cero utilizando modelos como GPT-4.0 y combinándolos con grafos de estado, almacenamiento de memoria y herramientas externas.

Ejemplo 1: Construyendo un agente básico

El primer paso fue crear un agente simple que utiliza un modelo de lenguaje grande (LLM) para responder preguntas del usuario. A continuación, un fragmento del código:

import os
from dotenv import load_dotenv
from openai import OpenAI
# Cargar variables de entorno
load_dotenv()
openai_key = os.getenv("OPENAI_API_KEY")
# Configurar el modelo
llm_name = "gpt-4.0"
client = OpenAI(api_key=openai_key)
class Agent:
def __init__(self, system=""):
self.system = system
self.messages = []
if system:
self.messages.append({"role": "system", "content": system})
def __call__(self, message):
self.messages.append({"role": "user", "content": message})
result = self.execute()
self.messages.append({"role": "assistant", "content": result})
return result
def execute(self):
response = client.chat.completions.create(
model=llm_name,
messages=self.messages
)
return response.choices[0].message.content
# Uso del agente
agent = Agent(system="Eres un asistente que brinda respuestas claras y concisas.")
respuesta = agent("¿Quién fue Nelson Mandela?")
print(respuesta)

Explicación:

  • Inicialización del modelo: El agente utiliza gpt-4.0 para procesar mensajes.
  • Historial de mensajes: Almacena conversaciones previas para mantener contexto.
  • Ejemplo de uso: Responde a preguntas generales.

Ejemplo 2: Agente financiero avanzado con LangGraph

LangGraph es una herramienta poderosa que permite modelar flujos de trabajo complejos utilizando grafos de estados. En este ejemplo, implementamos un agente financiero que recopila y analiza datos financieros de manera estructurada.

Construcción del grafo de estados

LangGraph permite representar la lógica del agente como un conjunto de nodos (estados) y transiciones entre ellos. Cada nodo define una tarea específica que el agente debe realizar.

from langgraph.graph import StateGraph
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
import os
# Cargar variables de entorno
load_dotenv()
openai_key = os.getenv("OPENAI_API_KEY")
# Configurar el modelo
model = ChatOpenAI(api_key=openai_key, model="gpt-4.0")
def financial_analysis(prompt):
return model.chat([{"role": "user", "content": prompt}])
# Crear un grafo de estados
graph = StateGraph()
# Definir los estados
def gather_data(state, context):
# Simula la recopilación de datos financieros
context['data'] = "Datos financieros recopilados"
return "Datos recopilados"
def analyze_data(state, context):
# Simula el análisis de los datos
data = context.get('data', "Sin datos")
context['analysis'] = f"Análisis completado para: {data}"
return context['analysis']
def generate_report(state, context):
# Genera un informe basado en el análisis
analysis = context.get('analysis', "Sin análisis")
return f"Informe generado: {analysis}"
# Agregar estados al grafo
graph.add_state("gather_data", gather_data)
graph.add_state("analyze_data", analyze_data)
graph.add_state("generate_report", generate_report)
# Definir las transiciones
graph.add_transition("gather_data", "analyze_data")
graph.add_transition("analyze_data", "generate_report")
# Ejecutar el grafo
context = {}
result = graph.run(initial_state="gather_data", context=context)
print(result)

Explicación detallada:

  • Estado gather_data: Recopila datos financieros simulados y los almacena en el contexto del grafo.
  • Estado analyze_data: Realiza un análisis de los datos recopilados, también almacenado en el contexto.
  • Estado generate_report: Genera un informe basado en el análisis realizado.
  • Transiciones: Controlan el flujo entre los estados de manera secuencial.

Ventajas de LangGraph:

  1. Modularidad: Cada estado es una unidad independiente, lo que facilita el mantenimiento y la ampliación del agente.
  2. Contexto compartido: El grafo permite almacenar y compartir datos entre estados, garantizando consistencia.
  3. Escalabilidad: Ideal para modelar flujos de trabajo complejos con lógica ramificada.
  4. Visualización: LangGraph permite generar visualizaciones del flujo, lo que mejora la comprensión del sistema.

Casos de uso prácticos

  1. Atención al cliente: Creación de asistentes virtuales personalizados.
  2. Finanzas: Generación de informes y análisis de datos.
  3. Educación: Agentes interactivos para tutorías automatizadas.
  4. Investigación de mercados: Análisis competitivo en tiempo real.
  5. Automatización de procesos: Flujos complejos en lógicas empresariales.

Reflexión final

LangGraph se destaca como una herramienta clave para estructurar agentes inteligentes de manera escalable y eficiente. Su integración con LLMs como GPT-4.0 ofrece una combinación poderosa para resolver problemas complejos en diversos dominios.

Si deseas aprender más, te invito a explorar estos conceptos y llevarlos a tus proyectos. ¡La IA está transformando el futuro, y ahora es el momento de ser parte de este cambio!

--

--

No responses yet