603 - Visual Studio Code y Neovim con IA en Docker

603 - Visual Studio Code y Neovim con IA en Docker

Como utilizar la Inteligencia Artifical #IA en #Docker con Visual Studio Code #VSCode y #Neovim para ayudar a documentar en #Python y #Rust Extensiones

1:25
-3:15

Después de mi primera prueba de concepto utilizando la IA en local con Docker, he pensado que hay que aterrizar esto de la inteligencia en algo práctico y que realmente me sea de utilidad, a mi y a todos, claro. En este sentido, evidentemente, y tal y como he contado en alguna que otra ocasión, la cuestión es delegar en la IA aquellos trabajos tediosos o que realmente no nos aportan valor, dedicando nuestros esfuerzos en lo que realmente nos interesa. Así que como primer punto empezaré por la parte de la programación. Evidentemente, el objetivo no es que la IA programe por mi, sino que la IA se encargue de hacer aquello que yo no quiero hacer, o mejor dicho, aquello que yo no hago, que es básicamente documentar y poner mensajes en los commits que sean de utilidad. Soy consciente que esto de la documentación es realmente importante, pero, es que ahora mismo no lo estoy haciendo, así que mas vale algo que nada. De esta forma, aunque sea revisando los comentarios ya haré algo mas. Así, en este episodio del podcast te voy hablar de las pruebas que he estado realizando con Visual Studio Code y con Neovim.

Visual Studio Code y Neovim con IA en Docker

Gestión de modelos

Al igual que en el episodio 601 sobre inteligencia artifical en local con Docker, es necesario tener uno o varios modelos y además alguna herramienta que nos permita de forma sencilla gestionar estos modelos de forma local.

Para esto he utilizado el mismo stack tecnológico que hice en el episodio anterior del podcast. Por un lado un Ollama, que es la herramienta que se encarga de gestionar los grandes modelos de lenguaje, y que si bien es posible tenerla directamente alojada en la máquina con tan solo ejecutar un comando, tal y como te indico a continuación, prefiero tenerla en un contenedor,

curl -fsSL https://ollama.com/install.sh | sh

Ollama soporta una amplia lista de modelos, pero es importante que tengas en cuenta las necesidades de recursos que tiene. Así para que te hagas una idea, los modelos 7B, necesitan de al menos 8 GB de RAM, mientras que los modelos 33B, necesitan de hasta 32 GB de RAM.

Por otro lado, Ollama nos permite interactuar con estos modelos de lenguaje a través de su REST API de forma sencilla. La gran ventaja es que esta REST API, es completamente agnóstica del modelo que estés utilizando. Por ejemplo para generar una respuesta simplemente tienes que hacer la siguiente llamada,

curl "http://localhost:11434/api/generate" -d '{"model": "llama3", "prompt": "¿Por qué desaperecieron los dinosaurios?", "stream": false}'

O si lo que quieres es mantener un chat, lo puedes hacer igualmente con la siguiente llamada,

curl "http://localhost:11434/api/generate" -d '{"model": "llama3", "messages": [{"role": "user": "¿Por qué desaperecieron los dinosaurios?", "stream": false}]}'

Pero como te digo, no solo es útil para interactuar con el modelo, sino que también te permite gestionar el modelo. Lo cierto es que apenas tiene una docena de endpoints disponibles para atacar. Así, tienes acceso en esta página a la API.

Interfaz web

Por otro lado, si lo que quieres es tener una relación mas cómoda con la API, siempre puedes instalar Open WebUI, tal y como te expliqué en el episodio del podcast. Open WebUI, no es, ni mas ni menos, que una interfaz web que te permite, interactuar con la API de Ollama de forma más cómoda. Además, reproduce la interfaz de ChatGPT para que te sientas como en casa.

De igual forma, en este caso la instalación es vía Docker, y el docker-compose.yml, lo puedes encontrar en el episodio 601.

Programando con la IA en Docker

