Curso
Escribir código puede resultar tedioso cuando te quedas atascado en detalles sin importancia o pequeños detalles sintácticos. Esa fricción solo aumenta cuando estás experimentando con nuevos modelos de IA y solo quieres centrarte en crear. Tabnine te ayuda a superar esa ralentización con la autocompletación de código mediante IA dentro de tu editor.
En este artículo, explicaré paso a paso cómo utilizar Tabnine en Visual Studio Code (VS Code) para crear un editor de imágenes con IA utilizando el último modelo de generación de imágenes de Google, Nano Banana. Al final de este artículo, tendremos una aplicación Python funcional que permite a los usuarios generar y editar imágenes mediante indicaciones.


¿Qué es Tabnine?
Tabnine es un asistente de programación basado en inteligencia artificial similar a GitHub Copilot y Cursor. Funciona en los editores más populares, como VS Code, PyCharm, Jupyter y muchos más.
Algunas de las características principales de Tabnine son:
- Integración con Jira: Tabnine se puede conectar a Jira, una popular plataforma para gestionar proyectos de ingeniería de software. Esto facilita la gestión del trabajo y permite a Tabnine programar las tareas en curso.
- Comandos personalizados: Tabnine viene equipado con una variedad de comandos, como «Explicar código» o «Corregir código». También permite a los usuarios definir comandos personalizados basados en indicaciones.
- Comportamiento personalizado: Tabnine te permite configurar un mensaje que guía la forma en que responden los modelos de IA. Por ejemplo, si tienes directrices de codificación bien definidas, puedes proporcionarlas para garantizar que se genere código de acuerdo con dichas directrices.
- Autocompletado inteligente: Sugiere líneas completas o bloques de código, no solo nombres de variables.
- Context-aware: Tabnine se adapta a la estructura de tu proyecto y a tu estilo de programación.
- Compatibilidad con múltiples modelos de IA: Tabnine es compatible con los modelos de IA más populares, lo que facilita la elección del que se desea utilizar.
- Aprendizaje en equipo: En los planes empresariales, puede aprender del código privado de tu equipo para hacer sugerencias adaptadas a los patrones de tu empresa.
Configuración de Tabnine
Para empezar, necesitamos crear una cuenta en Tabnine y suscribirnos a uno de sus planes. Ofrecen una prueba de 14 días, por lo que puedes probarlo gratis. Tras el periodo de prueba, Tabnine cuesta 9 $ al mes.
Después de crear tu cuenta de Tabnine, abre VS Code. Si no tienes VS Code, instálalo desde aquí. Abre la pestaña de extensiones y escribe «tabnine» para encontrar la extensión oficial.

Una vez instalada la extensión, se nos pedirá que iniciemos sesión. A continuación, puedes acceder a Tabnine en la barra de menú de la izquierda (la última opción de esta captura de pantalla).

Explorando la interfaz de usuario de Tabnine
Antes de crear nuestro editor de imágenes con IA, repasemos rápidamente los elementos principales de Tabnine.
Cuando abrimos Tabnine, se nos presenta una interfaz de chat con IA:

En la parte superior, tenemos un selector de modelos. Aquí, podemos elegir qué modelo utilizar. En este tutorial me ceñiré a la configuración predeterminada, Gemini 2.5 Pro.

En la parte inferior, podemos definir el contexto. Esto define lo que queremos que el modelo de IA vea al responder.

De forma predeterminada, el contexto incluye el archivo actual y el espacio de trabajo (el proyecto). Podemos añadir otras cosas, como la Terminal, que es muy útil para informar al modelo de los errores que encontramos. También podemos proporcionar un fragmento de código específico utilizando el carácter «@» y, a continuación, escribiendo el nombre de la función que deseamos añadir al contexto.
En el menú hamburguesa, podemos configurar Tabnine:

Dos configuraciones dignas de mención son el comportamiento personalizado y los comandos personalizados. En la sección de comportamiento personalizado, podemos establecer un mensaje que guíe al modelo al generar código. Es útil en situaciones en las que queremos que el código siga unas pautas específicas.

