Aider est un assistant pour développement dans le terminal.
L'outil est vraiment bien foutu, je suis impressionné par sa capacité à réaliser des tâches en autonomie. Je l'utilise beaucoup pour du refacto par exemple.
C'est actuellement le meilleur assistant, ils obtiennent 18.9% sur le SWE Bench qui évalue les assistants à leur capacité à réaliser des tâches de programmation.
Le dernier SOTA était Devin.
Bref, c'est un super projet et en plus tout est open source! A utiliser d'urgence
Les poursuites judiciaires engagées contre GitHub pour violation de copyright par Copilot ont été abandonnées par les juges.
GitHub modifie légèrement les exemples de code par rapport aux sources originelles et c'est entre autre cette raison qui a convaincu les juges.
Supermaven propose un assistant code comme Copilot.
Supermaven possède so propre modèle (Babble) et se démarque sur plusieurs points:
- Fenêtre de 1 millions de token
- Latence de 250 ms au lieu de 800ms pour Copilot
- Prédiction à chaque frappe du clavier
Ils ont testé le modèle sur des benchmark de type “needle in a haystack” et il est capable de retrouver correctement les informations même dans 1 millions de tokens !
Je l’utilise depuis quelques semaines et c’est un sérieux concurrent à Copilot.
Certaines choses sont néanmoins moins bien, par exemple Supermaven raisonne beaucoup moins bien que Copilot (GPT-3.5 ou GPT-4).
Github permet maintenant de coder des extensions à Github Copilot.
Concrètement, il est possible d'utiliser les modèles utilisés par Copilot et de créer des assistants spécialisés que l'on peut ensuite solliciter dans le chat.
Il y a deux API:
- Chat API: permet de s'intégrer dans le chat de Copilot
- Language API: permet de faire des requêtes aux modèles basés sur GPT-3.5 et GPT-4 (le contexte maximum est de 4000 tokens)
Par exemple, l'assistant @stripe est capable d'aider un développeur à développer et debuguer une intégration Slack.
J'imagine que derrière, il y a un RAG avec la documentation à jour de Stripe.
C'est la porte ouverte à la création d'un écosystème, très bonne initiative de la part de Github à un moment ou la concurrence sur les assistant de code est rude (Supermaven par exemple)
Un travail impressionnant de reverse engineering sur le fonctionnement de l'extension Github Copilot.
Dans la partie sur le prompt engineering, on apprend notamment qu'un "token budget" est alloué à chaque prompt et que des chunks de documents potentiellement pertinents pour la génération sont ajoutés au prompt en fonction de différents scores.
La partie appel au modèle contient toutes les règles pour déclencher le modèle au meilleur moment. (par exemple juste après avoir écrit un caractère espace).
Surtout, il y a un contextual filter score qui est calculé à partir d'un simple modèle de régression local afin de déterminer si cela vaut la peine d'appeler le modèle distant.
Finalement pour la télémétrie, le point principal est un check fait par l'extension à différents intervalles (jusqu'à plusieurs minutes) pour vérifier si le code suggéré est toujours dans le code.
Bref, un très gros travail a été fait et est disponible sur le repo copilot-explorer.
Depuis cela a certainement évolué (par exemple l'utilisation de GPT-4 au lieu de Codex) car ce travail a plus d'un an maintenant.
Supermaven est un concurrent de Copilot pour la génération de code dans l'IDE des développeurs.
C'est le créateur de Tabnine, qui propose ce genre de solutions depuis 2018 (!), qui a développé Supermaven.
Leur parti pris c'est d'entrainer des modèles plus petits et plus spécialisés que GPT-4 pour pouvoir les utiliser virtuellement à chaque lettre écrite.
Ils ont donc développé leur propre solution en utilisant un modèle entrainé par leur soins:
- fenêtre de contexte de 300 000 tokens
- utilisation de la majorité du code d'un repo pour la suggestion
- latence faible (250ms annoncées vs ~800 pour Copilot)
Pour moi, des insights donné le plus intéressant est leur utilisation des séquences d'éditions plutôt que des fichiers. C'est à dire qu'ils considèrent l'enchainement des éditions faites par l'utilisateur (renommer des variables, écrire 2 lignes, supprimer 1 ligne, etc)
Je l'ai essayé et même en version gratuite c'est bluffant car les complétions sont instantanés et d'une qualité comparable à Copilot.
Mistral sort un modèle spécialisé dans la génération de code.
Côté Open Source, il offrirait les meilleurs performances pour le moment avec de meilleurs résultats que CodeLlama et DeepSeek Coder (le précédent SOTA).
Il est disponible dans le cloud de Mistral (La Plateforme) et une intégration est prévue avec TabNine par exemple.
Niveau Open Source, il y a du nouveau avec une release sous la nouvelle licence Mistral AI Non-Production License qui restreint le modèle à une utilisation non commerciale.
Concrètement, Codestral sera payant si vous comptez l'utiliser dans un produit que vous revendez à des utilisateurs.
Sans surprise, la vidéo de Devin qui prend une issue Upwork et la fix est pleine de fake.
Devin fix de soit disant erreurs dans des fichiers qui n'existent pas dans le repo et il utilise aussi des commandes Bash inutiles (head -n 5 file.json | tail -n 5
)
Aussi, l'auteur de la vidéo a complété la tâche en 35 min et c'était assez simple vu que le Readme était très clair.
Bref encore une fois les Agents complètement autonomes restent très décevants.
Un autre Agent capable de résoudre des issues GitHub.
Ils font mieux que Devin (13%) avec 22% des issues du SWE-bench-lite résolues
Sur le benchmark classique, ils sont à 16% vs le précédent SOTA, SWE-agent à 12.30
Github va un peu plus loin dans la génération de code en proposant un service de correction automatique des vulnérabilités détectées dans les repository.
Sous le capot c'est du GPT4 qui propose une modification d'une PR pour fix une potentielle faille de sécurité.
A priori ça reste des choses assez simple et cantonnées à un seul endroit comme échapper du HTML, éviter un prototype polution, etc
Pour l'instant, les failles sont détectées par des outils conventionnels et corrigé par GPT4 mais plus tard elles pourront aussi être détectés par GPT4
Un Agent Open Source comme Devin qui est capable de résoudre des issues Github.
Sur SWE-Bench, ils sont à 12.29 vs 13.84 (Devin, SOTA)
On est pas encore au niveau d'un développeur junior mais ça progresse.
Un Agent semi autonome capable de réaliser des tâches sur des codebases complexes.
Ses capacités d'adaptation à de nouvelles technologies semblent impressionnante, à voir si ça se confirme autrement que dans des vidéos.
Il obtient plus de 13% sur le SWE benchmark qui évalue les Agents sur des tâches de programmation. C'est moi devant le Claude 2 qui était devant jusqu'ici avec 4%
Un Agent capable de générer des applications entières avec frontend, backend et database.
Ils annoncent qu'il y aura des retouches manuelles à faire bien sur mais aussi qu'il est possible d'itérer avec un Agent sur chaque page.
Les pages doivent être déclarés avec toutes leurs Users Stories (As an User ....)
C'est ce qui se dessine après 1 an de GPT4, même si les LLMs sont impressionnant, le développement est une tâche tellement complexe que les développeurs ne sont pas près d'être remplacés.
En même temps vu la "fenêtre de contexte" qu'il faut gérer lorsqu'on maintient une application, ça ne m'étonne pas que les LLMs avec leur petite fenêtre de contexte assez imprécise ne soient pas capable de remplacer les développeurs.
Les LLMs continueront d'être des copilotes mais ils ne sont pas près d'être des pilotes.
Une solution de génération de code qui s'inspire grandement de AlphaCode de Google.
Les problèmes sont des exercices de code (code contest), ce sont des problèmes d'algorithmie ayant peu de rapport avec le quotidien d'un développeur.
Fonctionnement:
- génération de tests supplémentaires
- génération de solutions possibles
- exécution de chaque solution
- correction éventuelle
C'est plus ou moins du bruteforce
Un autre Agent capable d'écrire du code frontend simple.
Ils proposent un système de ticketing ou des product manager peuvent décrire leurs tickets pour qu'ils soient réalisés par les Agents.
Un Agent LLM qui est capable d'exécuter de petites fonctionnalités dans une codebase.
Un runtime qui permet d'exécuter du code de manière sécurisé dans une sandbox.
Le projet a été pensé pour exécuter le code en provenance d'Agents LLM.
Un dataset de problème de code avec un outil d'évaluation automatique.
Les problèmes sont en plusieurs langages et l'évaluateur permet de tester automatiquement des réponses qui auraient été générés par un LLM par exemple.
Les résultats de Mistral en one-shot code generation sont meilleurs que ceux de GPT4.
J'ai testé moi même sur ses exemples et j'obtiens plus ou moins les mêmes résultats.
Après les capacités d'un LLM ne sont pas évaluable uniquement avec des demandes en one-shot et d'ailleurs GPT4 se démarque par ses capacités de "raisonnement" qui s'exprime plutôt avec des Chain of Thoughts et autres méthodes multi-shot.