Video Summary and Transcription
La charla de hoy explora la gestión inteligente del estado en React, destacando las limitaciones de la gestión tradicional del estado y la necesidad de innovación. La tienda de Xdate simplifica la gestión del estado al proporcionar una forma fácil de actualizar y recuperar datos. La integración de la IA y las máquinas de estado permite la creación de aplicaciones inteligentes que mejoran la experiencia del usuario. La combinación de la gestión del estado y la IA se logra a través de paquetes como StatelyAI-Agent y el Vercel AI SDK. Las máquinas de estado, el aprendizaje por refuerzo y los modelos de lenguaje grandes desempeñan un papel clave en la creación de agentes inteligentes. Los algoritmos de gráficos se pueden utilizar para recorrer las máquinas de estado y mejorar la experiencia del usuario. Los agentes de estado almacenan conocimiento en la memoria a corto y largo plazo, mientras que las máquinas de estado proporcionan límites de seguridad y automatización en procesos de múltiples pasos. También se discute el impacto de los Modelos de Lenguaje (LLMs) en el rendimiento de la interfaz de usuario y la experimentación futura de la construcción de modelos de IA para identificar máquinas de estado.
1. Intelligent State Management in React
Hoy vamos a hablar sobre hacer que la gestión del estado sea inteligente. Exploraremos las limitaciones de la gestión tradicional del estado en React y la necesidad de innovación. Usando IA, podemos ampliar los límites de la interfaz de usuario y la experiencia de usuario. Comencemos con los estados y el uso del hook useState en React. El código para gestionar el estado sin una biblioteca puede volverse complejo y difícil de entender. Por eso existen varias bibliotecas de gestión del estado disponibles como Xdate, Redux, Jyoti, Recoil y MobX. Para proyectos modernos, Zustan o Redux son opciones populares.
Hola a todos. Hoy vamos a hablar sobre cómo hacer que la gestión del estado sea inteligente, lo que sea que eso signifique. Honestamente, el título de esto debería haber sido por qué a David le gustan tanto las máquinas de estado porque eso es literalmente todo de lo que voy a hablar hoy.
Es emocionante verlos a todos aquí. Es mi segunda vez en la Cumbre de React, la primera vez que hablo, así que esto es extremadamente emocionante. Un poco sobre mí. Mi nombre es David Korsheid. Estoy en David K. Piano. No toco el piano, lo siento, mi nombre no es piano, sí toco el piano, por eso está piano ahí. Lo siento por confundirlos. Trabajo en una empresa llamada stately.ai, que casualmente son las dos cosas de las que estamos hablando hoy, estado e IA. Y la razón es porque todos hemos hecho gestión del estado en React y nuestras aplicaciones, y honestamente, no hay mucho espacio para la innovación, al menos hasta ahora, ahora que tenemos IA en todas partes. Así que honestamente solo quiero pasar los próximos minutos con ustedes innovando en cómo podemos hacer que la gestión del estado sea inteligente.
Ahora, cuando hablo de innovación, no me refiero a este tipo de innovación. Este no es el tipo que queremos. Quiero decir, estoy seguro de que hay una razón para esto, pero la mente estadounidense no puede comprender esto. Me refiero a innovación como esta. No sé si han visto a T.L. dibujar ejemplos realmente emocionantes de hacer cosas súper geniales con un lienzo infinito y realmente usar IA y ampliar los límites de lo que puede ser realmente la UI y la UX para nuestros usuarios.
Así que empecemos con los estados. Probablemente usemos el useState en React, el hook useState, y vamos a hacer una aplicación de lista de tareas simple. Probablemente, si no estás usando una biblioteca de gestión del estado, comenzarías así. Tendrías to-dos, setToDos, un montón de use dates, y honestamente, este código me pone un poco triste. Tenemos un useEffect ahí, asegurándonos de que nuestras tareas estén actualizadas. Tenemos todos estos use dates por todas partes. Y luego tenemos el temido array de dependencias infernal. Así que honestamente, creo que podríamos hacerlo mejor que esto, y diré que cuando gestionas el estado de esta manera, ¿funciona? Sí, va a funcionar. Pero se vuelve mucho más difícil entender la lógica real de tu aplicación, y por eso han aparecido muchas bibliotecas de gestión del estado, como Xdate, Redux, del que Mark habló antes hoy, y otras como Jyoti, Recoil, MobX, y algunas otras que no mencioné aquí, pero solo hay tanto espacio en la pantalla. Así que si lo hicieras hoy, probablemente usarías algo como Zustan o Redux.
2. Xdate's Store for State Management
La tienda de Xdate es una nueva biblioteca que simplifica la gestión del estado. Proporciona una forma sencilla de actualizar los datos y recuperarlos utilizando el gancho use selector. La biblioteca sigue los conceptos fundamentales de estados, eventos y transiciones.
Esto es en realidad la tienda de Xdate. Es una nueva biblioteca que lancé. Es una biblioteca pequeña en la que todo lo que haces es proporcionar los data para tu tienda, y luego proporcionas en el segundo argumento una forma de actualizar esos data, como agregar una tarea, actualizar una tarea, seleccionar una tarea, etc. Y luego puedes usarlo en tu aplicación simplemente obteniendo el gancho use selector y seleccionando de esa tienda, y luego solo envías eventos. La API es extremadamente sencilla, y esto realmente está destinado a ser un trampolín para Xdate, pero también una forma muy sencilla de gestionar tu estado.
Porque no importa qué biblioteca de gestión del estado uses, esencialmente estás utilizando tres conceptos — estados, eventos y transiciones. Es lo mismo para todas las bibliotecas. Algunas pueden difuminar las líneas entre lo que es un evento, lo que es una acción o un método, pero sí, eso es gestión del estado en pocas palabras.
3. AI and Old School AI with xdate
El SDK de IA nos permite hacer que las aplicaciones sean inteligentes. Podemos utilizar la IA generativa para generar contenido, transmitir contenido y crear chatbots. Además, las máquinas de estado, implementadas utilizando la biblioteca xdate, proporcionan una forma de representar la IA antigua, como el comportamiento de los fantasmas en Pac-Man. Los usuarios demandan cada vez más aplicaciones inteligentes que mejoren su experiencia. Al utilizar el SDK de IA y la llamada de herramientas, podemos ir más allá de los ejemplos generativos y ejecutar tareas específicas.
Ahora hablemos de IA, de hecho, de hacer que nuestras aplicaciones sean inteligentes. Cuando pensamos en esto y pensamos en agregar IA, probablemente pensemos en este momento en la parte generativa. Esto utiliza el SDK de IA de Vercel, y es realmente muy bueno si no quieres comunicarte directamente con OpenAI u otros proveedores de modelos.
Con el SDK de OpenAI, este es un ejemplo en el backend donde tendrías un prompt, pasarías ese prompt a stream text, usarías el modelo que quieras y simplemente devolverías eso como una respuesta de texto en streaming. Ahora en el lado de la IU, hay un gancho conveniente llamado use completion del SDK de IA que te proporciona muchas cosas que podrías pasar a un formulario utilizando esa URL de API, y el resultado, si estamos haciendo que nuestras aplicaciones sean más inteligentes, es una forma de hacer cosas como esta. Simplemente generar contenido, transmitir contenido, tal vez tener un chatbot.
Pero en realidad quiero hablar de la IA realmente antigua. Porque cuando creé stately.ai, cuando pensé en IA, estaba pensando en la IA antigua, el comportamiento de los enemigos en los videojuegos, como el comportamiento de los fantasmas en Pac-Man, que me di cuenta que todos se comportan un poco diferente. Y así se puede representar esto utilizando una máquina de estado. Las máquinas de estado son una de las representaciones más antiguas de la IA, y aquí vemos cómo se comporta un fantasma, más o menos, en Pac-Man. Ahora creé xdate. En primer lugar, una muestra de manos, ¿cuántos de ustedes han usado xdate? ¿O saben de él? Hay muchas manos. Me encanta.
Entonces xdate, si no lo sabes, es una biblioteca de gestión de estado para crear máquinas de estado. Pasas un estado inicial y luego tus estados realmente te dicen qué puede suceder en cada estado. Y esto se volverá importante para algunas de las demos que mostraré más adelante. Entonces, en este caso, si estás en el estado de laberinto errante, pueden suceder dos cosas. Puedes perder a Pac-Man o Pac-Man puede comer la píldora de poder, y dependiendo de lo que esté sucediendo, tienes un objetivo diferente. Ya sea perseguir a Pac-Man o huir de Pac-Man. Y luego creas un actor, y este actor es algo a lo que te puedes suscribir y enviar eventos, y luego puedes escuchar los cambios de estado, iniciar el actor y luego enviar eventos, y esa es la API de xdate en pocas palabras.
Ahora no tengo mucho tiempo, pero si quieres hablar conmigo sobre xdate, solo di máquina de estado tres veces y apareceré al azar a tu lado. Así es como puedes encontrarme. Pero como dije, las aplicaciones de IU están evolucionando ahora especialmente debido a la IA. Esto se hace realidad con TL draw, que es una de las cosas que realmente amplía los límites de lo que podemos hacer con las interfaces de usuario e incluso con la IA generativa. Y realmente estamos descubriendo que los usuarios quieren aplicaciones inteligentes. Ahora, es posible que no quieran esos chatbots en los que dicen, bueno, no me importa, solo llévame a un humano, pero quieren que la IA mejore su experiencia para que puedan hacer las cosas más rápido. Este es un ejemplo de ramp, donde es solo una prueba de concepto, y en realidad hay extensiones reales que guían inteligentemente a los usuarios y actúan como ese asistente inteligente, ya sabes, asistente. Entonces, lo que vamos a hacer hoy es utilizar el SDK de IA, y para ir más allá del ejemplo generativo, vamos a utilizar lo que se llama llamada de herramientas. Así que solo para mostrarte qué es esto, tenemos esta función de generación de texto. Pasas el modelo como GPT4 turbo, pasas un montón de herramientas, y así en esas herramientas, cuando le das un prompt, el modelo puede decidir, sabes qué, en realidad voy a ejecutar una herramienta porque probablemente necesite hacer alguna tarea específica.
4. Combining State Management and AI
LLMs son no deterministas y están confiadamente equivocados. Para abordar esto, podemos usar LLMs para navegar una máquina de estado determinista y predecible. Este es el concepto detrás de StatelyAI-Agent, un paquete que combina la gestión de estado y la IA. Un agente realiza tareas para lograr un objetivo, observa el entorno y recibe retroalimentación para mejorar con el tiempo.
Y luego podrías pasar una función de ejecución que se llamará realmente. Por ejemplo, si le pregunto si va a llover en Ámsterdam hoy, podría saber que deberíamos verificar el clima, y definitivamente va a llover en Ámsterdam hoy. Pero los LLMs no son suficientes, como hemos descubierto. Sabes, le preguntas a Google, te dirá que deberías comer al menos una pequeña roca al día. Por favor, no lo hagas. No es algo estadounidense, podrías pensar eso, pero está simplemente equivocado, ¿de acuerdo? Entonces, los LLMs son no deterministas, no puedes explicar fácilmente lo que está sucediendo en ellos, y están confiadamente equivocados, lo cual es un gran problema. Y así tuve una idea. ¿Qué tal si usamos LLMs para navegar una máquina de estado que es determinista y predecible y usar eso para decidir qué eventos causar para lograr un objetivo? Así es como combinamos state management y AI. Así que estuve trabajando en un paquete durante unos meses llamado StatelyAI-Agent, y en este momento está en beta, todavía estoy trabajando en la docs, así que no visites esta página todavía hasta el lunes o algo así. Pero quería darte un adelanto de lo que está sucediendo aquí básicamente. Primero que nada, ¿qué es un agente? Un agente es algo que realiza tareas para lograr un objetivo, pero también hace otras cosas. Observa lo que está sucediendo para poder aprender el entorno en el que está trabajando, y también recibe retroalimentación para poder mejorar con el tiempo.
5. Creando un Agente con Vercel AI SDK
Usando el Vercel AI SDK y Zod, creamos un agente que puede decidir qué hacer basado en un objetivo y una máquina de estado. Le pedimos al agente el próximo evento, lo ejecutamos y vemos los resultados en la aplicación de tareas pendientes.
Entonces esto es lo que vamos a hacer, y esta es más o menos la idea que tuve. Usando esta API, creamos un agente y pasamos el modelo. Esto todavía utiliza el Vercel AI SDK, y luego le damos un montón de eventos que podría hacer con descripciones sobre cómo podría hacer esos eventos. Y esto utiliza Zod, y Zod es realmente útil para esto.
Luego el agente puede decidir qué hacer a continuación. Le darías un objetivo, como crear una nueva tarea pendiente para mí, y luego le das la máquina de estado para que pueda saber, dependiendo en qué estado me encuentro, cuáles son las posibles cosas que pueden suceder. Y eso es lo que es tan útil acerca de una máquina de estado. Así que estamos utilizando la misma máquina de estado exacta aquí, la que controla la aplicación de tareas pendientes, y básicamente le estamos preguntando al servidor, o preguntando al agente, cuál debería ser el próximo evento ¿Qué fecha y qué objetivo? Y nos devolverá un evento, y ejecutaremos ese evento.
Así que vamos a probarlo. Y espero que esta demo funcione. Aquí está mi aplicación de tareas pendientes. He terminado la React Summit. Puedo marcar eso como completado. Puedo agregar una nueva tarea pendiente. Cosas así. Pero si mi Wi-Fi funciona, también puedo hacer cosas como decir... Estoy cansado. Y tratará de adivinar qué debería hacer. Wow. Simplemente... Okay. Eso es AI para ti. Entonces... Necesito café, y al parecer esta aplicación también. Así que lo que va a hacer es decirme que tome café. Necesito café para mantenerme despierto y concentrado. Puedo decir cosas como... Ya tengo café. Y luego sabrá exactamente qué hacer. Que es terminar esa tarea pendiente.
6. Avanzando las Capacidades de IA con Máquinas de Estado
Utilizando la misma máquina de estado, pasamos de una salida generativa a una salida orientada a objetivos, lo que permite aplicaciones avanzadas como flujos de correo electrónico y juegos de IA. Presencia una demostración rápida con participación de la audiencia.
Y no necesito tomar café. Lo sé. ¿Qué debo hacer? Nombra algo. No lo sé. Necesito probar un burdel de estofado. Y simplemente lo agregaremos. Y sí. Eso es utilizando... Esto es en caso de que la demo falle. Pero básicamente, eso es utilizando la misma máquina de estado para causar eventos en la aplicación real, y estamos utilizando el backend para determinar cuál debería ser el próximo evento, para poder enviarlo a la máquina de estado en el frontend. Así que es como un code isomórfico, si recuerdas esa palabra.
Entonces, realmente lo que estamos haciendo aquí es... Estamos pasando de una salida generativa a una salida orientada a objetivos, donde puede haber muchos pasos intermedios. Y eso es lo que nos permite hacer el uso de máquinas de estado y IA. Así que podemos hacer cosas advanced, como un flujo de correo electrónico, donde queremos que la IA realmente verifique... Responder a un correo electrónico y verificar... ¿Nos falta alguna información? Si es así, debemos pedirle al usuario esa información. Y luego debemos hacer un borrador. Y luego debemos iterar con el usuario en ese borrador para ver si es correcto. O este otro, donde la IA está jugando un juego. Y ahora esto va más allá de lo generativo. Esto es algo donde la IA realmente tiene que tomar acciones adecuadas para ganar el juego. Así que les mostraré esta demostración rápida. Y quiero la participación de la audiencia. Entonces, alguien... Si pueden ver esto, griten una palabra. Cualquier palabra. Patata. De acuerdo. Entonces...
7. Aprendizaje por Reforzamiento y Observación del Agente
El agente intenta adivinar una palabra razonando y aprendiendo del entorno, utilizando técnicas de aprendizaje por refuerzo. Este enfoque reduce la cantidad de intentos necesarios para lograr un objetivo. El agente observa el entorno, selecciona acciones y recibe recompensas. Actualizando su política, el agente aprende a tomar acciones que conducen a resultados positivos.
Vamos a ingresar una palabra y el agente intentará adivinarla. Así que será patata. Y adivinará una letra a la vez. Y con suerte, adivinará la palabra. En realidad, está dando razones por las que está adivinando cada letra. Y tiene historia, por lo que entiende lo que ha sucedido antes, qué letras coinciden, y adivinó `sweet potato`. No tengo idea de por qué. Pero estuvo cerca. Estuvo cerca. Sí. Muy bien. Así que eso es en caso de que falle.
Entonces, realmente, estamos entrando en el aprendizaje por refuerzo también. Porque nuevamente, no solo estamos generando contenido. El agente está aprendiendo de un entorno, pasando por prueba y error, y descubriendo cómo tomar acciones dentro de ese entorno para maximizar la recompensa futura y alcanzar un objetivo. Hay muchos ejemplos de esto, como este robot que intenta jugar al fútbol, aunque el humano sea realmente malo con el robot. No hagan esto. Los robots atacarán algún día. Y también hay documentos donde básicamente al combinar el aprendizaje por refuerzo con instrucciones de juego reales, vemos que los agentes tienen un mejor rendimiento en los juegos. Entonces, en lugar de necesitar miles y miles de intentos, puedes reducir la cantidad de intentos que un agente necesita para lograr un objetivo. En otras palabras, RTFM para aprender más rápido. Así que aprendizaje por refuerzo. Solo tengo cinco minutos, así que lo explicaré rápidamente. Pero básicamente, un agente está observando un entorno, selecciona una acción basada en lo que observa y el entorno reacciona a la acción que realiza. Luego, el agente recibe una recompensa, o tal vez algo más, y si recibe una recompensa, actualizará su política y dirá: hey, eso fue algo realmente bueno que hicimos. De lo contrario, simplemente volverá a seleccionar otra acción y seguirá intentando encontrar el camino hacia la recompensa. Por ejemplo, si estamos jugando Pac-Man, el entorno sería el juego y el juego podría estar en diferentes modos, como el modo normal y el modo disperso. Los agentes podrían hacer diferentes cosas, como comer pellets, huir de los fantasmas o perseguir a los fantasmas, nuevamente, dependiendo del modo del juego en el que te encuentres.
8. Agentes Inteligentes y Máquinas de Estado
La política del agente determina la bondad de las acciones, y la asignación de crédito ayuda a determinar cuáles acciones son buenas o malas. Los agentes inteligentes incorporan observaciones, mensajes, planes y retroalimentación. La creación de agentes inteligentes implica el uso de máquinas de estado, aprendizaje por refuerzo y modelos de lenguaje grandes. Las máquinas de estado se pueden representar como grafos, y se pueden utilizar algoritmos de grafos para determinar las transiciones entre estados. Los caminos más cortos se pueden utilizar para encontrar rutas óptimas basadas en pesos, como el tiempo o la recompensa.
Y la política básicamente te permite saber qué acción que tomaste fue buena. Entonces, un agente, si sube, podría obtener 100 puntos negativos, o si baja, esa podría haber sido una buena acción, por lo que obtiene un punto. Y la asignación de crédito es cómo determinamos qué acciones son buenas y malas. Voy a saltar adelante, porque realmente quiero mostrarte algunas de las demos. Pero básicamente, el agente estatal incorpora mucho más que solo una indicación. También incorpora observaciones que el agente realiza, mensajes que ocurren entre los agentes y los humanos, planes, cómo decide qué hacer a continuación, y también retroalimentación. Así que realmente puedes darle al agente una señal de que lo hizo bien o lo hizo mal. Mi plan para crear agentes inteligentes es usar tres cosas, máquinas de estado, aprendizaje por refuerzo y modelos de lenguaje grandes juntos. Y bueno, vamos a hacer esto. Oh, espera, hay una cosa más, ya sabes, antes de mostrarte la demostración. Y eso es la idea de que con las máquinas de estado tienes esta cosa llamada un grafo. Una máquina de estado crea un grafo donde cada uno de los nodos son estados, cada una de las aristas son transiciones entre los estados basadas en eventos, y porque la máquina de estado es un grafo, así que imagina tus productores de redux o tus objetos de Zestand, imagina si eso fuera en realidad un grafo que te muestra si estoy en este estado y sucede esta acción, ahora estoy en este estado.
9. Traversando Máquinas de Estado con Algoritmos de Grafos
Podemos utilizar algoritmos de grafos, como los caminos más cortos, para recorrer máquinas de estado. Al determinar el estado final y enviar eventos, podemos lograr objetivos. Las máquinas de estado proporcionan lógica predecible en la aplicación y pueden mejorar la gestión de estados sin cambios en el código.
En realidad, podríamos utilizar algoritmos de grafos para determinar cómo pasar de un estado a otro estado. Podríamos hacer cosas como encontrar los caminos más cortos para descubrir eso, y podríamos proporcionar eventos para que intente diferentes cosas para recorrer el grafo. Y el camino más corto no siempre será el camino más corto literalmente porque los caminos pueden tener pesos, y esto podría ser cosas como el tiempo que se tarda en pasar de un estado a otro, o simplemente la recompensa que se obtiene. Y nuevamente, esto se basa en el peso de las aristas.
Entonces, lo que voy a hacer mientras me quedan dos minutos es que tenemos una máquina de espresso. Me inspiré en todas las máquinas de espresso que vi afuera, pero esta es una máquina de espresso especial. Imagina una máquina de espresso muy básica donde no tienes ningún botón para hacerme un cappuccino o un macchiato o algo así, simplemente sabe cómo hacer shots y agregar leche o agregar agua o agregar crema o agregar cosas así. Y todo se basa en una máquina de estado, por lo que necesitamos hacer las cosas en orden. Es como el ejemplo de la aplicación de tareas pendientes, excepto que el agente ahora tiene que operar a través de muchos pasos para lograr un objetivo.
Y la forma en que lo vamos a hacer es primero vamos a usar nuestros algoritmos de caminos más cortos para obtener el espacio de estados y básicamente ese enorme grafo de estados que muestra aquí está cómo llegar desde el estado inicial a cada otro estado, y luego vamos a determinar cuál es el estado final al que queremos ir, descubrir el camino más corto y realmente enviar eventos para recorrer ese camino. Así que vamos a probarlo y esperemos que funcione. Ok, aquí está mi máquina de espresso. Puedo operarla manualmente, así que puedo presionar moler, terminé de moler, puedo calentar el agua, terminó de calentar, y luego puedo compactar los granos de espresso, hacer funcionar la máquina de espresso, y luego ves que tenemos un espresso. Pero en lugar de eso, y solo para mostrarte aquí, esto no tiene conocimiento de, por ejemplo, un cappuccino. Así que puedo buscar aquí, no se encontraron resultados ni nada, y nuevamente, todo esto se basa en una gran máquina de estado justo aquí. Así que básicamente estamos tratando de encontrar el camino más corto allí. Bien, si digo que quiero un cappuccino, entonces lo descubrirá y hará todos los eventos que llevan a ese estado, y esperemos que obtengamos un cappuccino. Así que va a hacer el espresso, y ahora está vaporizando la leche, lo cual es una buena señal. Lo está combinando, y hizo el cappuccino. Ahora, en realidad nunca he probado esto, pero si digo que quiero una bebida de café súper ridícula y loca, veamos qué sucede. No sé, nos estamos divirtiendo, ¿verdad? Así que está moliendo los granos. Imagina simplemente hablar con tu máquina de espresso y ver qué sucede cuando le preguntas eso. Así que hizo el espresso, está combinando agua, también está vaporizando leche, interesante. Así que está tratando de hacer muchas cosas diferentes, y crema, y chocolate. Bien. Genial. Bueno, aprendí, o al menos yo aprendí tres cosas de esto. En primer lugar, los LLM son impredecibles. Las máquinas de estado son predecibles, por lo que la idea de lógica declarativa y LLM, y aprendizaje por refuerzo, y combinar todo eso, realmente creo que puede abrir paso al futuro de la gestión de estados inteligente en nuestras aplicaciones, y básicamente hacer que nuestras aplicaciones hagan más de lo que hacen actualmente, incluso sin cambiar el code sustancialmente. En mi opinión, las máquinas de estado son una excelente manera de pensar en la lógica de la aplicación, y no importa si estás usando X8, o Shustand, o Redux, o cualquier otra biblioteca, es simplemente una forma fantástica y te ayuda a ver las posibilidades de lo que podrías hacer con los estados. Así que con eso, muchas gracias React Summit.
Máquinas de Estado de IA y Experiencia de Usuario
Los agentes de estado tienen la capacidad de ver toda la máquina de estado y anticipar eventos y transiciones. Escribir pruebas para LLMs requiere una capa simulada para manejar la imprevisibilidad. Las máquinas de estado proporcionan naturalmente barreras de protección y evitan transiciones a estados no relacionados. Las máquinas de estado de IA permiten una mejor experiencia de usuario invisible al automatizar pasos basados en la entrada del usuario. El poder de llamar a funciones y utilizar herramientas va más allá de las interacciones basadas en chat y permite cambios de estado.
Ya tenemos algunas preguntas, así que voy a preguntar, ¿puede un agente ver, oh también puedes verlo ahí arriba, puede un agente ver toda la máquina de estado, para que sepa qué eventos y transiciones estarán disponibles si realiza una acción? ¿Puede anticipar este tipo de cosas? Sí, eso es exactamente cómo funcionan los agentes de estado. Básicamente, porque tienes toda la máquina de estado como una definición declarativa, simplemente puedes pasar eso y decir, aquí está lo que podría suceder a continuación. Es como tener Google Maps, sabes exactamente qué sucederá. Genial, fácil, brillante. Eso es lo que me gusta escuchar.
Ok, esto podría ser, esto se sale un poco de lo que dijiste, supongo, pero ¿cómo abordarías la escritura de pruebas para herramientas inteligentes como esta? Oh, esto es difícil, porque por supuesto, los LLMs son impredecibles, así que cuando escribes pruebas, realmente tienes que escribir esa capa simulada y decir, si le doy esta indicación, entonces espero algún tipo de respuesta como esta. Y debido a que estamos usando la llamada de herramientas, en realidad podríamos dar una declaración, como un objeto JSON diciendo en un mundo ideal, esto es lo que sucederá. Pero cuando realmente estás construyendo la máquina de estado, tienes que proporcionar esas salvaguardias en caso de que el agente se desvíe, corrijamos eso. ¿Cómo proporcionas las barreras de protección? Entonces, las máquinas de estado naturalmente tienen esas barreras de protección de todos modos. Así que esto es genial, porque si estás en un estado, no hay forma posible de que puedas tomar una transición que no esté relacionada con ese estado. Es como teletransportarse a otra carretera. Simplemente no puedes hacerlo. Eso nos lleva, de hecho, a otra pregunta que tuvimos aquí, que fue, ¿hay alguna parte de la API estatal que maneje la reversión del estado cuando el modelo comete un error? Con las máquinas de estado, tienes que modelar todo, así que tiene que... Correcto, no puedes cometer un error. Exactamente. De un estado a otro. Las únicas transiciones disponibles son las únicas que puede hacer. Correcto. Perfecto. ¿Qué piensas sobre cómo va a cambiar el diseño de la UX con las máquinas de estado de IA? La idea es que un usuario ahora tiene un campo de entrada, pero lo está usando de una manera muy diferente a la forma en que hemos usado los campos de entrada hasta ahora. Así que antes de los LLMs, los usuarios realizan el 100% de las acciones. Imagina completar un formulario de impuestos o algo así, o tal vez eso es otra cosa de Estados Unidos, no lo sé. Pero estás haciendo cada paso manualmente. Entonces, en lugar de eso, con los LLMs y las máquinas de estado, podrías decir simplemente, quiero hacer esto, y el agente completará los espacios en blanco. Realizará todos los pasos necesarios para alcanzar eso. Así que se convierte en una experiencia de usuario invisible mucho mejor, y esa es la clave. Experiencia de usuario invisible. Me gusta eso. Y de hecho, creo que hay mucho que hemos visto de estos LLMs que es solo basado en chat, pero realmente aprecié la demostración allí, que muestra el poder de llamar a funciones o usar herramientas, eso es lo que como desarrolladores deberíamos estar explorando, porque va más allá de ser solo una caja de chat, en realidad, cambia estados. Exactamente.
Almacenando Conocimiento en Agentes de Estado
Los agentes de estado tienen tanto memoria a corto plazo dentro de la misma sesión como memoria a largo plazo almacenada en una base de datos. Recuerdan decisiones, observaciones, retroalimentación y planes realizados en la memoria a largo plazo.
¡Increíble! Cuando un agente aprende, ¿dónde se almacena realmente ese conocimiento? ¿Estaría en el servidor? ¿O se puede persistir de alguna manera? Sí, al igual que los humanos, la forma en que modelé el agente estatal es que tienes memoria a corto plazo y memoria a largo plazo. La memoria a corto plazo está dentro de la misma sesión. Está en la memoria del navegador, almacenamiento local, donde sea. Y la memoria a largo plazo está en una database, como una base de datos vectorial. Y luego puedes recuperar eso. Y así como las cuatro cosas que mostré, el agente recuerda las decisiones que tomó, las observaciones, la retroalimentación que recibió, los planes que hizo. Todas esas cosas están en la memoria a largo plazo. Así es como aprende. Genial. Increíble.
Construyendo Máquinas de Estado y Agregando Contexto a RL
Construir una máquina de estado en ActionScript puede no ser posible. Se recomienda XState para lógica compleja, mientras que Recoil es adecuado para la gestión de estado simple. Existe cierta similitud entre el enfoque actual y la planificación de acciones orientada a objetivos. Agregar contexto a RL puede ser complejo, pero implica incorporar retroalimentación basada en texto para mejorar las acciones basadas en experiencias pasadas.
Hay una pregunta que dice, ¿puedes ayudarme a construir una máquina de estado en ActionScript? Pero siento que eso probablemente no se pueda hacer en el escenario. Dije máquina de estado, no máquina del tiempo. No podemos retroceder.
Una pregunta que ha saltado a la cima que simplemente pregunta por qué XState en lugar de Recoil? ¿Por qué? Quiero decir, ¿por qué Recoil en lugar de Jotai? Usa Jotai en su lugar si quieres ese estado atómico. Pero XState es para un propósito diferente. Es para cuando tienes una lógica realmente compleja. No diría que debes usar XState para todo. Es como decir que debes usar un avión para todo. Usa un avión para distancias largas, autos o bicicletas para distancias más cortas. Lo mismo ocurre con XState. Si tienes un estado simple, Recoil funciona bien, así que mantente, etc. Pero XState es para lógica más compleja. La clásica respuesta de depende. Depende. Siempre depende. Siempre depende.
¿Lo que estás haciendo es similar a la planificación de acciones orientada a objetivos? Sí, creo que hay mucha superposición, y eso definitivamente es un buen tema de investigación. Vamos, aplicación. Increíble.
Ok, ¿qué tan complicado, qué tan complejo sería agregar contexto a RL? Como esto fue bueno por X razón, lo mismo podría ser malo por una razón diferente. Sí, con el aprendizaje por refuerzo, ya se basa en la noción de tener recompensas. Entonces, si estás jugando juegos, es muy fácil asignar un valor numérico. Pero cuando estás haciendo cosas más complejas como trabajar en una aplicación, entonces la retroalimentación puede ser basada en texto. Y en lugar de ser basada en números, básicamente estás agregando esa retroalimentación al contexto. Entonces estás diciendo, intenta hacer esta acción. Por cierto, cuando hiciste esa acción en el pasado, esto es lo que funcionó. Esto es lo que no funcionó. Así es como aprendemos como humanos. Solo estamos recuperando ese conocimiento. Es bastante impactante.
Interactuando con LLMs y Rendimiento de la UI
Interactuar con LLMs y proporcionar retroalimentación es una característica importante. Para usar XState Agent, debes traer tu propia clave de Open AI o usar modelos locales. Las máquinas de estado son útiles para procesos de múltiples pasos e interacciones complejas. El impacto de las respuestas de LLM en el rendimiento de la UI es notable debido a su naturaleza no determinista.
Es cuando puedes interactuar con el LLM y simplemente decir, buen trabajo. Por eso. Sí. Y lo sabe. Responde. Continúa. Genial.
Vamos a omitir el por qué, lo que sea, qué. Dean, ¿necesitas una clave de Open AI para usar XState Agent? Tienes que traer la tuya. Básicamente, esto envuelve el SDK de AI de Vercel. Y tendrías que proporcionar tu propia clave de Open AI o tu Anthropic, etc., el modelo que estés usando. O también podrías usar modelos locales. Creo que la gente ha hecho eso para el SDK de AI de Vercel. Como ViroLlama. Sí. Como Mistral, etc. Sí. Fácil. OK. ¿Qué casos de uso ejemplares tienes en mente para algo como Stately? Bueno, responderé esto para las máquinas de estado. Las máquinas de estado son realmente útiles para procesos de múltiples pasos, ya sea en el backend o en el frontend. Podrías tener un formulario de múltiples pasos y también interacciones complejas. Si estás construyendo una API de Canvas y tienes que manejar la selección y el arrastre y cosas así, el estado se vuelve complicado. Las máquinas de estado te ayudan a razonar sobre eso mucho mejor. Genial.
Entonces, ¿cómo encuentras, ah, estaba pensando en algo similar a esta siguiente pregunta. ¿Cómo encuentras que esto afecta el rendimiento de la UI, considerando que las respuestas de LLM pueden tardar varios segundos? En mi mente, estaba pensando, ¿construiste la versión de Pac-Man de esto? Estoy como, no puedes pedirle eso a un LLM. Debería hacerlo realmente. Así que esta es una pregunta realmente interesante también.
LLMs, State Machines, and Future Experiments
Las LLMs son más lentas y no deterministas en comparación con las UI normales. El aprendizaje por refuerzo permite almacenar en caché acciones para una respuesta más rápida. Las máquinas de estado proporcionan las restricciones necesarias para las LLMs y evitar que se salgan de control. La creación de modelos de IA para identificar automáticamente posibles máquinas de estado es un experimento futuro interesante.
Porque las LLMs, es como si estuviéramos haciendo las cosas más lentamente, de manera no determinista. Y objetivamente, en realidad es peor que las UI normales, sin embargo, los inversores aún te dan millones de dólares porque tienes AI en tu aplicación. Pero con el aprendizaje por refuerzo, podrías almacenar en caché acciones. Podrías decir, sé que esta acción nueve de cada diez veces es buena. Entonces, cada vez que el usuario haga algo muy similar o pida hacer algo muy similar a esto, simplemente haré esa acción. Es como tener memoria muscular, ¿verdad? No necesitamos pensar todo el tiempo. Correcto. Estamos tratando a estos agentes un poco más como una persona, un poco más como una persona real que aprenderá y responderá a cosas que ha visto antes. Pero sí. Genial.
En cierto sentido, las máquinas de estado limitan la capacidad y la creatividad de las LLMs. ¿Crees que definir los caminos entre los estados es lo suficientemente orientado al futuro? Creo que las LLMs necesitan esa restricción. Necesitan esas barreras de protección porque uno de los mayores problemas con las LLMs es que se salen de control. Y las personas realmente han intentado hacer arquitectura donde es como, hey, usa el hilo de pensamiento para que el agente haga algo. Pero luego entra en un bucle o hace algo inesperado. Sí. Estamos viviendo en un mundo de no determinismo con esto. Entonces, hacerlo lo más determinista posible hará que tu aplicación funcione de una manera con la que los usuarios puedan lidiar. Sí. Demasiado hablar.
¿Qué tal si pudieras construir un modelo de AI que verifique la base de code y reporte los estados que podrían ser potencialmente una máquina de estado? Eso es algo que realmente quiero experimentar. Se llama síntesis de máquina de estado, donde básicamente mapeas todos los estados en tu aplicación y esto es como un agente que va haciendo clic en botones y haciendo ese bucle de RL donde estás observando los entornos y probando diferentes cosas. Y básicamente has construido un grafo masivo de lo que podrías hacer y eso es tu máquina de estado justo ahí. Y así no necesariamente tienes que especificarlo. Pero eso es para una futura charla de conferencia. Sí. Correcto. Esperamos eso. ¿El próximo año a esta misma hora? Tal vez. No te haré prometer nada. Eso es absolutamente increíble, David. Muchas gracias por eso. Sí. Charla súper interesante. Todos aplaudan de nuevo a David. Gracias.
Gracias.
Comments