Una vez tenemos la parte del backend, es necesario materializar la interacción con el mismo. Para esta parte, he probado con dos aplicaciones con las que trabajo a diario, una de forma profesional y otra de forma personal. Me refiero a Visual Studio Code y a Neovim.

Estas dos herramientas permiten integrar la IA, a través de diferentes plugins, de forma que he estado probando tanto en una aplicación como en la otra para ver con cual me llevaba mejor.

Tengo que decirte que esto de probar se lleva su tiempo. No solo se trata de probar plugins, sino también seleccionar el modelo mas adecuada y configurarlo. No es que sea complejo, pero como digo, se lleva su tiempo.

Insisto, que mi objetivo, no es tanto que programe por mi, sino que mas bien se ocupe de aquellas tareas que no hago, básicamente, la documentación. Soy consciente que esto lo debería hacer yo y darle la importancia que tiene, pero, es lo que hay.

Visual Studio Code

Actualmente, estoy utilizando Visual Studio Code, en mi tiempo de ocio de forma puntual. Sin embargo, para esta prueba, he tenido que retomar esta relación, y la verdad es que si bien al principio me he encontrado cómodo, con el paso de los días, se me ha puesto cuesta arriba.

Pero sobre todo, lo que mas me ha llamado la atención, es que me siento mas centrado, mas enfocado, cuando utilizo Neovim, que con Visual Studio Code. Con Neovim siento que tengo el foco en todo momento, mientras que con Visual Studio Code, me distraigo con excesiva facilidad, tanto en el entorno, como buscando plugins que hagan vete a saber que cosa.

Por supuesto, otro de los problemas con los que me he encontrado es moverme con los atajos de teclado. Si bien, tengo configurado un complemento para emular los atajos de Vim en Visual Studio Code, lo cierto es que se solapan con los propios, y es bastante frustrante.

Respecto a los complementos que he estado probando y configurando en Visual Studio Code, te puedo indicar los siguientes,

  • commitollama. Una alternativa gratuita al generador de commits de GitHub Copilot que se ejecuta en su dispositivo utilizando Llama.
  • Continue, te permite crear tu propio asistente de código AI dentro de tu entorno de desarrollo integrado (IDE). Mantén a tus desarrolladores en flujo con extensiones de VS Code y JetBrains abiertas fuentes que se pueden conectar con cualquier modelo, contexto o algo más que necesites.
  • Llama Coder es una alternativa de Copilot. Utiliza Ollama y codellama para realizar el autocompletado.
  • Ollama Autocoder es un motor de autocompletado para utilizarcon Ollama.

La verdad, es que por el momento ninguno ha salido por encima del resto, y tampoco he conseguido los resultados que esperaba, excepto el primero, commitollama, que básicamente hace lo que dice.

Neovim

En el caso de Neovim, he probado básicamente los siguientes dos complementos,

Algo que realizan ambos es la gestión de los modelos. Sin embargo, realmente no le veo mucho interés en el sentido que esto lo puedo hacer tanto vía API, como a través de Open WebUI. Lo que si me interesa es poder personalizarlos de forma sencilla.

El segundo de ellos, me permite configurar los prompts a utilizar para conseguir mi objetivo. Así, para el caso de documentar con Docstring las funciones y métodos de Python, he llegado a lo siguiente,

prompt = "Documenta con Docstring y de la forma mas específica que puedas la siguiente función Python:\n```$sel```\nNo me expliques como hay que documentar, simplemente Documenta. Ni me digas 'aquí tienes el resultado', ni nada por el estilo, simplemente Documenta. Por favor, sigue estricamente las convenciones de documentación 'PEP 257 Docstring Conventions'",

Conclusión

Por el momento me quedo con Neovim, sobre todo por que me encuentro mas cómodo, por un lado, y por el otro, porque ahora mismo puedo personalizar los prompts y adaptarlos a mis necesidades. En las próximas semanas conforme vaya consolidando mi uso te iré comentando.

Por otro lado, y según el uso se vaya asentando en mi editor de referencia, el objetivo es atacar otras partes del escritorio.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *