En este proyecto veremos cómo implementar un Chatbot, muy al estilo de ChatGPT, pero usando Grandes Modelos de Lenguaje de código abierto y que además funcionará de forma local (es decir en nuestro computador) haciendo uso de Python y de las librerías Ollama y Streamlit.
Si estás suscrito a la Academia Online puedes acceder al enlace de descarga del código fuente de este proyecto.
Contenido
Características del Chatbot a implementar
Instalación e interacción básica con Ollama
Creación del entorno virtual de Python
Instalación de las librerías requeridas
Acceso a los modelos Ollama desde Python
Ejemplo básico de interacción con Llama 3.2
Creación de la aplicación en Streamlit
El código fuente para este proyecto
Características del Chatbot a implementar
El Chatbot que vamos a implementar consistirá en un aplicativo web, que podremos ejecutar desde cualquier navegador de Internet y que nos permitirá interactuar con diferentes Grandes Modelos de Lenguaje (o LLMs por sus siglas en Inglés: Large Language Models) muy al estilo de como lo hacemos con aplicaciones como ChatGPT.
Sin embargo, en este caso tendremos un Chatbot donde tanto el modelo como el intercambio de información a través de preguntas y respuestas se ejecutarán 100% de forma local (es decir en nuestros computadores).
Lo anterior tiene la ventaja de mantener la privacidad de nuestros datos pues es ningún momento habrá envío de información a través de Internet.
Comencemos viendo qué es Ollama y cómo instalar esta aplicación localmente para posteriormente usarla en este proyecto.
¿Qué es Ollama?
Ollama es un proyecto de código abierto (open source) que nos permite de forma muy sencilla ejecutar localmente diferentes LLMs (también open source).
Entre otros, los modelos disponibles en esta plataforma son por ejemplo Llama (desarrollado por Meta) así como Phi, Mistral y Gemma.
Esta plataforma será precisamente el núcleo central de nuestro proyecto. Pero para poder usar Ollama desde Python primero debemos instalar la aplicación Ollama en nuestros computadores. Veamos cómo hacerlo.
Instalación e interacción básica con Ollama
Para instalar Ollama debemos ir al sitio web oficial de esta plataforma (www.ollama.ai). Una vez allí damos click en descargar la aplicación para nuestro sistema operativo (el tamaño del ejecutable es aproximadamente 180 MB) y luego seguimos el proceso de instalación como cualquier aplicación convencional.
Durante esta instalación nos aparecerá una ventana similar a esta:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Una vez descargado Llama 3.2 podemos comenzar a interactuar con el modelo. En el terminal nos aparece el mensaje «Send a message …» que nos indica que el modelo está esperando que escribamos una pregunta:
¿Qué son los grandes modelos de lenguaje?
Tras realizar esta pregunta, el modelo pre-entrenado generará una respuesta basada en los datos que se usaron para su entrenamiento. Algo similar a esto:
**Introducción a los Grandes Modos de Lenguaje**
En la era digital actual, el lenguaje se ha convertido en una herramienta
fundamental para la comunicación y el procesamiento de información. Los
grandes modelos de lenguaje son uno de los avances más significativos en
este campo, diseñados para entender y generar texto de manera sofisticada.
**¿Qué son los Grandes Modos de Lenguaje?**
Los grandes modelos de lenguaje se refieren a una clase de modelos de
aprendizaje profundo que procesan y generan texto utilizando técnicas de
aprendizaje automático. Estos...
Y podemos seguir interactuando con el modelo tal como lo haríamos con aplicaciones como ChatGPT.
Hay que tener en cuenta que en este proyecto estamos tan sólo usando el modelo pre-entrenado, así que éste no será capaz de generar respuestas que no se encuentren en su base de conocimiento (es decir relacionadas con información para la cual no fue entrenado).
En este punto ya tenemos una interacción básica con el modelo. Sin embargo, esta interacción no es la que estamos buscando en este proyecto, pues para poderla llevar a cabo tendremos que hacer todo directamente desde el Terminal o la ventana de comandos.
En su lugar, lo que queremos es crear un aplicativo web que nos permita interactuar con los modelos disponibles directamente desde nuestro navegador de Internet. Y para lograr esto tendremos que implementar la aplicación en Python.
Pero antes de ver esta implementación debemos llevar a cabo un paso que siempre sugiero al momento de desarrollar un proyecto de Ciencia de Datos y Machine Learning: crear un entorno virtual de Python.
Creación del entorno virtual de Python
Cuando desarrollamos proyectos de Ciencia de Datos, Machine Learning o Inteligencia Artificial con ayuda de Python siempre es recomendable crear lo que se conoce como un entorno virtual.
Un entorno virtual de Python es simplemente un sub-directorio que contendrá todas las librerías y dependencias requeridas para el desarrollo de un proyecto y que evita que éstas interfieran o generen conflictos con otros proyectos que requieran el uso de otras librerías.
En esencia un entorno virtual de Python nos permite aislar un proyecto de otro para que las instalaciones de Python (y sus librerías y dependencias asociadas) no entren en conflicto.
En el tutorial ¿cómo crear entornos virtuales en Python usando venv? explico en detalle todo lo relacionado con los entornos virtuales haciendo uso del módulo «venv» que es la forma más sencilla de crear un entorno virtual en Python y que es el método que usaremos en este proyecto.
Así que para crear este nuevo entorno (que llamaré «llms») simplemente abrimos la ventana de comandos de Windows o el terminal de Mac y usamos el comando «cd» para movernos al directorio que contiene nuestro proyecto, oprimimos enter y a continuación escribimos esta línea de código:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Al hacer esto, el «prompt» de nuestro Terminal o ventana de comandos debería mostrar entre paréntesis el nombre del entorno virtual que se encuentra activo (en este caso «llms»):
(llms) miguel@miguels-MacBook-Air ~ %
Instalación de las librerías requeridas
Para terminar de dejar listo este entorno virtual debemos instalar las librerías requeridas para desarrollar nuestra aplicación:
- «ollama», que nos permitirá interactuar con los diferentes modelos Open Source de Ollama pero directamente desde Python
- «streamlit», para desarrollar como tal la App interactiva
Para instalar estas dos librerías simplemente usamos el comando «pip» de Python que facilita este proceso de instalación:
pip install ollama streamlit
¡Y listo! En este punto ya estamos listos para desarrollar la aplicación con Streamlit. Veamos entonces un ejemplo básico de interacción con Ollama.
Acceso a los modelos Ollama desde Python
Veamos ahora cómo acceder al listado de modelos de Ollama disponibles directamente desde Python.
Para ello, comencemos importando la librería:
import ollama
A continuación modelos obtener e imprimir en pantalla el listado completo de modelos que hemos descargado localmente:
modelos = [modelo["name"] for modelo in ollama.list()["models"]]
print(modelos)
En el caso del ejemplo anterior veremos impreso en pantalla lo siguiente:
['llama3.2:latest']
Que corresponde al modelo Llama 3.2 que usamos en el ejemplo inicial. Descarguemos por ejemplo los modelos Phi 3 Mini, Gemma 2 y Mistral. Para ello, abrimos el Terminal o la ventana de comandos y escribimos:
ollama run phi3
Con lo cual descargaremos Phi 3 Mini. Para detener la interacción con este modelo escribimos «/bye» en la línea de comandos y luego hacemos algo similar para descargar los modelos restantes:
ollama run gemma2:2b
ollama run mistral
Y en este punto ya deberíamos tener descargados 4 modelos en nuestros computadores. Ahora, si volvemos a Python y ejecutamos nuevamente esta línea de código:
modelos = [modelo["name"] for modelo in ollama.list()["models"]]
print(modelos)
veremos este listado de modelos descargados:
['mistral:latest', 'gemma2:2b', 'phi3:latest', 'llama3.2:latest']
Así que en este punto ya tenemos 4 modelos disponibles localmente. Veamos cómo interactuar por ejemplo con Llama 3.2.
Ejemplo básico de interacción con Llama 3.2
La interacción básica con Llama 3.2 a través de Ollama es muy simple: basta con usar el método «chat» de la librería «ollama» e indicarle a través de este método a Ollama cuál es el rol (es decir si somos el usuario o el chatbot) así como el mensaje que queremos presentar al modelo.
Veamos este proceso paso a paso. Comencemos creando un archivo de Python (extensión .py) y en este comencemos importando la librería:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Al ejecutar el código anterior podemos ver cómo se genera el texto casi en tiempo real, de forma muy similar a como lo hace por ejemplo una aplicación como ChatGPT.
En este punto ya tenemos una interacción básica con Ollama: escribimos una pregunta y recibimos una respuesta.
Así que ya estamos listos para la etapa final de este proyecto donde usaremos esta lógica básica y lo aprendido hasta el momento para crear un aplicativo web con Streamlit en donde podamos interactuar de manera más sencilla con Ollama + Llama 3.2. Veamos cómo hacerlo.
Creación de la aplicación en Streamlit
Streamlit es una librería de Python que nos facilita la creación de aplicativos web y que es muy usada en Ciencia de Datos, Machine Learning e Inteligencia Artificial.
La estructura del aplicativo que construiremos será muy simple:
- Tendrá un menú desplegable que nos permitirá escoger el modelo que queramos usar para nuestro Chatbot
- Añadiremos un campo para que el usuario introduzca el texto
- Internamente añadiremos la lógica para que el modelo tome el texto introducido por el usuario, genere una respuesta, la muestre en el aplicativo y habilite un nuevo campo para que el usuario siga introduciendo el texto
- Además mantendremos un historial de los mensajes intercambiados durante la sesión
Así que lo que construiremos será un aplicativo con una apariencia y una lógica de funcionamiento similar a la de ChatGPT. Y aunque esto parece complejo, como veremos a continuación realmente resultará muy sencillo realizar esta implementación con ayuda de Streamlit.
Veamos entonces cada uno de los pasos. En primer lugar crearemos un archivo de python que contendrá nuestra aplicación. Lo llamaremos por ejemplo «chatbot-ollama.py».
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Prueba del Chatbot
¡Y listo, ya tenemos la implementación completa de nuestro Chatbot totalmente local! Sólo nos falta ponerlo a prueba, así que tras ejecutar la aplicación («streamlit run chatbot-ollama.py») veremos algo similar a esto:

Y vemos que efectivamente en la parte inferior nos aparece el cuadro de diálogo «Introduce tu mensaje…» así que desde este punto podemos comenzar a interactuar con el modelo a través de preguntas y respuestas.
A medida que vamos interactuando con el modelo, las preguntas que escribimos y las respuestas generadas son etiquetadas con diferentes íconos para facilitar la interacción:

Y en este punto ya hemos visto cómo usar esta plataforma de Ollama para tomar un LLM pre-entrenado, almacenarlo localmente y luego crear un Chatbot con muy pocas líneas de código y con ayuda de la librería Streamlit.
Es importante tener en cuenta que en esta configuración de Chatbot el modelo será capaz de generar respuestas únicamente sobre temáticas que guarden relación con su base de conocimientos, es decir tomando como base la información con la cual fue entrenado. En el próximo proyecto de este mes veremos cómo hacer uso de Ollama y de uno de los LLMs disponibles para realizar consultas sobre nuestros propios documentos y todo de manera local.
El código fuente para este proyecto
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Y recuerda que si eres suscriptor y tienes alguna duda sobre este proyecto me puedes contactar directamente a través del formulario que encontrarás en la Intranet.
Volver al índice de Proyectos
