La IA generativa está emocionando a los entusiastas de la tecnología y a las empresas con su vasto potencial. En esta sesión, presentaremos Retrieval Augmented Generation (RAG), un marco que proporciona contexto a los Modelos de Lenguaje Grande (LLMs) sin necesidad de volver a entrenarlos. Te guiaremos paso a paso en la construcción de tu propia aplicación RAG, culminando en un chatbot completamente funcional.
Conceptos Clave: IA Generativa, Retrieval Augmented Generation
Bienvenido a esta masterclass en línea donde construiremos nuestro propio chatbot con IA generativa. Datastacks proporciona tecnologías para implementar aplicaciones de IA generativa, incluyendo AstraDB como un vector store para generación aumentada de recuperación. El repositorio build-your-own-Rack chatbot contiene iteraciones de aplicaciones, cada una agregando funcionalidades adicionales para crear un chatbot completamente funcional con capacidades de streaming. Implementar la primera aplicación con Streamlit implica dibujar una interfaz de usuario e integrarla con los modelos de chat de OpenAI. Despliega la aplicación del chatbot de la masterclass en Streamlit y utiliza Langflow para implementar aplicaciones generativas sin programación.
Bienvenido a este masterclass en línea donde construiremos nuestro propio chatbot con IA generativa. La agenda incluye una introducción a la IA generativa, generación aumentada por recuperación y un taller práctico para implementar nuestra propia aplicación de chatbot. También hay una descripción general de Langflow, un entorno sin código para aplicaciones de IA generativa.
¡Hola, bienvenido a este masterclass en línea! Hoy vamos a construir nuestro propio chatbot con IA generativa. Así que es un masterclass práctico que haremos juntos. Siéntete libre de encender tu cámara si quieres. Intentemos que esto sea lo más interactivo posible.
Soy Dieter. Soy un ingeniero de soluciones. Trabajo para DATAstacks. Y trabajo con las tecnologías que tenemos en DATAstacks. Y las presentaré en un momento.
La agenda para hoy es la siguiente. Primero, algunas diapositivas para introducirte al panorama general de la IA generativa. Luego me gustaría presentar la generación aumentada por recuperación y qué es, qué se puede hacer con ella, para qué es buena. Y la parte principal de todo esto, por supuesto, son solo algunas diapositivas, es un taller práctico. Vamos a implementar nuestra propia aplicación de chatbot. Y espero que al final de este masterclass, cada uno de ustedes esté orgulloso de haber implementado nuestro propio chatbot funcional que puedan mostrar y experimentar. Como pueden ver, hay un punto adicional en la agenda. Hoy se trata de programar. Se trata de programar nuestra aplicación de chatbot. Pero hay otras formas de implementar aplicaciones de IA generativa. Y hoy también me gustaría presentarles Langflow, un proyecto de código abierto, un entorno sin código que permite implementar aplicaciones de IA generativa sin una sola línea de code. Pero eso será al final. Y primero, algunas diapositivas.
2. Datastacks y Generación Aumentada por Recuperación
Short description:
Datastacks proporciona tecnologías para implementar aplicaciones de IA generativa, incluyendo AstraDB como un almacén de vectores para la generación aumentada por recuperación. La IA generativa aprovecha modelos de lenguaje grandes, pero es posible que no tengan nuestros datos privados, por lo que podemos utilizar el ajuste fino o la generación aumentada por recuperación con un almacén de vectores. La búsqueda de vectores nos permite encontrar un contexto similar a un vector de consulta para responder preguntas.
Y luego hacemos un poco de trabajo juntos, un poco de programación. Así que unas palabras sobre Datastacks. Datastacks es una empresa de IA en tiempo real. Proporcionamos tecnologías que permiten a los desarrolladores implementar sus aplicaciones generativas de IA. ¿Data es igual a IA, verdad?
Y así, en el núcleo de Datastacks, tenemos tecnologías de gestión de datos, como nuestra base de datos en la nube llamada AstraDB. Y hoy vamos a aprovechar AstraDB como nuestro almacén de vectores. Entonces, ¿qué es un almacén de vectores? Explicaré todo esto. Y si algo no está claro, por favor avísame.
Así que AstraDB, lo usamos como un almacén de vectores para implementar nuestras capacidades de rack, es decir, la generación aumentada por recuperación, y esto es lo que quieres usar tan pronto como implementes el chatbot que funciona con tus datos privados. También discutiremos algunas bibliotecas y frameworks dentro de nuestro trabajo práctico. Así que pasemos a la siguiente diapositiva. Así que establezcamos los fundamentos.
Esto se trata de la inteligencia artificial, por lo que un subdominio de la inteligencia artificial es la IA generativa. Y la IA generativa se ha vuelto muy famosa en los últimos meses porque todos la usamos a diario para generar contenido, como texto, audio y video. Y aprovechamos dentro del subdominio de la inteligencia artificial dentro de la IA generativa grandes modelos de lenguaje. No hay mucho que decir sobre los grandes modelos de lenguaje. Creo que todos nosotros ya hemos tenido contacto con ellos y hemos trabajado con un gran modelo de lenguaje. Pero hay un punto que me gustaría destacar un poco.
El gran modelo de lenguaje fue entrenado con grandes cantidades de datos, datos que están disponibles públicamente. Pero no fue entrenado con nuestros datos privados, eso seguro, ¿verdad? Y por eso el LLM alucinaría si lo usamos directamente sin proporcionar algún contexto adicional sobre el contexto en el que nos encontramos, sobre los productos, sobre los servicios, ¿verdad? Y por eso hoy implementamos este chatbot RAC, para que el LLM, que puede estar desactualizado, fue entrenado hace meses. Y no tiene nuestros datos privados. Y alucinará si le preguntamos algo y realmente no tiene los datos para generar una respuesta precisa. Y podría ser inseguro si lo usamos como un servicio. Así que no hay IA sin datos. Y hay formas de proporcionar al LLM nuestro contexto. Y las dos formas que me gustaría explicar son el ajuste fino y la generación aumentada por recuperación.
Una opción es ajustar finamente el gran modelo de lenguaje con nuestro propio contexto. Esto requiere un poco de entrenamiento. Y lleva un tiempo hasta que el gran modelo de lenguaje esté entrenado con nuestro contexto. Y después de eso, el LLM está listo para responder preguntas basadas en nuestro contexto privado. Pero tendríamos que hacerlo cada vez que este contexto privado se actualice o cambie. La otra opción disponible es la generación aumentada por recuperación. Y esto funciona con un almacén de vectores. Así que vectorizamos nuestro contexto y gestionamos los vectores. Y gestionamos nuestro contexto en un almacén de vectores y recuperamos de ese almacén de vectores. Así que podemos tener millones de documentos allí. Recuperamos de todos estos documentos y de todo ese contexto el contexto que se requiere para responder nuestra pregunta. ¿Cómo funciona? Lo aprenderás. Y lo harás en la práctica en un segundo.
Entonces, ¿qué es la búsqueda de vectores? Como puedes ver aquí en ese gráfico, todos aprendimos eso en la escuela. Y principalmente espacios vectoriales bidimensionales y tridimensionales. También lo usamos en el mundo de la IA generativa y en ese mundo de la búsqueda de vectores. Y como puedes ver en el gráfico, tenemos objetos como un pantalón y una falda. Y están más cerca uno del otro. En ese mundo de búsqueda de vectores, eso significa que ambos objetos son más similares entre sí que el pantalón lo es con la camiseta. Así es como funciona la búsqueda de vectores. Y por lo tanto, un almacén de vectores tiene algoritmos implementados para encontrar los vectores que son similares al vector de consulta. Y vamos a aprovechar eso para encontrar el contexto adecuado que nuestro chatbot necesita para responder una pregunta. Así se ve en el lado izquierdo. Hay un fragmento de texto.
3. Vectorización e Implementación de RAC
Short description:
Los fragmentos de texto se vectorizan utilizando modelos de incrustación para generar vectores semánticos. RAC implementa la generación aumentada por recuperación, combinando consultas vectoriales con un gran modelo de lenguaje para proporcionar respuestas precisas. AstraDB es una base de datos escalable de almacenamiento de vectores basada en tecnología de código abierto. La implementación de chatbots presenta desafíos debido a los marcos dinámicos y las dependencias, que Rack Stack busca abordar.
Y este fragmento de texto se vectoriza con la ayuda de un modelo de aprendizaje automático, un modelo de incrustación. Y el modelo de incrustación genera el vector. Y como puedes ver, muchos números flotantes. Por lo general, estos vectores tienen múltiples 100 dimensiones, ¡un poco diferente a los que vimos en la escuela, ¿verdad? Y dentro de ese vector se captura la semántica del texto en el lado izquierdo. Como dije, utilizamos modelos de incrustación para generar los vectores. Y la entrada para ese modelo de incrustación son objetos, texto, audio, video. Y el resultado es un vector con múltiples 100 dimensiones.
Vamos a implementar RAC, Generación Aumentada por Recuperación. Este es un patrón que quieres utilizar tan pronto como implementes el chatbot que responde preguntas basadas en tu contexto, en tus datos privados. Y el flujo aquí es simple. Lo implementaremos en nuestro código. Entonces, hay una consulta de usuario, una pregunta, que ingresa a nuestro chatbot. Y lo primero que hace el chatbot es aprovechar un modelo de incrustación para generar el vector de la pregunta. Y luego hacemos una consulta al almacén de vectores. Utilizamos ese vector y encontramos el contexto, los vectores que hemos almacenado en AstraDB, nuestro almacén de vectores que son más similares a la consulta. Y con esto, recuperamos el contexto, reorganizamos nuestro contexto y proporcionamos la pregunta junto con el contexto al gran modelo de lenguaje. Y el gran modelo de lenguaje nos proporciona una respuesta, una respuesta. Y esta respuesta será precisa porque DLLM tiene nuestros datos privados.
Un almacén de vectores es una base de datos, nuestro almacén de vectores AstraDB. La capacidad de vectores es en realidad una característica que hemos agregado. Y es capaz de gestionar muchos vectores. Puede realizar una búsqueda híbrida. Eso significa las cosas típicas que haces con una base de datos. Entonces haces una consulta sobre algunas columnas. Pero al mismo tiempo, puedes hacer una búsqueda de similitud para encontrar el contexto que es más similar. Puedes hacer filtrado de metadatos. Utilizas el almacén de vectores también para el historial de chat y para la memoria del agente. El almacén de vectores que vamos a utilizar hoy es AstraDB. Y es una tecnología súper escalable. Está basado completamente en código abierto. Todo lo que tenemos en data stacks en realidad se basa en código abierto. Y está basado en Cassandra que se utiliza en la mayoría de las grandes empresas en este planeta, por ejemplo, en Apple. Entonces ellos gestionan su negocio basado en esta tecnología. Es súper escalable, súper rápido y de alto rendimiento.
Pero hay desafíos cuando implementas un chatbot de este tipo. Es realmente difícil debido al hecho de que tal vez tengas la misma experiencia que yo aprendiendo en los últimos meses. Hay tanta dinámica en este espacio de IA en todos estos frameworks que están disponibles. Cambian todos los días, diferentes APIs, diferentes interfaces, diferentes versiones. Pero tan pronto como implementas una aplicación que es un poco más compleja, sí, tarde o temprano te enfrentas a problemas porque hay incompatibilidades entre los frameworks y diferentes versiones de estas dependencias. Y esto es con lo que las empresas y muchos de nuestros clientes luchan. Y seguro, muchas de las cosas o casi todo es de código abierto. Y las empresas también quieren tener soporte para lo que utilizan. Y así, en data stacks, hemos implementado una lista seleccionada de dependencias. Lo llamamos Rack Stack. Y esto es lo que aprovechamos en nuestro código. Así que es con Rack Stack. Empaqueta varios frameworks. Lo probamos todos los días. O cada vez que hay una nueva versión o un cambio en data stack, así que tenemos nuestras tuberías para eso, y nos aseguramos de que las dependencias que proporciona Rack Stack realmente funcionen juntas. Y también Harrison Chase.
4. Implementación de un Chatbot con Rack Stack
Short description:
Lengtjain es un marco líder para aplicaciones de IA generativa, empaquetado dentro de Rack Stack. Los desarrolladores tienen la opción entre pilas de código abierto y cerrado como OpenAI. El objetivo es implementar un chatbot funcional utilizando el repositorio de GitHub proporcionado y explorar el uso de Langflow sin necesidad de programación.
Estoy bastante seguro de que conoces Lengtjain, que es uno de los principales frameworks para implementar aplicaciones de IA generativa. Y él es el CEO. También reconoció eso, así que esto es algo que se requiere. Y es súper valioso para los desarrolladores para implementar code de alta calidad. Rack Stack empaqueta varios frameworks. Bajo estos frameworks se encuentra Lengtjain. Por lo tanto, todo lo que está disponible a través de Lengtjain, índice LAMA, dependencias de AstraDB y Astra streaming. Y sí, es la decisión final del desarrollador, qué caminos seguir. Si todo debe basarse en código abierto.
Y en realidad, es fácil implementar todo eso. Pero tan pronto como las cosas pasan a producción, y los frameworks suelen tener vulnerabilidades, quieres asegurarte de que la vulnerabilidad esté solucionada y estás en la última base de code. Y seguro, además del código abierto, existe la opción de utilizar pilas cerradas, como OpenAI y otros servicios disponibles. Por lo tanto, es la decisión del desarrollador, qué caminos seguir. Así que con eso, eso fue casi todo de las diapositivas que quería presentarles hoy. Y ahora se trata de comenzar la programación con una masterclass. Y todo lo que se requiere está en este GitHub, o en este repositorio de GitHub. Así que por favor navegue hasta ese repositorio. También puedes usar ese código de barras para llegar allí. Sí, y gracias por publicarlo en el chat. Y seguimos desde allí.
Entonces, el objetivo es implementar un chatbot funcional hoy, pero también les mostraré una demostración de cómo pueden usar Langflow de código abierto, que en realidad también está empaquetado dentro de Rackstack para implementar su chatbot sin una sola línea de code. Así que con esto, espero que todos ustedes ya estén en ese repositorio. Aquí está todo lo que necesitamos. Permítanme guiarlos a través de lo que vamos a hacer, y les explicaré lo que vamos a hacer. Y haremos todo paso a paso. Avísenme si algo es demasiado lento, aburrido. Si debemos tocar algo, sí. Por favor, brinden comentarios a lo largo de la implementación de este chatbot.
5. Construyendo un Chatbot Streamlit con Rackstack
Short description:
El repositorio de chatbot build-your-own-Rack contiene iteraciones de aplicaciones, cada una agregando funcionalidades adicionales para crear un chatbot completamente funcional con capacidades de streaming. Streamlit es el marco utilizado para implementar la interfaz de usuario, y utilizaremos la plataforma Streamlit para implementar nuestra propia aplicación. A través del Readme, aprenderás cómo usar Rackstack, vector store, AstroDB para la búsqueda de similitud semántica y Longchain, un marco que reúne las tecnologías necesarias para aplicaciones de IA generativa.
Bien, este es el repositorio de chatbot build-your-own-Rack. Y necesitamos hacer varias cosas. Pero primero, me gustaría explicar que aquí ves varias iteraciones de aplicaciones. Entonces, cada una de estas, de una a siete, agrega funcionalidades adicionales para ser un chatbot completamente funcional, un chatbot Rack completamente funcional que tiene capacidades de streaming que puedes usar y cargar tu propio contexto, tus propios archivos PDF, y usarlo al final. Esto se trata de una aplicación Streamlit. Streamlit es un framework que puedes usar para implementar interfaces de usuario agradables. Y Streamlit también tiene una plataforma que vamos a usar hoy. Te lo mostraré en un segundo.
Entonces, cada uno de ustedes, si lo desean, puede crear una cuenta hoy, no ahora mismo. Lo haremos más tarde. Y luego puedes implementar en esa plataforma Streamlit tu propia aplicación. Y esta es la aplicación que vamos a construir hoy. Esta es nuestra aplicación Streamlit. Y ya he cargado algún contexto a través del botón de navegación de archivos. Y ahora está alojado en la plataforma Streamlit y listo para responder nuestras preguntas. Y el objetivo sería que cada uno de ustedes llegue al mismo estado hoy y cada uno de ustedes tenga su propio chatbot funcionando. Entonces, volvamos al repositorio. Como dije, iteraciones de aplicaciones, y también algo importante. A lo largo de este masterclass, se te pedirá que hagas una instalación de pip. Es una aplicación de Python. Por lo tanto, mi recomendación sería que desde el principio, instales las dependencias que se requieren para esta masterclass, haciendo referencia al archivo de texto de requisitos que actualmente tengo abierto aquí. Necesitamos la dependencia de Streamlit y la dependencia de Rackstack como se te presenta.
6. Configuración del Repositorio y AstroDB
Short description:
Datastacks proporciona un paquete de código abierto que incluye marcos de IA generativa para implementar tu aplicación. Las dependencias incluyen pypdf. Para comenzar, utiliza la plantilla proporcionada en el repositorio para crear un nuevo repositorio en GitHub. Después de crear el repositorio, tendrás acceso a servicios como AstroDB, OpenAI y Streamlit. Primero, regístrate en AstroDB siguiendo el enlace proporcionado y elige entre las credenciales de Google o GitHub. Asegúrate de tener un punto final de RP y un token de aplicación de AstroDB.
Esto es algo proporcionado por Datastacks y es de código abierto. Y empaqueta todos estos marcos generativos de IA frameworks que necesitas para implementar tu aplicación con versiones que funcionan juntas. Y también se requiere la dependencia de pypdf.
Una aplicación Streamlit, por lo que también necesitamos definir algunas claves y secretos, pero esto es algo que haremos juntos más adelante. Bien, lo primero que debes hacer, y está todo documentado en el README de ese repositorio, es utilizar esta plantilla aquí, utilizar esta plantilla y crear un nuevo repositorio. Eso es lo primero.
Por lo tanto, necesitas en tu repositorio de GitHub, este repositorio. Así que obtendrás una copia de él utilizando, utiliza esta plantilla y crea tu repositorio. Luego terminarás teniendo este repositorio dentro de tu cuenta en GitHub. Eso es lo primero que me gustaría pedirte que hagas. Y avísame en caso de que haya preguntas. Sí, en realidad, sí. Así que es un fork, pero sí, si sigues la documentación, utiliza esta plantilla, entonces debería estar todo bien, pero es similar a un fork. Sí, claro. Espero un minuto, no hay problema en absoluto. No necesitas otras ramas. Así que solo utiliza esta plantilla y haz una copia de este repositorio desde esta rama, desde la rama principal para crear un nuevo repositorio en tu cuenta. Hay algunas otras ramas, pero no son relevantes hoy. Por ejemplo, no hay una rama de Llama o un workshop cuando quieres ejecutar todo localmente en tu máquina sin acceder a OpenAI, un servicio en internet y algunos otros talleres. Pero para nosotros hoy, solo la rama principal es relevante. Bien, perfecto. Con esto, continuemos. Primero, me gustaría guiarte a través del Readme. Y avísame si algo no está claro. Así que usamos Rackstack y creamos una aplicación de streaming que se ve más o menos como esta captura de pantalla aquí. Luego, lo que aprenderás hoy es cómo usar Rackstack, luego cómo usar vector store, cómo usar AstroDB como un vector store para una búsqueda de similitud semántica. Aprenderás cómo usar Longchain. Longchain es un framework que une varias tecnologías que se requieren para implementar aplicaciones de IA generativa. Con Longchain, trabajas en un nivel de abstracción más alto y aprenderás cómo usarlo hoy, cómo usar los modelos de lenguaje grandes de OpenAI con el chatbot, y cómo usar Streamlit. Así que hay algunos requisitos previos. Necesitas una cuenta de GitHub, seguro para crear una copia de este repositorio. No hagas clic en el enlace de llamada de Google aquí.
7. Configuración de AstroDB y Base de Datos
Short description:
Este cuaderno de Jupyter te ayudará a comprender mejor los mecanismos. Regístrate en AstroDB y crea una base de datos vectorial. Genera un token de aplicación y copia el punto final de RP. Regístrate en OpenAI y crea una RPKey. Los enlaces de Streamlit están disponibles.
Este es un cuaderno de Jupyter que puedes revisar después de esta masterclass, y te ayudará a comprender mejor todos los mecanismos que has aprendido hoy. Pero esto es algo que debes revisar después. Durante el curso, tendrás acceso a los siguientes servicios. A AstroDB, nuestra base de datos vectorial a OpenAI, el modelo de lenguaje grande y el modelo de incrustación que utilizamos desde allí, y también acceso a Streamlit. Por lo tanto, necesitas acceso a la plataforma tan pronto como quieras implementar tu aplicación en Streamlit como lo hice yo.
Bien, hagamos las cosas paso a paso y regístrate en AstroDB. Eso es lo primero que debes hacer. Simplemente haz clic aquí en ese enlace. Esto te llevará a la interfaz de AstroDB. Permíteme cerrar sesión. Y sí, verás una pantalla como esa. Lo que necesitas hacer es, si no tienes una cuenta, regístrate. Y puedes decidir si quieres usar tus credenciales de Google para eso, tus credenciales de GitHub para eso, o si quieres registrarte con tu nombre, apellido y dirección de correo electrónico. Solo como información, algunos de ustedes podrían tener problemas con el enfoque de GitHub. Si dentro de tu repositorio de GitHub, puede haber algunas configuraciones de seguridad que no permiten usar tus credenciales de GitHub para registrarte en AstroDB, en ese caso, te recomendaría usar el enfoque de Google. Entonces, esto es para registrarte en AstroDB, eso es lo primero que debes hacer. Y lo que necesitamos es un punto final de RP y un token de aplicación dentro de AstroDB. Permíteme ver si tengo algo abierto.
No, pero te mostraré nuevamente cómo funciona. Abrir enlace en una nueva pestaña. Iniciar sesión con Google. Cambiemos a mi organización. Entonces, y para hoy, he creado una base de datos de masterclass. Por lo tanto, necesitas crear una base de datos vectorial en AstroDB. Y una vez que se cree esta base de datos, aquí a la derecha, verás un punto final de RP y un token de aplicación. Puedes generar un token de aplicación aquí y copiarlo. Esto es lo que necesitaremos durante el transcurso de esta masterclass. Por lo tanto, puedes hacerlo ahora mismo y copiarlo en un archivo de texto o donde quieras guardarlo. Esto es para AstroDB. Sí, hay una pregunta, ¿es irrelevante el proveedor de la base de datos? Sí, esta masterclass es para AstroDB, para usar AstroDB. De acuerdo, eso es lo primero, luego abre AI. Por favor, si aún no tienes una cuenta, regístrate y ve a la página de RPKey y crea una RPKey. Entonces, AstroDB es un servicio de base de datos disponible en cualquier cloud público. Por lo tanto, es tu decisión dónde quieres crear tu base de datos vectorial. Necesitas crear una base de datos vectorial. Puede ser en AWS y Google y Azure. Te recomendaría que uses lo que quieras, pero puedes usar AWS. Hay una región europea. Así que creo que somos europeos dentro de la masterclass. Desde esa perspectiva, tiene sentido. Tus bases de datos se inicializan. Esto suele tardar uno o dos minutos. Y una vez que la base de datos tenga el estado activo, como mi base de datos de masterclass aquí, sí, estamos listos para generar tokens de aplicación y copiar el punto final de RP. Sí, claro. Así que puedo repetirlo. Entonces, aquí en los requisitos previos, necesitas tener tres cuentas para estos tres servicios, una para Data Stacks AstroDB. Detrás de estos enlaces está todo lo que necesitas para registrarte en estos servicios. Luego para OpenAI y para Streamlit. De acuerdo, luego continuemos. Sí, Streamlit,
8. Implementación de la primera aplicación con Streamlit
Short description:
Crea espacios de código en la rama principal para proporcionar un entorno completo de desarrollo y ejecución para la aplicación del chatbot. Utiliza la ventana del terminal de los espacios de código para instalar las dependencias necesarias. Implementa la primera aplicación dibujando una interfaz de usuario con Streamlit.
Deberían llevarte directamente a la página donde puedes registrarte para el servicio. Bien, y esto es lo que no hacemos. No probamos los conceptos en un cuaderno de Colab. Así que este es un cuaderno de Jupyter ejecutado en el entorno de Colab de Google. Hazlo después de la masterclass para aprender más sobre los mecanismos de lo que hemos hecho en la masterclass. Lo siguiente que vamos a hacer es, esto es lo que ya hiciste. Creaste tu propio repositorio basado en este repositorio. Luego, lo siguiente es que creamos espacios de código en la rama principal. Así que por favor haz lo siguiente. Aquí, está el botón de code. Y yo ya tengo mis espacios de código funcionando y activos. Pero verás aquí, crea espacios de código y haz exactamente lo que está en la documentación de esa masterclass. Crea tus espacios de código basados en eso. Y esto te dará el entorno de espacios de código de GitHub. Y la ventaja para nosotros aquí es que nada de todo ese code que implementamos se ejecuta localmente en tu máquina. Por lo tanto, no hay riesgo de incompatibilidades con tu máquina o con la configuración. Esto nos proporciona un entorno completo de desarrollo y un entorno de ejecución para nuestra aplicación de chatbot. Y tan pronto como hayas creado tus espacios de código, deberías ver prácticamente lo mismo que veo ahora mismo en el lado izquierdo, todos los archivos y carpetas que tenemos dentro de nuestro repositorio. Luego, en el lado derecho, en el lado derecho, esa es solo una página de prueba que inicia un navegador dentro del ejemplo inicial de Streamlit. Y sí, en la parte inferior, tenemos un terminal. Un terminal, en este momento, hay esta línea de comandos funcionando. Tan pronto como lo hayas iniciado, Streamlit hello server y así sucesivamente se ejecuta automáticamente. Esto abre esta ventana del navegador. Y usaremos esa ventana del terminal para iniciar nuestras iteraciones de aplicación. Y para detener nuestras aplicaciones, solo presiona Control C. Eso es lo que hice. Y con esto, puedo ejecutar todas estas aplicaciones que tenemos dentro del repositorio. Cuando estés bloqueado y no puedas hacer nada en el entorno, eso se debe a esa ventana emergente aquí. Ahora que se ha ido, puedo eliminar esta línea e insertar mis propias líneas de comandos. ¿Los espacios de código ya están funcionando en todas partes? Por favor, avísame si necesitas unos segundos más o un minuto más, solo envía un mensaje en el chat de Zoom. De acuerdo, parece bien. Con esto, tenemos el repositorio. Tenemos los servicios registrados. Tenemos los espacios de código funcionando, y sigamos desde ahí. Entonces, los espacios de código están funcionando, y ahora estás listo para empezar. Ahora estamos listos para implementar nuestra primera aplicación aquí. Sí, los espacios de código nos proporcionan un entorno habilitado para Python. Ahora mismo es Python 3.11, pero no es realmente relevante. Y como se dijo aquí, necesitas hacer la instalación de PIP para Rack Stack, para Streamlit, para PyPDF. Y la forma de hacerlo es lo que mostré antes. Lo muestro de nuevo para asegurarme de que puedas seguir. Esto está en el archivo requirements.txt. Entonces, esta es la línea de comandos que debes ejecutar en la ventana del terminal de los espacios de código justo aquí. Así que aquí mismo, debes hacer tu instalación de PIP3 requirements.txt. Con esto, tienes todo, todas las dependencias para esta masterclass. De acuerdo, volvamos a las instrucciones. Sí, ahora que tenemos lo básico, estamos listos para implementar nuestra primera aplicación. Y la primera aplicación se trata simplemente de dibujar una bonita UI con la ayuda de Streamlit. Dibujamos un título, dibujamos un poco de texto con markdown. Y eso es todo para la primera iteración.
9. Ejecución y prueba de la aplicación Streamlit
Short description:
Ejecuta la aplicación Streamlit ejecutando el código Python. Verifica que la configuración esté funcionando dibujando una interfaz de usuario con un título y markup. Detén y reinicia la aplicación para asegurarte de que se establezca la conexión entre el navegador y el código Python backend.
Y para ejecutar nuestra aplicación, simplemente copia Streamlit run up one.py con ese icono aquí en el lado derecho y ejecútalo en la terminal aquí. Y el resultado del código Python está en funcionamiento. Así es nuestra aplicación Streamlit, una aplicación Python. Y utilizamos algunas de las características para dibujar un bonito título y markup. Así que esperemos un segundo hasta que todos tengan la instalación de PIP hecha, tal vez. Mientras tanto, también aquí en el lado izquierdo, puedes navegar por todos los archivos dentro del repositorio.
Así es nuestra primera aplicación, una simple, pero es solo para dibujar la UI y ver que toda la configuración esté funcionando para ti. Entonces, el navegador simple debería abrirse automáticamente tan pronto como inicies tu aplicación. Así que con Control C, detienes tu aplicación y con la flecha hacia arriba, puedo obtener la línea de comandos de nuevo. Como puedes ver, ahora que detuve mi aplicación, no hay conexión con la aplicación, no hay conexión entre lo que tenemos en el navegador y nuestra aplicación backend, nuestro código Python. Y cerramos la ventana emergente y volvemos a iniciar la aplicación. Y en realidad esto abre automáticamente el navegador.
10. Agregando Campos de Entrada e Integración con OpenAI
Short description:
Agrega campos de entrada a la aplicación para hacer y mostrar preguntas. Utiliza el componente de estado de sesión de Streamlit para almacenar las interacciones del chatbot. Integra la aplicación con los modelos de chat de OpenAI utilizando plantillas de indicaciones y el componente de chat de OpenAI.
Entonces, vamos a la segunda iteración de la aplicación y ya no necesitas hacer esta instalación de PIP porque instalamos todas las dependencias a través del archivo de requisitos. Ahora agreguemos algunos campos de entrada al dibujar texto. Necesitamos campos de entrada para hacer preguntas y también necesitamos una salida para nuestras preguntas. Y la forma en que logramos eso es con Streamlit, aún con Streamlit solamente. Así que aprovechamos la función de entrada de chat y sí, esto nos permite hacer una pregunta y dibujamos la pregunta y también dibujamos una respuesta.
En este momento no hay conexión con ningún LLM, así que todavía es solo una interfaz de usuario, pero ampliaremos la aplicación con cada uno de estos pasos. Todo lo que necesitamos hacer es copiar la línea de comandos de Streamlit nuevamente, detener lo que tenemos en ejecución, iniciar la aplicación dos y ahora puedes ver que tenemos un campo de entrada, la pregunta es `¿Qué pasa?` y ahora podemos hacer una pregunta. Pero lo único que hace la aplicación es imprimir cuál fue la pregunta. Y aún no tiene ningún historial. Pero llegaremos a eso más adelante.
Así que detengamos esa aplicación nuevamente. Volvamos a nuestras instrucciones. Y sí, para recordar las interacciones del chatbot, utilizamos el componente de estado de sesión de Streamlit. Entonces, una aplicación de Streamlit funciona de la siguiente manera. Es un script de Python y se ejecuta de arriba a abajo. Pero la próxima vez que se ejecute, no almacenamos ningún estado o valor predeterminado. Para almacenar el estado, aprovechamos componentes como el componente de estado de sesión para almacenar la pregunta y la respuesta que hemos obtenido hasta ahora. Y tendremos múltiples preguntas y nos beneficiará tener todo el historial de eso. Así que copiemos la aplicación tres de Streamlit. También podemos echar un vistazo aquí al code en GitHub. Y sí, esto es de lo que ya hemos hablado, el campo de entrada para la pregunta y luego está el componente de estado de sesión. Y agregamos nuestros mensajes a nuestro estado de sesión para tener acceso a ellos en cada ejecución del script de Python. Así que ejecutemos nuestra aplicación tres. Y ahora agrego una prueba uno. Agrego una prueba dos. Agrego una prueba tres. Ok, así que tenemos implementada la funcionalidad para almacenar el estado.
Vamos a las instrucciones y ahora integremos nuestra aplicación con OpenAI, con los modelos de chat disponibles de OpenAI. Y lo que usamos aquí es, usamos hash data que también es un componente de Streamlit para almacenar nuestra plantilla de indicaciones que aprovechamos en nuestra aplicación de chatbot. La indicación consta de una plantilla y en una indicación, defines lo que el modelo de lenguaje grande debe hacer. Defines cuál debe ser el papel del modelo de lenguaje grande y cómo debe comportarse. Y en este caso, es, eres un asistente de IA útil encargado de responder las preguntas del usuario. Eres amigable y respondes de manera extensa con múltiples oraciones. Prefieres usar viñetas. Luego, dentro de la indicación, hay un marcador de posición y aquí es donde va la pregunta. Toda la indicación es lo que enviamos al modelo de lenguaje grande. Enviamos la pregunta, enviamos las instrucciones y como verás más adelante, también enviamos contexto sobre nuestros datos privados.
Ok, con esto tenemos nuestra plantilla de indicaciones de chat y otra cosa que debemos hacer es cargar el modelo de chat. Y para eso usamos de LungChain, el framework, el componente de chat abierto de AI. Y este componente requiere que proporcionemos algunas propiedades. Entonces, lo primero, la propiedad importante es el modelo que queremos usar de OpenAI. Es posible que sepas que OpenAI ofrece varios modelos. Usamos GPT 3.5 turbo. También está GPT 4.0 y otros modelos de lenguaje grande que podemos usar. Pero para este workshop, usamos este luego está la temperatura y tal vez te preguntes, hey, ¿de qué se trata esta temperatura? Puedes dar un número de temperatura entre cero y uno cero significa que no le das al modelo de lenguaje grande ninguna libertad para que genere una respuesta. Entonces, la respuesta debe ser muy precisa y el modelo de lenguaje grande no debe alucinar demasiado ni generar una respuesta aleatoria. Cuanto mayor sea el número, si es uno, permites que el modelo de lenguaje grande te proporcione una respuesta más aleatoria. Y puede ser que la respuesta que obtengas del modelo de lenguaje grande sea incorrecta o no esté en el punto, ¿verdad? Cuanto menor sea el número, más precisa será la respuesta. Y luego habilitamos el streaming debido a que el modelo de lenguaje grande, es un modelo de lenguaje grande. Es un modelo de machine learning y lo que hace el modelo de lenguaje grande, es hacer una predicción o tokens. Entonces enviamos una indicación y con esta indicación, el modelo de lenguaje grande genera una respuesta, pero predice la respuesta token por token para ver la respuesta a medida que se genera, queremos transmitirla en nuestra UI y por eso lo establecemos en true y aprovecharemos eso más adelante cuando implementemos la funcionalidad de transmisión en nuestro chatbot.
11. Definición de Cadena y Ejecución de la Aplicación Cuatro
Short description:
Define una cadena para conectar la entrada, la indicación y el modelo de chat. Proporciona la clave de Open AI RP en secrets.toml. Ejecuta la aplicación cuatro para conectarte al modelo de lenguaje grande y hacer preguntas.
De acuerdo, y luego lo último que necesitamos hacer aquí es definir una cadena llamada y esto es el lenguaje de expresión de cadena largo y se lee así. Entonces la entrada va a una indicación. Entonces la entrada es la pregunta en este momento y esto va al marcador de posición que has visto en la indicación y la indicación va al modelo de chat y el modelo de chat nos proporcionará una respuesta. Así es como se lee esa cadena aquí y la respuesta luego vuelve en esta variable de respuesta y de esa respuesta, tomamos la respuesta y la mostramos dentro de nuestra aplicación de chatbot.
Entonces, antes de poder ejecutar la aplicación cuatro, necesitas proporcionar la clave de Open AI RP en el archivo streamlit secrets Toml. Permíteme mostrarte cómo hacerlo. Entonces, dentro del repositorio, encontrarás los ejemplos de secrets Toml así que lo que puedes hacer es copiar ese archivo y crear un archivo secrets.toml como lo hice con mis secretos, con mi clave de Open RP y con mis credenciales de Astra o simplemente puedes cambiarle el nombre. Si haces clic derecho en ese archivo, simplemente puedes cambiarle el nombre a secrets.toml si quieres. Estas son las opciones que tienes y para la aplicación cuatro, todo lo que necesitas especificar en este momento es la clave de Open AI RP. Yo lo hice en mi secrets Toml y con esto, puedo ejecutar la aplicación cuatro. Así que ahora tenemos una aplicación de chat completa que está conectada al modelo de lenguaje grande y sí, ahora podemos hacer preguntas. ¿Cómo va todo? No es una pregunta muy útil pero como puedes ver, obtenemos una respuesta y como se solicitó, y como se solicitó, la respuesta está con viñetas y porque esto no es realmente una pregunta, vuelve con, ¿cómo puedo ayudarte hoy? Veo que alguien excedió esta cuota.
12. Uso de la Clave RP y Astra DB para el Contexto Vectorizado
Short description:
Proporciona una clave RP si es necesario. Utiliza Astra DB para almacenar y recuperar el contexto vectorizado para el modelo de lenguaje grande. Astra DB permite la búsqueda vectorial y el cálculo de similitud.
Entonces, lo que puedo hacer es, si solo algunos de ustedes están experimentando lo mismo, puedo proporcionarles una clave RP que funcione. Así que lo haré. Eugene en un segundo y esta clave RP estará activa hasta mañana para ustedes. Y luego la desactivaré porque utiliza nuestra tarjeta de crédito de data stacks. Y hubo una pregunta acerca de, la base de datos vectorial aún está pendiente. Oleg dijo que mi DB vectorial aún está pendiente, probablemente también necesitaría la clave. No necesitas una clave para eso. Así que debería pasar al estado activo. Sí, una vez que la base de datos esté activa, seguro. Sí, puedes copiar el punto final y generar un token y lo usaremos en un paso posterior en la masterclass. ¿Funciona?
Entonces, lo que demostré, la integración con OpenAI, ¿algún éxito hasta ahora? Por favor, señalen si funciona. De acuerdo, perfecto. Entonces continuemos con el siguiente paso, eso fue la aplicación cuatro. Así que ahora todas las respuestas se basan en, los datos, en los que se entrenó el modelo de lenguaje grande, pero como dije, el LLM no fue entrenado con nuestros datos privados. Y para proporcionar o incluir nuestros datos privados en la imagen, vamos a aprovechar Astra DB, nuestra tienda de vectores y vectorizar nuestro contexto, almacenarlo allí, recuperarlo de Astra DB y proporcionarlo como contexto en la indicación para el LLM. Entonces sí, tal vez rápidamente a Astra DB.
Esto es lo que deberías ver ahora mismo en tu Astra DB UI. Así que creaste la base de datos y sí, hablamos sobre el punto final y el token. Estas son métricas sobre el rendimiento y otras cosas. Y luego hay una pestaña llamada explorador de datos. Allí puedes ver un espacio de nombres. Trabajamos con un espacio de claves predeterminado. Este es el nombre del espacio de nombres predeterminado. Esto es lo que utilizamos por ahora. Puedes crear tus propios espacios de nombres, pero no es necesario para nosotros. Así que tenemos los espacios de nombres, pero no es necesario para esa masterclass. Y dentro del espacio de nombres, tenemos colecciones. En estas colecciones, almacenamos nuestros datos, almacenamos nuestro contexto. Y como puedes ver aquí, mi contexto se almacena en una colección llamada length flow. También hay información sobre las dimensiones de las dimensiones vectoriales. 1536 dimensiones es bastante. Y como dije antes, capturado dentro de estas dimensiones está lo semántico, es el contexto del texto que se vectorizó. Y luego, cuando bajamos, está la colección datos, ahí están los documentos, los vectores se almacenan junto con el contenido. Este es el texto que se envió o que enviamos al modelo de incrustación de OpenAI en la siguiente iteración de la masterclass. Y eso se vectoriza. Y el resultado de esa vectorización es este vector. Y almacenamos ambos juntos. Y esto nos permite hacer una búsqueda vectorial. Así que puedo hacer una búsqueda ahora mismo dentro de AstraDB UI para hacer una búsqueda de similitud. Y como puedes ver, sí, hay una puntuación de similitud de uno. Hay diferentes algoritmos disponibles para la búsqueda de similitud. Hay coseno, producto punto, euclidiano, y hay otros algoritmos. En esta masterclass, usamos el predeterminado, usamos coseno. Y la puntuación de similitud de coseno de uno significa que hay una similitud del 100% dentro de todos los contextos que tenemos en la base de datos. Y seguramente la razón es que usamos el vector, uno de estos documentos que contiene el contexto en nuestra base de datos. Y si lo comparas consigo mismo, es completamente similar. Eso es lo que obtenemos como respuesta aquí. Y aquí, en el lado izquierdo, podemos ver la similitud con todos estos otros fragmentos de texto que vamos a almacenar. Aún no lo hemos hecho. Vamos a almacenar en AstraDB.
13. Combinando AstraDB con Retriever y Streaming
Short description:
Combina AstraDB, una tienda de vectores, con contexto adicional utilizando un recuperador. Ejecuta la aplicación cinco para hacer preguntas y recuperar fragmentos de contexto similares de AstraDB. Sube archivos PDF para integrar datos privados en el chatbot. Implementa la transmisión de la respuesta del LLM para una mejor experiencia de usuario.
Vamos a almacenar en AstraDB. De acuerdo, entonces pasemos a la siguiente sección. Ahora combinamos AstraDB, una tienda de vectores, con un contexto adicional. Este contexto adicional se agrega a la indicación. El code que necesitamos para eso es implementar un recuperador. El recuperador se utiliza para recuperar data de la tienda de vectores de AstraDB. Y también es un componente de cadena larga. Usamos AstraDB para eso. Necesitas definir un modelo de incrustación que quieras usar para eso. En esta masterclass, usamos modelos de incrustación de openAI, pero también podrías decidir usar un modelo de incrustación de hugging face o un modelo de incrustación proporcionado por Azure o AWS, u otros proveedores. Por ahora, usamos openAI. Luego defines un nombre de colección por defecto. Usa el valor predeterminado con mi tienda. Y luego puedes ver el marcador de posición, el punto final de la API de Astra y el token de Astra. Esto es lo que proporcionas en un segundo en este archivo secret toml en verde.
Luego aquí, el recuperador para el modelo de chat. Lo que hacemos aquí es definir que nos gustaría obtener los cinco documentos más similares de la colección. Y luego, además, antes de estas entradas, solo se trataba de la pregunta. Y ahora también agregamos al contexto a las entradas. Estos son los marcadores de posición que has visto en la plantilla. Y esta información se ingesta en la plantilla. Uno es el contexto, los documentos similares de AstraDB, y el otro es la pregunta. Luego, agrega tu punto final y token a tu archivo secret toml. Y con esto, estamos listos para ejecutar la aplicación cinco. Sí, debe ir aquí. Ya lo hice en mi secret toml. Por eso puedo ejecutar directamente la aplicación cinco. Y no se ve diferente a lo que hemos visto antes, pero ahora, sí. Podemos hacer preguntas y estas preguntas, la pregunta se vectoriza. Y este vector de preguntas se utiliza como parámetro de búsqueda para encontrar los fragmentos de contexto más similares dentro de AstraDB. Y luego se proporciona esto dentro de la indicación al LLM. Pero ahora mismo no tenemos la capacidad de cargar ningún contexto de nosotros. Por lo tanto, aún no tenemos un gran beneficio, pero lo que hicimos es integrar AstraDB para que ingiera el contexto en la indicación. Entonces Eugene preguntó, ¿qué data necesito cargar en AstraDB? Agregaremos una nueva función a nuestra aplicación de chatbot que te permitirá cargar un archivo PDF. Y puede ser cualquier archivo PDF. Esto es solo para fines de demostración, para fines de aprendizaje. Pero la idea de un chatbot como este es tener un chatbot para tus data privados. Tal vez dentro de tu empresa, dentro de tu compañía, tienes productos y servicios. Tienes descripciones para todo eso. Y te gustaría tener un chatbot orientado al cliente que sea capaz de responder preguntas sobre los servicios que ofreces y los productos que ofreces. Y luego lo que haces es cargar estos documentos PDF en el chatbot. Y con esto, se dividen en fragmentos. Y cada uno de estos fragmentos de texto pasa por el modelo de incrustación para ser vectorizado. Y el vector y el fragmento de texto se almacenan uno al lado del otro en AstraDB en la colección como se demostró hace unos minutos.
De acuerdo, continuemos con la creación de una aplicación de transmisión. Como expliqué antes, nos gustaría que la respuesta del LLM se transmita en nuestra interfaz de usuario porque el LLM hace una predicción del siguiente token. Y a veces puede llevar mucho tiempo y no es una buena experiencia de usuario. Si el usuario hace una pregunta y tiene que esperar cinco segundos para obtener la respuesta completa, nos gustaría recibir la respuesta transmitida en nuestra UI tan pronto como se prediga el primer token. Por lo tanto, agregamos este controlador de transmisión a nuestra aplicación code. Y también necesitamos agregar ese controlador de transmisión a nuestra cadena para integrarlo con el LLM.
14. Añadiendo Funcionalidad de Carga de Archivos PDF
Short description:
Omite la aplicación seis y ve directamente a añadir la funcionalidad de carga de archivos PDF. Utiliza la barra lateral de Streamlit para navegar y cargar archivos PDF para su vectorización. Divide el documento en fragmentos utilizando el divisor de texto de caracteres recursivo y almacena el contexto en AstroDB. Ejecuta la aplicación 7 para probar la capacidad del chatbot de responder preguntas sobre los PDFs cargados. Ponte en contacto con DataStax para obtener ayuda con tus proyectos y lleva tu aplicación a la plataforma Streamlit.
Esta es la iteración de la aplicación seis. ¿Sabes qué? Me gustaría omitir eso y no ejecutarlo. Vamos directamente a la última cosa y añadamos la funcionalidad de cargar un archivo PDF. Oleg tiene una pregunta. ¿Te proporcioné una clave de API? Sí, de acuerdo, Oleg te enviará una clave de API en un segundo. De acuerdo, aquí tienes. Así que continuemos con el último paso. Como dije, nuestro JetBot debería permitirnos cargar un archivo PDF. Entonces lo que necesitamos hacer es usar o definir una barra lateral de Streamlit. Y dentro de la barra lateral, agregamos nuestro botón de carga que nos proporciona una ventana donde podemos seleccionar nuestro archivo PDF y cargar ese archivo para obtenerlo vectorizado.
Aquí hay un poco de code. Para averiguar cuál es la ruta al PDF, ¿verdad? Y también hay, hay un cargador de PDF que usamos. Proporcionamos la ruta al archivo. Y luego otra cosa interesante que aprovechamos es un componente de cadena larga, el divisor de texto de caracteres recursivo. El divisor de texto de caracteres recursivo en este componente toma nuestro documento, divide nuestro documento en fragmentos de un tamaño de 1500 caracteres. Y también puedes ver que hay otra propiedad. Y esta propiedad es la superposición. Y así superponemos nuestros fragmentos de texto para no perder ninguna información y tener oraciones completas dentro de nuestro contexto. Y luego lo siguiente es que dividimos nuestro documento con un divisor de texto. Y luego lo siguiente es que almacenamos. Esa es una referencia a la tienda de vectores de AstroDB. Simplemente ejecutamos el método y los documentos y proporcionamos las páginas del divisor de texto. Y sí, ese es nuestro contexto que se almacena en AstroDB. Y con esto, tendremos contexto. Y si luego cargas una de tus descripciones de producto, descripción de servicio, tu chatbot es capaz de responder preguntas sobre eso. Y no es necesario hacer una instalación de pip pyPDF porque todos ustedes, creo, hicieron una instalación de pip a través del archivo requirements.txt. Así que ejecutemos la aplicación 7, pero no aquí. Ese es el lugar equivocado. Así que está aquí. Ahora deberías tener la barra lateral con el botón de navegación de archivos. Y con esto, selecciono, en mi caso, puedes seleccionar lo que quieras seleccionar, cualquier PDF que tengas disponible. Es un ensayo de un autor. Lo cargo. Lo guardo en AstroDB. Y una vez que lo hayas guardado en AstroDB, puedes hacer preguntas y probar si el LLM realmente obtiene el contexto sobre el PDF. Y este PDF trata sobre, es un ensayo. Y mi pregunta es, ¿en qué dos cosas principales trabajó el autor antes de la universidad? El LLM, no sabe sobre qué autor se trata. Y no fue entrenado con ese documento PDF de ensayo. Pero ahora que lo hemos vectorizado e inyectamos en la indicación, el contexto y lo pasamos al LLM. Así obtenemos las dos cosas principales que son escribir y programar con más información devuelta por el LLM. Por favor, avísame si eso funcionó para ti, ¿algún éxito con eso? Hey, genial, muy bien. Así que funcionó para bastantes personas. Y esta es realmente una aplicación de chatbot muy sencilla. Así que hay muchas formas de hacerla aún más valiosa y más lista para producción, sin duda. Y si estás interesado, si tienes un proyecto, sí, estaría encantado o estaríamos encantados en DataStax de simplemente ponerte en contacto conmigo, con nosotros. Sí, nos encantaría ayudarte con lo que quieras hacer. Así que hay un último paso dentro de la masterclass. Y este es llevar tu aplicación a funcionar en la plataforma Streamlit. Así que espero que cada uno de ustedes tenga una cuenta de Streamlit. No solo es el framework, también es una plataforma.
15. Despliegue de la Aplicación del Chatbot
Short description:
Crea una aplicación en Streamlit para desplegar el chatbot de la masterclass, haciéndolo accesible públicamente. Personaliza la URL, copia los secretos del archivo secrets.toml y haz clic en Guardar y Desplegar para desplegar la aplicación. Utiliza pipelines para actualizar la base de datos de vectores con nuevos documentos. Monitoriza la carpeta de documentos en busca de cambios y vectoriza los nuevos documentos para actualizar la información en Astra DB. Utiliza la API de Astra y el cliente de Python para gestionar colecciones, eliminar información obsoleta e interactuar con la base de datos.
Y todo lo que necesitas hacer en realidad es, y también está bien documentado, necesitas crear una aplicación. En este momento tengo dos aplicaciones en funcionamiento. Esta aplicación es el chatbot de la masterclass que ya desplegué en Streamlit. Con esto, tu chatbot también está disponible públicamente. Esto te permitiría compartirlo con colegas, tal vez colegas que también trabajan desde casa, trabajan en otras ubicaciones para darles una idea. Entonces, lo que es posible con la generación aumentada por recuperación. Todo lo que necesitas hacer es crear una aplicación. Y en mi caso, ya tengo una aplicación. Y lo que proporcionas aquí es el repositorio, el repositorio, luego la rama principal, luego las rutas principales de archivos de tu aplicación. En nuestro caso, es app underline7.py. Y luego aquí hay una URL y puedes personalizar tu URL para que coincida con lo que quieras nombrar, ¿verdad?
Y luego hay algunas configuraciones advanced y lo que necesitas hacer allí es, todo lo que necesitas hacer es copiar del archivo secrets.toml todo esto. Así que todas las líneas, todos los secretos y cópialo aquí. Y luego haces clic en Guardar. Y luego haces clic en Desplegar y esto desplegará la aplicación en Streamlit y llevará un tiempo, pero después será accesible como mi aplicación. Ahora, por favor, danos tu opinión si también funciona para ti, sería bueno saber si te funcionó. Y con esto, en realidad, por favor, avísame si funciona y por favor también avísame si tienes alguna pregunta. Y estaré encantado de responder a cualquiera de ellas. Gracias. Gracias. Gracias. Gracias. Gracias. Gracias. Gracias. Gracias. Gracias y estaré encantado si hay alguna pregunta. Con esto, una vez que me indiques que funciona, me gustaría mostrarte en unos minutos, de manera aún más sencilla, cómo implementar una aplicación de chatbot como esta.
Tengo una pregunta. Supongamos que en mi empresa tengo una lista de archivos que quiero hacer públicos para mis colegas. Y tengo esta aplicación alojada para que ellos hagan preguntas sobre estos archivos. A medida que los archivos cambian, ¿qué tan fácil y cómo se ve el proceso para seguir alimentando la base de datos de vectores con más archivos? ¿Hay ciertas APIs o ciertos pipelines donde podamos agilizar la información que le proporcionamos?
Sí, muchas gracias por la pregunta. La forma de hacerlo es mediante pipelines. Esto no es algo que ofrecemos en nuestra plataforma. Esto es algo que debes implementar por tu cuenta. Tan pronto como haya un cambio en el documento, una nueva versión de un documento o un nuevo documento, normalmente monitorizas tu carpeta de documentos. Y si hay algo nuevo, si hay una actualización, tomas el nuevo documento, lo vectorizas y actualizas la información en Astra DB. Y supongo que también es posible en Astra DB eliminar toda la información que ya no sea relevante, dado que acabo de subir un nuevo PDF con información incorrecta.
Absolutamente. Lo que hemos aprovechado hoy es lo que se llama, siempre hay diferentes formas de interactuar con la tecnología. Y utilizamos la API de Astra. Hay un cliente para diferentes lenguajes de programación que implementa la API. Hoy utilizamos el cliente de Python. Y con esto, ¿por qué este cliente de Python? Hay una serie de funcionalidades disponibles para gestionar tu colección, eliminar tu colección, eliminar información obsoleta dentro de tu colección. Así que esto se puede hacer a través de la API en este caso. Vale, veo una pregunta sobre el punto final y el token. Shibam, déjame volver rápidamente a ese punto. Aquí está Astra. Tan pronto como tengas tu database en funcionamiento y esté activo, lo que haces aquí en el lado derecho, hay un punto final de RP. Esto es lo que copias. Y esto es lo que se requiere en los secretos de Streamlit.
16. Implementación de Langflow y Definición de Flujos
Short description:
Genera un token y pégalo en el archivo secreto. Langflow es un proyecto de código abierto que te permite implementar aplicaciones generativas sin programar. Utiliza componentes de arrastrar y soltar en un lienzo para definir el flujo. Conecta componentes como modelos de embedding y búsqueda en AstraDB para realizar búsquedas de similitud. Recupera el contexto y utiliza una plantilla predefinida para generar respuestas.
Y luego generas un token simplemente haciendo clic en generar token, haces clic en el icono de copiar y copias y pegas en el archivo secreto. Y eso es todo lo que necesitas hacer. De acuerdo, con esto, de acuerdo, con esto, creo que lo siguiente también te resultará muy interesante. Se trata de Langflow, que es un proyecto de código abierto. Y sí, Langflow, tiene casi 20,000 estrellas en GitHub. Así que es realmente un proyecto famoso con una comunidad súper interactiva. Es una forma de implementar aplicaciones generativas sin código. Si estás interesado en profundizar en ese tema, te permite simplemente prototipar y probar diferentes modelos, diferentes recuperadores, diferentes separadores tecnológicos, diferentes tecnologías de AWS, de Azure, de Google, simplemente intercambiando componentes en un lienzo. Esta es la página de documentación, docs.langflow.org.
Y lo que voy a hacer es mostrártelo rápidamente. Así que tengo Langflow en funcionamiento y más información para ti. Rackstack es lo que hemos usado hoy para obtener Langflow, el framework de Langflow en nuestra aplicación de chatbot. Rackstack es una lista curada de dependencias y Rackstack también te proporciona Longchain. Así que hay una dependencia de Rackstack llamada Rackstack AI Langflow. Así que aún no lo has visto hoy en las diapositivas, solo para tu información, también puedes buscarlo en Google, lo encontrarás. Esto configurará todo para que puedas ejecutar simplemente un Langflow run. Y lo que obtendrás es la interfaz de Langflow que tengo aquí. Así es la interfaz de Langflow. Y trabajas así. Ya hay bastantes plantillas que puedes reutilizar. Así que no necesitas inventar la rueda por ti mismo. Puedes aprovechar lo que tus colegas, lo que otras personas en este planeta han creado y reutilizarlo. Pero para esta demostración, comienzo con un Langflow. Así que implementamos flujos en Langflow. Y como puedes ver en el lado izquierdo, lo que arrastras y sueltas en el lienzo son componentes y para una aplicación de chat, arrastro y suelto un campo de entrada de chat en mi lienzo. Y sí, como en nuestra aplicación de código, pero con una diferencia, no necesito entender Python, no necesito entender cómo funcionan realmente estos componentes. Simplemente los coloco en el lienzo y los conecto entre sí para definir mi flujo. Así que necesitamos un modelo de embedding como en nuestra aplicación de chatbot, también aquí, usemos el modelo de embedding de OpenAI. También realizamos una búsqueda de vectores sobre lo que tenemos como contexto dentro de AstraDB. Estos son los componentes que necesitamos, y para definir un flujo, simplemente conectas estos componentes entre sí. Como lo hago aquí, los embeddings van aquí. Y eso es todo lo que necesitas hacer para realizar una búsqueda de similitud basada en el algoritmo del coseno, basada en una pregunta que puedo escribir aquí. Escribe aquí, usemos la pregunta que he demostrado antes. ¿En qué cosas ya he trabajado antes de la universidad, ¿verdad? Entonces esta pregunta se vectoriza mediante el modelo de embedding de OpenAI. Y con ese vector, tenemos un parámetro de búsqueda que se utiliza para la búsqueda de vectores en todo nuestro contexto en AstraDB. Y la búsqueda de AstraDB, este componente volverá con el contexto. Y seguro, hay opciones para definir más parámetros. Como puedes ver aquí, hay algunos botones primero. Si quieres profundizar en el código, puedes hacerlo, e incluso puedes ampliar componentes. Si no son como te gustaría que fueran, y aquí hay algunas otras opciones. Hay opciones avanzadas. Puedes agregar más de estas propiedades para especificar con más detalle cómo debe comportarse este componente de búsqueda de AstraDB.
Ahora que hemos realizado una búsqueda de vectores, recuperamos el contexto. Y como hemos aprendido antes, esto va a un prompt. Y lo siguiente que hacemos es tomar el prompt del lado izquierdo, soltarlo aquí. El prompt, como antes, viene con una plantilla, y he predefinido una plantilla aquí que simplemente copio y pego en la UI. Como puedes ver, se parece un poco a lo que tenemos en nuestra aplicación de chatbot en Python. Así que hay un marcador de posición para el contexto. Aquí es donde va todo lo que obtenemos de AstraDB y luego hay un marcador de posición para la pregunta. Y como antes, también hay instrucciones sobre lo que debe hacer el LLM.
17. Conexión e Integración de Flujos
Short description:
Conecta el contexto y el prompt con la pregunta y el modelo de lenguaje grande. Comparte y modifica flujos. Proporciona claves de API y credenciales de AstraDB. Ejecuta y valida el flujo. Integra el flujo en aplicaciones existentes. Conclusión del masterclass e invitación a React Summit.
Así que con esto, lo guardamos. Y ahora podemos conectar el contexto con el endpoint correcto aquí del prompt y también la entrada de chat, la pregunta. Lo conectamos aquí con la pregunta. Tenemos estos dos marcadores de posición, y con este flujo, se inyectan con los data. Eso es el prompt. Lo siguiente que necesitamos es, así que ahora tenemos el prompt con toda la información que se requiere, y lo pasamos al LLM. Como puedes ver aquí, hay una lista bastante grande de diferentes tecnologías, diferentes modelos de lenguaje grande. Puedes seleccionar entre todos ellos para compararlos entre sí, para averiguar cuál de estos es el mejor para tu caso de uso. También aquí, voy con OpenAI. Arrástralo y suéltalo aquí, conecta el prompt con la entrada para el modelo de lenguaje grande. Y el último componente que se requiere en realidad es la salida del chat. Está aquí. Conectamos la respuesta del LLM con la salida del chat. Eso es todo lo que necesitamos. Y lo genial es, así que estos flujos, puedes compartirlos con otros. De hecho, como puedes ver, hay una tienda disponible. Puedes registrarte en esa tienda, y hay otras personas en este planeta. Ya han creado sus flujos, y puedes tomar estos flujos, modificar estos flujos según tus necesidades. Y seguro, también puedes aprender de estos flujos. Como antes, bueno, teníamos este archivo de secretos. También aquí, necesitamos proporcionar para OpenAI para el modelo de embedding, la clave de API de OpenAI. Y también aquí, la clave de API. Luego necesitamos proporcionar las credenciales de AstraDB. Se requiere un token que va aquí. Y luego está el endpoint requerido que va en este campo. Y sí, la colección ya está creada. En mi caso, se llama length flow. Y eso es en realidad todo lo que necesitamos hacer para tener una aplicación de chat. Así que lo siguiente que hacemos es ejecutar ese flujo para validar que todo esté correcto. Y tan pronto como tengamos todas las comprobaciones, podemos estar seguros de que el flujo es correcto. Y ahora usemos la UI aquí. Podríamos usar la UI aquí para hacer nuestras preguntas y obtener nuestras respuestas. Y como dije antes, esto es algo que puedes compartir con tus colegas y también puedes integrarlo en tus aplicaciones existentes. Puedes integrarlo a través de una API. Así que también puedes integrar todo el flujo en tu aplicación. Y luego no es necesario trabajar con todos estos componentes de long chain con todas estas clases y unirlas. Es mucho menos propenso a errores y puedes experimentar y llevar las cosas aún más rápido a producción. Así que en realidad, con esto, estamos cerca de terminar. Nuestro masterclass de hoy. Espero que lo hayas encontrado valioso. ¿Fue valioso para ti? ¿Puedes darme una señal? Si fue valioso, muchas gracias por la retroalimentación. Eso es genial. ¿Puedes compartir tu long chain, por favor? ¿Te refieres a lunch chain o length flow? Por cierto, length flow utiliza long chain en su interior. Así que todos estos componentes con los que hemos tratado hoy en el code se utilizan detrás de estos componentes. ¡Hey, muchas gracias por esta retroalimentación! Si hay alguna pregunta, no dudes en comunicarte en cualquier momento. Siempre estoy feliz de discutir productos técnicos, desafíos, casos de uso y ayudar, en caso de que estés interesado. Así que este React Summit es la próxima semana y Data Stacks tiene un impulso allí. Sería genial si estás allí, si estás en el lugar, visítanos en el stand. Con esto, muchas gracias por la interacción. Fue divertido. Y sí. Espero verte pronto. Adiós.
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Aprovechando LLMs para Construir Experiencias de IA Intuitivas con JavaScript
Featured Workshop
2 authors
Hoy en día, todos los desarrolladores están utilizando LLMs en diferentes formas y variantes, desde ChatGPT hasta asistentes de código como GitHub CoPilot. Siguiendo esto, muchos productos han introducido capacidades de IA integradas, y en este masterclass haremos que los LLMs sean comprensibles para los desarrolladores web. Y nos adentraremos en la codificación de tu propia aplicación impulsada por IA. No se necesita experiencia previa en trabajar con LLMs o aprendizaje automático. En su lugar, utilizaremos tecnologías web como JavaScript, React que ya conoces y amas, al mismo tiempo que aprendemos sobre algunas nuevas bibliotecas como OpenAI, Transformers.js
Únete a Nathan en esta sesión práctica donde primero aprenderás a alto nivel qué son los modelos de lenguaje grandes (LLMs) y cómo funcionan. Luego sumérgete en un ejercicio de codificación interactivo donde implementarás la funcionalidad de LLM en una aplicación de ejemplo básica. Durante este ejercicio, adquirirás habilidades clave para trabajar con LLMs en tus propias aplicaciones, como la ingeniería de indicaciones y la exposición a la API de OpenAI. Después de esta sesión, tendrás una idea de qué son los LLMs y cómo se pueden utilizar prácticamente para mejorar tus propias aplicaciones. Tabla de contenidos:- Demostración interactiva de la implementación de funciones básicas impulsadas por LLM en una aplicación de demostración- Discutir cómo decidir dónde aprovechar los LLMs en un producto- Lecciones aprendidas sobre la integración con OpenAI / descripción general de la API de OpenAI- Mejores prácticas para la ingeniería de indicaciones- Desafíos comunes específicos de React (gestión de estado :D / buenas prácticas de UX)
En esta masterclass daremos un recorrido por la IA aplicada desde la perspectiva de los desarrolladores de front end, enfocándonos en las mejores prácticas emergentes cuando se trata de trabajar con LLMs para construir grandes productos. Esta masterclass se basa en los aprendizajes obtenidos al trabajar con la API de OpenAI desde su debut en noviembre pasado para construir un MVP funcional que se convirtió en PowerModeAI (una herramienta de creación de ideas y presentaciones orientada al cliente). En la masterclass habrá una mezcla de presentación y ejercicios prácticos para cubrir temas que incluyen: - Fundamentos de GPT- Trampas de los LLMs- Mejores prácticas y técnicas de ingeniería de prompts- Uso efectivo del playground- Instalación y configuración del SDK de OpenAI- Enfoques para trabajar con la API y la gestión de prompts- Implementación de la API para construir una aplicación orientada al cliente potenciada por IA- Ajuste fino y embeddings- Mejores prácticas emergentes en LLMOps
Hoy en día, cada desarrollador está utilizando LLMs en diferentes formas y figuras. Muchos productos han introducido capacidades AI incorporadas, y en esta masterclass aprenderás cómo construir tu propia aplicación AI. No se necesita experiencia en la construcción de LLMs o en el aprendizaje automático. En cambio, utilizaremos tecnologías web como JavaScript, React y GraphQL que ya conoces y amas.
Sientes las limitaciones de los LLMs? Pueden ser creativos, pero a veces carecen de precisión o se basan en información desactualizada. En esta masterclass, desglosaremos el proceso de construir y desplegar fácilmente un sistema de Generación con Recuperación Mejorada. Este enfoque te permite aprovechar el poder de los LLMs con el beneficio adicional de precisión factual e información actualizada.
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
This talk explores the use of AI in web development, including tools like GitHub Copilot and Fig for CLI commands. AI can generate boilerplate code, provide context-aware solutions, and generate dummy data. It can also assist with CSS selectors and regexes, and be integrated into applications. AI is used to enhance the podcast experience by transcribing episodes and providing JSON data. The talk also discusses formatting AI output, crafting requests, and analyzing embeddings for similarity.
The rise of AI engineers is driven by the demand for AI and the emergence of ML research and engineering organizations. Start-ups are leveraging AI through APIs, resulting in a time-to-market advantage. The future of AI engineering holds promising results, with a focus on AI UX and the role of AI agents. Equity in AI and the central problems of AI engineering require collective efforts to address. The day-to-day life of an AI engineer involves working on products or infrastructure and dealing with specialties and tools specific to the field.
Web AI in JavaScript allows for running machine learning models client-side in a web browser, offering advantages such as privacy, offline capabilities, low latency, and cost savings. Various AI models can be used for tasks like background blur, text toxicity detection, 3D data extraction, face mesh recognition, hand tracking, pose detection, and body segmentation. JavaScript libraries like MediaPipe LLM inference API and Visual Blocks facilitate the use of AI models. Web AI is in its early stages but has the potential to revolutionize web experiences and improve accessibility.
Join Christoph from Nakazawa Tech in building the AI for Athena Crisis, a game where the AI performs actions just like a player. Learn about the importance of abstractions, primitives, and search algorithms in building an AI for a video game. Explore the architecture of Athena Crisis, which uses immutable persistent data structures and optimistic updates. Discover how to implement AI behaviors and create a class for the AI. Find out how to analyze units, assign weights, and prioritize actions based on the game state. Consider the next steps in building the AI and explore the possibility of building an AI for a real-time strategy game.
Codium is a generative AI assistant for software development that offers code explanation, test generation, and collaboration features. It can generate tests for a GraphQL API in VS Code, improve code coverage, and even document tests. Codium allows analyzing specific code lines, generating tests based on existing ones, and answering code-related questions. It can also provide suggestions for code improvement, help with code refactoring, and assist with writing commit messages.
Comments