Configuración del Entorno de Desarrollo
Antes de comenzar, es crucial preparar tu entorno de desarrollo. Asegúrate de tener instalado Python y una herramienta de gestión de paquetes como pip
. Crea un entorno virtual para aislar las dependencias de tu proyecto. Esto evitará conflictos con otras librerías instaladas en tu sistema.
- Crea un entorno virtual:
python3 -m venv venv
- Activa el entorno virtual:
source venv/bin/activate
- Instala las dependencias necesarias:

pip install -r requirements.txt
El archivo requirements.txt
debe contener las siguientes librerías:
- langchain
- openai
- google-api-python-client
- python-dotenv
- ReportLab
Definiendo las Herramientas del Agente
La piedra angular de cualquier agente de IA son las herramientas que utiliza para interactuar con el mundo exterior. En nuestro caso, necesitaremos herramientas para leer emails, enviar emails y generar facturas.
Lectura de Emails:
Para leer emails, utilizaremos la API de Gmail de Google. Esto requiere crear credenciales de autenticación en la consola de Google Cloud y habilitar el acceso a la API de Gmail. Asegúrate de seguir las instrucciones de Google para configurar correctamente las credenciales y guardarlas en un archivo seguro.
Envío de Emails:
Similar a la lectura, el envío de emails también requiere la API de Gmail. Utilizaremos las mismas credenciales de autenticación para enviar emails desde nuestro agente de IA.
Generación de Facturas:
Para la generación de facturas, utilizaremos la librería ReportLab
de Python. Esta librería nos permite crear documentos PDF personalizados con información del pedido y detalles del cliente.
A continuación, un ejemplo de cómo definir estas herramientas en Python:
from langchain.agents import Tool
from services.mailer import read_mail, send_email
from utils.invoice import generate_invoice
tools = [
Tool(
name = "read_emails",
func = read_mail,
description = "Útil para leer emails de Gmail."
),
Tool(
name = "send_email",
func = send_email,
description = "Útil para enviar emails a través de Gmail."
),
Tool(
name = "generate_invoice",
func = generate_invoice,
description = "Útil para generar facturas en formato PDF."
)
]
Creando el Agente con LangGraph
LangGraph es una librería que facilita la creación de flujos de trabajo complejos para agentes de IA. Nos permite definir las diferentes etapas de nuestro agente, desde la recepción del email hasta la generación de la factura y la respuesta al cliente.
Para crear el agente, definiremos un modelo de lenguaje (LLM) y le proporcionaremos las herramientas que definimos en la sección anterior. También definiremos un Prompt que guíe al LLM sobre cómo interactuar con las herramientas y qué tipo de información extraer de los emails.
A continuación, un ejemplo de cómo crear el agente:
from langchain.chat_models import ChatAnthropic
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
MODEL_NAME = "claude-3-sonnet-latest"
template = """Eres un asistente de IA que gestiona emails de atención al cliente. Tus responsabilidades incluyen:
1. Leer y comprender las consultas de los clientes.
2. Procesar pedidos y confirmar detalles.
3. Generar y enviar facturas cuando los pedidos están confirmados.
4. Responder profesionalmente a las preguntas de los clientes.
Cuando proceses pedidos y generes facturas, debes formatear los detalles del pedido en esta estructura exacta:
{{"customer_name": "Nombre Completo del Cliente", "items": [{"description": "Descripción del Producto/Nombre", "quantity": 1, "price": 1299.99}]}}
"""
prompt = PromptTemplate(template=template, input_variables=[])
llm = ChatAnthropic(model_name=MODEL_NAME, temperature=0)
llm_chain = LLMChain(prompt=prompt, llm=llm)
Procesando los Emails Entrantes
Una vez que el agente está configurado, necesitamos una función para procesar los emails entrantes. Esta función leerá los emails, extraerá la información relevante (como el nombre del cliente, los detalles del pedido y las preguntas), y luego utilizará el LLM para determinar la mejor acción a seguir.
def process_emails():
# Leer emails del inbox
emails = read_emails()
for email in emails:
# Extraer información del email
subject = email['subject']
sender = email['sender']
body = email['body']
# Utilizar el LLM para determinar la acción
response = llm_chain.run(body)
# Procesar la respuesta del LLM
if "factura" in response:
# Generar factura y enviarla al cliente
invoice_path = generate_invoice(response)
send_email(sender, "Factura de su pedido", "Adjuntamos su factura.", invoice_path)
else:
# Responder al cliente con la información solicitada
send_email(sender, "Respuesta a su consulta", response)