Assistant de programmation IA : Tabnine cible les entreprises régulées
Tabnine entend se différencier de GitHub Copilot, Gemini Code Assist et Amazon Q Developer avec son système de contextualisation du code et ses agents IA présents à chaque étape du cycle de développement. Un assistant de programmation déployable sur site.
Codota. C’est l’un des pionniers de l’autocomplétion de code né en 2013 à Tel-Aviv. En 2019, l’entreprise a acquis Tabnine, une startup fondée en 2018, et s’est drapée de ce nom en 2021. Depuis, Tabnine poursuit le développement d’un assistant IA pour les développeurs.
Fin novembre 2022, l’apparition de ChatGPT a bouleversé ce segment de marché. Et dans son sillon est apparu GitHub Copilot ainsi qu’un ensemble d’assistants de programmation propulsés par des modèles d’IA générative. Tabnine entend se différencier de ses concurrents. Il prétend ainsi pouvoir déployer sa solution à chacune des étapes de la chaîne de développement logiciel.
Intégré à la plupart des IDE du marché (Jetbrains, VScode, Eclipse, Neovim, Android Studio, etc.) et depuis une UI, Tabnine permet de générer, de compléter, d’expliquer, de corriger et de refactoriser du code. Il s’appuie à la fois sur des modèles propriétaires maison et des LLM tiers, dont ceux d’OpenAI (GPT-4o), d’Anthropic (Claude 3.5 Sonnet, Claude 3.7), de Cohere (Command R+) et de Mistral (Codestral).
« Toute notre plateforme est construite sur le concept des principes de conception “human in the loop”. Nous ne développons pas des outils de “vibe coding”. »
Ameya DeshmukhDirecteur des programmes marketing, Tabnine
Mais l’éditeur compte principalement sur son système de contextualisation. Il ne veut pas s’arrêter aux informations présentes dans l’IDE. « Toute notre plateforme est construite sur le concept des principes de conception “human in the loop” », assure Ameya Deshmukh, directeur des programmes marketing chez Tabnine. « Nous ne développons pas des outils de “vibe coding” ».
Le « vibe coding » est un concept trouvé par Andrej Karpathy, fondateur d’Eureka Labs et cofondateur d’OpenAI. Cela consiste à développer un programme en s’appuyant exclusivement sur le code généré par un LLM ou déniché sur le Web, sans réelles connaissances d’un ou plusieurs langages de programmation.
« Nos clients utilisent Tabnine en lien avec des applications critiques, des dépôts massifs, des front-end, des back-end, des microservices complexes, des milliers, voire des millions de lignes de code », poursuit-il. « Habituellement, les développeurs doivent connaître leur périmètre et modifier quelques lignes de code de cet ensemble ». Dans cette approche, « l’IA doit être transparente, tenir le développeur informé, et ce dernier doit avoir le contrôle à chaque étape du processus ».
Un système élaboré de contextualisation du code
Ainsi, l’installation de Tabnine commence généralement par la connexion au dépôt de code et aux éléments de documentation les plus pertinents. « Nous avons des clients qui ont 10 000 dépôts. Ils peuvent tous les relier, mais s’ils ne connectent que les dépôts qui contiennent du bon code, nous pensons que les résultats sont meilleurs », recommande l’interlocuteur du MagIT.
Récemment, l’éditeur a ajouté un moyen d’interpréter des éléments visuels comme des schémas, des diagrammes ou des captures d’écrans comme éléments de contexte pour générer du code. Ce n’est qu’un de la quinzaine de points de données (fichiers ouverts, structure d’un dossier, packages importés, librairies, etc.) utilisés pour mettre en place ce contexte.
Tabnine propose des intégrations aux pull requests de Git, Bitbucket, GitHub et GitLab. Il peut aussi se connecter à Jira, Redis, Snyk, Docker, ou encore Monday.com. L’éditeur a aussi mis en place un mécanisme de « context scoping ». En clair, il permet aux utilisateurs de choisir où le système peut rechercher de l’information, par exemple une base de code, un fichier, ou encore un espace de travail.
À partir de la base de code et de la documentation associée, Tabnine dit pouvoir fournir davantage de recommandations pertinentes pour les développeurs. Ce serait particulièrement utile pour expliquer et corriger du code.
Pour ce faire, l’éditeur s’appuie sur une architecture RAG, ce qu’il appelle « l’insight layer ». Cette architecture mêle recherche sémantique, base de données vectorielle et Knowledge Graph. « Une requête n’est pas directement envoyée au LLM. Elle cible d’abord la base de données vectorielle, puis le graphe de connaissances. Il y a également un processus de reclassement qui se produit ici et qui prend en compte des sources de contexte plus importantes », note le responsable. « Ces données sont envoyées au LLM, où elles subissent un post-traitement avant d’être renvoyées au développeur ».
« La véritable solution repose sur l’augmentation du contexte en temps réel, combiné à des garde-fous et des mécanismes de contrôle, ce que nous avons précisément mis en place. »
Ameya DeshmukhDirecteur des programmes marketing, Tabnine
Elle est complétée par une couche de contrôle. Celle-ci permet de renseigner les standards et bonnes pratiques, les règles de l’entreprise et les permissions. « Un article publié par des chercheurs de l’Université de Singapour intitulé “Hallucination is Inevitable: A Fundamental Flaw of Large Language Models” met en lumière quatre points », avance Ameya Deshmukh. « L’étude établit que tous les LLM hallucinent, qu’ils hallucineront sur un nombre infini de questions et que les stratégies d’atténuation ne sont pas le fine-tuning, le mixture of experts, ni l’augmentation de la taille des modèles », récite-t-il. « La véritable solution repose sur l’augmentation du contexte en temps réel, combiné à des garde-fous et des mécanismes de contrôle, ce que nous avons précisément mis en place ».
Ces deux éléments qui forment le « moteur de contexte » de Tabnine Enterprise font le lien entre les sources de données et les agents d’explication, les sources de création, de tests, de génération de documentation au sein des IDE.
Des agents plus ou moins autonomes
Le système de Tabnine permet d’interpréter des règles depuis des sources documentaires. À cela s’ajoutent les règles des fournisseurs d’API, plus de 1 000 règles préconstruites et des règles concoctées en langage naturel par des experts. Le tout forme l’ensemble des règles pour une organisation. Celle-ci alimente le moteur de contexte lui-même connecté au LLM sous-jacent et à l’agent de revue de code.
En outre, Tabnine a récemment mis en place un mécanisme d’identification de la provenance et d’attribution du code généré. « Il vérifie le code généré en le comparant à un index de sources visibles publiquement. Il signale la source, vous dit exactement d’où elle provient pour ces extraits, et vous donne la licence » présente le directeur des programmes marketing. Il est aussi possible d’empêcher la génération de code associé à des licences « non permissives ». Les permissions participent également à ce mécanisme de contrôle du respect de la propriété intellectuelle.
D’autres agents sont consacrés à la correction de bugs, à la gestion de la conformité et à la sécurité. « Actuellement, certains agents disposent déjà d’une grande autonomie, et nous les rendons progressivement de plus en plus autonomes », affirme Ameya Deshmukh.
« Par exemple, dans l’étape de création, l’agent de mise en œuvre et validation Jira permet simplement de saisir une demande dans le chat et de sélectionner un ticket Jira. À partir de là, il lit automatiquement le ticket, analyse tout le code, génère une implémentation adaptée, puis vérifie si celle-ci respecte tous les critères d’acceptation », illustre-t-il. « Il ne reste alors plus qu’à cliquer sur “Appliquer”, et l’agent place le code à l’endroit approprié ».
Si cela ne suffit pas, Tabnine propose à ses clients de fine-tuner ses modèles de complétion de code sur leur base de code. « Nous l’avons fait avec un grand nom de l’industrie des semiconducteurs pour apprendre au modèle le VHDL (VHSIC Hardware Description Language) ».
Des déploiements sur site et un partenariat avec Dell
L’autre atout qu’il met en avant concerne le déploiement flexible de sa plateforme. « Nous avons mis en place ce concept de liberté architecturale », déclare Ameya Deshmukh. « Vous pouvez déployer Tabnine sur site – sans connexion au cloud –, le déployer derrière un VPC ou en mode SaaS ». Sur site, « rien ne quitte jamais votre propre infrastructure », assure-t-il.
Ce serait un avantage majeur face à GitHub Copilot. « Avec Copilot vous êtes soumis à un verrouillage propriétaire », assène le directeur des programmes marketing. « Tout doit passer par GitHub. Avec nous, vous pouvez interconnecter plusieurs SCM et technologies de dépôts Git ». Un concurrent plus direct serait Codeium. Celui-ci fournit une offre SaaS, sur site et « in-VPC ». Face à cet acteur, Tabnine défend son modèle tarifaire qui ne dépend pas de crédits, mais uniquement d’un nombre de sièges (9 dollars par mois pour les petites équipes, 39 dollars par mois par utilisateur pour les grands comptes). L’éditeur doit également se différencier de Gemini Code Assist et d’Amazon Q Developer qui, malgré leur attache à un fournisseur de cloud, sont compatibles avec davantage de sources.
« Cela fonctionne exclusivement sur les GPU Nvidia. Nos modèles sont compressés pour les GPU Nvidia et nos pipelines RAG avancées réclament des besoins de calcul importants. »
Ameya DeshmukhDirecteur des programmes marketing, Tabnine
D’où les déploiements sur site. Plus particulièrement, la plateforme Tabnine est déployée sur un cluster Kubernetes et nécessite des GPU Nvidia. « Cela fonctionne exclusivement sur les GPU Nvidia. Nos modèles sont compressés pour les GPU Nvidia et nos pipelines RAG avancées réclament des besoins de calcul importants », insiste Ameya Deshmukh.
Plus spécifiquement, Tabnine recommande à ses clients d’installer des GPU Nvidia H100 (100 Go de VRAM HBM3e) ou L40S (48 Go de VRAM GDDR6) pour exécuter ses modèles propriétaires et des LLM tiers (généralement LLama 3.3 70B ou Qwen 2.5 32B). Trois GPU Nvidia L40S suffisent pour traiter les requêtes de 250 développeurs. Quatre L40s permettent de couvrir les besoins de 1 000 développeurs et 8 GPU L40S sont nécessaires pour 2 000 développeurs.
« En alternative, vous pouvez opter pour 2 GPU H100, ce qui permet de gérer 1 000 développeurs, ou 4 GPU H100 pour 2 000 développeurs. Avec 8 GPU H100, vous pouvez atteindre 4 000 développeurs », précise Ameya Deshmukh.
Ces recommandations proviennent d’un partenariat avec Dell, annoncé lors de la conférence annuelle de Nvidia, la GTC. Tabnine peut être déployé sur les serveurs Dell des gammes PowerEdge R760xa et PowerEdge 9680.
Tabnine revendique environ 200 clients, dont le Crédit Agricole. Cette hétérogénéité des déploiements fait déjà des émules. « Notre client le plus important a 4 000 développeurs qui utilisent simultanément notre plateforme et c’est un déploiement on-prem », illustre Ameya Deshmukh.
Justement, l’éditeur cible les entreprises régulées et les organisations ayant besoin d’un « contrôle strict de la qualité du code et des données sensibles ». Dont les acteurs de la défense.
Pour approfondir sur IA appliquée, GenAI, IA infusée