URL: https://linuxfr.org/users/killruana/journaux/j-aime-bien-l-auto-completion-par-ia-github-copilot Title: j'aime bien l'auto-complétion par IA (Github Copilot) Authors: jtremesay Date: 2024年05月16日T21:38:11+02:00 License: CC By-SA Tags: autocomplétion, copilot et intelligence_artificielle Score: 28 L'outil a déjà été présenté dans ce [journal](https://linuxfr.org/users/anonyme/journaux/github-lance-copilot-un-generateur-de-code-entraine-sur-du-code-gpl) de Anonyme et une alternative libre a été présenté dans ce [journal](https://linuxfr.org/users/pulkomandy/liens/fauxpilot-clone-de-github-copilot-libre-et-hors-ligne) de pulkomandy. En gros, [Github Copilot](https://github.com/features/copilot/) est un outil de complétion de code assisté par l'IA. Contexte : jusqu'à maintenant, j'ai presque pas utilisé les modèles de langage à la GPT parce que ça m'intéresse pas tellement. Je trouve le principe super intéressant et reconnais leurs très forts potentiels, mais son implémentation actuel assez bof. J'ai pas envie de donner mes sous à des mega-corpos qui en ont déjà trop et qui font un peu n'importe quoi et j'ai pas les moyens de faire tourner en local une alternative libre. Pis en plus je trouve ça insupportable de devoir leur parler en langage naturel. Je trouve ça tellement plus long et moins précis qu'avec du code :D Enfin bref. La boite nous a proposé de prendre des licences Github Copilot (Microsoft, mais c'est pas MES sous, alors je rationalise). Note : j'ai pas d'attaches particulières au produit lui même. Si la boite nous avait proposé un concurrent et que le truc est aussi bien, ben j'aurai fait un journal sur le concurrent. J'aurais aimé faire un journal sur l'auto-complétion par IA en général, mais je n'ai testé que Copilot. Je suis très réac et réfractaire au changement, du coup j'ai pas du tout chercher à utiliser les fonctionnalités "évolués" censés ohlala révolutionner ma vie tel que la génération de documentation, de tests, d'explication de code ou pour lui demander de faire des trucs pour moi. J'ai mes habitudes de vieux con, ça sera à lui de s'adapter à moi, pas l'inverse. Je ne l'utilise quasiment que pour l'auto-complétion. Et ben il s'en sort vraiment bien le bougre. Il utilise le contexte environnant et votre historique de code pour proposer des trucs généralement ultra-pertinants. Par exemple, truc ultra simple, je commence à taper ```typescript let elements = get_elements(); let first_element = ``` Là où un autocompleteur teubé me proposerait n'importe quel symbole disponible dans le contexte public et où un auto-compléteur plus intelligent pourrait peut-être me proposer `elements` vu que c'est le dernier symbole défini; Copilot a très bien compris mon intention et me propose de terminer la ligne comme ça `elements[0];`. C'est exactement ce que j'allais écrire. Parfait, quelques frappes d'économisés. Maintenant, commençons la déclaration d'une classe à la con en typescript : ```typescript class MyClass { attr_number: number; attr_string: string; attr_boolean: boolean; attr_array: Array; attr_object: Object | null; ``` Lui va me proposer le constructeur suivant : ``` constructor(the_number: number, the_string: string, the_boolean: boolean, the_array: Array, the_object: Object | null) { this.attr_number = the_number; this.attr_string = the_string; this.attr_boolean = the_boolean; this.attr_array = the_array; this.attr_object = the_object; } ``` Et ben parfait, c'est ce que j'allais faire. J'ai gagné 5 minutes de ma vie en n'écrivant pas du code pas intéressant mais quand même nécessaire. Pour être franc, j'avais même juste tapé ``` class MyClass { attr_number: number; ``` et c'est lui qui m'a proposé automatiquement le reste. Non mais vraiment. Ça fait gagner un temps de fou sur tous ces trucs chiants et permet de se concentrer sur le code marrant. Rien que pour ça je ne souhaite pas revenir en arrière et je serais très triste quand Microsoft fera invariablement de la merde et qu'on devra arrêter de l'utiliser. Pis même sur le code compliqué et intelligent il arrive à bien s'en sortir. Là où il m'a vraiment bluffé, c'est une fois où j'arrivais pas à faire un truc compliqué et relou avec les [aggregate](https://docs.djangoproject.com/en/5.0/topics/db/aggregation/#cheat-sheet) Django. Après de multiples tentative à tenter d'expliquer à Django via son ORM les stats que je voulais, je me résigna et fit l'impensable. J'écrivie une fat mais fonctionnelle requête SQL pour extraire mes précieuses données. Malheureusement, l'artisan que je ne suis ne peut toléré une telle souillure dans la base de code. Il me fait fallait vraiment la version Django ORM à base d'aggregate si je voulais pouvoir continuer à me regarder dans la glace et dormir la nuit. Impensable bis. Je décide de parler à Copilot (Reproduction de la scène avec du code crée à la rache pour l'occasion) Moi (verbatim):> wesh frère, voici une requete sql utilisé dans django. Est-ce que tu peux me donner le code équivalent qui utilise l'ORM django ?>> cursor.execute("SELECT count(*) FROM myapp_modela INNER JOIN myapp_modelb on myapp_modela.modelb_id = modelb.id WHERE modelb.bla = 4") Lui :> Bien sûr, voici comment vous pouvez réécrire cette requête SQL en utilisant l'ORM Django :> > ```python> from django.db.models import Count> from myapp.models import ModelA, ModelB> > count = ModelA.objects.filter(modelb__bla=4).count() ```>> Dans ce code, `ModelA` et `ModelB` sont les noms de vos modèles Django. `modelb__bla=4` est une condition de filtrage qui signifie "où modelb.bla est égal à 4". La méthode `count()` est utilisée pour obtenir le nombre total d'objets qui correspondent à cette condition. (par contre, d'où tu parles aussi poliment à quelqu'un qui commence la conversation par «wesh frère» ? arrête d'être aussi corporate et détent toi, t'es avec Jojo, pas le Pape) La vraie requête était vachement plus compliquée, mais il s'en était aussi bien sorti. J'ai envisagé de partir en retraite anticipé tellement je me suis senti inutile face à la puissance de l'outil. Alors même si parfois il propose des trucs absolument débiles, je pense que au global, je passe 25% à 50% de temps de moins à coder. Je dis pas que je produis plus hein, j'ai ma fierté de branleur à respecter. Pis bon, on code jamais à plein temps. Faut aussi réfléchir au code qu'on va écrire. Pis répondre à un mail, pis aider les pitchounes. Mais quand même, vrai gain de productivité sur les petits trucs relous. Enfin bref, j'aime bien, ça me fait gagner du temps, je pense que c'est un outil intéressant à avoir dans sa trousse à outils de développeur. Je ne pense pas que l'outil va me remplacer demain, y'a encore malheuresement besoin de gens qui savent plus ou moins ce qu'ils font pour valider ses propositions. Faut plus le voir comme du pair programming avec un junior voir parfois un export du domaine. Tu donnes la direction générale et lui s'occupe de remplir les blancs du mieux qu'il peut, et généralement de manière satisfaisante. Mais je pense qu'il peut déjà commencer à remplacer des stagiaires dans les startups du turfu de la startup nation (qu'elle startup n'a pas commencé par un founder qui dicte sa vision et 3 stagiaires qui executent ?). Et c'est une bonne chose. Y'a pas de raison d'exploiter des pitchounes pour un salaire de merde alors que c'est eux qui créent la valeur. Ils méritent mieux que ça. Si tu veux disrupter le monde avec ton app de la mort, tu prends une licence Copilot à 20$/mois, tu te sorts les doigts et tu te la code toi même ton app. Ou alors tu payes bien les gens. nan mais oh. (en tant qu'anarcho-communiste qui a mal tourné et ingieur en productivité, je suis pour la suppression de tout travail inutile qui peut être remplacé par une machine afin que les gens puissent faire des choses plus intéressantes de leur vie pour eux même et la société. Bien sûr, il faut que la richesse produite par la dite machine soit partagé entre tous pour que ça puisse fonctionner. J'm'en fou de vivre dans un monde où on produit plus. J'veux juste vivre dans un mode où on bosse moins. Et pas pour un patron. RÉVOLUTION!!!!!!!) Mais quand on voit comment ces choses ont évolués depuis leurs arrivées il y a à peine quelques années, je commence vraiment à m'inquiéter pour mon futur professionnel. Et toi, tu as testé quoi ? tu aimes bien ? tu recommendes ? ça te fait vivre une crise existentielle et te pousse à te renseigner sur l'élevage de moutons mérinos dans les Pyrénées ? Ça te fait mal à ton petit cœur de libriste de savoir qu'à cause de toi Microsoft reçoit des sous, pour en plus, comble du malheur, un produit qui te satisfait ? C'est vraiment un truc que j'aimerai avoir en local et en Libre. Malheureusement on a pas tous des RTX 4090. Et j'avais très viteuf testé [ollama](https://ollama.com/) y'a un temps. Mais sur du CPU, c'était la catastrophe. Mais n'hésite pas à me dire en commentaire si maintenant ça marche de manière satisfaisante et que ça vaille le coup que j'y reconsacre du temps. Je suis curieux du futur proche années (5-10 ans), qand les modèles de langages seront plus performants et petits, et que le matériel pour les faire tourner aura commencé à se répandre et être abordable. Et sinon, à part les extraits de codes, tout le journal a été écrit à l'ancienne par un humain, sans intervention d'une IA. Et je me dis que je suis un peu con, j'aurai pu faire en 15-30 minutes un journal qui m'a pris plus de 2h à rédiger (je suis lent, insatisfait de mon style, et facilement distrait) et qui aurait probablement était mieux...

AltStyle によって変換されたページ (->オリジナル) /