Agentes de IA: de chatbots a colegas autónomos
Un Chatbot habla. Un Agente actúa. Cómo crear bucles ReAct (Reason + Act) que puedan navegar por la web, consultar bases de datos y reservar vuelos de forma autónoma.
Por qué Maison Code habla de esto
En Maison Code Paris, actuamos como la conciencia arquitectónica de nuestros clientes. A menudo heredamos stacks “modernos” construidos sin una comprensión fundamental de la escala.
Discutimos este tema porque representa un punto de inflexión crítico en la madurez de la ingeniería. Implementarlo correctamente diferencia un MVP frágil de una plataforma resistente de nivel empresarial.
La evolución de la interfaz
Durante los últimos 40 años, el paradigma fundamental de la interacción persona-computadora (HCI) ha sido el “comando y control”. Haces clic en un botón y la computadora hace exactamente una cosa. Escribe un comando, la computadora ejecuta exactamente una función. Incluso con el auge de GenAI y ChatGPT, el paradigma siguió siendo en gran medida conversacional. Haces una pregunta y la máquina obtiene una respuesta. Es un motor de búsqueda sofisticado.
Agentes de IA representan un cambio de “Chat” a “Acción”. Un agente no sólo sabe cosas. Hace cosas. Es la diferencia entre una Wikipedia que puede responder “¿Cómo reservo un vuelo?” y un Conserje que dice “He reservado tu vuelo”.
Por qué Maison Code apuesta por agentes
Creemos que el “sitio web” tal como lo conocemos está muriendo. En 5 años, los usuarios no harán clic en 10 páginas para encontrar un producto. Le dirán a su Agente Personal: “Cómprame una camisa azul”. Creamos API listas para agentes. Nos aseguramos de que los datos de nuestros clientes estén estructurados para que los agentes de IA (Google Gemini, OpenAI, Siri) puedan leerlos y realizar transacciones con ellos. Si su sitio no está preparado para agentes, será invisible para el mayor consumidor de la próxima década: la IA.
1. El patrón ReAct: anatomía de un agente
El innovador artículo “ReAct: Synergizing Reasoning and Acting in Language Models” (Yao et al., 2022) lo cambió todo. Antes de ReAct, los LLM eran solo predictores de texto. ReAct les dio un “Monólogo interior” y un conjunto de “Manos” (Herramientas).
El bucle se ve así:
- Pensamiento: El Agente analiza la solicitud del usuario y planifica un paso. (“El usuario quiere el tiempo en París. Necesito encontrar la temperatura actual”).
- Acción: El Agente selecciona una herramienta de su caja de herramientas. (“Llamaré a
weather_api.get('París').”) - Observación: El Agente lee el resultado de la herramienta. (“El API arrojó 20°C”).
- Razonamiento: El Agente actualiza su entendimiento. (“Está bien, tengo la temperatura. Ahora puedo responderle al usuario”).
- Respuesta final: El Agente responde. (“Hace 20°C en París”).
Este bucle permite al agente resolver problemas de varios pasos en los que nunca recibió capacitación explícita.
2. Implementación de código (LangChain / TypeScript)
A continuación se explica cómo implementar un agente ReAct básico utilizando las funciones LangChain y OpenAI.
importar { ChatOpenAI } desde "@langchain/openai";
importar {AgentExecutor, createOpenAIFunctionsAgent} desde "langchain/agents";
importar {Extraer} desde "langchain/hub";
importar {z} desde "zod";
importar {herramienta} desde "@langchain/core/tools";
// 1. Definir las herramientas
// Las "Manos" del agente. Sea muy descriptivo en el campo 'descripción',
// ya que el LLM usa esto para decidir cuándo llamar a la herramienta.
herramienta de búsqueda constante = herramienta (
asíncrono ({consulta}) => {
console.log(`Buscando: ${query}`);
// Simular una búsqueda en Google
volver "El clima en París es de 20 grados centígrados con lluvia ligera.";
},
{
nombre: "search_web",
descripción: "Busca en Internet eventos y datos actuales.",
esquema: z.object({
consulta: z.string().describe("La consulta de búsqueda"),
}),
}
);
const emailTool = herramienta(
asíncrono ({a, cuerpo}) => {
console.log(`Enviando correo electrónico a ${to}`);
// Simular SMTP
devolver "Correo electrónico enviado exitosamente.";
},
{
nombre: "enviar_correo electrónico",
descripción: "Enviar un correo electrónico a un usuario.",
esquema: z.object({
a: z.string().correo electrónico(),
cuerpo: z.string(),
}),
}
);
herramientas constantes = [herramienta de búsqueda, herramienta de correo electrónico];
// 2. Inicializar el cerebro (LLM)
modelo constante = nuevo ChatOpenAI({
Nombre del modelo: "gpt-4-turbo",
temperatura: 0, // Mantenlo determinista para acciones
});
// 3. Crea el agente
// Extraemos un mensaje ReAct estándar desde el centro de LangChain
indicador constante = await Pull.pull("hwchase17/openai-functions-agent");
agente constante = espera createOpenAIFunctionsAgent({
película: modelo,
herramientas,
rápido,
});
constante agenteExecutor = nuevo AgenteExecutor({
agente,
herramientas,
});
// 4. Ejecución
// Solicitud del usuario: "Descubra el tiempo en París y envíelo por correo electrónico a boss@company.com"
resultado constante = esperar agenteExecutor.invoke({
entrada: "Descubra el tiempo en París y envíelo por correo electrónico a boss@company.com",
});
console.log(resultado.salida);
Tutorial de ejecución:
- Entrada: “Descubre el tiempo…”
- Decisión del LLM: El LLM ve que no conoce el clima. Mira las “herramientas”. Ve
search_web. Decide llamarlo. - Resultado de la herramienta: “El clima en París es de 20 grados…”
- Decisión LLM: Ahora tiene la información. Pero la solicitud también decía “envíelo por correo electrónico”. Mira las “herramientas”. Ve “enviar_correo electrónico”.
- Acción: Construye una carga útil JSON
{"to": "boss@company.com", "body": "El clima es 20C"}. - Salida de la herramienta: “Correo electrónico enviado”.
- Respuesta final: “He enviado el correo electrónico”.
Esto automatiza todo el flujo de trabajo. El desarrollador escribió 0 líneas de lógica “Weather to Email”. La IA lo descubrió.
3. La zona de peligro: bucles infinitos y alucinaciones
Darle “manos” a una IA es peligroso. ¿Qué pasa si se queda atrapado en un bucle?
- Pensamiento: Necesito comprar un billete.
- Acción: Comprar Entrada.
- Observación: Error: Tarjeta de crédito rechazada.
- Pensamiento: Debería intentarlo de nuevo.
- Acción: Comprar Entrada.
- Observación: Error…
- (Repetir 1000 veces).
Las barandillas son obligatorias.
- Iteraciones máximas: limite estrictamente el ciclo de ReAct a 5 o 10 pasos. Si no se resuelve para entonces, cancele.
- Humano en el circuito: Para acciones sensibles (comprar, eliminar, enviar por correo electrónico), obligue al agente a solicitar confirmación.
- Agente: “Estoy a punto de enviar este correo electrónico. ¿Continuar? [Y/N]”
- Validación del esquema Zod: fuerce las entradas de la herramienta para que coincidan con tipos rigurosos. Si el LLM genera una cadena donde se requiere un número, genera un error de validación antes de que se ejecute la herramienta.
4. El problema de la memoria (estado del vector)
Los LLM estándar tienen una memoria a corto plazo (ventana de contexto). Si hablas con un agente durante 1 hora, se olvida el inicio de la conversación. Para crear un “colega” verdaderamente útil, necesita Memoria a largo plazo. Usamos Bases de datos vectoriales (Pinecone, Milvus) para almacenar “Recuerdos”.
- Acción: El agente almacena el resumen de la reunión en la base de datos.
- Recuperación: la próxima semana, cuando pregunte “¿Qué discutimos sobre el Proyecto X?”, el Agente consulta la base de datos Vector, recupera el fragmento relevante y lo inyecta en el contexto. Esto es RAG (generación aumentada de recuperación) aplicado al estado del agente.
5. Estudio de caso: el agente autónomo de atención al cliente
En Maison Code, implementamos un agente de soporte L2 para un comerciante de Shopify de gran volumen. El problema: el 40 % de los tickets decían “¿Dónde está mi pedido?” (WISMO). Los agentes humanos dedicaron 5 minutos por ticket:
- Leer correo electrónico.
- Copie el ID del pedido.
- Abre Shopify.
- Verificar el estado.
- Abra el Panel de mensajería (FedEx).
- Verifique el seguimiento.
- Escribe un correo electrónico.
La solución del agente: Creamos un Agente con tres herramientas:
shopify_lookup_order(id)fedex_track_package(número_de_seguimiento)gmail_reply(texto)
El resultado:
- Resolución sin contacto: el agente resolvió de forma autónoma el 85 % de los tickets de WISMO en < 30 segundos.
- Disponibilidad 24 horas al día, 7 días a la semana: los clientes obtuvieron respuestas a las 3 a. m.
- Costo: €0,05 por ticket versus €2,50 por un agente humano.
Sin embargo, nos encontramos con casos extremos. Un cliente preguntó “¿Dónde está mi pedido?” pero aún no había colocado uno. El Agente alucinó con un ID de pedido. Solucionamos este problema agregando un paso “Verificar identidad del usuario” antes de cualquier búsqueda.
6. Sistemas multiagente (LangGraph / CrewAI)
Los agentes individuales son poderosos. Los equipos de agentes son revolucionarios. LangGraph le permite organizar múltiples agentes con diferentes “Personas”.
- Agente investigador: Tiene
google_search. Busca datos en la web. - Agente escritor: Tiene
markdown_formatter. Realiza la investigación y escribe una publicación de blog. - Agente editor: Tiene
critique_tool. Revisa la publicación y la rechaza si es demasiado corta.
Creas un gráfico:
Investigador -> Escritor -> Editor -> (Aprobar) -> Publicar.
Investigador -> Escritor -> Editor -> (Rechazar) -> Escritor.
Esto imita el flujo de trabajo de un equipo humano real. El “Editor” mantiene al “Escritor” bajo control.
7. El costo de la autonomía (economía simbólica)
Los agentes son caros. Una sola solicitud simple puede desencadenar 10 llamadas internas de LLM (Pensamiento -> Acción -> Pensamiento -> Acción). Si usa GPT-4, esto cuesta €0,30 por ejecución. Estrategia de optimización:
- Modelo de enrutador: utilice un modelo económico (GPT-3.5) para la lógica de enrutamiento (“¿Qué herramienta uso?”).
- Modelo Solver: Utilice un modelo costoso (GPT-4) para la generación compleja (“Escribe el correo electrónico”).
- Almacenamiento en caché: almacene en caché los resultados de llamadas a herramientas costosas (por ejemplo, consultas SQL). La economía dictará la adopción.
8. El futuro: 2026 y más allá
Nos estamos alejando de la “Ingeniería rápida” (hablar con el bot) a la “Ingeniería de flujo” (diseñar el gráfico de agentes). En 2026, el software no será un conjunto de botones estáticos. Será un “sistema operativo orientado a objetivos”. Le dirás a tu computadora: “Planifica un viaje a Japón por menos de €5,000”, y actuará. Navegará por Expedia. Verificará su calendario. Negociará por correo electrónico. Estamos construyendo la Interfaz Universal.
9. Conclusión
Building Agents es el desafío de ingeniería más apasionante de nuestra década. Requiere una combinación de ingeniería dura (confiabilidad de API, almacenamiento en caché, tipos) y psicología blanda (indicaciones, bucles de razonamiento). Empiece poco a poco. Dale a tu agente una herramienta. Míralo funcionar. Entonces dale otro. Pronto dejarás de escribir software. Tú lo gestionarás.
¿Necesita una fuerza laboral autónoma?
Creamos flotas de agentes de IA seguras y deterministas para automatizar operaciones, soporte y ventas.