El experimento en una frase
Un cliente escribe "mesa para 4 el viernes a las 21h, a nombre de María, en la terraza" y el formulario de reserva se rellena solo, campo a campo, sin que nadie toque el teclado. No es un concepto: lo grabé funcionando.
La pregunta de fondo que quería responder no es "¿mola?", sino la de siempre en mi trabajo: ¿esto resuelve un problema real de un negocio, hoy?
Probé un repo open source de Alibaba llamado page-agent, monté una web de reservas de prueba, y dejé que un cliente reservara hablando en lenguaje natural. Funciona sorprendentemente bien, hasta que le preguntas qué día es hoy. Te cuento el caso, cómo se monta, y para qué sirve (y para qué todavía no).
Qué es page-agent (y por qué me interesó)
page-agent es una librería open source de Alibaba. La idea: en vez de conectar la IA por detrás (API contra API), incrusta un agente en la propia página y le deja leer el DOM y actuar sobre él, escribir en campos y pulsar botones, como lo haría una persona. Le das una instrucción en lenguaje natural y la ejecuta sobre lo que hay en pantalla.
Para hostelería y para cualquier negocio con formularios (reservas, presupuestos, altas, incidencias), la promesa es enorme: el cliente habla, el sistema rellena.
Cómo lo monté (arquitectura mínima)
Quería una prueba honesta en un par de horas, no un producto. Así que:
- Una web de reservas de prueba con un formulario normal (fecha, hora, personas, zona, nombre, teléfono, notas). Reserva ficticia: al confirmar no llama a ningún sistema real, solo muestra los datos que se enviarían. Esto es clave para probar sin riesgo.
- page-agent cargado en esa página.
- Un modelo LLM detrás. Aquí un detalle importante de seguridad: la clave del modelo no puede ir en el navegador (cualquiera la vería). La puse en el servidor, con un pequeño proxy, de modo que la web llama a su propio backend y este habla con el modelo. El navegador nunca ve la clave.
Modelo usado en la prueba: uno económico y rápido (un Qwen de Alibaba, vía un gateway de IA). Coste por reserva: céntimos.
Cómo se configura (lo esencial)
En la práctica son tres piezas. Cargar la librería:
<script src="https://cdn.jsdelivr.net/npm/page-agent/dist/iife/page-agent.demo.js"></script>
Crear el agente apuntando a tu modelo (endpoint compatible con OpenAI; el baseURL apunta a tu proxy, no directo al modelo, para no exponer la clave):
const agent = new PageAgent({
model: 'alibaba/qwen3.7-plus',
baseURL: '/api', // tu proxy -> el modelo, con la key en el servidor
apiKey: 'proxy', // la real vive en el backend
language: 'es-ES',
});
Y darle la orden. Aquí está el 80% del secreto: la instrucción. La mía mapeaba cada campo y, sobre todo, le prohibía inventar:
const task =
'Rellena el formulario de reserva con los datos de la petición del cliente. ' +
'Mapea fecha, hora, personas, zona, nombre y teléfono si los dice, y cualquier ' +
'preferencia en Notas. MUY IMPORTANTE: no inventes datos que el cliente no haya dado; ' +
'deja ese campo vacío. Petición del cliente: "' + peticion + '"';
await agent.execute(task);
Ese "no inventes" es lo que separa un juguete de algo usable. Y funcionó.
Qué pasó (con datos, sin humo)
Probé tres situaciones reales de un servicio de reservas.
1) Reserva completa. "Mesa para 4 el viernes a las 21h, a nombre de María, en la terraza". Rellenó los cinco campos correctos. Y dejó teléfono y notas vacíos, porque el cliente no los dijo. Cero invención. Justo el comportamiento que le pides a un buen empleado.
2) Reserva incompleta. "Quiero cenar el sábado". Rellenó solo lo que sabía y dejó el resto vacío. Bien. Pero con un pero grande (abajo).
3) Fuera de alcance. "¿Tenéis menú vegano?". No es una reserva. Lo apuntó en Notas y dejó el resto en blanco. Una decisión razonable: lo registra para que el equipo lo vea, aunque no lo responde ni lo deriva.
Los límites (lo que nadie te cuenta en la demo bonita)
Prometí contarlo entero:
- No sabe qué día es hoy. A "el sábado" le puso una fecha concreta que puede estar equivocada. En una de las pruebas dedujo mal la fecha actual y resolvió el "sábado" a un día que no tocaba. La IA no tiene calendario: si no le pasas la fecha real como contexto, se la inventa. En una reserva, eso es un problema serio.
- Es no determinista y a veces lento. La misma petición unas veces se resolvió en segundos y otra entró en un bucle de reintentos de casi dos minutos. Para producción necesitas timeouts y una red de seguridad.
- Fuera de alcance igual a lo archiva, no lo gestiona. No responde preguntas ni escala a un humano por sí solo. Eso lo decides tú al diseñarlo.
¿Para qué sirve HOY, y para qué no?
Sí, hoy, con supervisión:
- Quitar fricción de formularios: reservar o solicitar hablando, sin pelearse con campos.
- Accesibilidad: gente mayor o poco digital que "habla" lo que quiere.
- Prerrellenar borradores que un humano confirma antes de enviar.
Todavía no, sin barandillas:
- Dejarla sola cerrando reservas reales sin revisión.
- Cualquier flujo donde una fecha o un dato mal puestos cuesten dinero o una mesa perdida.
La lección (que es siempre la misma)
La magia no es que la IA "entienda". La magia es el contexto y las barandillas que le pones tú: la fecha de hoy, tus reglas de negocio, cuándo tiene que parar y pasar la pelota a una persona. La IA sin tu contexto es media herramienta. Con él, empieza a parecerse a un empleado.
Y esto es exactamente lo que construyo: empleados digitales y agentes de IA para negocios, que hacen una tarea concreta bien, y saben cuándo no saben. Si te interesa entender por dónde va la conversación seria (no la demo bonita) sobre agentes conversacionales en un restaurante, la comparativa entre chatbot y concierge digital en alta gama es la lectura complementaria.
Cierre
Probé el repo yo mismo; te lo dejo por si quieres cacharrear: github.com/alibaba/page-agent.
Si estás pensando en meter un agente así en tu negocio y quieres una opinión honesta de qué sí y qué no, escríbeme.