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.
Comments