Cours
Écrire du code peut devenir fastidieux lorsque l'on est confronté à des détails de syntaxe ou à des éléments récurrents. Cette friction ne fait que s'accentuer lorsque vous testez de nouveaux modèles d'IA et que vous souhaitez simplement vous concentrer sur le développement. Tabnine contribue à réduire ce ralentissement grâce à la complétion de code par IA dans votre éditeur.
Dans cet article, je vais vous expliquer étape par étape comment utiliser Tabnine dans Visual Studio Code (VS Code) pour créer un éditeur d'images IA à l'aide du dernier modèle de génération d'images de Google, Nano Banana. Nano Banana. À la fin de cet article, nous disposerons d'une application Python fonctionnelle qui permettra aux utilisateurs de générer et de modifier des images à l'aide d'invites.
Qu'est-ce que Tabnine ?
Tabnine est un assistant de codage alimenté par l'IA similaire à GitHub Copilot. GitHub Copilot et Cursor. Il est compatible avec la plupart des éditeurs populaires tels que VS Code, PyCharm, Jupyter, et bien d'autres.
Parmi les principales fonctionnalités de Tabnine, on peut citer :
- Intégration Jira : Tabnine peut se connecter à Jira, une plateforme réputée pour la gestion de projets d'ingénierie logicielle. Cela facilite la gestion du travail et permet à Tabnine de suivre les tâches en cours.
- Commandes personnalisées : Tabnine est doté de diverses commandes, telles que « Expliquer le code » ou « Corriger le code ». Il permet également aux utilisateurs de définir des commandes personnalisées basées sur des invites.
- Comportement personnalisé : Tabnine vous permet de configurer une invite qui guide la manière dont les modèles d'IA répondent. Par exemple, si vous disposez de directives de codage bien définies, vous pouvez les fournir afin de garantir que le code généré respecte ces directives.
- Saisie semi-automatique intelligente : Il suggère des lignes ou des blocs de code complets, et pas seulement des noms de variables.
- Sensible au contexte : Tabnine s'adapte à la structure de votre projet et à votre style de codage.
- Prise en charge de plusieurs modèles d'IA : Tabnine prend en charge les modèles d'IA les plus populaires, ce qui facilite le choix du modèle à utiliser.
- Apprentissage en équipe : Dans les plans d'entreprise, il peut apprendre à partir du code source privé de votre équipe afin de formuler des suggestions adaptées aux modèles de votre entreprise.
Configuration de Tabnine
Pour commencer, nous devons créer un compte Tabnine et souscrire à l'un de leurs forfaits. Ils proposent une période d'essai de 14 jours, vous pouvez donc l'essayer gratuitement. Après la période d'essai, Tabnine coûte 9 $ par mois.
Une fois votre compte Tabnine créé, veuillez ouvrir VS Code. Si vous ne disposez pas de VS Code, veuillez l'installer à partir de ici. Veuillez ouvrir l'onglet Extensions et saisir « tabnine » pour localiser l'extension officielle.
Une fois l'extension installée, nous sommes invités à nous connecter. Nous pouvons ensuite accéder à Tabnine dans la barre de menu de gauche (dernière option dans cette capture d'écran).
Exploration de l'interface utilisateur de Tabnine
Avant de développer notre éditeur d'images IA, passons rapidement en revue les principaux éléments de Tabnine.
Lorsque nous ouvrons Tabnine, une interface de chat IA s'affiche :
En haut, nous avons un sélecteur de modèle. Ici, nous pouvons sélectionner le modèle à utiliser. Je m'en tiendrai aux paramètres par défaut dans ce tutoriel, Gemini 2.5 Pro.
En bas, nous pouvons définir le contexte. Ceci définit ce que nous souhaitons que le modèle d'IA observe lorsqu'il répond.
Par défaut, le contexte inclut le fichier actuel et l'espace de travail (le projet). Nous pouvons ajouter d'autres éléments, tels que le Terminal, qui est très utile pour signaler les erreurs au modèle lorsque nous les rencontrons. Nous pouvons également fournir un extrait de code spécifique en utilisant le caractère « @ », puis en saisissant le nom de la fonction que nous souhaitons ajouter au contexte.
Dans le menu hamburger, nous pouvons configurer Tabnine :
Deux paramètres importants sont le comportement personnalisé et les commandes personnalisées. Dans la section « Comportement personnalisé », nous pouvons définir une invite qui guide le modèle lors de la génération de code. Il est utile dans les situations où nous souhaitons que le code respecte des directives spécifiques.
La section « Commandes » permet de définir des commandes personnalisées qui peuvent être exécutées à l'aide d'une commande telle que « /
» dans l'interface de chat. Une commande est essentiellement une invite à effectuer des actions spécifiques. C'est un excellent moyen de gagner du temps et d'éviter d'avoir à répéter la même invite à plusieurs reprises.
Codage d'ambiance d'un éditeur d'images IA avec Tabnine
Dans cette section, je vais vous expliquer comment créer une application Python qui utilise Nano Banana, le dernier modèle de génération d'images de Google, pour modifier des images. L'utilisateur peut utiliser une invite pour générer une image ou combiner et modifier des images existantes à l'aide de l'invite.
Mon objectif était de déterminer s'il était possible de coder cette application par vibration, c'est-à-dire de la construire entièrement à partir de commandes, en partant de zéro.
Tout le code généré dans ce tutoriel est disponible dans ce référentiel GitHub.
Création de l'interface utilisateur de base
Pour commencer, j'ai souhaité créer l'interface utilisateur de base permettant aux utilisateurs de sélectionner des images sur leur ordinateur et de saisir une invite. J'ai créé un nouveau dossier et ouvert VS Code dans ce dossier. Je n'ai créé aucun fichier. Voici ma première suggestion :
Je me suis rendu compte après coup que j'avais omis de mentionner que je développais une application Python. D'une certaine manière, j'ai eu la chance que ce soit exactement ce que le modèle d'IA avait supposé que je souhaitais. Il a répondu à ma demande en expliquant les commandes qu'il exécuterait et le code qu'il écrirait.
Pour effectuer les modifications, il est nécessaire de les appliquer une par une ou de cliquer sur le bouton « Appliquer tout » situé en bas de l'écran. Veuillez noter que certaines modifications impliquent l'exécution de commandes. Dans ces cas, les commandes installent les paquets Python nécessaires et créent les fichiers et dossiers pour stocker le code.
Voici à quoi ressemblait l'interface lorsque j'ai exécuté le script qu'il a créé :
En haut, vous trouverez une liste de toutes les images sélectionnées ainsi qu'un bouton permettant d'ouvrir un sélecteur de fichiers. L'utilisateur peut sélectionner un ou plusieurs fichiers, et les fichiers sélectionnés sont répertoriés. Cependant, lorsque de nouveaux fichiers sont sélectionnés, l'ancienne liste est écrasée. J'ai donc demandé à ce que les nouveaux fichiers soient ajoutés à la liste au lieu de supprimer les anciens.
Ensuite, j'ai souhaité améliorer l'interface utilisateur afin d'afficher les vignettes des images plutôt que leurs chemins d'accès :
Voici le résultat :
Une autre fonctionnalité importante est la possibilité de supprimer facilement des images :
Grâce à cette invite, le code a été modifié de manière à ce que, lorsque nous cliquons avec le bouton droit sur une vignette, un menu contextuel s'affiche, nous permettant de supprimer l'image. Je souhaitais que cela fonctionne de cette manière, c'est pourquoi je demande cette modification :
Après avoir effectué cette modification, lorsque j'ai testé l'application, la suppression des images ne fonctionnait plus. Je soupçonnais que cela était dû au fait que j'utilise un Mac, mais je ne l'ai pas mentionné. Je souhaitais déterminer s'il pouvait le comprendre par lui-même.
Cela a très bien fonctionné, et j'ai pu cliquer avec le bouton droit sur une image pour la supprimer :
La dernière étape de l'interface utilisateur de base consistait à ajouter une zone de texte pour l'invite.
L'interface utilisateur de base était ainsi terminée. Nous pouvons sélectionner des images et saisir une invite. Cependant, nous ne sommes pas encore en mesure de générer une image. C'est ce que nous mettrons en œuvre dans la section suivante.
Intégration de Nano Banana
Afin de maintenir le code organisé, j'ai demandé à créer un nouveau script Python avec une fonction qui utilise l'API d'IA générative de Google et leur dernier modèle d'image pour générer des images.
Il a généré le nouveau script et le fichier .env
. Ce fichier est utilisé pour stocker la clé API nécessaire pour se connecter à l'API Google. Si vous suivez ces étapes, vous devrez créer une clé API ici. créer une clé API ici et la placer dans le fichier .env
.
Ensuite, j'ai demandé à ajouter un nouveau bouton à l'interface pour appeler la fonction de génération d'images. Le bouton a été ajouté, mais lorsque j'ai cliqué dessus, j'ai reçu un message d'erreur. Par conséquent, je me suis assuré d'ajouter le terminal au contexte avant de lui demander de corriger l'erreur.
Certaines mises à jour ont été effectuées sur les fichiers, mais l'erreur persiste. J'ai tenté de le faire réparer, mais cela n'a pas été possible. Il a commencé par indiquer que le modèle d'IA n'existait pas et a souhaité modifier le code d'une manière que je savais incorrecte.
Pour résoudre ce problème, j'ai dû corriger le code manuellement. Je me suis rendu sur le site officiel de Gemini. site officiel de Gemini et j'ai copié et adapté le code d'exemple qui s'y trouvait.
C'est l'une des raisons pour lesquelles je considère qu'il est important d'avoir des connaissances fondamentales en codage, même lorsque l'on codage vibe. Il arrive fréquemment que nous rencontrions des problèmes que le modèle d'IA ne peut pas résoudre. Il est donc important de savoir programmer afin de pouvoir identifier les erreurs du modèle et les corriger. Ces types d'outils doivent toujours être utilisés pour accélérer le processus, et non pour le remplacer complètement.
Cependant, même lorsque j'ai dû écrire ce code manuellement, Tabnine s'est révélé utile grâce à ses fonctionnalités d'autocomplétion. Par exemple, lorsque j'ai souhaité convertir les chemins d'accès aux images sélectionnées en images à fournir au modèle, j'ai simplement commencé à saisir ce que je souhaitais et j'ai obtenu le code approprié :
Nous observons également au-dessus du nom de la fonction que Tabnine fournit des outils pour modifier, tester, corriger, expliquer et documenter la fonction. Par exemple, j'ai utilisé la fonction « document » pour documenter le code, et elle m'a présenté une comparaison avec les modifications qu'elle prévoyait d'apporter, que j'ai ensuite pu accepter ou refuser :
Résultat final
L'application était désormais fonctionnelle et prête à l'emploi. Essayons de créer une figurine pour une personne donnée à l'aide d'accessoires provenant d'autres images :
Voici le résultat :
Tester avec Tabnine
Il est essentiel de rédiger des tests automatisés lorsque l'on travaille sur un projet. L'une des fonctionnalités de Tabnine consiste à nous aider à rédiger ces tests.
Cette fonctionnalité est accessible dans l'onglet « Test » ou en cliquant sur l'option « Test » située au-dessus d'une définition de fonction. Lorsque nous procéderons ainsi, Tabnine élaborera un plan de test pour cette fonction.
Un plan de test comprend des scénarios illustrant le comportement attendu de la fonction. Voici quelques-uns des scénarios identifiés par Tabnine pour notre fonction :
Pour générer un test pour un scénario spécifique, il suffit de cliquer dessus. Il générera la fonction de test pour ce scénario spécifique, que nous pourrons ensuite intégrer à notre suite de tests.
Lorsque j'ai appliqué ces modifications, le fichier de test ne contenait que la fonction de test et rien d'autre. Il manquait les importations et la classe de test environnante. J'ai dû retourner dans l'onglet « Chat » pour demander la finalisation de la mise en œuvre du test. Par la suite, j'ai rencontré une erreur car le nom du fichier créé était incorrect. Comme précédemment, j'ai signalé une erreur, et elle a été corrigée. Le test s'exécute désormais correctement.
Lorsque j'ai ajouté d'autres tests par la suite, tout a fonctionné correctement.
Conclusion
Tabnine démontre son potentiel en tant qu'outil puissant pour le développement rapide grâce à son intégration facile avec les éditeurs de code courants. Ses capacités de codage assisté par l'IA accélèrent le processus, permettant aux développeurs de se concentrer sur l'innovation plutôt que sur des tâches répétitives.
Cependant, ma tentative de créer une application uniquement à l'aide du vibe-coding a mis en évidence l'importance d'une solide compréhension des principes fondamentaux du codage. Une confiance aveugle dans le code généré par l'IA sans vérifier sa pertinence peut entraîner des complications, exposant les développeurs à des erreurs qu'ils pourraient ne pas comprendre pleinement.
Tabnine fonctionnait efficacement dans l'ensemble, mais on avait souvent l'impression que le modèle d'IA sous-jacent était le véritable moteur, comparable à d'autres outils tels que GitHub Copilot. Bien que Tabnine soit effectivement un outil utile, cette expérience souligne la valeur irremplaçable des connaissances traditionnelles en codage pour garantir le développement efficace et durable d'applications logicielles complexes.