La sección de comandos permite definir comandos personalizados que se pueden ejecutar utilizando un / en la interfaz de chat. Un comando es esencialmente una indicación para realizar acciones específicas. Esta es una buena forma de ahorrar tiempo y evitar tener que repetir la misma indicación una y otra vez.

Codificación de vibraciones en un editor de imágenes con IA con Tabnine
En esta sección, te explicaré cómo crear una aplicación Python que utilice Nano Banana, el último modelo de generación de imágenes de Google, para editar imágenes. El usuario puede utilizar un comando para generar una imagen o combinar y editar imágenes existentes con el comando.
Mi objetivo era ver si era posible codificar esta aplicación por vibración, es decir, construirla completamente desde cero a partir de indicaciones.
Todo el código generado en este tutorial se puede encontrar en este repositorio de GitHub.
Creación de la interfaz de usuario básica
Para empezar, quería crear la interfaz de usuario básica en la que los usuarios pudieran seleccionar imágenes de su ordenador y escribir un comando. Creé una nueva carpeta y abrí VS Code en esa carpeta. No creé ningún archivo. Esta fue tu primera indicación:

Después me di cuenta de que había olvidado mencionar que estaba creando una aplicación en Python. De alguna manera, tuve suerte, y eso fue lo que el modelo de IA supuso que yo quería. Respondió a mi solicitud explicándome los comandos que ejecutaría y el código que escribiría.
Para realizar los cambios, debemos aplicarlos uno por uno o hacer clic en el botón «Aplicar todo» situado en la parte inferior de la pantalla. Ten en cuenta que algunos de los cambios implican la ejecución de comandos. En estos casos, los comandos instalan los paquetes Python necesarios y crean los archivos y carpetas para almacenar el código.
Así es como se veía la interfaz cuando ejecuté el script que creó:

En la parte superior, hay una lista de todas las imágenes seleccionadas y un botón para abrir un selector de archivos. El usuario puede seleccionar uno o más archivos, y los archivos seleccionados se muestran en una lista. Sin embargo, cuando se seleccionan nuevos archivos, la lista antigua se sobrescribe, por lo que pedí que se añadieran los nuevos archivos a la lista en lugar de eliminar los antiguos.

A continuación, quería mejorar la interfaz de usuario para mostrar las miniaturas de las imágenes en lugar de sus rutas:

Este es el resultado:

Otra característica importante es la posibilidad de eliminar imágenes fácilmente:

Con esta indicación, modificó el código para que, al hacer clic con el botón derecho del ratón sobre una miniatura, apareciera un menú emergente que nos permitiera eliminar la imagen. Quería que funcionara así, por lo que solicito ese cambio:

Cuando probé la aplicación después de este cambio, la eliminación de imágenes ya no funcionaba. Sospeché que era porque utilizas un Mac, pero no lo dije. Quería ver si podías resolverlo por ti mismo.

Funcionó muy bien y pude hacer clic con el botón derecho del ratón sobre una imagen para eliminarla:

El último paso en la interfaz de usuario básica fue añadir un cuadro de texto para el mensaje.

Con esto, la interfaz de usuario básica estaba terminada. Podemos seleccionar imágenes y escribir un mensaje. Sin embargo, todavía no podemos generar una imagen. Eso es lo que implementaremos en la siguiente sección.

Integración de Nano Banana
Para mantener el código organizado, le pedí que creara un nuevo script de Python con una función que utiliza la API de IA generativa de Google con su último modelo de imágenes para generar imágenes.

Se ha creado el nuevo script y el archivo .env. Este archivo se utiliza para almacenar la clave API necesaria para conectarse a la API de Google. Si estás siguiendo los pasos, necesitarás crear una clave API aquí y colocarla en el archivo .env.
Luego, le pedí que añadieras un nuevo botón a la interfaz para llamar a la función de generación de imágenes. Añadí el botón, pero cuando hice clic en él, me apareció un error. Por lo tanto, me aseguré de añadir el terminal al contexto antes de pedirte que corrigieras el error.


