¡Y no es de la manera que piensas!
This talk has been presented at React Summit US 2024, check out the latest edition of this React Conference.
¡Y no es de la manera que piensas!
This talk has been presented at React Summit US 2024, check out the latest edition of this React Conference.
La IA revolucionará la UI a través del uso de herramientas. Vamos a dar a nuestra IA herramientas y comenzar con una aplicación TanStack React. Va a hablar con nuestro LLM y conectarse a nuestros datos. Vamos a permitirle usar herramientas para elegir qué tipo de UI queremos mostrar. Ahora veamos lo fácil que es implementar un chatbot React en Start.
Entonces, la IA revolucionará la UI a través del uso de herramientas. Y cuando hablo de herramientas, estaba hablando con algunas personas al respecto, y ellos decían, oh, ¿te refieres a Copilot o Cursor? No, no es eso. ¿Como V0 o Leonardo o Midjourney? No, no es eso. Entonces, lo que vamos a hacer es dar a nuestra IA herramientas. Así que vamos a comenzar con una aplicación TanStack React. Voy a hacer esto en codificación en vivo. Deséenme suerte. Sí.
Y nuestra aplicación TanStack React, si es la primera vez que ves TanStack start, ha sido emocionante solo por eso. Va a hablar con nuestro LLM. En este caso, va a hablar con OpenAI. Y luego vamos a usar una herramienta, un conjunto de herramientas, y le vamos a dar una herramienta para conectarse a nuestros datos. Así que va a tener nuestros datos en ella, lo cual es realmente genial. Pero más importante, creo, al final, vamos a permitirle usar herramientas para elegir qué tipo de UI queremos mostrar. Así que esto es lo que vas a ver al final de todo esto. Así que, bien.
Así que, ahora todos hemos visto en el pasado un chatbot React. Así que, veamos lo fácil que es realmente implementar esto en Start. Bien. ¿Puedes ver el código? ¿Puedes ver a mi perro? Hola, Murph. Bien. Ven aquí, tú. Ahí vamos. Estoy trabajando en dos pantallas diferentes. Así que esto es como... Bien. Así que, voy a usar un poco de código de trampa aquí. Me voy a dar un poco de... Ahí vamos. Así que lo primero que voy a hacer es traer AI React.
La biblioteca de IA de Versal llamada React trabaja con TAN stack y gestiona la UI, maneja el cambio de entrada y envía al endpoint de IA. Podemos usar la entrada de ShazCN. Construiremos un sistema de recomendación para videojuegos usando los datos de games.json. Lo conectaremos con el backend usando Open AI y proporcionaremos un prompt del sistema.
Así que, Versal tiene una biblioteca de IA llamada React. En realidad, funciona con otras cosas además de Next.js. Ahora, también funciona con TAN stack. Y lo que va a hacer es gestionar la UI por nosotros. Así que, nos va a dar mensajes. Eso es una transcripción de nuestra conversación con la IA, el campo de entrada, y manejar el cambio de entrada. Así que, el controlador de cambio para la entrada, y luego manejar el envío. Y eso realmente va a enviar de vuelta a nuestro endpoint de IA. Así que, vamos a cambiar el JSX. Así que, realmente lo usamos.
Bien. Ahora, vamos a traer la entrada de ShazCN. ¿A alguien le gusta ShazCN? Bueno, sí. Eso también funciona con él. Así que, eso es genial. Vamos a echar un vistazo. Bien. Así que, ahora tenemos algunas cosas aquí. Ahora, lo que vamos a hacer es construir una recomendación para videojuegos. Así que, somos una empresa de venta de videojuegos. Y tenemos una lista de todos los videojuegos que realmente queremos mostrar, así que, que queremos dar a nuestro cliente. Así que, déjame mostrar eso. Aquí tenemos games.json.
Así que, eventualmente, al final de todo esto, vamos a permitir que el cliente obtenga recomendaciones sobre los juegos que tenemos. Así que, eso es realmente lo que estamos, ya sabes, la diferencia entre esto y una especie de UI estándar. Bien. Así que, lo siguiente que queremos hacer es realmente conectar esto con el backend. Así que, vamos a conectarlo con nuestro Open AI. Así que, vamos a traer Open AI. Y luego le vamos a dar un prompt del sistema.
Tansec Start te permite crear funciones del servidor que se pueden llamar desde el cliente. Puedes controlar el método utilizado, como post o Git, y devolver un flujo al cliente. Tansec Start es distinto de Next.js ya que permite el streaming. Sobrescribimos Fetch para enviar todos los mensajes del chat a la función del servidor. Open AI se utiliza para responder preguntas.
Y vamos a hacer… Y esta es la parte genial de Tansec Start en particular. Entonces, en Tansec Start, realmente usas create server function para crear funciones del servidor que luego puedes llamar desde el cliente. Muy bien. Y realmente puedes controlar el método que va a usar para hacer eso. Así que, en este caso, solo vamos a decir que esto es un post. También puedes usar Git. Así que, puedes hacer almacenamiento en caché y todas esas cosas buenas. Y le dan lo básico de una función. Así que, en este caso, vamos a tomar los mensajes como nuestra transcripción con el chatbot y o con la IA. Y luego vamos a usar stream text para obtener de ello un flujo que luego vamos a enviar de vuelta al cliente. Porque todos sabemos que mientras estás escribiendo o mientras está enviando cosas de vuelta, podrías estar esperando un rato. Así que, realmente quieres hacer el flujo. Así que, una de las cosas realmente geniales que distingue a Tansec Start de Next.js es que las funciones actuales del servidor de Next.js no te permiten devolver un flujo. Así que, por eso estamos usando Tansec Start en este caso.
Muy bien. Ahora, para interconectar esto, necesitamos hacer un poco de hacking. Así que, voy a traer una anulación para Fetch. Así que, voy a crear una nueva función. Se ve exactamente como Fetch. Toma una URL y toma algún tipo de datos de opciones. Y resulta que el cuerpo allí es una cadena que tiene todos los mensajes en ella automáticamente. Y solo vamos a enviar eso a nuestra función del servidor. Así que, vamos a bajar aquí. Y vamos a ir aquí a Fetch. Y vamos a anular Fetch con esa anulación de chat Fetch. Muy bien. Vamos a echar un vistazo. Entonces, ¿qué está preguntando? ¿Cuál es un buen juego FPS? Ahí lo tienes. Bien.
La implementación se llama RAG, que significa Retieval Augmented Generation. Utiliza datos para crear una respuesta. Se usa una base de datos vectorial para hacer coincidir una consulta y proporcionar una lista de juegos. El LLM determina la mejor respuesta basada en el contexto y la lista proporcionada.
Entonces, esto en realidad está yendo solo a OpenAI. Y obteniendo una especie de quién sabe qué. Esta es cualquier lista de juegos FPS en la que fue entrenado en su día. O recientemente. No lo sé.
Entonces, ¿qué vamos a hacer para realmente conectarlo a nuestros datos en particular? Así que, volvamos y continuaré jugando aquí. Muy bien. Genial. Sigue adelante. Sí, sí. Bien. Así que no queremos ver el video porque lo tenía todo precargado con un video que realmente haría esto si OpenAI no decidiera funcionar. Así que, no necesitamos hacer eso. Puedes hacerlo en vivo.
Bien. Ahora vamos a conectar nuestro LLM con nuestras herramientas a nuestros datos. Ahora, lo que esto está implementando se llama RAG. ¿Alguien ha oído hablar de RAG en el contexto de la IA? ¿Sí? Bien. Bueno, lo que significa es Retieval Augmented Generation. Así que, la idea es que vas a darle algunos datos, un contexto de datos en el sentido tradicional. Y va a usar esos datos para crear una respuesta.
Así que, normalmente, tal vez tengas como este contexto aquí, como si fueras un asistente útil y todo eso. Y lo que sucede, en realidad, es que vamos en el modelo tradicional, obtenemos la consulta de entrada, buenos juegos FPS, y luego usamos una base de datos vectorial. Así que, hay un montón de esas en el mercado. Nos va a devolver una lista de juegos que cree que coinciden con esa consulta. Y luego vamos a dárselo al LLM como contexto. Y eso va a dispararse al LLM. Y dices, bien, genial.
No queremos darle a la IA un contexto enorme con mucha información adicional. Hay problemas con este enfoque, incluyendo el riesgo de proporcionar datos incorrectos y la incapacidad de hacer múltiples solicitudes de datos. Además, la IA carece de la capacidad de gestionar la UI.
De la lista que me diste, creo que tal vez Halo es el adecuado para eso. Entonces, en realidad, a medida que le das un contexto, le vas a dar el contexto original, y le vas a dar como un montón de cosas al final. No queremos hacer eso porque hay algunos problemas con eso. Uno, es que el contexto puede volverse increíblemente grande. Otro problema es que no sabemos. ¿Le damos los datos correctos? Y dos, la IA no puede realmente hacer múltiples solicitudes de datos. Quiero decir, no puede realmente volver a nosotros y decir, oh, espera, necesito un poco más de información aquí, lo cual las herramientas pueden hacer. Y además, no puede gestionar la UI.
En nuestro código, vamos a hacer una solicitud de herramienta a nuestra antigua base de datos JSON y recibir resultados. Luego actualizamos el contexto del sistema para usar la herramienta de juegos, que se importa de AI y devuelve una lista de juegos.
Muy bien. Entonces, lo que vamos a hacer en nuestra cosa es que vamos a hacer esa solicitud de herramienta. Eso va a ir a nuestra base de datos, nuestra antigua base de datos JSON, y vamos a devolver algunos resultados. Eso va a volver a sí mismo. Y eso dice, genial, creemos que te podría gustar eso. Muy bien. Y para obtener ese contexto del sistema, luego actualizamos el contexto del sistema para decir, como, oye, usa juegos si necesitas la lista de juegos.
Muy bien. Vamos a nuestro código. Oye, ya estamos allí. Genial. Muy bien. Está bien. Entonces, necesitamos actualizar con herramientas. Así que, vamos a traer una herramienta de juegos. Así que, solo voy a reorganizar esto un poco aquí. Necesitamos algunas importaciones. Necesitamos un cambio de sistema. Muy bien. Está bien. Genial. Así que, ahora tenemos un sistema. Le estamos diciendo al sistema que tiene que usar esa herramienta de juegos. Y vamos a echar un vistazo a esa herramienta de juegos. Bueno, la herramienta de juegos está en una lista de herramientas, y dice que la vamos a importar de AI. Muchas gracias, Cursor. Y vamos a decir que queremos devolver una lista de juegos. Y luego, literalmente, solo devolvemos nuestros juegos. Y eso es todo. Está bien.
Vamos a intentarlo. Hacemos una solicitud para un buen juego de simulación. La IA en su modo actual proporciona una única respuesta, pero si preguntamos de nuevo, recuperamos nuestros datos. Esto conecta nuestros datos con nuestro LLM. Ahora, hablemos del lado del cliente. Hacemos una solicitud de juegos, obtenemos una respuesta de herramienta, y luego podemos dar múltiples pasos para cumplir nuestra misión como la IA.
Así que, vamos a intentarlo. Está bien. Entonces, ¿qué tal un buen juego de simulación? Entonces, esa primera solicitud es una solicitud para nuestras herramientas, lo cual es interesante. Está un poco atascado allí. Entonces, lo que sucede es que la IA en su modo actual, o nuestra interfaz con la IA, dice, está bien, va a ser una única respuesta. Voy a hacer una solicitud. Voy a obtener una respuesta, y eso es todo. Hemos terminado. Entonces, si pregunto eso de nuevo, ¿qué tal un buen juego de simulación? Ahora, en realidad recupera nuestros datos. Así que, eso es Planet Coaster 2 y Farming Simulator y las cosas que tenemos en nuestro JSON. Así que, esto es realmente genial. Esto realmente está conectando nuestros datos con nuestro LLM, lo cual es genial.
Muy bien. Hasta ahora todo bien. Así que, ahora esa es la parte del servidor de la ecuación. Ahora hablemos del lado del cliente de la ecuación. Muy bien. Está bien. Entonces, ¿qué está pasando aquí? Oh, ¿es? Oh, lo siento. Esta es la primera y única vez que voy a dar esta conferencia. Así que, estás recibiendo una única. Está bien. Entonces, estamos haciendo una solicitud de juegos. Obtenemos una respuesta de herramienta, y luego nos detenemos. Así que, el pequeño secreto aquí para que esto funcione de una manera que realmente tenga sentido es que decimos que puedes dar múltiples pasos para realmente cumplir tu misión como la IA. Así que, vamos a eso. Diremos pasos máximos.
Diremos que puedes dar 10 pasos. Podría hacer una solicitud. Podría usar otras herramientas. Intentémoslo de nuevo en ARC con un buen juego FPS. Ahora, ha hecho la solicitud de herramienta y puede obtener los datos de vuelta en un solo paso. Hasta ahora, todo bien. Hacemos la solicitud de herramienta, obtenemos la respuesta y, basándonos en eso, obtenemos los datos que queremos.
Diremos que puedes dar 10 pasos. Así que, podría hacer una solicitud. Podrías usar otras herramientas. Podría hacer todo tipo de cosas en esa serie de 10.
Así que, vamos a ARC e intentémoslo de nuevo. ¿Qué tal un buen juego FPS? Ahora ha hecho esa solicitud de herramienta. Ese es el primer mensaje. Y luego ahora, posteriormente, porque le hemos dado múltiples pasos, realmente puede ir y devolvernos nuestros datos. Todo en un solo paso. No tenemos que preguntar múltiples veces.
Muy bien. Genial. Así que, ahora vimos ese pequeño error. Ahora, ahora podemos continuar con el trabajo de la UI, porque lo que está sucediendo aquí es que hacemos esa solicitud de herramienta. Obtenemos esa respuesta de herramienta. Y luego, basándonos en esa respuesta de herramienta, dice, genial. Estos son los datos que realmente quieres. Y lo que realmente sucede en la vida real es que hay un array de mensajes. Vimos eso cuando obtenemos la respuesta del chat que tiene primero la recomendación, mi solicitud, luego tiene la respuesta del asistente. Así que, eso sería texto codificado en JSON. Luego mi respuesta de herramienta, que es, nuevamente, texto codificado en JSON, vuelve a OpenAI. Y finalmente, obtenemos al asistente diciendo lo que queremos.
Hemos terminado el lado del servidor y ahora vamos a hacer el lado del cliente. Vamos a darle a la IA una herramienta para mostrar recomendaciones de juegos usando Zod para definir el esquema. También necesitamos manejar la solicitud de herramienta en el cliente sobrescribiendo el hook y mintiendo de vuelta a la UI.
regresa a OpenAI. Y finalmente, obtenemos que el asistente diga lo que queremos. Bien. Genial. Hasta ahora, todo bien.
Hemos terminado el lado del servidor de esto. A continuación, vamos a hacer el lado del cliente de la casa, lo cual es realmente genial. Así que, lo que vamos a permitir que nuestra IA haga es proporcionar algunas herramientas. Aquí está cómo quiero que representes esos datos. Así que, vamos a darle una herramienta. Vamos a decir, oye, si quieres mostrar la recomendación del juego, entonces usa esta herramienta para hacerlo.
Bien. Eventualmente, sabré de qué lado de la pantalla está esto. Bien. Así que, vamos a darle una herramienta. Vamos a darle la herramienta de mostrar juegos. Así que, esta es una herramienta que va a permitir que la IA realmente muestre la lista de juegos.
Ahora, la forma en que le dices qué parámetros quieres para esta función, porque las herramientas son básicamente funciones, es usar Zod. Zod es un sistema donde puedes definir el esquema de un objeto. Así que, en este caso, vamos a decir que queremos que los juegos sean un array de IDs y la razón por la que piensas que ese juego es bueno para mí. Bien. Así que, ahora que tienes eso, necesitamos ir y actualizar nuestro sistema un poco.
Así que, el nuevo va a decir que puedes usar mostrar juegos. Así que, vamos a poner eso ahí. Bien. Genial. Ahora, eso no es el final de la historia, sin embargo, porque queremos manejar la solicitud de herramienta en el cliente. Así que, hay un poco de sobrescritura que necesitamos hacer a nuestro hook.
Manejamos la solicitud de herramienta en la UI sobrescribiendo el hook y mintiendo de vuelta a la UI. Verificamos la lista de mensajes para invocaciones de llamadas de herramientas, específicamente para 'show games'. Si se encuentra, usamos el componente de tarjetas de juegos para mostrar los juegos.
Así que, así es como vamos a decir básicamente que no necesitas manejar esto en absoluto, lo vamos a manejar nosotros. Es básicamente el equivalente de llamar a la función de chat en el servidor. Así es como lo manejaríamos en la UI.
Y lo último que necesitamos hacer es mirar esa lista de mensajes que regresan y ver, ¿hubo alguna invocación de llamada de herramienta? Así que, vamos. Vamos a aumentar esto un poco. Y diremos que revisaremos todos los mensajes y veremos, ¿tienes alguna invocación de herramienta? Y si es así, entonces, ¿alguna de ellas es show games? Y si lo son, entonces usamos nuestro genial componente de tarjetas de juegos para mostrar realmente todos esos juegos. Así que, traigamos Show Cards. Genial. Y vamos a intentarlo. Muy bien.
¿Qué tal un juego de simulación por menos de 30 dólares? Estos son todos los datos de nuestro JSON. Puedes probarlo tú mismo con tu clave de OpenAI. Lo genial es que no tienes que usar OpenAI, también puedes usar LLMs locales como Ollama.
Entonces, ¿qué tal un juego de simulación por menos de 30 dólares? Ahí lo tienes. Bonito, ¿verdad? Así que, estos son todos los datos de nuestro material. Esto viene de nuestro JSON. Tiene nuestras imágenes en él. Tienes todo este código. Pondré un enlace que te permitirá ir y acceder a este código. Puedes probarlo tú mismo.
Tienes una clave de OpenAI y puedes ver por ti mismo cómo hacer herramientas tanto en el cliente como en el servidor. Pero creo que lo realmente genial aquí es, y esto es en realidad lo que iba a salvarme el trasero antes de que obtuviera mi conectividad, es que no tienes que hacer esto solo con OpenAI. Puedes usar LLMs locales para esto. Entonces, ¿alguien tiene experiencia usando Ollama? ¿No? ¿Sí? Bien, me gusta. Porque vas a recibir una demostración. Acéptalo.
He instalado la aplicación Ollama, que tiene una variedad de LLMs locales que puedes descargar y usar sin pagar dinero. Probemos otra ronda aquí, solicitando un juego FPS. Podría tardar un poco debido a los LLMs lentos en mi máquina. Mientras tanto, echemos un vistazo al código. Nos estamos conectando directamente a la IA usando una publicación al endpoint de Ollama, omitiendo la biblioteca Versal AI.
Así que, vamos a intentarlo. Bien. Entonces, he instalado esta genial aplicación Ollama. Y ahí vamos. Ups. Así que, podemos ver todos los diferentes modelos que he puesto. Algunos de estos modelos son LLMs. Otros son para trabajar con bases de datos vectoriales. Sabes, hay construcción de incrustaciones. Así que, hay un montón de LLMs locales geniales que puedes descargar directamente en tu máquina. Y puedes usarlos sin pagar dinero a ninguno de estos proveedores de IA. Es genial.
Bien. Entonces, lo que vamos a hacer es otra ronda aquí. Iré a slash direct. Debería haberlo llamado como Ollama. Y voy a hacer exactamente lo mismo. Voy a decir, oye, dame un juego FPS. Veremos cómo sale. 130 dólares. No lo sé. En realidad, ¿hay alguno? Bien. Esto podría tardar un poco porque estos LLMs son realmente lentos, particularmente en una máquina como la mía que solo tiene 16 gigabytes. Pero déjame ir y echar un vistazo al código mientras esperamos eso.
Así que, por aquí, esto es realmente genial. Nos estamos conectando directamente, no a través de la biblioteca Versal AI en absoluto. Solo estamos usando una publicación directa. Una llamada a la IA. Que es literalmente una publicación al endpoint de Ollama. Así que, esto es literalmente como un chat de API 127.001.
Estamos proporcionando a la IA herramientas para recuperar datos, con soporte para diferentes versiones y proveedores. Proporciona acceso directo y eficiente a la funcionalidad en tu máquina. La forma más fácil de usar herramientas es a través de RAG, dando a la IA acceso a tus datos y permitiéndole elegir una herramienta. Versal, OpenAI library, u OLama se pueden usar para esto.
una publicación al endpoint de Ollama. Así que, esto es literalmente como un chat de API 127.001. Y estamos dándole todas estas cosas. Incluso le estamos dando algunas herramientas para decirle cómo realmente obtener los datos de vuelta.
Así que, está haciendo todo ese soporte de RAG localmente. Y veremos. Hey, ahí va. Ahora, una de las cosas interesantes es, a medida que comienzas a entrar en los detalles de esto, es que todas estas IAs realmente usan diferentes formas de enviar de vuelta la invocación de la llamada de herramienta. Y la razón por la que realmente escribí todo el código para ir directamente a ello fue que la biblioteca Versal AI solo entiende una. Solo entiende la versión de OpenAI. Así que, esta realmente entiende un par de versiones diferentes, basadas en diferentes proveedores.
Y, por supuesto, te da acceso a todos esos datos o toda esa funcionalidad directamente y en tu máquina. Así que, es muy genial. Solo que funciona muy lento, lo cual no es genial. Bien. Así que, genial. Entonces, ¿qué hemos aprendido? Bueno, aprendimos que vamos a hacer RAG. Y esa es la forma más fácil de usar herramientas para hacer RAG, porque van a ser una forma mucho más eficiente que simplemente precargar un contexto masivo. Le das a esa IA acceso a todos tus datos, como quieras. Y puedes usar las herramientas tanto en el servidor como en la UI. Y puedes tener cualquier IA.
Soy Jack Harrington, y tengo un canal de YouTube donde puedes encontrar todo el código gratis. Con el ejemplo de vender juegos, la IA puede evolucionar para agregar artículos al carrito y realizar mutaciones. Se pueden usar parámetros para permitir que la IA maneje tareas como crear una lista de tareas. Además, estoy trabajando en Tiny Troop, un proyecto de Microsoft que permite a los agentes virtuales comunicarse y conectarse con herramientas.
YouTube. Deberías echarle un vistazo. Y sí, por supuesto, todo el código está disponible para ti de forma gratuita. Solo échale un vistazo. Voy a dar un saludo a Brett por nuestra primera pregunta aquí. Con tu ejemplo de vender juegos, Jack, ¿ves que evolucione para que la IA agregue cosas al carrito? Oh, absolutamente.
Sí. Sí, sí. Además de hacer consultas, también puedes, por supuesto, hacer mutaciones. Así que, un clásico, si quieres simplemente tomar este código y extenderlo, puedes hacer como una lista de tareas y luego tener un pequeño campo abierto donde puedas decir, oh, ya sabes, tenía que hacer bla, bla, bla, bla. Y luego una de las cosas realmente geniales es que puedes dar a esas funciones de herramientas, como dije, parámetros. Así que, puedes decir, hey, está bien, el primer parámetro sería como un mensaje y tal vez otro sea como una prioridad o algo así, y dejar que la IA haga todo ese trabajo. Y luego, además, podrías tener cosas del cliente también para mostrar la nueva tarea de una manera realmente genial. Así que, creo que hay todo tipo de ideas interesantes a donde puedes ir con esto. Sí, es realmente emocionante. Es como posibilidades infinitas aquí. Sí, sí. ¿A dónde lo llevarías? Oh, de hecho, he estado trabajando en esta cosa llamada Tiny Troop. Sí, es una locura, locura.
Es de Microsoft, y es esta pequeña cosa interesante que te permite crear como agentes virtuales y hacer que hablen entre sí en un grupo de enfoque. Y así, de hecho, Rachel Neighbors, ella estuvo aquí el año pasado, y yo estamos pensando en realmente hacer que eso también se conecte con herramientas, para que realmente pueda ir y hacer que esos pequeños agentes puedan ir y hacer cosas. Así que, es bastante emocionante. Eso es increíble. Sí, me encantan estas pequeñas cosas. Quiero decir, vivimos en un mundo increíble. Realmente lo hacemos. Sí, sí.
Para manejar una gran base de datos de juegos, se pueden usar parámetros adicionales para filtrar la lista de juegos. El soporte de IA local para el renderizado del lado del cliente depende de la capacidad de la IA para manejar herramientas. Aunque algunos modelos de IA en navegadores pueden no soportar herramientas, las llamadas a herramientas del lado del cliente aún pueden ser manejadas por el servidor. Al usar modelos locales, se recomienda usar modelos más pequeños para un rendimiento más rápido.
Donde puedes usar un guante de horno. Sí. ¿Cómo funcionaría esto si tienes, digamos, 50,000 juegos en tu base de datos? ¿Puede el modelo almacenar, almacenar en caché todos los juegos antes de que se haga la solicitud? Correcto, entonces tendrías parámetros adicionales en la solicitud de juegos, en este caso, y luego podrías filtrar tu lista de juegos en base a eso. Entonces, podrías decir, está bien, bueno, dame el género de juego que estás buscando, y luego tal vez otro filtro de precio o algo así. Y luego hacemos el filtrado de precios y el filtrado de géneros en la herramienta, lo enviamos de vuelta, y por eso le das múltiples pasos. Vas, oh, ya sabes, no encontré nada interesante en ese, dame otro, y haz otras solicitudes subsecuentes.
Eso es realmente genial. Sí, sí, es genial. Esto podría relacionarse con lo que decías sobre las IAs locales. ¿Se puede hacer esto en una aplicación renderizada del lado del cliente? Quiero decir, sí, en realidad, bueno, la IA tendría que soportar herramientas. Sé que, no creo que la IA de Google que tienen en el navegador actualmente lo haga. Entonces, quiero decir, tienes que volver a un servidor en algún lugar, desafortunadamente. Sí. Pero más allá de eso, aún podrías manejar todas las llamadas a herramientas del lado del cliente. Así que, no necesitas, solo necesitas el navegador para realmente poner en marcha la IA. Claro. O, lo siento, el servidor para poner en marcha la IA. Sí.
Tenemos, por cierto, gracias, audiencia, he recibido un montón de preguntas. Santo cielo, me encanta. No vamos a tener tiempo para todas ellas, así que disculpas si la tuya no llega. Estaré en el evento después, ¿verdad? Sí. Sí, ahí lo tienes. Es perfecto. ¿Tienes consejos para acelerar los modelos locales? ¿O es solo el truco para ejecutar localmente? Claro. Los mini siempre son más pequeños que, siempre son más rápidos que los más grandes. Los más grandes en realidad ni siquiera funcionan en mi Mac. Solo tengo como un M1 de 16 gigas, creo, así que fue todo lo que pude permitirme en ese momento. Así que, sí, diría que siempre uses los modelos más pequeños, pero sí, OOM es una manera fantástica de entrar en esto y no pagar nada. Si quisieras algo realmente barato, en realidad, diría que GPT-40 mini es una opción mucho más barata que GPT-40 direct, como mucho más barata.
RAG puede ser una alternativa flexible a otros métodos que almacenan y extraen datos. Al proporcionar un aviso contextualizado, RAG permite obtener información personalizada y específica para el negocio. Se pueden usar herramientas para escalar el proceso de contextualización y recuperar datos en vivo.
Así que definitivamente usaría eso. Y por mi dinero, es igual de capaz. Y en realidad es más rápido y más barato. Me gusta. Todo son cosas buenas. Todo son cosas buenas. Todo son cosas buenas. Un poco más de inmersión en el código, ¿cómo analizaste la respuesta para la UI? ¿Es la estructura determinista? ¿Cómo garantizas la estructura de respuesta del LLM? Eso fue lo de Zod. Así que, oh sí, sí, sí. Eso fue el retorno de Zod. Le estamos dando básicamente la estructura de lo que queremos de vuelta en términos de, queremos un array de productos. Queremos los IDs y queremos las razones. Y es por eso que Zod se incorpora a esa mezcla. Lo que están usando Zod para es que Zod, puedes usar esa estructura de objeto para crear la estructura que quieres ver saliendo del otro lado. Y luego puedes usar un accesor para básicamente decir, genial, convierte eso en este esquema JSON. Y pasan el esquema JSON. Así que OpenAI o los LLMs en Olama en realidad no saben nada sobre Zod. Saben sobre este esquema JSON es solo una forma conveniente de crear un esquema JSON. Genial. Genial. ¿Qué limitaciones hay para RAG en comparación con los otros métodos que has mencionado donde todos los datos se almacenan y extraen?
Quiero decir, ambos son dos métodos alternativos de RAG. Como uno es para, porque lo que estás haciendo es básicamente decir, genial, el usuario me ha pedido un aviso. No tengo toda la, queremos que nuestra información esté contextualizada para nosotros. Quiero decir, el cien por ciento del tiempo, probablemente quieras una IA que no esté haciendo solo solicitudes aleatorias, ¿verdad? Quieres algo que realmente esté contextualizado para tu negocio. Y así, una forma de hacer eso es simplemente darle un gran contexto, que escuché recientemente, alguien estaba como tomando toda su base de código y toda la documentación de ella, creando un solo archivo de texto y lanzando todo eso en un contexto. Parece absurdo. O en este caso, herramientas. Y creo que las herramientas básicamente te dan ese factor de escalado porque básicamente puedes darle una herramienta y decir, oye, llámame, dime lo que quieres y lo conseguiré para ti. Y puedes hacerlo en vivo.
RAG permite la recuperación en vivo de diversas fuentes de datos. El aviso del sistema juega un papel crucial en la restricción de la naturaleza de la IA y en proporcionar instrucciones específicas. Usando herramientas, puedes recuperar y mostrar juegos. Considera probar un bot de Discord con funcionalidad de preguntas y respuestas. El enlace al código aún está por decidir.
Y eso es una de las cosas realmente geniales también. Como si, por ejemplo, quisieras ir y obtener, no sé, un feed de noticias o, ya sabes, mirar publicaciones de Blue Sky o lo que sea, podrías hacerlo en vivo. Genial.
Sí. ¿Qué tan importante es el aviso del sistema aquí? Quieres, quieres insinuar a la IA con tanto del trabajo como quieras hacer y de alguna manera restringir la naturaleza de la IA. Y por eso, como al principio de eso tenemos, está bien, eres un agente, tu trabajo es sobre videojuegos, como establecer el escenario para ello. Y luego a partir de ahí, tienes algunas herramientas. Tienes la capacidad de obtener juegos con la herramienta. Tienes la capacidad de mostrar juegos con la herramienta. Y eso fue todo. Quiero decir, eso es en realidad como un aviso realmente corto. Quiero decir, podrías ser, podrías decirle, ya sabes, sé amable o, ya sabes, puedes ser picante y malo si quieres eso.
¿Serías amable o picante y malo, Jack? Sabes, si estuviera haciendo cosas de videojuegos, podría ser picante y malo solo por el gusto de hacerlo. ¿Qué demonios? ¿Verdad? Bueno, puedes imaginar algunas ideas realmente interesantes. ¿Verdad? Podrías hacer como, podrías poner esto en un bot de Discord. No necesitas necesariamente tenerlo como un, sí, y hacer que realmente te responda en el canal. Sería algo genial. Sí.
Jack comparte sus pensamientos sobre VectorDB y embeddings. Destaca la velocidad de creación de embeds en VectorDB, lo que lo hace ideal para procesar una gran cantidad de datos. Además, menciona que Postgres y SQLite tienen capacidades de búsqueda vectorial integradas, y algunos motores de embeddings como NOMIC permiten una precisión personalizable. Desafortunadamente, la sesión de preguntas y respuestas ha terminado, pero Jack recibe aplausos por su presentación.
¿Estás como, oh sí, eso es algo que quiero probar en algún momento. Sí. Totalmente pondría esto en un bot de Discord con preguntas y respuestas como esta. Sí. Sí. Pregunta rápida. ¿Dónde vas a publicar el enlace a tu código, si es que lo haces? No lo sé. Necesito hablar con los organizadores de la conferencia sobre eso. Está bien. Revisaremos el Discord más tarde. Sí. Y tal vez en la parte superior de mi lista de GitHub. Genial.
Sí. Nos quedan los últimos minutos aquí. Así que algunas preguntas más, Jack, ¿tienes alguna opinión sobre VectorDB y embeddings frente a otras herramientas? Sí, me gusta Vector. No voy a lidiar con un par de cosas geniales. Sí. Me gustan los embeddings de vectores. Una cosa que es realmente genial es que las cosas antiguas que mostré, los LLMs se ejecutan localmente muy lentamente, pero VectorDB y crear embeddings es realmente increíblemente rápido. Así que si quieres, tienes un montón de datos que necesitas procesar, obtén esos embeddings de Vector y luego pásalos a lo que sea Pinecone o lo que sea que vayamos a hacer, entonces el OLAM es un caso fantástico para eso. Dos cosas más que diría, Postgres, SQLite, es increíble. Todos tienen búsqueda de vectores integrada hoy en día, lo cual es bastante genial. Me impresionó mucho que SQLite realmente tenga búsqueda de vectores integrada. Y luego también algunos de los motores de embeddings, como creo que NOMIC es uno de ellos, te dan esta capacidad de básicamente decir, bueno, está bien, te va a dar, no sé, 4,096 números o lo que sea que salga de esto para cada uno. Y puedes realmente cortar tantos de esos como quieras. Así que si quieres algo de baja precisión, podrías tomar como los primeros ciento veintiocho o 256 y luego dejar el resto. Y si quieres más precisión, simplemente mantienes más. Pero por supuesto, eso es un compromiso entre el tamaño del embedding frente a la calidad de los resultados. Eso es realmente ingenioso. Realmente puedo escuchar los detalles. Sí. No, esto es genial. Desafortunadamente, se nos acabó el tiempo para las preguntas y respuestas aquí. Pero todos, una vez más, por favor. Un aplauso para Jack. Eso fue fantástico. Gracias, Jack. Gracias.
Comments