[Germán] Hola, bienvenidos a la nueva temporada de Se nos va de las manos. Vamos a
[Germán] hablar de inteligencia artificial low cost. Vamos a explicar cómo instalarnos
[Germán] en local un servicio que imita, que es muy, muy parecido a ChatGPT. Lo vamos a
[Germán] utilizar en local, pero no vamos a necesitar una tarjeta gráfica ni un
[Germán] superordenador porque vamos a estar tirando de APIs en la nube. APIs que,
[Germán] bueno, como sabéis, pues OpenAI. Bueno, hay diferentes servicios que
[Germán] tienen sus APIs disponibles, pero son APIs de pago. Pero en esta ocasión vamos
[Germán] a hablar de APIs gratuitas, ¿vale? Para que podamos montar nuestro sistema de
[Germán] ChatGPT, por hacerlo para que nos entendamos todos, de forma gratis, en
[Germán] local y todo controlado por nosotros, lógicamente utilizando estos servicios
[Germán] en la nube. Ayer estuvimos intentando grabar y nos topamos con problemas
[Germán] técnicos y es que queríamos haber explicado una herramienta que se llama
[Germán] Pinokio, de la cual ya os hablamos, pero por razones varias no conseguimos
[Germán] que funcionara. Bueno, no funciona, te da un error. Entonces, hemos tirado por
[Germán] otro camino. Vamos a instalarlo sobre Docker. Entonces, hemos preparado un
[Germán] Docker Compose muy sencillo, con el que se puede instalar todo sin tener que...
[Galileo] Enseña primero. Hay cientos de páginas que explican
[Galileo] cómo hacer la instalación de Docker.
[Germán] Sí, claro, vais a necesitar Docker. Entonces, tengo aquí una es la página de
[Germán] Docker, para quien nos esté escuchando, es docker.com, donde tenéis un producto
[Germán] que se llama Docker Desktop. Lo hay tanto para Windows como para Linux
[Germán] también. Lo que pasa, a mí me gusta más la versión normal de Docker en Linux,
[Germán] pero en Windows la mejor alternativa es ésta. Entonces, instaláis Docker
[Germán] Desktop. Bueno, si tenéis alguna duda, nos podéis contactar por redes sociales.
[Germán] Si estáis en Linux, pues también en docker.com buscáis cómo es la
[Germán] instalación en Linux y yo diría que es mucho más sencilla. Simplemente una
[Germán] línea de comandos que te hace todo. Entonces, vamos a asumir que ya tenemos
[Germán] instalado Docker. Y lo que vamos a instalar es un servicio que se llama
[Germán] Open WebUI. Open WebUI es, digamos, el interfaz web que nos permite interactuar
[Germán] con estos modelos, con estos modelos de inteligencia artificial. Normalmente van
[Germán] a ser modelos de lenguaje. Open WebUI es compatible con dos backend, dos
[Germán] servicios de modelos. Uno que es Ollama. Creo que de Ollama hablamos en la
[Germán] temporada anterior, que es un servicio para correr modelos en local,
[Germán] completamente local, pero en ese caso sí que hace falta una tarjeta gráfica, o
[Galileo] Se puede correr con CPU pero va muy lento.
[Germán] sea, un PC. Sí, bueno, hay algún modelo que sí que se puede correr en CPU, pero
[Germán] bueno, su utilidad es limitada porque son modelos muy pequeños. Entonces, uno
[Germán] de los servicios que soporta es Ollama, el segundo es OpenAI. Pero OpenAI, el
[Germán] problema que tiene es que es un servicio de pago, ¿vale? Que no es excesivamente
[Germán] caro, es muy barato. No me estoy refiriendo a ChatGPT, sino al acceso API
[Germán] de sus modelos. Pero, por ejemplo, ¿dónde podemos encontrar modelos gratis?
[Germán] Pues hace poco tiempo GitHub ha sacado una serie de modelos, entre los cuales
[Germán] está GPT4, los cuales tienen ciertas limitaciones, es decir, no podemos hacer
[Germán] muchísimas llamadas a lo largo del día, pero tienen un límite suficientemente
[Germán] alto para poder hacer un uso ocasional o un uso normal, como el que podemos
[Germán] utilizar, bueno, me refiero que no para una empresa se va a quedar pequeño, pero
[Germán] para jugar un poco con ellos es más que suficiente. Ahí veis que hay también
[Germán] otros modelos, el modelo de Microsoft, el Phi3.5, tenemos también modelos de
[Germán] Cohere, el modelo Llama, el Llama 3.290, que es un modelo de visión, o sea, es un
[Germán] modelo de texto y de visión, con lo cual le podemos enviar también imágenes para
[Germán] que las analice. También el modelo grande de Llama 3.1, o sea, todos estos
[Germán] modelos son de acceso gratuito, simplemente nos tenemos que identificar
[Germán] con una clave de GitHub. El problema que tenemos y el problema que nos
[Germán] encontramos también ayer es que OpenWeb UI no es compatible directamente con
[Germán] este API. Entonces, tenemos que poner algo en medio. Soporta API de OpenAI.
[Germán] Hace poco descubrí un servicio que se llama LiteLLM que es un
[Germán] proxy de modelos y traduce todos los modelos que soporta al API, al formato
[Germán] de API de OpenAI, de manera que cualquier aplicación que sea compatible
[Germán] con el API de OpenAI puede utilizar muchísimos modelos. Y ya os digo que hay
[Germán] muchos, muchos, muchos, de los cuales algunos son gratuitos, como este que os
[Germán] he enseñado, el de los de GitHub, que se pueden conectar a LiteLLM. También,
[Germán] ¿dónde más podemos encontrar modelos gratuitos? Pues los modelos de Mistral
[Germán] también se pueden conectar. Hay otros servicios como OpenRouter, que también
[Germán] tiene algunos servicios gratuitos. Si buscamos en su página, en la página
[Germán] donde se listan los modelos, buscamos free, pues nos encontramos que tiene,
[Germán] bueno, aquí no me salen, pero hay algunos modelos gratuitos. No me sale
[Germán] aquí. Vale. OpenRoute es el mismo concepto que LiteLLM, pero corriendo en
[Galileo] Y OpenRoute sería también como una especie de proxy, ¿no?
[Germán] la nube. También tiene formato, bueno, aquí nos vamos a centrar principalmente
[Germán] en, tanto en GitHub como en Mistral. Entonces vamos a explicar cómo
[Germán] instalarlo de forma muy, muy, muy, muy sencilla. Entonces, exactamente. Tenemos
[Galileo] Con el Docker Compose.
[Germán] instalado Docker. Vale, pues voy a cambiar la pantalla para que se vea
[Germán] a pantalla completa. Entonces, yo voy a arrancar Docker Compose, o sea, Docker
[Germán] Desktop. Lo tengo aquí funcionando, si no me equivoco. Entonces, ¿qué vamos a
[Germán] hacer? Bueno, lo primero que vamos a hacer es, nos vamos a crear un
[Germán] directorio. Pues, por ejemplo, lo vamos a hacer en el raíz. Un directorio que se
[Germán] llama Open WebUI. Y para que sea sencillo, he hecho, he publicado en
[Germán] GitHub una serie de archivos, que es entre los cuales hay un Docker Compose,
[Germán] que vamos a utilizar para levantar estos dos servicios, tanto OpenWeb UI como
[Germán] Lite LLM. Entonces, nos vamos a GitHub, la URL del repositorio, os la dejamos en
[Germán] las notas del episodio. Nos copiamos, nos descargamos aquí el zip dentro de
[Germán] GitHub. Y lo que vamos a hacer, a ver, lo bajamos aquí. Me voy a las descargas,
[Germán] abro el zip y el contenido lo voy a descomprimir dentro de este directorio
[Germán] que hemos creado. Open WebUI, todo. Todos los archivitos los descomprimimos.
[Germán] Entonces, ¿qué necesitamos antes de comenzar? Bueno, tenemos el fichero
[Germán] docker-compose.yaml, es un fichero que define los servicios. ¿Vale? Ahí dentro
[Germán] no tenéis que tocar nada, a no ser que estén ocupados los puertos que va a
[Germán] utilizar, que va a utilizar tanto Open WebUI como LiteLLM, que son el
[Germán] 3000 y el 4000. Si fuese otro, pues aquí lo podéis cambiar. El de Lite LLM
[Germán] no hace falta que lo cambies. Solamente este. Si tenéis alguna aplicación que
[Germán] utilice el puerto 3.000, pues le ponéis el 3001, el 3002, el que sea.
[Germán] Este, ya os digo, no hay que tocarlo. Siguiente. Hay un fichero .env que
[Germán] contiene, ¿vale? Que vais a ver que contiene un montón de claves API. Ahí he
[Germán] puesto las claves, bueno, digamos, los huecos para las claves API de muchos
[Germán] servicios, de todos los servicios que soporta LiteLLM. Lo primero que vamos a
[Germán] necesitar es nuestra clave de GitHub. Pues para ello nos vamos a ir a GitHub,
[Germán] ¿vale? Pulsamos en el icono con nuestra imagen, con nuestro perfil, y buscamos
[Germán] el enlace que pone Settings o no sé si en español lo traduce como
[Germán] configuración, ¿vale? Pero yo lo tengo en inglés. Entonces nos vamos a
[Germán] Settings. Dentro de Settings, o sea, nos aparece otra lista de opciones. Nos
[Germán] tenemos que ir al final del todo y pone Developer Settings. Dentro de Developer
[Germán] Settings nos aparece Personal Access Tokens. O sea, necesitamos una clave
[Germán] para identificarnos y nos vamos a Fine Grain Tokens. Vamos a generar, ¿me
[Germán] decías José algo?
[Galileo] No, no, que al final ahora vamos a generar el hash, el token, y el token es
[Galileo] un token que no da permiso a nada dentro de GitHub, sencillamente es un token de
[Galileo] identificación para que sepan que somos nosotros
[Germán] Sí. Eso es. Y el token solo lo vamos a utilizar dentro de LiteLLM. O sea, no
[Germán] se va a compartir con ningún servicio externo. Entonces, le damos aquí al
[Germán] botón de Generar Nuevo Token. Le ponemos un nombre. Lo vamos a llamar, por
[Germán] ejemplo, Lite LLM, aquí el nombre da igual. Le podéis poner un tiempo de
[Germán] expiración o directamente que no expire, ¿vale? Lo más cómodo es eso, pero lo más
[Germán] seguro, pues, es poner un tiempo de expiración. Pero sabéis que dentro de X
[Germán] días, pues, tendríais que volver a generar otro nuevo. Yo le voy a poner
[Germán] que no expire. Y no hay que hacer nada más, ¿vale? Porque no le vamos a dar
[Germán] ningún permiso. Entonces, esto, al dar abajo el botón de Generar Token, me
[Germán] aparece una cadena que es el token, ¿vale? Que puedo copiar. Viene bien
[Germán] guardar esta cadena porque una vez que salimos de esta pantalla ya no nos va a
[Germán] volver a aparecer, ¿vale? Entonces, si la hemos copiado, pues, la pegamos en el
[Germán] archivo, en el .env que decíamos antes, en el que pone GitHub API Key. Lo
[Germán] pegamos ahí al final. Como veis aquí, lo guardamos. Y aquí ya no tenemos que
[Germán] tocar nada más, ¿vale? Ya podemos salir de GitHub. Y nos vamos a aquí. Vale.
[Germán] Entonces, hay otro archivo que se llama litllmconfig.yaml, que ahí es donde
[Germán] definimos los modelos que vamos a utilizar. Entonces, yo he puesto uno en
[Germán] el cual he añado GPT4, ¿vale? Que es el modelo, digamos, de los modelos
[Germán] tradicionales, el más potente de OpenAI, pero que está conectado, está tirando de
[Germán] GitHub en vez de OpenAI. O sea, LiteLLM lo que tiene son proveedores. Uno de los
[Germán] proveedores es GitHub, otro proveedor es OpenAI. Entonces, hay que poner el
[Germán] nombre de ese proveedor aquí en el modelo. Entonces, el modelo se llama
[Germán] github/GPT-4o. Y luego, aquí iría el API Key, pero que lo tenemos
[Germán] definido como una variable. Entonces, en este archivo solamente tendríamos que
[Galileo] Vale
[Germán] tocar si queremos añadir modelos. Luego vamos a ver cómo se añaden modelos.
[Galileo] Hay que copiar en el env, tienes que copiar la clave
[Germán] Ahora, ¿qué? Sí, la clave ya la tengo copiada, ¿vale? Esta ya la tengo copiada
[Galileo] Vale, perfecto
[Germán] en GitHub API Key y he copiado la clave que me ha generado GitHub cuando la he
[Germán] configurado. Si quisiéramos.
[Galileo] Si hacéis el tutorial. Germán después la borrará porque
[Galileo] eso es un hash que identifica a Germán y lo puede utilizar otra persona para
[Germán] Exacto.
[Galileo] identificarse, entonces lo enseña ahora porque luego cuando salga este video,
[Galileo] eso ya no estará activo
[Germán] Exacto. Si utilizáis este cuando lo veáis, esto ya no va a funcionar, ¿vale?
[Galileo] O sea, no os pongáis ahí a escribirlo porque no va a funcionar.
[Germán] Exacto. Copiáis el que os da GitHub a cada uno de vosotros. Entonces, ahora
[Germán] nos vamos a ir al directorio que hemos creado. Abrimos una ventana de comando.
[Germán] Vemos que tenemos aquí estos archivos que habíamos dicho. Y no tenemos nada
[Germán] más que hacer docker compose, ejecutar docker compose up -d
[Germán] ¿Vale? Y eso lo que hace es poner en marcha todos los dos servicios, tanto
[Germán] Open WebUI como LiteLLM. Si nos vamos a la ventana de Docker Desktop, veremos
[Germán] que tenemos esos dos servicios funcionando. Este color que aparece
[Germán] aquí, vemos que están en verde los dos. Están los dos identificados en verde.
[Germán] Significa que están correctos. ¿Vale? Si no se pusieran en verde o se pusieran en
[Germán] rojo o se quedaran en blanco, significa que algo está mal. ¿Vale? Los archivos,
[Germán] estos archivos que hemos editado, pues hemos cometido algún error. Pero vamos,
[Germán] con las instrucciones que os he dado, veis que todo está funcionando ya. ¿Cómo
[Germán] accedemos a Open WebUI? Pues nos vamos a ir, vamos a abrir 127.0.0.1 que
[Germán] identifica a vuestra máquina local, todos los ordenadores tienen esa
[Germán] dirección, apuntan a sí mismos, al puerto 3000 que es el que tenemos
[Germán] compartido en Docker. ¿Vale? Entonces, entrando aquí, vais a ver que os aparece
[Germán] el logo de Open WebUI. Y ahora nos pide iniciar sesión. No tenemos cuenta porque
[Germán] se acaba de instalar. Entonces, veis que pone aquí abajo, no tienes una cuenta,
[Germán] crear una cuenta. Esto es como si estuvieramos accediendo a un servicio en
[Germán] la nube. Ingresamos nombre. Pues me pongo nombre Germán. Correo voy a poner
[Germán] [email protected], por ejemplo. No, el correo, este correo no
[Germán] lo va a utilizar para nada. Hay una contraseña que voy a poner 12345
[Germán] Vosotros podéis poner la contraseña que queráis.
[Germán] Tan segura como os dé la gana. Corre en local. Esto no lo tenemos conectado a internet.
[Galileo] Claro, porque esto corre en vuestro ordenador.
[Germán] Nadie de fuera de nuestra casa va a poder acceder aquí. Doy crear una
[Germán] cuenta. Y ya he accedido. La próxima vez que accedáis, si damos aquí, ponéis el
[Germán] mismo correo que hemos utilizado, [email protected], 12345
[Germán] Y veis que entra. Aquí vemos, bueno, esta interfaz, si habéis
[Germán] utilizado ChagGPT, os sonará un montón, porque es prácticamente lo mismo. El
[Germán] problema que nos encontramos, pues, que seleccionamos un modelo y no hay
[Germán] modelos. ¿Por qué no hay modelos? Porque no tenemos conectado todavía, no tenemos
[Germán] configurado Open WebUI para conectarse al LiteLLM. Pero la configuración es
[Germán] súper sencilla. Si aquí intentamos poner, nos dejemos hola, pues, nos sale
[Germán] un error de que no hay un modelo. Vale, entonces, ¿cómo nos venimos? Pues, a la
[Galileo] Ah, que no está conectado, bien.
[Germán] derecha arriba nos aparece un icono con nuestro perfil. Aquí aparece mi letra G.
[Germán] Pulso ahí en la G. Me voy al panel de administración. Y de las tres opciones
[Germán] que sale, panel de control, evaluaciones y configuración, me voy a configuración.
[Germán] Entonces, me tengo que ir a conexiones. Es normal que aquí tarde un poco en
[Germán] arrancar, porque si no tenéis instalado Ollama, que no hace falta que lo tengáis,
[Germán] pues, lo va a intentar buscar y va a tardar, pues, unos segundos. No va a
[Germán] tardar ni un minuto ni dos. O sea, va a tardar unos segundos, pero se nota que
[Germán] la primera vez le cuesta. Entonces, lo primero que vamos a hacer es desactivar
[Germán] Ollama. Desactivamos Ollama. Y ahora tenemos que poner aquí, vamos a utilizar
[Germán] el API de OpenAI, pero a través del LiteLLM. Entonces, el LiteLLM está instalado
[Galileo] A través de LiteLLM.
[Germán] en Docker. Entonces, para acceder a él, ponemos http://litellm:4000
[Germán] ¿Y qué clave API ponemos? Pues, si os acordáis,
[Germán] aquí arriba, no sé si os habéis fijado, quien lo esté viendo por YouTube, en la
[Germán] primera línea pone LiteLLM Master Key y yo he puesto sk-1234
[Germán] Lo que pongáis aquí es la clave para acceder al API del LiteLLM. Pues,
[Germán] eso lo copiamos aquí. Esto lo guardamos. Y aquí hay un botón a la derecha del
[Germán] todo, que son como unas flechas en círculo, con la cual podemos verificar
[Germán] la conexión. Si esto lo pulsamos y aquí aparece un mensaje en verde que dice
[Germán] conexión del servidor verificada, es que ya está funcionando. Entonces, nos vamos
[Germán] a nuevo chat y vemos que pone ya LiteLLM GitHub/GPT-4o. Y, entonces, digo, puedo
[Germán] decir, hola, ¿quién eres?
[Germán] Y responde, hola, soy un modelo de lenguaje creado por OpenAI, diseñado
[Germán] para ayudarte a responder preguntas y proporcionar información en una variedad
[Germán] de temas en que puedo ayudarte hoy, ¿vale? O sea, que ya tenemos
[Galileo] Es súper, vamos, súper rápido.
[Germán] configurado. O sea, ya está configurado.
[Germán] Es súper rápido, está muy bien y es gratis. Es gratis. No tenemos que...
[Galileo] Hay unos límites. En la página de GitHub vienen los límites del número máximo de
[Galileo] queries que podemos hacer diarias u horarias
[Germán] Si entráis dentro de la página de GitHub en el Marketplace de modelos, aquí pone,
[Germán] aquí pone que... No sé dónde estaba. Yo la verdad no he visto, no he visto claro
[Germán] el límite que tiene, pero aquí ponía...
[Galileo] Por eso se identifican al usuario. Al final tiene un límite. Pero vamos que...
[Germán] Sí. Tiene un límite. Lógicamente, cuanto más avanzado, cuanto más pesado y
[Germán] avanzado sea un modelo, mayor límite va a tener. Pero, por ejemplo, podemos
[Germán] utilizar el modelo de visión de Llama3.2, ¿vale? Que vamos a ver cómo se
[Germán] configura. Nos vamos a ir al fichero del litellm_config.yaml, ¿vale? Voy a copiar
[Germán] todo esto que pone model name y lo duplico aquí, ¿vale? Creo uno nuevo y lo
[Germán] voy a llamar littlelm github
[Germán] llama3.290b vision. Este nombre, este nombre que pone junto a model name es el
[Germán] nombre que nos va a aparecer en Open WebUI. Entonces, aquí podéis poner lo que
[Germán] queráis. El importante es el que pone debajo model. Entonces, si no me
[Germán] equivoco, creo que hay que copiar esto.
[Germán] El llama3.2. No estoy seguro de que esto funcione, pero bueno, vamos a
[Germán] verlo. Vamos a probarlo. Yo creo que si recargamos ahora, si recargamos la
[Galileo] Vamos a probarlo
[Germán] página, no hay que reiniciarlo. Hay que reiniciarlo. Vale. Nos vamos, o sea,
[Galileo] Sí, para que lea el...
[Germán] cada vez que añadimos un modelo nuevo, nos vamos a LiteLLM, pulsamos en los
[Germán] tres puntos y le decimos restart. Ya se ha reiniciado, se reinicia súper rápido,
[Germán] súper rápido y ya simplemente
[Germán] actualizamos aquí, ¿vale? Ya nos sale, pero vamos a ver si funciona. Le digo
[Germán] hola.
[Germán] No. Pues hemos parado un momento y hemos encontrado ya cuál es el problema y
[Germán] bueno, tenemos dos problemas. Uno, que tengo los dedos un poco torpes hoy. Me
[Germán] había dejado esto aquí, ¿vale? Había puesto GPT4o/llama. No, el modelo
[Germán] se llama... Exactamente. El modelo se llama github/ y luego ponemos todo
[Galileo] Has mezclado dos cosas. El de OpenAI con el de Meta.
[Germán] en minúsculas. llama-3.2-90b-vision-instruct. ¿Vale? Ese
[Germán] es el nombre del modelo total. Esto me lo voy a copiar aquí en las notas del
[Germán] programa, ¿vale? Para tenerlo ahí y luego pegarlo. Entonces, esto lo
[Germán] guardamos. Nos vamos a LiteLLM. Reiniciamos. Y ahora recargamos o
[Germán] volvemos a generar y vemos que ahora sí. Me dice, hola, ¿cómo estás? ¿Necesitas
[Germán] ayuda con algo o simplemente quieres charlar? Estoy aquí para ti. Muy
[Germán] sugerente. Entonces, le digo, ¿cómo te llamas?
[Germán] Me llamo Llama. No tengo nombre. Dice, pero puedes llamarme asistente. A ver,
[Germán] ¿qué modelo eres? A ver si me quiere responder. ¿Soy un modelo de lenguaje?
[Germán] No dice quién es. Mi versión es la GPT 3.5. Ah, vale. Esto lo decían hace
[Germán] tiempo. Decían que Llama 3 lo habían entrenado con textos generados por GPT.
[Galileo] Y entonces se equivocaba
[Germán] Y se cree que es GPT 3.5. Pero bueno, es Llama. Entonces, ¿qué gracia tiene este
[Germán] modelo? Pues que le podemos... Es un modelo de visión. Es un modelo de
[Germán] visión. Entonces, podemos buscar una imagen en internet. Por ejemplo, ¿qué le
[Germán] podemos buscar? ¿Alguna imagen de alguna película? O dime algo.
[Germán] De regreso al futuro. Regreso al futuro.
[Galileo] Buena peli.
[Galileo] Esa misma foto. La primera de ahí de Marty y de Doc.
[Germán] Imágenes... Esta, por ejemplo. Vale. Pues copiamos la imagen. Y nos vamos a
[Germán] Open WebUI. No, lo tenemos aquí. Y pegamos la imagen. Vale. Con Control-V.
[Galileo] Y describe esta imagen.
[Germán] Describe esta imagen con todo detalle.
[Germán] Identifica quién aparece en la foto. Y nos dice, leo literalmente. La imagen
[Germán] muestra dos personajes masculinos de la película. Regreso al futuro. De 1985. El
[Galileo] Toma ya, qué bueno.
[Germán] personaje de la izquierda es Marty McFly. Interpretado por Michael J. Fox.
[Germán] Lleva una chaqueta de cuero roja. ¿Es de cuero? No, es un plumas. Es un plumas.
[Galileo] No es de cuero, pero bueno, es un plumas.
[Germán] Dice, una camisa de cuadros, efectivamente. Y pantalones azules. Que
[Germán] eso se lo está inventando. Porque no se ven los pantalones. El personaje de la
[Galileo] Porque no lo ve ahí.
[Germán] derecha es el Dr. Emmett Doc Brown. Interpretado por Christopher Joy. Lleva
[Germán] un traje blanco. Bueno, sí. Y un bolígrafo con luz en la mano.
[Galileo] Sí.
[Galileo] No, eso es que se mezcla, alucina un poco de algún
[Germán] Está alucinando con otras escenas de la película. Dice, en el fondo de la imagen
[Galileo] con otras escenas de la película.
[Germán] se ve un edificio blanco con techo azul. Bueno, sí que tiene un poco de tono
[Germán] azul. Y luces verdes y blancas. Sí que hay luces verdes. Sí. Vale. Aceptamos
[Galileo] Sí, pero lo bueno es que esto no es como Ollama, que al final puedes utilizar
[Germán] verdes, luces y blancas. La imagen.
[Galileo] Ollama para cargar modelos de lenguaje. Esto es un modo, es como si estuviéramos
[Galileo] conectándose directamente a ChatGPT.
[Germán] A Ollama también puede. Se le pueden dar imágenes. Pero le tienes que
[Germán] dar la ruta del archivo. En las últimas versiones se puede hacer. Pero esto,
[Galileo] No han añadido.
[Germán] ¿veis que es igual?, igual que ChagGPT. Si esta imagen, es decir, si esto lo hace.
[Galileo] Y pone voz, tiene un micrófono, ¿no? O sea, que también soporta voz.
[Germán] Sí, sí. Hoy no vamos a hablar de ello, pero también soporta voz con Whisper.
[Germán] Que es un modelo de transcripción de voz a texto. Y con generadores de texto a
[Germán] voz. Y lo podemos utilizar. O sea, tiene muchísimas opciones. O sea, si
[Germán] tuviéramos que hablar de Open We UI, nos tiraríamos aquí horas y horas. Lo
[Germán] que quería decir es, si seleccionamos un modelo, bueno, GPT también admite
[Germán] imágenes. Pero bueno, lo que quiero decir, si seleccionamos un modelo que no
[Galileo] Dale la misma imagen y probamos.
[Germán] admite imágenes, cuando le mandamos la imagen nos va a dar un error y nos va a
[Germán] aparecer aquí en rojo que ese modelo no admite imágenes. Pero este, vamos a
[Germán] copiar la misma pregunta. No puedo copiar la misma pregunta. Bueno,
[Germán] describe la imagen con todo detalle.
[Galileo] ¿E identifica ...?
[Germán] Identifica los personajes.
[Germán] Vale, y GPT4 nos dice, tarda más. Dice, la imagen muestra dos personas en un
[Germán] entorno nocturno. A la izquierda, una persona sostiene una videocámara, JVC.
[Galileo] Sí, sí.
[Germán] Ah, mira, sí, sí lo pone. Lleva una chaqueta acolchada con color naranja
[Germán] sobre una camisa de mezclilla. A la derecha, otra persona lleva un traje
[Germán] blanco de laboratorio. De laboratorio, ¿no? Bueno, sí, venga. Y sostiene un
[Galileo] Bueno, se puede entender.
[Germán] control remoto con la antena. Ambos están de pie en un amplio espacio
[Germán] exterior. Posiblemente un estacionamiento con un gran edificio al
[Germán] fondo iluminado con luces. Vemos que la respuesta que da GPT es mucho más
[Germán] ambigua, menos detallada y además no quiere identificar quiénes son. Bueno,
[Germán] probablemente lo sepa, pero los controles de privacidad de OpenAI entran
[Germán] en juego. A ver, vamos a intentar forzarle.
[Galileo] Que eso es lo bueno también de los modelos. Cuando utilizamos modelos
[Galileo] abiertos, no tienen ese tipo de bloqueos.
[Germán] Abiertos.
[Germán] Bueno, pueden tenerlos, porque hay... Llama también tiene, o sea, si le
[Germán] preguntas algo sobre algo ilegal, te va a decir que eso no te lo puede decir.
[Galileo] Que eso no te lo puede hacer.
[Germán] ¿Quiénes son los personajes?
[Germán] ¿Qué película es? Es que no me ha dicho que es una película. Que el modelo de
[Galileo] Podría ser.
[Germán] llama sí dijo que era una película. Y ahora sí me dice, la escena es de la
[Germán] película Volver al futuro o Regreso al futuro. Los personajes son Doc Brown,
[Germán] que está con el control remoto, y Marty Macfly, que es el que sostiene la
[Germán] videocamera. Bueno, o sea, que sí lo sabe, pero se ha hecho el remolón a la
[Galileo] Sí que lo saben, pero no lo quería decir al principio. A la hora de contarlo, sí.
[Germán] hora de decirlo. Pues nada, si os interesa... Bueno, otros modelos que
[Germán] podemos utilizar son, por ejemplo, los modelos de Mistral, que son modelos de
[Germán] pago, pero también los podemos utilizar gratis. En este caso se pueden utilizar
[Germán] todos, también con limitaciones, pero yo, por ejemplo, los he utilizado
[Germán] últimamente en programa y no he tenido nunca problemas de que se me hayan
[Germán] rechazado una petición, porque había saturado el número de consultas. Si os
[Germán] vais a la web de LiteLLM, tenéis aquí los documentos y hay una sección que
[Germán] habla de los proveedores. A ver, providers, aquí, que se llama Supported
[Germán] Models and Providers. Entonces, aquí tenéis todos los proveedores. Si buscáis
[Germán] Mistral, os dice un ejemplo de configuración. ¿Dónde está Mistral?
[Germán] Mistral. Nos vamos a la parte de abajo de la página, aquí, y veis que pone aquí
[Germán] un ejemplo de configuración. Entonces es Mistral, Mistral Small Latest, y aquí
[Germán] tiene el ejemplo para utilizar este modelo. Lo podemos copiar directamente,
[Germán] lo que pasa que no tenemos un API de Mistral, pero bueno, lo podemos enseñar
[Germán] a rodillas. O sea, lo copiaríamos aquí, en el litellm_config.yaml, tal como está,
[Germán] puede estar con comillas o sin ellas. Veis que antes lo hemos puesto sin
[Germán] comillas, da igual. Lo guardamos y en el .em nos iríamos aquí, a donde pone
[Germán] Mistral API Key. Aquí, nos iríamos a la página de Mistral, nos damos de alta,
[Germán] nos registramos, no hace falta que pongáis una tarjeta de crédito, porque
[Germán] lo vais a utilizar gratis. Generáis un API Key y lo pegáis aquí, y ya está. O
[Germán] sea, no hay que hacer nada más. Ahora mismo, si lo intentamos utilizar, el
[Germán] modelo creo que lo detectará. Reiniciamos LiteLLM, nos vamos a
[Germán] Open WebUI, ¿vale? Recargamos la página. Aquí ya sale el de Mistral, pero aquí,
[Germán] pues, le decimos hola. Nos va a decir que no existe, porque no le hemos dado
[Galileo] No no. Exacto.
[Germán] una API key.
[Galileo] Pero bueno. Así está bien. Como para hacerlo rapidito y que se entienda
[Galileo] Después en los comentarios nos vais diciendo si habéis tenido algún problema
[Galileo] Pero probamos a hacer la instalación con Python, que también es posible
[Galileo] Pero era bastante más lenta y más complicada.
[Galileo] Por eso al final decidimos tirar por Docker.
[Germán] Pero, bueno, ya que lo tenemos montado, pues, en otro programa, pues, hablaremos
[Germán] sobre más características que tiene Open WebUI. De momento, si no tienes más
[Germán] que, José, lo podemos dejar aquí. Pues, nada, ya tenéis ahí materia para
[Galileo] Yo creo que está perfecto.
[Germán] investigar y que no se os vaya de las manos. Un saludo. Hasta luego.
[Galileo] Chao, hasta la próxima.