Se realizaron algunas actualizaciones en los archivos, pero el error persistió. Intenté arreglarlo, pero no funcionó. Empezó a decir que el modelo de IA no existía y quería cambiar el código en una dirección que yo sabía que no era correcta.
Para solucionarlo, tuve que corregir el código manualmente. Fui a página web oficial de Gemini y copié y adapté el código de ejemplo que encontré allí.
Esta es una de las razones por las que creo que es importante tener algunos conocimientos básicos sobre programación, incluso cuando programación vibe. A menudo nos encontramos con algo que el modelo de IA no puede solucionar, y saber programar es importante para comprender que lo que dice el modelo no es correcto y poder arreglarlo. Este tipo de herramientas siempre deben utilizarse para acelerar el proceso, no para sustituirlo por completo.
Sin embargo, incluso cuando tuve que escribir este código manualmente, Tabnine me resultó útil gracias a sus funciones de autocompletado. Por ejemplo, cuando quería convertir las rutas de las imágenes seleccionadas en imágenes para proporcionarlas al modelo, solo tenía que empezar a escribir lo que quería y obtenía el código correcto:

También vemos encima del nombre de la función que Tabnine proporciona herramientas para editar, probar, corregir, explicar y documentar la función. Por ejemplo, usé la función «document» para documentar el código, y me mostró una comparación con los cambios que planeaba realizar, que luego pude aceptar o rechazar:

Resultado final
La aplicación ya estaba operativa y lista para su uso. Intentemos crear una figura de acción para una persona determinada con accesorios tomados de otras imágenes:

Este es el resultado:

Pruebas con Tabnine
Es muy importante escribir pruebas automatizadas cuando se trabaja en un proyecto. Una de las características de Tabnine es que nos ayuda a escribir estas pruebas.
Esta función está disponible en la pestaña «Prueba» o haciendo clic en la opción «Prueba» situada encima de la definición de una función. Cuando lo hagamos, Tabnine creará un plan de pruebas para esa función.

Un plan de pruebas consta de escenarios con el comportamiento esperado de la función. Estos son algunos de los escenarios que Tabnine identificó para nuestra función:

Para generar una prueba para un escenario específico, simplemente hacés clic en él. Generará la función de prueba para ese escenario específico, que luego podremos integrar en tu conjunto de pruebas.

Cuando apliqué estos cambios, el archivo de prueba contenía la función de prueba y nada más. Faltaban las importaciones y la clase de prueba circundante. Tuve que volver a la pestaña «Chat» para pedirte que terminaras de implementar la prueba. Después de eso, me encontré con un error porque el nombre del archivo que creaste era incorrecto. Como antes, te dije que se había producido un error y lo solucionaste. Ahora la prueba se ejecuta correctamente.
Cuando añadí otras pruebas después de esto, todo funcionó bien.

Conclusión
Tabnine demuestra su potencial como potente herramienta para el desarrollo rápido al integrarse fácilmente con los editores de código más populares. Sus capacidades de codificación asistida por IA aceleran el proceso, lo que permite a los programadores centrarse en la innovación en lugar de en tareas rutinarias.
Sin embargo, mi intento de crear una aplicación basándome únicamente en el vibe-coding puso de manifiesto la importancia de contar con una base sólida de conocimientos sobre los principios de la programación. Confiar ciegamente en el código generado por IA sin verificar su idoneidad puede dar lugar a complicaciones, lo que deja a los programadores vulnerables a errores que quizá no comprendan del todo.
Tabnine funcionó de manera eficiente en su mayor parte, pero a menudo daba la sensación de que el modelo de IA subyacente era el verdadero motor, comparable a otras herramientas como GitHub Copilot. Aunque Tabnine es sin duda una herramienta útil, esta experiencia pone de relieve el valor insustituible de los conocimientos tradicionales de programación para garantizar el desarrollo eficaz y sostenible de aplicaciones de software complejas.




