00:00:00- Hola, buenos días a todos.
00:00:02Muchas gracias por acompañarnos hoy.
00:00:03Estoy muy emocionado por lo que vamos a compartir.
00:00:06Desde hace una década, el código que corre en Vercel
00:00:10se construía principalmente para peticiones web inmediatas.
00:00:14Pero el software más interesante que crean nuestros clientes hoy
00:00:17ya no encaja en ese modelo.
00:00:20Y el número de estos nuevos proyectos está explotando.
00:00:23Solo en los últimos meses,
00:00:25los despliegues semanales en Vercel se han duplicado.
00:00:28Y un tercio de esos nuevos despliegues provienen de agentes de código,
00:00:31una cifra que ha subido un mil por ciento
00:00:34en solo seis meses.
00:00:35Pero la parte más interesante para mí
00:00:38no es cuánto estamos desplegando, sino qué estamos desplegando.
00:00:41Esos agentes están enviando agentes.
00:00:44Y los agentes que construyen nuestros clientes,
00:00:48no solo responden una vez y esperan.
00:00:50Necesitan razonar, llamar a herramientas, esperar a humanos,
00:00:53y luego hacerlo todo de nuevo.
00:00:55Y cada uno de esos flujos de trabajo necesita un backend que pueda seguir el ritmo.
00:00:58Así que lo que he visto en Vercel
00:01:02es que el equipo que está enviando más rápido ahora mismo,
00:01:05no está reconstruyendo la infraestructura
00:01:07ni programando colas ellos mismos,
00:01:08ni escribiendo lógica de reintento desde cero,
00:01:11ni siquiera configurando la observabilidad.
00:01:13Eso ya se ha hecho.
00:01:15Así que están usando nuestras primitivas de infraestructura,
00:01:17lo que hemos pasado la última década construyendo,
00:01:20para que puedan centrar todo su enfoque en su producto.
00:01:24Y ese es exactamente el problema que construimos Workflows para resolver.
00:01:27Lo lanzamos en beta hace seis meses,
00:01:30y la respuesta fue increíble.
00:01:33Y ahora, cien millones de ejecuciones después,
00:01:36estamos muy emocionados de anunciar que Workflows es GA, hoy mismo.
00:01:41Déjenme mostrarles cómo funciona.
00:01:43La aplicación que voy a mostrarles
00:01:44es un generador de tarjetas de cumpleaños que construí.
00:01:47Ahora, podría ser cualquier cosa realmente,
00:01:49pero esto abarca todo lo que acabamos de hablar.
00:01:51No cabe en una sola petición,
00:01:54espera a humanos, reintenta cuando las cosas fallan,
00:01:57y transmite el progreso en tiempo real al usuario.
00:02:00Así es como funciona.
00:02:02Permítanme enviarme una tarjeta,
00:02:04y empezaré introduciendo mi correo electrónico.
00:02:05A continuación, elegiré una fecha,
00:02:09y voy a elegir el 23 de abril.
00:02:11Bueno, me gusta hacer fogatas para mi cumpleaños,
00:02:14así que haré una fogata en Ocean Beach,
00:02:17y solo me la envío a mí mismo, así que para Pernet.
00:02:21E introduciré mi propio correo aquí solo para facilitar la demo.
00:02:24Así que, voy a confirmar la asistencia a mi propio cumpleaños.
00:02:27Genial, ahora voy a dar a Generar y Enviar,
00:02:30y veré cómo empieza a generarse la tarjeta de cumpleaños.
00:02:34Me dirigiré al panel de control de Vercel
00:02:35donde puedo ver que acaba de entrar esta ejecución.
00:02:37Permítanme entrar.
00:02:39Y puedo ver esto en tiempo real a medida que genera prompts,
00:02:42luego genera el mensaje,
00:02:43y también genera una imagen.
00:02:45Esta es la observabilidad de la que hablábamos.
00:02:48Cada paso es visible aquí mismo.
00:02:50Puedes ver exactamente qué se está ejecutando,
00:02:52qué se ha completado y qué está esperando.
00:02:54Por el lado del usuario,
00:02:57puedo ver que la tarjeta ha sido generada,
00:02:58y los correos de confirmación han sido enviados.
00:03:01En este punto, el flujo de trabajo está suspendido.
00:03:04No hay computación real ocurriendo.
00:03:07Está esperando a que un humano responda,
00:03:09y yo podría ir a mi correo, responder ahora mismo,
00:03:12o incluso esperar unas horas o días y responder entonces.
00:03:15Esto continuará rastreando el progreso.
00:03:18Ahora, antes de mostrarles el correo,
00:03:20de hecho quiero mostrarles la CLI.
00:03:22Workflow se lanza con la CLI desde el primer día
00:03:25que permite inspeccionar todo lo que está disponible
00:03:27en el panel de observabilidad.
00:03:29Esto significa que tú y tus agentes
00:03:32tienen acceso a la imagen completa
00:03:35cuando intentas depurar algo que salió mal.
00:03:37Bien, vamos a mi correo.
00:03:40Debería ver llegar el correo ahora mismo.
00:03:43Ahí está.
00:03:44Y puedo, simplemente me pide que confirme asistencia.
00:03:46Pulsaré sí, eso estará ahí.
00:03:49De vuelta al panel, puedo ver que los hooks se reanudaron,
00:03:53y debería entrar en un estado de espera (sleep).
00:03:55De vuelta al panel del usuario, y veré lo mismo.
00:03:58Ya no estamos esperando confirmaciones,
00:04:00y ahora solo espera al día 23,
00:04:01para poder enviar el cumpleaños.
00:04:03Ahora, no quiero hacerles esperar dos semanas,
00:04:05así que volveré al panel de control
00:04:06y despertaré la espera justo aquí.
00:04:09Eso debería reanudar inmediatamente el flujo de trabajo,
00:04:12y veremos el flujo de trabajo completarse.
00:04:14Permítanme volver al panel del usuario.
00:04:17La postal ha sido enviada.
00:04:18Y en mi correo, debería recibir una tarjeta de cumpleaños
00:04:22con la confirmación de asistencia también.
00:04:23Genial.
00:04:24Ahora, quiero mostrarles el código,
00:04:26y recuerden lo que dijimos antes.
00:04:29Los equipos que envían más rápido hoy no lidian con colas
00:04:32ni gestionan estados e infraestructura.
00:04:34Esa es la forma antigua.
00:04:35En Workflow, todo lo que hemos visto hoy
00:04:38es una sola función,
00:04:40y comienza con esta directiva, useWorkflow.
00:04:43Esta única directiva es la que permite que esta función corra por días,
00:04:48se suspenda entre pasos y se reanude exactamente donde se quedó.
00:04:52Así que cuando el flujo de trabajo llama a un paso,
00:04:53como generar prompts o generar imagen,
00:04:56el flujo de trabajo suspende la función,
00:04:58encola el trabajo en segundo plano.
00:05:00Incluso lo reintentará si falla,
00:05:02y luego reanudará el flujo de trabajo cuando termine.
00:05:05Todo el tiempo, obtengo observabilidad completa
00:05:07en el panel de Vercel de cada paso del camino.
00:05:11Incluso puedo hacer clic en uno de estos,
00:05:13y por defecto, en Vercel, todo está encriptado,
00:05:16pero desencriptaré los datos para que puedan ver la entrada.
00:05:19Sí, esto está disponible tanto en el panel como en la CLI.
00:05:22Workflows también viene con streaming integrado.
00:05:24Así es como envié actualizaciones en tiempo real al cliente
00:05:29para rastrear el progreso en vivo.
00:05:31No tuve que recurrir a algún tipo de base de datos
00:05:33solo para lograr esto.
00:05:34El cliente puede incluso desconectarse y reconectarse sin problemas.
00:05:37Esto es un flujo persistente.
00:05:39Muy bien, y aquí está el hook.
00:05:42Para cada confirmación, creo una URL de webhook efímera
00:05:46sobre la marcha, luego la envío en un correo,
00:05:50y luego simplemente puedo esperarla aquí abajo.
00:05:52El flujo de trabajo se detiene aquí mismo
00:05:56hasta que cada persona haga clic en su enlace.
00:05:59No hay ninguna base de datos involucrada,
00:06:01y los resultados incluso viven en variables locales de JavaScript.
00:06:05El flujo de trabajo mantiene todo su propio estado.
00:06:08Esta es la maquinaria de sistemas distribuidos
00:06:11que dijimos que simplemente había desaparecido.
00:06:12Ya no tienes que pensar en estas cosas.
00:06:14Por último, vamos a poner un sleep al final
00:06:17para esperar hasta mi cumpleaños.
00:06:18Está justo aquí.
00:06:19Esta espera podría ser de un par de segundos,
00:06:21días o incluso semanas como acabamos de hacer.
00:06:24Y mientras está esperando, el flujo de trabajo está suspendido
00:06:27con cero computación ejecutándose.
00:06:29Cuando se despierta, continúa exactamente donde se quedó,
00:06:33manteniendo el estado a lo largo del camino.
00:06:34Y esto es todo.
00:06:37Es una función que puedes leer de arriba a abajo
00:06:40y razonar sobre ella de principio a fin.
00:06:43Cada paso está respaldado por una cola,
00:06:45se reintenta automáticamente,
00:06:47y se ejecuta en su propia función serverless.
00:06:49No hay límites de tiempo de espera,
00:06:51así que los flujos de trabajo pueden durar todo lo necesario.
00:06:54A esto nos referimos
00:06:56cuando decimos que Vercel maneja todo por debajo.
00:06:59Tú solo escribes la lógica y nosotros nos encargamos del resto.
00:07:02Ahora, en esta demo, mostré un caso de uso sencillo,
00:07:07pero nuestros clientes usan flujos de trabajo
00:07:09para ejecutar agentes en producción a una escala tremenda.
00:07:12Mux utiliza flujos de trabajo para asegurar que las tuberías de generación de video
00:07:17funcionen de manera confiable cada vez.
00:07:19Y Flora está orquestando agentes creativos en paralelo
00:07:23en 50 modelos de generación de imágenes, todo con flujos de trabajo.
00:07:27Durable es un equipo pequeño
00:07:30que aloja 3 millones de sitios web de clientes,
00:07:33y usan flujos de trabajo para enviar nuevos agentes
00:07:35a sus usuarios cada día.
00:07:38Ahora, empecé esta demo
00:07:40diciendo que el software más interesante
00:07:42que construyen nuestros clientes ya no cabe en una sola petición.
00:07:46Y estamos viendo más y más aplicaciones como estas
00:07:50desplegadas cada día.
00:07:51Agentes están enviando agentes,
00:07:54y los equipos que los construyen no piensan en colas,
00:07:58se centran en los problemas de sus clientes.
00:08:01Y el cambio no solo está ocurriendo dentro de Vercel.
00:08:05Los despliegues de nuestros clientes se están duplicando,
00:08:07y menos ingenieros que nunca están creando infraestructura a mano.
00:08:11Así que sea cual sea la aplicación o agente que quieras construir,
00:08:16los flujos de trabajo la harán confiable,
00:08:18duradera, observable y de larga duración.
00:08:22Desde tu laptop hasta un millón de usuarios,
00:08:25todo con el mismo código de aplicación.
00:08:27Workflows está disponible para todos hoy,
00:08:31así que ve y envía algo que funcione.
00:08:37[AUDIO EN BLANCO]