Temps de lecture estimé : 65 minutes

Cet article est SUPER long ! Pense à le mettre en favoris ⭐️

Comment coder avec l’intelligence artificielle

Utiliser GPT et les autres IAs en tant que développeurs pour coder mieux, plus vite, résoudre des bugs et créer des features.

Pour les développeurs, coder avec une intelligence artificielle, GPT ou une autre, va devenir obligatoire.

Depuis la sortie de ChatGPT pour le grand public, tout le monde est conscient que GPT-3 et GPT-4 ont durablement changé nos vies.

Les IAs comme ChatGPT, GitHub Copilot, TabNine, Intellisense, JetBrains Fleet etc, vont devenir la norme.

Tous les nouveaux outils à base d’IA pour les développeurs vont changer notre manière de coder.

Alors quels sont les usages de l’IA pour les développeurs et comment utiliser l’intelligence artificielle pour mieux coder ?

Mon but n’est pas de comprendre l’IA et le machine learning.

Mais de trouver des moyens d’utiliser l’IA pour coder mieux et plus rapidement.

  1. Explication du machine learning
    1. Processus de machine learning
    2. Qu'est-ce que l'intelligence artificielle ?
    3. Comment fonctionne le machine learning ?
    4. Deep Learning
    5. NPL : Natural Processing Language
    6. Algorithmes d'apprentissage automatique
    7. Modèles d'apprentissage
    8. Les modèles d'apprentissage supervisé (Supervised Learning)
    9. Les modèles d'apprentissage non supervisé (Unsupervised Learning)
    10. Les modèles d'apprentissage semi-supervisé (Reinforcement Learning)
    11. Lexique sur l'intelligence artificielle
  2. Pourquoi l'IA est importante pour les devs
    1. Ce qui a changé pour les développeurs grâce à l'IA
    2. Avantages à l'utiliser l'IA pour les développeurs
    3. L'intelligence artificielle aide les développeurs à mieux coder le métier
    4. Comment les devs vont coder dans le futur ?
    5. Ce que l'IA n'est pas encore capable de faire
    6. Comment parler avec une IA ?
  3. Les différentes intelligences artificielles pour coder
    1. OpenAI ChatGPT (GPT-3 et GPT-4)
    2. OpenAI ChatGPT Code Interpreter
    3. AutoGPT / AgenGPT / GodMode / BabyAGI
    4. Bard / Bing AI
    5. Facebook LLama
    6. Microsoft Jarvis + HuggingGPT
  4. Outils d'IA pour coder et extensions pour l'IDE
    1. GitHub Copilot
    2. GitHub Copilot Labs
    3. GitHub Copilot X
    4. Tabnine / Replit Ghostwriter / Codeium
    5. VSCode IntelliSense / Visual Studio IntelliCode
    6. JetBrains Fleet
    7. VSCode avec une extension ChatGPT
  5. Comment coder avec une IA
    1. Compétences nécessaires
    2. Prompt Engineering
    3. Bibliothèques et frameworks d'intelligence artificielle
    4. LangChain - Chain of Thought
    5. Bonnes pratiques IA + Code
  6. Coder avec GPT-3 : Un assistant IA dans le code (exemples)
    1. Combien ça coûte de coder avec une IA ?
    2. AI Driven Development : Développement dirigé par l'IA
    3. Templates de prompts pour les développeurs
    4. GPT-3 : Génération de code
    5. GPT-3 : Correction de code
    6. GPT-3 : Amélioration de code
    7. Faire des commits propres : Commiter avec l'IA
    8. Code review : Revue de code avec l'IA
  7. Limites de l'IA : Pourquoi les développeurs ont encore du temps devant eux
    1. Limites éthiques : Que vont devenir nos emplois ?
    2. Propriété intellectuelle et IA : À qui appartiennent les données ?
    3. Limites techniques actuelles
    4. Pourquoi les développeurs doivent coder avec l'IA
    5. Perte d'emploi dans le futur, à quoi ressemblera un développeur dans 10 ans ?
  8. Coder avec l'IA : Comment devenir un meilleur développeur ?

Explication du machine learning

L’intelligence artificielle est un mot très « marketing ».

Ce dont on parle le plus souvent quand on parle d’IA c’est de machine learning, aka apprentissage automatique ou apprentissage statistique.

D’ailleurs, le machine learning n’est qu’une partie de l’ensemble que compose l’IA.

L’IA englobe le Machine Learning (ML), et celui-ci englobe le DL (le Deep Learning).

Ce qui est important ici c’est de comprendre que ChatGPT et la quasi-totalité des autres outils d’IA qu’on utilise dans la tech en tant que dev, reposent sur du machine learning.

L’IA telle qu’on en parle aujourd’hui, prédit le prochain token le plus probable quand elle génère une réponse.

Réflexion de ChatGPT pour deviner le prochain Token le plus probable
Réflexion de ChatGPT pour deviner le prochain Token le plus probable

Processus de machine learning

Mon but n’est pas de comprendre comment fonctionne l’IA.

Mais plutôt en tant que développeur, d’avoir une vague idée de comment est-ce que cela fonctionne, pour mieux la comprendre et mieux savoir l’utiliser.

Completion, fonctionne de l'IA de GPT-3 avec OpenAI Codex
https://noise.getoto.net/tag/large-language-models/

Voici une trame typique qui compose un projet de ML :

  1. Objectif & Critères : Définis l’objectif de ton projet de machine learning. Quel problème cherches-tu à résoudre ? Quels sont tes critères de réussite ?
  2. Collecte de données : Collecte les données nécessaires pour entraîner ton modèle de machine learning. Cela peut impliquer de collecter de nouvelles données, d’utiliser des données existantes ou une combinaison des deux.
  3. Division des données : Divise les données collectées en plusieurs ensembles : un ensemble d’entraînement pour entraîner ton modèle, un ensemble de validation pour optimiser ton modèle et un ensemble de test pour évaluer les performances de ton modèle.
  4. Exploration : Analyse tes données pour comprendre leurs caractéristiques, leurs tendances et leurs anomalies. Cette phase est également connue sous le nom d’analyse exploratoire des données (EDA).
  5. Algorithmes : Choisis l’algorithme de machine learning qui convient le mieux à ton problème. Cela pourrait être la régression linéaire, la régression logistique, les arbres de décision, les réseaux de neurones, etc.
  6. Entraînement : Utilise l’ensemble d’entraînement pour entraîner ton modèle à prédire la variable cible.
  7. Réglage & Débogage : Ajuste les hyperparamètres de ton modèle pour améliorer ses performances. Le débogage peut également être nécessaire si ton modèle ne fonctionne pas comme prévu.
  8. Validation : Teste ton modèle sur l’ensemble de validation pour évaluer sa performance. Cela permet de régler les paramètres du modèle sans le surcharger.
  9. Test : Une fois que tu es satisfait de la performance de ton modèle, teste-le sur l’ensemble de test pour évaluer comment il se comportera sur de nouvelles données.
  10. Production : Si ton modèle fonctionne bien sur l’ensemble de test, tu peux le déployer dans un environnement de production, où il peut commencer à faire des prédictions sur de nouvelles données en temps réel.
  11. Décision de lancement : Il s’agit de décider de lancer ou non le modèle en production. Cela est généralement basé sur les performances du modèle pendant la phase de test.
  12. Surveillance & Maintenance : Une fois que ton modèle est en production, il est important de surveiller ses performances et de l’entretenir au fil du temps. Cela peut impliquer de le réentraîner sur de nouvelles données ou de l’ajuster en fonction des commentaires des utilisateurs.

Qu’est-ce que l’intelligence artificielle ?

Le terme « intelligence artificielle » est surtout employé pour son côté futuriste.

En vrai, ça fait.

Startup dans l'IA et appel API GPT-3
https://twitter.com/Sofi_Shvets/status/1619532479467237376

Ce qui se cache derrière les outils récents, c’est le Machine Learning « ML ».

On distingue 2 branches principales d’IA :

  • L’intelligence artificielle faible permet d’exécuter des tâches fixes pour lesquelles elle a été programmée : comme gagner aux échecs ou dessiner le portrait de quelqu’un.
  • L’intelligence artificielle forte elle, est pluridisciplinaire et peut s’acclimater dans plusieurs situations. De cette manière, elle se rapproche un peu plus de l’intelligence humaine.
L'objectif actuel est d'arriver à créer une singularité : une Intelligence dotée d’une conscience.

On parle aussi d’Intelligence Artificielle Générale.

Baby AGI : Baby Artificial General Intelligence
Baby AGI ou une intelligence artificielle générale (bébé)

Actuellement les IAs sont très spécifiques (elles peuvent facilement créer une image, générer du texte…), mais c’est tout.

Sous peu, on espère pouvoir leur faire faire plus.

Des projets existent pour chaîner les IAs entre elles afin de créer un parc d’IA et d’être capable de créer tout type d’information.

(Comme BabyAGI)

La conséquence d’une AI générale est qu’elle sera capable de prendre des décisions par elle-même, sans nous consulter.

Ce qui bien sûr, amènera à des situations problématiques (pour nous, les humains).

Comment fonctionne le machine learning ?

Pour simplifier fortement, le machine learning fonctionne ainsi :

  • Collecte de données
  • Préparation des données
  • Apprentissage et évaluation du modèle

Ce cours de 6h sur le machine learning est une masterclass, à regarder si tu t’intéresses au sujet.

https://www.youtube.com/watch?v=1vkb7BCMQd0

Qu’est-ce que le machine learning aka ML ?

Le machine learning permet d’apprendre à partir de données sans être explicitement programmés pour effectuer une tâche.

Autrement dit avec l'IA, tout est drivé par la data.

Le processus d’apprentissage commence par la collecte et la préparation de données, qui sont utilisées pour entraîner un modèle prédictif.

Pour entraîner le modèle, un algorithme d’apprentissage est sélectionné et alimenté avec des données d’entraînement.

Les données d’entraînement sont souvent divisées en ensembles de formations, de validations et de tests, afin de s’assurer que le modèle fonctionne bien sur de nouvelles données.

L’algorithme d’apprentissage est utilisé pour apprendre les relations entre les entrées et les sorties.

Il utilise les données d’entraînement pour ajuster les paramètres du modèle, de sorte que le modèle puisse faire des prédictions précises sur de nouvelles données.

L'intelligence artificielle : guide par Microsoft
https://microsoft.github.io/AI-For-Beginners/

Une fois le modèle entraîné, il est évalué en utilisant des ensembles de validation et de test pour s’assurer qu’il fonctionne bien, sur de nouvelles données.

(C’est ici que les humains ont un rôle à jouer, tout comme les parents à leurs enfants, on éduque l’IA sur ce que sont réellement les éléments qu’elle déduit)

Si le modèle fonctionne bien sur ces ensembles, il peut être déployé pour faire des prédictions sur de nouvelles données (non connues).

L’apprentissage initial est donc super important car il sert de base à ce qui sera utilisé.

Le processus d’apprentissage automatique est ultra-complexe et nécessite une grande quantité de données d’entraînement pour obtenir des résultats précis.

C’est pour cela que les grosses boîtes ont besoin de beaucoup de datas, on ne peut rien déduire ni prédire d’un flux de données trop maigre…

Problèmes du machine learning

Le sur-apprentissage (overfitting) et le sous-apprentissage (underfitting) sont des problèmes courants que tu as dû voir (notamment avec les posts de fails sur l’IA).

ChatGPT failure
https://twitter.com/AIFailed/status/1665750529337618432/photo/1

Celui-ci je ne suis pas sûr qu’il y ait un rapport mais il m’a beaucoup fait rire.

Concernant les problèmes d’inputs des IAs, voici un exemple donné par Aristide sur son blog.

Biais machine learning de patterns communs
https://proutia.substack.com/p/ce-que-jai-note-du-cours-sur-le-machine

Question pour toi qui lis cet article :

Regarde l'image ci-dessus 👆, est-ce que tu vois un pattern commun ? Comment tu pourrais déduire ou regrouper des infos ? T'as pu interpréter quelque chose de ce diagramme ?

Si oui, ton cerveau a essayé de construire de la logique à partir d’une donnée aléatoire : il n’y a rien à voir ici.

La même chose existe avec l’IA, et c’est ce qui rend les choses difficiles…

Elle hallucine pensant voir quelque chose qui n’existe pas, c’est une fausse déduction.

Autre chose de difficile : on se base tous sur notre propre expérience pour décrire des faits qui nous arrivent.

Les probabilités pour que, quelqu'un qui sort d'une maison avec un couteau à la main plein de sang ait tué quelqu'un d'autre sont fortes.

Pourtant, cette conclusion est uniquement drivé par notre expérience passée personnelle.

En l’état, c’est juste un fait.

Peut-être que la personne en question vient de cuisiner de la viande ?

Dans les faits, c’est peu probable, mais en l’état, rien ne prouve que ce soit un meurtrier.

Exemple d’Overfitting

L’overfitting (ou surapprentissage en français) est un problème courant en machine learning et en intelligence artificielle.

Supposons que tu aies un ensemble de données d’entraînement contenant des photos de chats.

(Dans différentes poses, différents environnements, mais malheureusement toutes les images de ton ensemble d’entraînement ont un fond vert.)

Chats sur un fond vert détectable par une IA
https://www.bing.com/images/create/plusieurs-chat-couch/64d35ba3674c4d289f4557fea599a241?id=X%2bA3CvvUK2u89hP

Si ton modèle est trop complexe, par exemple, si tu utilises un réseau de neurones profond avec beaucoup de couches et de neurones.

L'IA pourrait finir par "apprendre" que les chats sont toujours sur un fond vert, simplement parce que c'est ce qu'il voit dans les données d'entraînement.

Maintenant, supposons que tu testes ton modèle sur de nouvelles images où les chats sont sur des fonds différents (pas seulement verts).

Le modèle pourrait bien échouer à reconnaître correctement les chats parce qu’il a trop bien appris (ou surappris) les particularités des données d’entraînement :

À savoir qu’un chat doit être sur un fond vert pour être un chat.

L’overfitting est généralement un signe que ton modèle est trop complexe par rapport à la quantité et à la variété des données dont tu disposes.

Une façon de l’éviter pourrait être de simplifier ton modèle et de simplement augmenter la quantité et la diversité de tes données d’entraînement.

Exemple d’Underfitting

L’underfitting (ou sous-apprentissage), est l’autre extrémité de l’overfitting en machine learning.

Il se produit lorsque ton modèle est trop simple pour capturer la complexité réelle des données, et donc, ne peut pas apprendre les motifs généraux.

Supposons que tu développes une intelligence artificielle pour classer des images comme étant soit un « chat », soit « pas un chat ».

(Oui je sais, les devs aiment les chats)

Chats blancs uniquement avec l'IA
https://www.bing.com/images/create/only-white-cats-in-a-garden/64d3c97c91ef426baf93b2ce2f192d32?id=jmoZv2GmMae8ZL%2bRLy92Qg%3d%3d&view=detailv2&idpp=genimg&FORM=GCRIDP&ajaxhist=0&ajaxserp=0

Pour entraîner ton modèle, tu utilises des fonctionnalités très basiques et simplistes, comme la couleur dominante de l’image.

Dans ce cas, ton modèle est trop simple pour comprendre la complexité réelle de ce qui distingue les images de chats des autres.

Les chats peuvent être de différentes couleurs, formes et tailles, et peuvent apparaître dans de nombreux environnements sur une image.

Se baser sur la couleur dominante de l’image serait loin d’être suffisant pour identifier correctement un chat.

C’est un exemple d’underfitting, car ton modèle n’a pas suffisamment de complexité pour comprendre et apprendre les motifs réels dans les données.

Pour résoudre ce problème, tu devrais recueillir plus de caractéristiques sur les images (comme les formes, les textures, etc.) afin d’être capable de réellement reconnaître un chat.

Limite du machine learning

Le plus dur dans la vie pour un humain, c’est prédire le futur.

Parce-qu’on ne peut pas voir plus loin que la somme de nos expériences passées.

Si tu veux faire un essai, c’est simple à comprendre :

Essaye d'imaginer un monstre, tout de suite, en fermant les yeux 3 secondes.

Ça y est ?

Eh bien il y a 99,99% de chance pour que tu n’aies rien inventé du tout.

Ton cerveau a simplement fait la somme des images de monstre que tu as déjà vu dans ta vie… et a essayé de les assembler.

Exactement comme le fait une IA.

Les 2 fonctionnements ne sont pas si différents l’un de l’autre.

Monstres générés par les IAs
https://www.bing.com/images/create/a-monster/64d3ca7277074e3785e10061e1b86fed?FORM=GENCRE

La principale limite de l’IA, c’est la créativité.

L’imagination est propre à l’humain et permet de créer le futur, ce sera difficile pour une IA d’y accéder.

Mais cela va arriver…

Le test de Turing

Certaines machines (des IAs) sont tellement bonnes qu’elles permettent de tromper des humains.

Ces derniers pensent dialoguer avec un humain en face d’un chat, or c’est une machine.

Le test de Turing est un test de la capacité d’une machine à imiter une conversation humaine de manière suffisamment convaincante pour que l’humain en face ne puisse pas dinstinguer sa conversation d’un être humain ou d’une machine.

Le test d’Alan Turing
Test de turing
https://www.lemagit.fr/definition/Test-de-Turing

Bien sûr, ce test est sujet à controverse, notamment car il repose sur le fait que son succès dépende de la capacité de l’humain derrière à discerner le vrai du faux.

Les IAs deviennent vraiment bonnes sur le sujet, et d’ici quelques années on ne pourra plus savoir avec qui on parle sur internet, que ce soit sur un chat ou sur les réseaux sociaux.

Deep Learning

Le deep learning est une sous-catégorie de l’intelligence artificielle qui imite le fonctionnement du cerveau humain à l’aide des réseaux de neurones artificiels.

(En particulier les réseaux profonds avec de nombreuses couches)

Ces réseaux de neurones apprennent à partir de grandes quantités de données en détectant et en s’ajustant aux motifs dans ces données, de la même manière qu’un humain classique.

Le deep learning est utilisé dans beaucoup de technologies que nous utilisons aujourd’hui, comme la reconnaissance vocale (avec Siri ou Alexa, même s’ils ne comprennent parfois rien), la traduction automatique, la conduite autonome etc.

Pour en savoir plus je te renvoie à cette vidéo :

https://www.youtube.com/watch?v=trWrEWfhTVg

NPL : Natural Processing Language

Le NPL, c’est ton langage à toi, processé par une IA.

La manière dont tu t’exprimes va être classifiée et traitée afin de pouvoir enrichir une base.

Pour l’IA ça commence par le texte (c’est plus facile), mais les images sont également compréhensibles, tout comme les vocaux et la vidéo.

Le « traitement du langage naturel » est une branche de l’intelligence artificielle qui permet aux ordinateurs de comprendre, d’analyser et de générer du langage naturel.

Quand tu demandes à SIRI si il fait beau, il va écouter, classer, interpréter et comprendre ta demande pour te fournir la réponse adéquate.

Les applications de NLP sont nombreuses et variées, allant de la classification de texte à la compréhension de la parole.

Classification de texte

La classification de texte est une application courante de NLP qui consiste à classer automatiquement des documents en fonction de leur contenu.

Par exemple, un modèle de classification de texte peut être utilisé pour classer des emails comme spam ou non spam, ou pour classifier des articles de presse par sujet.

Email de spam
Email de spam reçu, au scoring on peut facilement trouver un point commun aux emails de Spam

Extraction d’information

L’extraction d’information est une autre application de NLP, qui consiste à extraire des informations structurées à partir de données non structurées.

C’est barbare, mais avec un exemple ça passe mieux.

Si tu donnes tous les blogs techs de France a mangé à une IA, elle sera capable de te dire que : « Mark Zuckerberg » est associé à l’organisation « Facebook », et que « Facebook » est associé à « Cambridge Analytica » (dans l’affaire des élections présidentielles truquées), et que de fait, Mark pourrait manipuler les élections.

Tout ça, c’est déduire des briques d’informations entre elles.

Facebook et l'affaire Cambridge Analytica sur le New York Time
https://www.nytimes.com/2018/04/04/us/politics/cambridge-analytica-scandal-fallout.html

Génération de texte

La génération de texte est une application de NLP qui permet aux ordinateurs de générer du texte de manière autonome.

Par exemple, un modèle de génération de texte peut être utilisé pour générer automatiquement des descriptions de produits pour un site de commerce électronique.

(J’ai des amis qui font ça pour le SEO, ça marche bien)

Génération de texte avec une IA depuis WordPress
Génération de texte avec une IA depuis WordPress

Apprentissage profond et deep learning

L’apprentissage profond est une technique d’apprentissage automatique qui est souvent utilisée pour le traitement du langage naturel.

Les réseaux de neurones sont un exemple d’algorithme d’apprentissage profond qui peut être utilisé pour améliorer la précision des modèles de NLP.

(Ça, je n’ai jamais rien compris alors je vais juste m’arrêter là)

Algorithmes d’apprentissage automatique

C’est là qu’on commence à rigoler.

Des algos d’apprentissage, il en existe plusieurs :

  1. Réseaux de neurones
  2. Arbres de décision
  3. Machines à vecteurs de support (SVM)
  4. Réseaux de neurones convolutifs
  5. Réseaux de neurones récurrents
  6. K-plus proches voisins
  7. Régressions linéaires
  8. Régressions logistiques
  9. Clustering
  10. Random Forests

Tu en as sous doute appris à l’école quelques-uns.

ChatGPT par exemple, est basé sur l’architecture GPT (Generative Pre-trained Transformer).

C’est un réseau de neurones récurrents à attention (une technique d’apprentissage supervisé).

ChatGPT a donc mangé énormément de data…

Grâce aux gros volumes de données (merci les GAFAMs), on a étiqueté un paquet de données pour faire apprendre le modèle.

Diagram fonctionnement ChatGPT
https://openai.com/blog/chatgpt

En combinant les algos d’IAs ensemble, on a été capable de faire du clustering, c’est-à-dire regrouper des données similaires en groupes (des clusters quoi) sans utiliser de données étiquetées.

Tu classifies de nouvelles données sans avoir besoin de modèle d’apprentissage initial (car la machine a appris).

Ceci est donc une technique d’apprentissage non supervisé !

Modèles d’apprentissage

Les modèles d’apprentissage peuvent être classés en 3 catégories.

Et certaines déductions comme la détection de visage se basant sur plusieurs modèles pour fonctionner.

Emotions visage détectable par IA
https://medium.com/@abhayakumar169/facial-expression-recognition-cf6a61f8045f

Les modèles d’apprentissage sont des instances spécifiques d’algorithmes d’apprentissage automatique qui sont entraînés pour effectuer des tâches spécifiques.

On va voir ça ensemble.

Les modèles d’apprentissage supervisé (Supervised Learning)

L’IA s’est entraînée sur des données étiquetées en apprenant à associer des entrées à des sorties (par exemple pour lire du texte écrit à la main, classifier des données).

Supposons que tu travailles pour une banque et que tu souhaites développer un modèle qui prédit si un client remboursera ou non un prêt dans le but d’acheter une maison.

Calcul montant prêt immobilier
https://www.meilleurtaux.com/credit-immobilier/simulation-de-pret-immobilier/calcul-des-mensualites.html

Tu as des données historiques sur les prêts passés qui comprennent des informations sur chaque prêt (montant, la durée, le revenu, historique de crédit, etc.).

Dans ton cas, ta tâche d’apprentissage supervisée est une tâche de classification : tu veux prédire une étiquette de classe (remboursé ou non remboursé) pour chaque futur prêt.

Tu pourrais aussi utiliser un algorithme d’apprentissage supervisé, comme la régression logistique, les arbres de décision, les forêts aléatoires, le SVM (Machine à Vecteurs de Support) ou le réseau de neurones pour entraîner ton modèle.

Tu fournis à l’algorithme les informations sur les prêts (les entrées) et sur le fait qu’ils aient été remboursés ou non (les étiquettes).

Une fois que le modèle a été entraîné sur ces données, tu peux l’utiliser pour prédire si un nouveau client à qui tu envisages de prêter de l’argent remboursera ou non son prêt !

C’est un exemple d’apprentissage supervisé parce que tu as supervisé l’entraînement du modèle en lui fournissant les bonnes réponses (les étiquettes de remboursement).

Principaux types d’algorithmes d’apprentissage supervisé :

  • Régression linéaire,
  • Régression logistique,
  • Arbres de décision,
  • Forêts aléatoires,
  • Support Vector Machines (SVM),
  • K-Nearest Neighbors (KNN),
  • Réseaux de neurones,
  • Réseaux de neurones convolutifs (CNN),
  • Réseaux de neurones récurrents (RNN, LSTM, GRU).

Les modèles d’apprentissage non supervisé (Unsupervised Learning)

Ils n’utilisent pas de données étiquetées et cherchent à découvrir des structures ou des modèles dans les données (en rassemblant les points communs).

Prenons toujours le même contexte, celui d’une banque, mais cette fois, imaginons que tu veuilles comprendre les différents types de comportements de dépenses de tes clients.

Le but, c’est de leur proposer des produits financiers sur mesure.

Tu disposes d’une grande quantité de données sur les transactions de tes clients (montant, type de chaque transaction (épicerie, restaurant, factures d’énergie, etc.)), mais tu ne sais pas à l’avance combien et quels types de comportements de dépenses existent.

Capture d'écran compte Boursorama
Liste des dépenses d’une personne

C’est ici qu’intervient l’apprentissage non supervisé :

Tu pourrais utiliser une technique comme le clustering, via l’algorithme K-means ou DBSCAN, pour regrouper les clients en fonction de leurs comportements de dépenses.

Chaque groupe (ou cluster) que l’algorithme identifie représenterait un type de comportement de dépenses différent.

Ici, tu n’auras pas fourni de « bonnes réponses » à l’algorithme d’apprentissage.

Au lieu de cela, l’algorithme a dû découvrir lui-même les structures communes dans les données.

Principaux algorithmes de clustering :

  • Fuzzy C-Means,
  • Mean Shifts,
  • K-means,
  • Agglomerative,
  • DBSCAN

Les modèles d’apprentissage semi-supervisé (Reinforcement Learning)

Ces derniers utilisent une petite quantité de données étiquetées comme base, puis sont soumis à une grande quantité de données non étiquetées (utilisé par exemple pour la reconnaissance vocale ou la traduction).

Imaginons, ta banque a créé un bot de trading.

Pour améliorer les performances du bot, tu peux utiliser l’apprentissage par renforcement.

Dans ce contexte :

L’agent (le bot de trading) interagit avec l’environnement (le marché financier) en effectuant des actions (achat, vente, détention) et en recevant des récompenses (bénéfice ou perte).

L’objectif de l’agent est d’apprendre une politique – c’est-à-dire une stratégie pour choisir les actions – qui maximise la récompense totale.

Prix de l'action O
Prix d’une action en bourse

L’apprentissage par renforcement peut être une méthode très efficace pour résoudre ce type de problème, car il permet à l’agent d’apprendre par essais et erreurs,comment exploiter son environnement pour maximiser la récompense !

Exemple : Si j’achète et que je revends trop vite une action trop volatile de type « real estate », dans 80% je perds de l’argent, alors je ne vais plus le faire.

Typiquement une leçon que l’IA tire en faisant des essais et des erreurs.

Algorithmes d’apprentissage semi-supervisé principaux :

  • A3C,
  • Genetic Algorithm,
  • DQN,
  • SARSA,
  • Q-Learning,
  • R Learning,
  • TD Learning.

Lexique sur l’intelligence artificielle

Certains termes reviennent beaucoup, voici les plus courant quand on parle l’IA et de code.

(Volontairement expliqué simplement, perso ça me casse la tête tous ces termes…)

  1. Algorithme : Une série d’instructions que l’ordinateur suit, un peu comme une recette de cuisine.
  2. Algorithme de classification : Un outil qui aide l’ordinateur à trier les choses en différentes catégories.
  3. Algorithme de clustering : Une méthode qui permet à l’ordinateur de regrouper des choses similaires.
  4. Algorithme génétique ou évolutionnaire : Une technique qui utilise les principes de l’évolution pour trouver la meilleure solution.
  5. Apprentissage actif : Un système d’IA qui pose des questions pour apprendre plus efficacement.
  6. Apprentissage automatique (Machine Learning) : Un processus par lequel un ordinateur apprend à partir de données.
  7. Apprentissage fédéré : Plusieurs systèmes d’IA apprennent individuellement puis partagent leurs connaissances.
  8. Apprentissage non supervisé : Un système d’IA qui apprend sans avoir besoin de réponses correctes pour se guider.
  9. Apprentissage par transfert : Un système d’IA qui utilise ce qu’il a déjà appris pour résoudre un nouveau problème.
  10. Apprentissage supervisé : Un système d’IA qui apprend en se basant sur des réponses correctes.
  11. Apprentissage profond : Un type d’apprentissage automatique qui utilise de nombreuses couches d’information pour apprendre des choses complexes.
  12. Apprentissage semi-supervisé : Un système d’IA qui apprend en utilisant à la fois des données avec et sans réponses correctes.
  13. Auto-encodeurs : Un type de réseau de neurones qui apprend à compresser des informations puis à les décompresser.
  14. Biais algorithmique : C’est quand un système d’IA fait des erreurs ou des préjugés parce qu’il a appris à partir de données biaisées.
  15. Intelligence artificielle : La capacité d’une machine à imiter l’intelligence humaine.
  16. Intelligence artificielle générale (AGI) : Une IA capable de tout savoir et de prendre des décisions ultra-complexes, comme le cerveau humain mais avec une quantité de données illimitées.
  17. Intelligence artificielle faible (IA faible) : Une IA qui est conçue pour faire une tâche spécifique, comme recommander une chanson.
  18. Intelligence artificielle forte (IA forte) : Une IA hypothétique qui comprend et pense comme un humain.
  19. Intelligence artificielle générative : Des systèmes d’IA qui peuvent créer de nouvelles choses, comme des images ou de la musique.
  20. Modèles de Langage de Grande Taille (LLM pour Large Language Model) : Des modèles d’apprentissage automatique qui ont été formés sur une grande quantité de texte
  21. Réseaux antagonistes génératifs (GAN) : Deux réseaux de neurones qui travaillent ensemble pour créer de nouvelles choses.
  22. Réseau de neurones artificiels (ANN ou RNA) : Un système qui imite le fonctionnement du cerveau humain pour résoudre des problèmes.
  23. Réseau neuronal convolutif (CNN ou RNC) : Un type de réseau de neurones qui est bon pour comprendre les images.
  24. Réseaux de neurones profonds (DNN ou RNP) : Des réseaux de neurones avec beaucoup de couches qui peuvent apprendre des choses très complexes.
  25. Réseau neuronal récurrent (RNN ou RNC) : Un type de réseau de neurones qui est bon pour comprendre les séquences, comme le langage ou la musique.
  26. Systèmes experts : Des programmes qui sont très bons dans un domaine spécifique, comme la médecine ou le droit.
  27. Systèmes multi-agents : Plusieurs IA qui travaillent ensemble pour résoudre un problème.
  28. Text-to-Image : Un système qui peut transformer une description textuelle en une image.
  29. Text-to-Speech : Un système qui peut transformer du texte en parole.
  30. Traitement automatique du langage (TAL) : Un domaine de l’IA qui permet aux ordinateurs de comprendre et de générer du langage humain.
  31. Traitement du langage naturel (NLP) : La capacité d’un ordinateur à comprendre et à générer du langage humain de manière naturelle.

Pourquoi l’IA est importante pour les devs

Le machine learning est un enjeu majeur pour les développeurs, car cela a rendu possible le fait de coder avec l’IA.

Pour moi, c’est un game changer.

Il y a un avant et un après.

Les devs qui refusent de coder avec l'IA vont se retrouver éjecté du marché dans les prochaines années.

(Enfin, c’est mon avis)

On est en 2023, et l’IA d’OpenAI, GPT-4, quelques mois après sa sortie est capable de générer du code en fonction d’un bout de papier.

(Oui c’est du code simple et un problème simple… mais on est qu’en 2023 !)

Démo GPT-4 : Générer du code fonctionnel en fonction d’un morceau de papier

Ce qui a changé pour les développeurs grâce à l’IA

Pour moi plein de choses vont changer dans nos tâches quotidiennes de dev.

L’IA a déjà changé ma manière de coder, que ce soit avec GPT3 ou avec Copilot.

J’utilise beaucoup moins Google, encore moins StackOverflow.

Désormais, je demande directement à l’IA de générer le code dont j’ai besoin ou de corriger un morceau pour moi.

Apparemment, je ne suis pas le seul, entre Janvier et Juillet 2023, StackOverflow aurait perdu 50% de son trafic ?

Chute du trafic de StackOverflow dû à l'IA
https://observablehq.com/@ayhanfuat/the-fall-of-stack-overflow

Même si ces informations ont été démenties par SO et qu’ils ont une stratégie marketing avec OverflowAI, ils n’en restent pas moins que l’IA est en train de nous détourner fortement des recherches Google.

StackOverflow en paye déjà le prix…

Dans les prochaines années, les IAs vont écrire ton code, à ta place, avec une précision de dingue.

N’en doutons pas car c’est déjà là.

Seulement quelques années ont passé et AlphaCode semble déjà si loin…

Voici un documentaire sur l’IA de Google, Alpha, qui a réussi là où beaucoup avaient échoué avant en devenant la meilleure joueuse du monde incontestée de Go.

(Spoiler : Elle a inventé un coup que tout le pensant injouable et a ainsi ouvert des portes que les humains n’avaient pas réussi à trouver)

https://www.youtube.com/watch?v=WXuK6gekU1Y

Avantages à l’utiliser l’IA pour les développeurs

En attendant 10 ans que l’IA code presque à notre place, elle nous permet déjà de :

  1. Automatiser des tâches répétitives (comme la génération de code, de documentation ou de tests)
  2. Se concentrer sur les problématiques métiers plus sur la technique (ChatGPT peut créer des algos que tu ne connais pas, alors utilise-le pour ça)
  3. Optimiser du code et trouver des bugs (puis les corriger, directement avec l’IA)
  4. Concentrer nos efforts sur l’utilisateur et l’optimisation de l’architecture
  5. Privilégier la donnée au code pour en faire ressortir les bonnes infos
Utiliser l'IA pour coder c'est remettre le focus sur ce qui est important : Stabiliser un projet avec des tests ou générer un bonne doc, corriger plus de petits bugs qu'on remet à plus tard.

Il sert à ça, le temps qu’on gagne.

L’IA va aussi permettre de réduire les coûts :

  • Moins de développeurs nécessaires
  • Plus besoin d’équipes pour faire des tests
  • Optimisation du code et des ressources (pour les serveurs)
Commentaire YouTube sur une vidéo qui parle de l'intelligence artificielle pour les développeurs
https://www.youtube.com/shorts/kUUN-Q1VWFs

L’intelligence artificielle aide les développeurs à mieux coder le métier

Si l’IA s’occupe de la technique, quelles tâches seront confiées aux développeurs ?

Les seules tâches qui ont réellement de la valeur :

Résoudre des problèmes.

Techniquement parlant, l’IA nous aide en tant que codeur :

  1. Amélioration de notre efficacité (pour coder plus vite et mieux)
  2. Détection de bugs (avec beaucoup de data on peut trouver quelles parties sont incohérentes)
  3. Meilleure retranscription de la demande dans le code
  4. Découverte de nouvelles solutions (l’IA pourra proposer des choses que tu ne connais pas, comme un algo ou une solution)
  5. Solution aux problèmes complexes (les fois où tu as galéré, l’IA pourrait peut-être comprendre ton problème mieux que toi)
  6. Sécurité optimisée (ça j’y crois dans les années à venir)

On pourra se concentrer sur le Software Craft, sur l’architecture, sur le besoin métier, sur la cohérence des décisions fonctionnelles…

Et moins sur la technique.

C’est dingue d’ailleurs de se dire que tous ces avantages sont déjà en grande partie disponibles pour tous les développeurs.

Coder avec une IA dans son IDE
Coder avec une IA dans son IDE

ChatGPT est gratuit tout comme Tabnine, et GitHub Copilot ne coûte pas grand-chose…

Il y a un énorme gain de productivité à la clef à utiliser l’IA pour coder.

Comment les devs vont coder dans le futur ?

Des outils dopés à l’IA permettent déjà des suggestions de code super efficaces, et ça va continuer.

On va pouvoir exprimer notre intention clairement et l'IA va coder ce qu'elle devine qu'on souhaite.

Corriger du code avec GPT-3 et GPT-4, ça fonctionne super bien sur de petites features et de petits morceaux de code.

Tellement bien que des outils ont vu le jour pour essayer de l’automatiser.

Corrige le code suivant jusqu'à ce que la sortie soit X.

Ce serait dingue si le code pouvait s’auto corriger non ?

C’est en train d’arriver, Wolverine essaye de le faire en Python.

Et GPT-4 Code Interpreter le fait aussi.

Corriger du code en automatique avec l'IA
https://twitter.com/bio_bootloader/status/1636880208304431104

D’ici quelques années, cela fonctionnera encore mieux, et sur de grosses parties de code.

Notamment parce que, pour l’instant, l’IA n’a pas accès à l’ensemble de notre codebase (encore heureux car la confidentialité des grosses boîtes derrière, c’est pas ça).

Mais ça va arriver, des applis non officielles commencent à le faire avec GPT-3.

Quand l'IA aura accès à tout le code, au contexte de l'application, aux règles métiers dans Jira, aux tests qui décrivent l'implémentation ; j'ai de gros doutes sur le fait qu'elle ne soit PAS capable de coder à notre place.

Pas toi ?

Pour moi, les développeurs qui utilisent l’IA codent déjà plus rapidement et plus efficacement tout en produisant des apps de meilleure qualité.

Alors quand tout notre code lui sera compréhensible, je n’imagine pas.

Avec les bons outils, on sera capable de piloter des intelligences artificielles qui coderont pour nous.

On vérifiera que le code produit fait bien ce que l’on souhaite.

Notre compréhension du problème nous amènera à générer de tests ultra-poussés et cohérents.

L’IA vérifiera son propre code sous notre contrôle.

Demander à ChatGPT Code Interpreter de supprimer des caractères HTML
Demander à ChatGPT Code Interpreter de supprimer des caractères HTML

Ce que l’IA n’est pas encore capable de faire

Le problème majeur de l’IA (pour le moment), c’est non seulement sa créativité, mais surtout le fait que :

Quand l’IA ne sait pas, elle invente.

Tous les développeurs qui ont déjà dialogué avec une IA.

Or, pour des tâches où il ne faut surtout pas inventer car on a besoin de cohérence (à savoir le code), elle « hallucine », au sens premier du terme.

C’est un vrai problème pour les développeurs car on ne peut pas se permettre d’utiliser une IA qui invente du code ou des problématiques métiers qui n’existent ou ne fonctionnent pas.

Avant / Après coder avec l'IA d'OpenAI
https://www.reddit.com/r/ProgrammerHumor/comments/zdvpwb/how_openai_chatgpt_helps_software_development/

C’est pour cette raison que ces domaines ont encore de l’avenir :

  • Le design révolutionnaire
  • La sécurité et les hacks 0 day
  • L’invention de nouveaux projets (comme un Sass)

Pour tout ça, l’IA va encore galérer un petit moment :

  • La créativité est très limitée
  • La compréhension parfaite du NPL (aka ce qu’on lui demande) n’est pas au point
  • Les endroits où le jugement humain et la prise de décision sont OBLIGATOIRES
  • La résolution de problèmes complexes
  • Le manque de vue d’ensemble, des tenants et des aboutissants

Écrire du code pour parcourir un tableau ou faire un appel HTTP…

C’est déjà à sa portée.

En tant que dev, on va devoir se concentrer sur des tâches à forte valeur ajoutée et à forte créativité pour rester compétitif.

Les hard skills c’est bien, mais ce sont les softs skill qui vont primer.

Plus que jamais.

Comment parler avec une IA ?

La plupart des personnes qui testent GPT-3.5 sont souvent déçues.

L’IA ne comprend pas exactement ce qu’elles souhaitent, pire encore, comme elle ne voit pas où on veut en venir, elle invente.

Pour l'instant, l'IA ne fait que générer le token le plus probable après une demande.

D’où l’importance de :

  • Contextualiser beaucoup ;
  • Ne pas se contredire ;
  • Définir précisément ce que l’on souhaite.

Parler avec une IA, aka le prompt engineering, ça s’apprend.

(Et en tant que dev, on va devoir l’apprendre)

Exemple d’un prompt peu clair :

Exemple d’un prompt beaucoup plus clair (avec un plus haut taux de succès) :

Les différentes intelligences artificielles pour coder

Différents outils basés sur l’IA existent.

On rigole souvent en disant que tous utilisent l’API d’OpenAI…

Et même si c’est souvent vrai, il n’empêche que d’autres font leur apparition.

L’écosystème tout entier se retrouve bouleversé, et c’est génial pour les devs.

De notre côté, on a un paquet d’outil à base d’IA à utiliser et tout autant de librairies cool.

(Le plus dur étant de faire le tri entre les outils à base d’IA qui sont utiles et les autres qui ne sont que marketing)

Outils à base d'IA dans notre quotidien de tech
https://twitter.com/alexxubyte/status/1612705826179014656

OpenAI ChatGPT (GPT-3 et GPT-4)

ChatGPT a secoué tout le monde avec GPT-3, puis encore plus avec GPT-4.

ChatGPT 3.5 est gratuit pour tout le monde, mais son API est payante tout comme l’api de GPT-4.

Le principal avantage de cet AI dans un chat c’est sa capacité à avoir des conversations cohérentes.

Personnellement, je l’utilise quasiment tout le temps, même dans mon temps perso.

GPT-3 démo avec une question de développement web
GPT-3.5 : Question rapide pour un développeur web
GPT-4 : Réponse à une question simple de développement web
GPT-4 : Réponse à une question simple de développement web

Il y a une différence de taille entre GPT-3 et GPT-4.

  • GPT-3 est beaucoup plus rapide mais comprend moins bien ce qu’on lui demande, je l’utilise par défaut dès que les entrées et les sorties sont simples (corriger un algo, créer du code simple, générer une liste, un plan, des idées…)
  • GPT-4 est beaucoup plus lent mais comprend mieux le contexte, arrive à déduire ce qu’on ne lui dit pas et est plus précis (rédaction de texte, compréhension plus complexe, résolution de problématique métier forte)

OpenAI ChatGPT Code Interpreter

Mi-2023, ils ont sorti aussi une nouvelle feature appelée « Code interpreter », qui permet d’aller encore plus loin en générant des graphiques, en comprenant du code et en étant capable de traiter des documents.

Avec Python, on est capable de lui demander de télécharger ou de téléverser des documents.

La principale avancée pour les développeurs : ChatGPT Code Interpretor ne se fit qu’à la donnée, il n’hallucine pas.

(Tester ChatGPT, ChatGPT Code Interpreter)

Mieux encore, en générant le code Python, si jamais il se trompe dans l’écriture du code, il est capable de le corriger lui-même pour aller plus loin.

Cette présentation est d’ailleurs top (mais ne regarde pas le début de la vidéo)

https://youtu.be/_THpT7pAQrc?t=213

AutoGPT / AgenGPT / GodMode / BabyAGI

Les intelligences artificielles pour coder sont efficaces si on spécifie bien l’entrée et la sortie, mais beaucoup moins si on leur donne un plus gros problème à résoudre.

D’où l’idée de chaîner les IAs entre elles (qu’on verra plus tard avec Jarvis.

L »idée est de faire des boucles itératives sur un objectif et forcer l’IA à recommencer jusqu’à atteindre l’objectif.

Task Driven Autonomous Agent
https://twitter.com/yoheinakajima/status/1640934493489070080?s=20

Pour les développeurs, c’est l’occasion d’aller plus loin que simplement interroger un chat :

  • AutoGPT : Utilise ChatGPT (GPT-3.5 et GPT-4), définis un objectif, fait une recherche sur internet, interprète les résultats et itère jusqu’à arriver à l’objectif.
  • AgenGPT / GodMode : La même chose mais en ligne.
  • BabyAGI : Utilise ChatGPT (GPT-3.5 et GPT-4) LangChain pour définir un objectif et l’atteindre (très similaire à AutoGPT).

Bard / Bing AI

Les GAFAMs sont sur le coup avec l’IA, OpenAI a vraiment fait peur à tout le monde et depuis tous essaye de rivaliser.

Actuellement, en juillet 2023, je pense que GPT-4 est probablement l’IA grand public la plus fiable à utiliser.

Cependant les autres géants sont sur le coup, avec l’avantage de proposer eux aussi, des IAs gratuites.

  • Bard : L’IA développée par Google dans le but de concurrencer directement l’IA de chat d’OpenAI, ChatGPT.
  • Bing Chat (AI) est une technologie d’intelligence artificielle développée par Microsoft pour améliorer les fonctionnalités de recherche et de chat de son moteur de recherche Bing. (Microsoft Edge requis)
  • Claude : Une IA qui génère du texte de manière bluffante, mais elle n’est pas encore disponible en France.
  • ChatGPT : Créé par OpenAI, c’est actuellement l’IA grand public la plus fiable.
Bard, L'IA de Google
https://bard.google.com/

Facebook LLama

L’IA open source de Facebook avec l’énorme avantage, en plus d’être performante elle est ouverte en Open Source.

Pour rappel, l’IA a besoin d’être entraînée pour être efficace, donc d’avoir un modèle fiable, stable et cohérent.

C’est justement ce modèle qui est rendu OpenSource.

LLaMa peut être téléchargée et lancée en local si on demande les accès à Meta (le modèle ne semble pas 100% libre donc).

Perplexity a ouvert un accès de Chat pour dialoguer avec LLaMa.

Accès au chat de l'IA de Facebook, LlaMa
https://labs.perplexity.ai/

Bonus : Les modèles LLM d’AutoGPT et de BabyAGI (et même la lib LangChain) sont utilisables avec ChatGPT mais aussi avec Llama !

Microsoft Jarvis + HuggingGPT

Microsoft a collaboré avec OpenAI Codex pour sortir GitHub Copilot, ce qui a été un succès.

À côté de ça, Microsoft n’est pas en reste, notamment avec Jarvis.

Le but est d’interconnecter plusieurs IA spécifiques avec la communauté Hugging Face afin d’avoir une mini IA générale qui soit capable de résoudre des problèmes encore plus complexes.

Les modèles sont fournis en OpenSource et son notamment capables de gérer :

  • 📝 Texte, pour des tâches telles que la classification de texte, l’extraction d’informations, les réponses aux questions, les résumés, la traduction, la génération de texte, dans plus de 100 langues.
  • 🖼️ Images, pour des tâches telles que la classification d’images, la détection d’objets et la segmentation.
  • 🗣️ Audio, pour des tâches telles que la reconnaissance vocale et la classification audio.
Illustration de Jarvis, une IA qui en pilote plusieurs autres
https://github.com/microsoft/JARVIS

L’étude sur Jarvis et ses ambitions est disponible ici.

Outils d’IA pour coder et extensions pour l’IDE

Les intelligences artificielles pour coder en ligne sont sympas, mais l’interaction est toujours compliquée.

On doit copier/coller du code dans ChatGPT pour que cela soit efficace, ce qui prend du temps et de l'énergie mentale.

D’autant plus que là aussi il n’a pas le contexte…

Ne serait-ce pas plus simple de tout avoir directement dans son IDE ?

GitHub Copilot

Sans doute l’outil le plus connu pour aider les développeurs à coder avec l’IA :

GitHub Copilot, c’est un projet qui est né de la collaboration entre OpenAI Codex et Microsoft.

Fonctionne de l'IA OpenAI Codex avec GitHub Copilot
Comment GitHub Copilot fonctionne

Globalement, c’est simple.

Copilot dans ton IDE (VSCode, JetBrains, NeoVim) voit ton code et est capable de deviner le prochain token le plus probable : aka ton intention.

À l’aide des bases de données de GitHub et de StackOverflow, il permet d’agréger une quantité phénoménale de données.

Note : En alternative OpenSource, GitLab a aussi commencé à travailler sur un assistant de code IA.

Utilisation de l'IA d'OpenAI Codex, GitHub Copilot pour générer du code
Générer une feature avec GitHub Copilot, étape par étape

L’outil est payant, coûte 100$ par an mais c’est un réel bénéfice pour les développeurs.

40% des suggestions de Copilot sont correctes en moyenne, dans les faits on peut coder presque 2 fois plus rapidement avec cette IA.

D’ici quelques années, le CEO de GitHub escompte que 80% des suggestions soient correctes…

Découvrir 8 façons de coder plus vite avec la formation sur Copilot ici.

GitHub Copilot Labs

C’est un projet expérimental transverse à GitHub Copilot pour lui rajouter des fonctionnalités.

Copilot Labs peut :

  • Corriger du code
  • Expliquer du code
  • Traduire du code dans un autre langage
  • Modifier du code en quelques secondes avec des brushs tout-en-un.

Ces fonctionnalités sont cool mais Copilot X est en train de les absorber petit à petit…

Seules les brushs m’intéressent personnellement.

Outils d'IA associé à GitHub Copilot
GitHub Copilot Labs : Utiliser les brushs pour gagner du temps de dev

L’extension est gratuite si on a un abonnement à GitHub Copilot.

GitHub Copilot X

C’est un set de fonctionnalités dopé à l’IA de GitHub Copilot (pour l’instant uniquement accessible depuis une liste d’attente).

Générer et corriger du code avec GitHub Copilot X
Générer et corriger du code avec GitHub Copilot X

Pour le coup, Copilot X va encore plus loin que ça en proposant un Chat directement dans notre IDE…

Ça, c’est pour moi la meilleure feature.

(Même si on peut aussi discuter avec)

Pour l'instant l'IA de Copilot n'a accès qu'au fichier courant, mais quand elle aura accès à tout le code source, les suggestions seront encore plus pertinentes.
GitHub Copilot X : Coder avec l'IA directement dans son IDE avec le chat
GitHub Copilot X : Discuter avec le chatbot de l’IA directement dans son IDE

Pour en savoir plus sur toutes les fonctionnalités de Copilot Chat, c’est ici (disponible sous liste d’attente) :

Tabnine / Replit Ghostwriter / Codeium

Tabnine et Ghostwriter sont deux outils indépendants qui fonctionnent super bien pour les avoir testés.

Que ce soit sous forme de chat ou d’outils, ils permettent d’aller encore plus loin :

  • Replit propose de coder avec son téléphone ;
  • Tabnine rend les prédictions locales possibles (sans accès obligatoire à internet).

Mais honnêtement, j’ai peu utilisé ces outils.

Je préfère parier sur Copilot qui est maintenu par Microsoft et a moins de chance de se voir déprécié dans le futur.

Codeium est gratuit et est vachement mis en avant par la communauté anglophone, ça vaut sûrement le coup de le tester.

J’avais utilisé Tabnine il y a quelques mois, ça marche vraiment bien, mais je trouve Copilot plus puissant.

Coder avec l'IA de Tabnine
https://www.tabnine.com/
Coder avec l'IA grâce à ghostwriter
https://replit.com/site/ghostwriter

VSCode IntelliSense / Visual Studio IntelliCode

VSCode a son système de suggestions personnalisées, ce qui fait que l’autocomplétion de l’IDE est puissante.

(Même si je la trouve moins performante que la suite JetBrains, sur des outils langages comme Kotlin ou PHP, il n’y a pas photo)

IntelliSense est un outil général d’IA pour diverses fonctionnalités d’édition de code, y compris :

  • la complétion de code,
  • l’information sur les paramètres,
  • assistance de contenu,
  • linting,
  • suggestion de code.

C’est de l’assistance et de l’autocomplétion ++ basée sur ce qui est déjà utilisé dans l’application (pour te suggérer les fonctions les plus utilisées, par exemple).

Par défaut, je l’ai activé sous VSCode et ça me permet d’être efficace sur l’autocomplétion dont VSCode manque parfois.

VSCode IntelliSense avec l'IA de Microsoft
VSCode IntelliSense, utiliser l’IA pour coder plus rapidement avec l’autocomplétion et les suggestions

JetBrains Fleet

Fleet, c’est le nouvel IDE de JetBrains.

Après WebStorm, PHPStorm, IntelliJ, PyCharm etc, ils ont décidé de tout synthétiser dans un seul logiciel, multilangages.

Il se retrouve dans cette section car tout comme Intellisense, il utilise un système d’IA pour donner des suggestions avec le « Code engine ».

Cependant, avec la montée en puissance de l’IA, je ne suis pas certain qu’ils le développent plus que ça.

Ils doivent déjà se battre contre VSCode qui est gratuit et c’est déjà un beau challenge !

JetBrains Fleet, un éditeur de code performant
https://www.jetbrains.com/fleet/

VSCode avec une extension ChatGPT

GPT-3.5 et GPT-4 sont utilisables depuis VSCode.

Plusieurs extensions permettent une intégration avec ChatGPT, mon choix s’est arrêté sur une extension backée par Y Combinator.

Le plus important pour choisir la bonne extension :

  • L’authentification (si t’as utilisés un SSO comme Google pour créer ton compte ChatGPT tu ne pourras pas, à l’heure actuelle, sign in avec ton login / password)
  • L’indexation de ta base de code : parce que le meilleur moyen d’avancer avec ChatGPT c’est qu’il ait accès à ta base de code pour te proposer des interactions entre tes différents fichiers

Trouver son extension ChatGPT pour VSCode.

Intégrer ChatGPT directement dans VSCode
https://www.easycode.ai/

Comment coder avec une IA

Coder avec une IA, ça va devenir la norme dans quelques années.

Pour moi, plus aucun développeur ne codera sans IA d’ici 10 ans, voire moins.

À ce sujet, il y a une compétence importante à maîtriser qu’on a souvent délaissé : exprimer son intention.

Le prompt engineering c'est justement être capable d'exprimer son intention, ce que l'on souhaite, et comment.

Utiliser ChatGPT n’est pertinent que si tu sais lui demander quoi faire…

Sinon, il est inutile.

Tout comme un développeur qui coderait des choses complexes grâce à l’IA mais qui ne répondrait pas aux besoins métiers.

Compétences nécessaires

Avoir un bon prompt pour l’IA est assez compliqué.

Il faut une vraie compréhension du problème que l’on veut résoudre et comment on veut le résoudre.

C’est pour cela que beaucoup de personnes utilisent mal ChatGPT, GPT-3 et GPT-4 (même si les résultats de ce dernier sont plus précis).

GPT, si tu lui donnes une instruction trop vague, il sera incapable de remplir la tâche comme tu l’as imaginé.

(Parce-qu’il n’est pas dans ta tête)

ChatGPT et un plan d'article sur l'intelligence artificielle
Lorsque j’ai demandé à ChatGPT quels seraient les éléments que j’aurais pu oublier dans mon plan d’article sur l’intelligence artificielle et les développeurs.

Je n’ai pas été assez précis, du coup la réponse est carrément fausse.

J’utilise GPT-3 au quotidien pour coder et pour autant, je n’ai aucune compétence en mathématique ou en modèle d’IA.

Les réponses très généralistes des IAs sont un problème que l'on peut résoudre avec le prompt engineering.

👉 Pour chacun de tes prompts, sois très précis sur l’entrée et la sortie que tu souhaites (on verra des exemples plus loin).

Prompt Engineering

Bien maîtriser son prompt c’est vraiment ce qui fait qu’on peut aller vite et loin avec l’IA.

Seulement, ça prend énormément de temps pour les tâches les plus complexes.

C'est en partie parce que l'IA a du mal avec les tâches larges et complexes que les développeurs ont encore de belles années devant eux.

Il faut beaucoup de précisions à GPT pour pouvoir générer quelque chose de fonctionnel dans un environnement complexe.

Autrement dit, c’est compliqué pour l’IA en 2023 de comprendre comment coder quelque chose de complexe car elle n’a pas (encore) de vue d’ensemble.

Bref, plus on est précis avec l’IA, mieux ça fonctionne.

Des outils existent pour nous aider à structurer nos prompts (et à spécifier nos pensées).

Prompt Perfect, améliorer ses prompts à l'IA
https://promptperfect.jina.ai/streamline

Mais compter sur des outils pour utiliser d’autres outils, je pense que c’est une mauvaise idée.

Dans un premier temps savoir comment prompter est ta meilleure arme pour mieux coder avec l’IA en tant que développeur !

Guide pour faire du prompt engineering avec l'IA
https://learnprompting.org/fr/docs/

Guide pour apprendre le prompt Engineering :

Bibliothèques et frameworks d’intelligence artificielle

Pour utiliser l’IA, il existe énormément d’outils et tous ne se valent pas.

  • Machine Learning (TensorFlow, Scikit, Keras)
  • Traitement de données (Pandas, Numpy)
  • Visualisaton (matplotlib, Tableau)
  • Bases de données (Hadoop, Spark, SQL)

Pour le coup je ne développe pas d’IA à proprement parler alors je ne peux pas plus en parler.

Coder avec l’IA pour mieux coder est une chose.

Développer une IA qui code à notre place en est une autre.

LangChain – Chain of Thought

LangChain permet de chaîner ses pensées via là « Chain-of-Thought ».

Chainer des prompts est un excellent moyen de spécifier ses besoins à l’IA.

Quand on veut coder avec une IA, on. abesoin de discuter et d’avoir des intéractions avec elle.

Or, un seul et unique message pour demander quelque chose est rarement ce qui fonctionnera.

Autrement dit, une conversation pour se faire comprendre c’est toujours mieux qu’un email en 1 shot.

Une suite d’instructions aident à comprendre ce que l’on souhaite produire.

LangChain pour chainer des prompts avec Python
https://python.langchain.com/docs/use_cases/agents/baby_agi

Par exemple, voici comment fonctionne BabyAGI avec LangChain pour essayer de devenir une IA pluridisciplinaire.

  1. Planification de la tâche : ChatGPT analyse les demandes des utilisateurs pour comprendre leur intention et les décompose en tâches solvables possibles.
  2. Sélection du modèle : ChatGPT sélectionne les modèles hébergés sur Hugging Face en fonction des descriptions des modèles.
  3. Exécution de la tâche : Chaque modèle sélectionné est invoqué et exécuté, et les résultats sont renvoyés à ChatGPT.
  4. Génération de la réponse : Enfin, ChatGPT est utilisé pour intégrer les prédictions de tous les modèles et générer des réponses pour les utilisateurs.

Bonnes pratiques IA + Code

L’IA peut nous générer du code assez facilement, c’est de notre devoir de développeur de s’assurer qu’il corresponde bien à ce qu’on souhaite.

Et surtout : qu’on ne se soit pas trompé sur notre réel intention…

L’intelligence artificielle crée du code, mais les développeurs sont toujours responsables.

Coder avec une IA, c’est utiliser un outil pour aller plus vite, rien de plus.

Aussi, tu as plusieurs manières d’utiliser ces outils :

  • T’appuyer sur un modèle d’IA génératif comme GPT
  • Utiliser des techniques de prompting comme la Chain-of-Thought via LangChain
  • Demander à l’IA d’agir comme une certaines personnes (voir Awesome ChatGPT Prompt sur GitHub)

Tout est bon pour contextualiser correctement afin que l’IA ne se trompe pas.

Avec Copilot par exemple, le contexte est donné en plus du code de la page pour aider l’intelligence artificielle à comprendre.

Chaîne de pensées en IA
https://arxiv.org/abs/2210.03350

Coder avec GPT-3 : Un assistant IA dans le code (exemples)

Combien ça coûte de coder avec une IA ?

À nous, développeur, finalement l’IA ne nous coûte pas grand-chose par rapport à tout ce qu’elle nous apporte.

En revanche, ChatGPT coûte 700.000 dollars par mois.

OpenAI visites par mois sur ChatGPT
https://www.similarweb.com/website/chat.openai.com/#traffic

Pour un développeur, estimons le coût de l’IA pour coder.

En terme d’outils, je te propose de partir sur la Stack suivante :

  • ChatGPT avec GPT 3.5 (gratuit)
  • ChatGPT avec GPT 4 (20$ / mois)
  • GitHub Copilot (10€ / mois ou 100€ à l’année)
  • GitHub Copilot X (inclut dans Copilot)
Souscription à ChatGPT Plus
ChatGPT Plus en version payante

Si tu ne veux rien dépenser, c’est possible.

ChatGPT est gratuit avec la version de GPT-3.5.

Des outils comme TabNine pour ton IDE ont une version gratuite.

Si ta boîte te paye ton IDE, Fleet intègre de l’IA dans ses propositions de code.

GitLab est aussi en train de mettre quelque chose sur pied…

AI Driven Development : Développement dirigé par l’IA

Après le no-code ou low-code, on se retrouve avec une nouvelle manière de coder : développer avec un assistant d’IA.

Quand les développeurs ne savaient pas quelque chose il y a quelques années, ils auraient été chercher sur Google la réponse à leur problème, mais c'est terminé.

Aujourd’hui avec l’IA, on peut directement lui demander de générer le code sur mesure dont on a besoin.

Générer du code avec l'IA
https://codepal.ai/

Les temps ont changé.

Depuis GPT-3, il est beaucoup plus facile pour les développeurs de coder.

Toutes les réponses à nos questions se retrouvent désormais accessibles dans notre IDE, à la demande, sans devoir en sortir (ou presque).

Templates de prompts pour les développeurs

Ce qui va faire la différence entre un bon et un mauvais dev avec l’IA, c’est le prompt.

Structure Prompt bonne pour l'IA
https://docs.cohere.com/docs/prompt-engineering

Personnellement, voici 2 prompts complets que j’utilise souvent avec ChatGPT.

Note : Je les ai mis dans Espanso pour les copier-coller en tapant par exemple :prptGen (voir la liste des meilleurs outils pour les développeurs).

Copier/coller des prompts IA avec un text expander
Utilisation d’un text expander pour mes prompts IA

Prompt pour générer du code

Générer du code qui fonctionne avec l’IA, c’est facile si on le contextualise et si on le borne bien.

Pour générer une feature simple, voici le prompt qui fonctionne dans 90% des cas (il comprend parfaitement le code que je veux qu’il génère).

Agis comme un développeur senior sur {JavaScript}, ta spécialité est {React} et tu fais partie de la Core Team JS.

Moi, je suis développeur senior {React} depuis 5 ans, spécialisé dans {TypeScript et JavaScript}.

J'aimerais {un composant} {React} qui permet de {créer un formulaire de contact avec nom, prénom, email et message}.

Les paramètres d'entrées sont : {}
La sortie attendue est : {}

Pour cela:
- utilise la dernière version connue de {TypeScript}
- utilise la dernière version connue de {React}
- n'utilise pas de lib externe
- respecte bonnes pratiques de React
- applique le clean code

Prompt pour corriger du code

Pour corriger du code, ce que je veux surtout c’est :

  1. Décrire mon problème
  2. Montrer ce qui ne fonctionne pas
  3. Décrire ce que j’attends comme comportement
  4. Dire ce que j’ai essayé (et d’où je pense que le problème vienne)
  5. Demander une liste de solutions probables, puis discuter avec l’IA pour approfondir

(Dans la partie « Fixer du code avec GPT-3 » en dessous, je te montre étape par étape comme j’ai fait 👇)

Mais sinon, voici un prompt efficace pour fixer des bugs avec une IA :

Agis comme un développeur senior sur {JavaScript}, ta spécialité est {React} et tu fais partie de la Core Team JS.

Moi, je suis développeur senior {React} depuis 5 ans, spécialisé dans {TypeScript et JavaScript}.

Je suis en train de coder {un composant React qui s'appelle ContactForm et qui a pour but d'afficher un formulaire de contact}

Voici le comportement actuel: {}
Cependant, voici le comportement que j'attends: {}

Personnellement, je pense qu'il y a un bug dans {} mais je n'en suis pas certain.

Peux-tu me faire une liste en commençant par le problème le plus probable des solutions qui s'offrent à moi pour corriger mon problème ?

Voici les versions des outils que j'utilise:
- {React 16.8}
- {Redux 4.2.1}

GPT-3 : Génération de code

Générer du code avec GPT-3 est vraiment facile, seulement il faut bien le contextualiser :

  • Est-ce que tu veux utiliser des libs externes ? (Souvent il te fait utiliser Axios avec JS alors que je ne l’utilise jamais)
  • Quelles sont les versions à utiliser ?
  • As-tu un style particulier ?

Donne des instructions comme si tu parlais à un gamin de 14 ans qui apprend le code.

Je ne sais pas si tu as déjà eu des stagiaires en développement web sous ton aile, mais généralement on essaye d’expliquer étape par étape ce qu’il faut faire.

Écris comme si tu rédigeais un ticket de spécification fonctionnelle très précis dans Jira.

(C’est exactement la même chose pour ChatGPT et GPT-3 / GPT-4 en général)

Honnêtement, j’utilise moins OpenAI ChatGPT pour générer du code que GitHub Copilot (notamment grâce à l’autocomplétion).

Même si ça utilise GPT dans tous les cas, la manière de l’utiliser est différente car Copilot a conscience du contexte du fichier en cours ce qui permet d’être plus précis.

GPT-3 : Correction de code

Corriger du code avec GPT-3 ou GPT-4 est de plus en plus intuitif et j’ai pris l’habitude de le faire de plus en plus.

Pour générer du code ou des features, j'utilise moins GPT-3 que GitHub Copilot, mais sur du fix de bug, je l'utilise énormément et c'est génial.

Voici un exemple de bug que j’ai corrigé avec ChatGPT.

On est en juillet 2023 et je reçois un mail.

Mail de bug remonté sur mon site WordPress
Mail de bug remonté sur mon site WordPress

Autrement dit, mon système de commentaire sous WordPress fait la tronche depuis déjà quelques jours.

Pour trouver le bug, je n’avais aucune idée de comment faire.

J’ai alors reproduit le bug en local et ai pris 10 minutes à regarder dans les fichiers .php de WordPress depuis mon thème.

Rien.

J’ai donc demandé à ChatGPT de m’aider, et il a réussi à corriger mon problème quand je lui ai décrit :

Description du problème à ChatGPT
Description du problème à ChatGPT, il me donne une liste de 4 problèmes potentiels à vérifier.

La piste numéro 2 m’intéresse particulièrement parce-que j’y avais pensé, je suis donc allé voir la balise id dans comments.php.

Proposition de ChatGPT pour corriger du code bonne, problème trouvé
Problème de code trouvé : l’ID dans le champ du formulaire ne correspond pas à l’ID de l’article.

J’en informe GPT-4 de suite :

GPT-4 corrige du code depuis que je lui ai pointé le problème
GPT-4 a compris le bug, il essaye de le corriger en me donnant le code correspondant

Bonheur, non seulement son hypothèse est juste, mais le code généré par l’IA après lui avoir montré le problème est juste.

GPT-4 a trouvé la correction à donner : appeler wp_reset_postdata(); !

Et là, je pige tout !

Quelques semaines auparavant j’avais mis en place ce système de « Plus de contenu » de la même catégorie à la fin des articles.

L’ID qu’on voyait dans le formulaire de commentaire était le dernier ID de cette liste…

Car j’avais oublié de reset les données du post courant (erreur de débutant).

Problème de code résolu avec l'utilisation de ChatGPT et GPT-4
Problème de code corrigé grâce à GPT-4 !

Voici comment j’ai pu avoir un vrai assistant sous forme d’IA afin de corriger un bug (simple certes, mais) qui m’a pris 30 minutes à corriger alors que j’aurais pu y passer 2h.

GPT-3 : Amélioration de code

Pendant mes entretiens techniques, j’ai beaucoup utilisé ChatGPT pour qu’il améliore le code que je faisais.

  • « Quelles sont les bonnes pratiques de {ma techno} que je puisse appliquer sur ce code ? »
  • « Fais-moi une liste de choses à corriger pour rendre mon code meilleur ? »
  • « Vois-tu des soucis dans mon code ? »
  • « Comment puis-je améliorer ce morceau de code ? »

Bien sûr, ce genre de questions ne fonctionnent que si on a un mimimum d’expérience pour discerner le vrai du faux.

Il faut tout de même des prérequis avant de se lancer. Savoir reconnaître un code ‘propre’ avant de pouvoir en livrer un grâce à l’IA.

Cependant la plupart du temps, GPT-3 est hyper cohérent.

Pour donner un exemple, je devais coder un système pour afficher des Pokémons.

Test technique en React
Test technique React : Lister des Pokémons sur une API avec React, Vite, React-Query et Zod

Le composant <PokemonDetail /> était sensé afficher les détail d’un Pokémon.

Voici le code en question (qui pouvait bien sûr être amélioré).

ChatGPT en version 3.5 m’a proposé plusieurs améliorations, dont celle que j’attendais !

(À savoir créer des sous-composants, et encore il aurait pu faire mieux en créer un composant générique et des HOCs pour encapsuler la donnée (elle était la même partout, des string).)

GPT-3 améliore le code des développeurs
Améliorer du code React avec ChatGPT 3.5

Faire des commits propres : Commiter avec l’IA

En fonction des changements dans ton code, l’IA pourra essayer de deviner ce que tu as modifié et t’aider à créer un message de commit en fonction.

Et ça fonctionne plutôt bien !

Le seul point qui m’embête, c’est que ça utilise l’API d’OpenAI pour discuter avec GPT-3 et GPT-4, seulement pour l’heure, elle est payante.

Est-ce que ça vaut le coup de payer 0,01cts pour avoir un message de commit plus clair ?

Ces quelques secondes valent-elles le prix sur le long terme ?

Je te laisse y réfléchir 🙂

En attendant voici un exemple avec Gitpoet (une extension VSCode existe).

GitPoet : Faire des messages de commit avec l'IA
GitPoet : Faire des messages de commit avec l’IA

Outils disponibles pour générer ses commits de message avec l’IA :

Code review : Revue de code avec l’IA

Les revues de code, on en fait tous en tant que dev et ça saoule même beaucoup d’entre nous.

(Généralement on préfère coder que lire du code)

Avec l’intelligence artificielle et de l’intégration continue, on est capable de faire reviewer nos pull / merge requests directement par une IA.

AI code Reviewer : Revue de code par une IA
https://code-reviewer.vercel.app/

Encore une fois, ce n’est que le début, mais l’idée de pouvoir faire ça avec une IA directement sur GitLab n’est plus loin derrière…

Ça arrive même sûrement au moment où j’écris ce paragraphe en août 2023.

Intégrer ChatGPT directement dans les revues de code pourrait nous faire gagner beaucoup de temps sur les use-cases simples (éviter les fautes, faire du code un peu plus propre, détecter un bug...).

Bref, voici une petite liste d’outils qui existent déjà pour faire des code reviews avec l’IA.

Revue d'une Pull Request  avec de l'IA
https://github.com/Codium-ai/pr-agent

Outils pour faire ses revues de code avec l’IA (code reviewer) :

  • CodeRabbit / Withmaverick : Ces deux-là on l’air dingue, j’aimerais les tester.
  • CodeBall : Cet outil ne semble plus maintenu, mais la promesse était d’automatiser les revues de code avec l’IA.
  • Codium PR-Agent : Le dépôt GitHub donne envie (c’est la capture d’écran au dessus).
  • CodePal Code Review : Revoir son code directement depuis un textarea.
  • Deepsource : Assez connu dans le genre analyseur de code statique, les intégrations ont l’air folles.
  • Sweep : Analyse et tente de corriger ton code en auto.
  • What The Diff : T’aide à faire des descriptions de Pull Request au top (je le vois beaucoup sur les newsletters IA).

Limites de l’IA : Pourquoi les développeurs ont encore du temps devant eux

On est mi-2023, et j’aimerais parler des limites du machine learning actuelle.

Il faut savoir que l’IA date du milieu du XXème siècle et à l’époque, ils avaient déjà conçu des algos que l’on utilise encore aujourd’hui.

Pourquoi ont-il arrêté en cours de route au lieu de créer ChatGPT directement ?

Les raisons sont simples : Le manque de puissance de calcul et de données.

Désormais, on a les deux, c’est pour ça qu’on a une techno qui marche aussi bien.

IA remplacer les développeurs en 2022
https://twitter.com/MathisHammel/status/1621539164226293763

Même si on a énormément évolué technologiquement parlant, les algos eux, très peu.

(Je te conseille de lire le Thread de Mathis qui montre que pour l’instant, on est encore largement valable en tant que dev)

On n'est pas (encore) sur le point de remplacer les développeurs par des IAs.

La technologie grandit tellement qu’il y a fort à parier que d’ici quelques années, notre métier subisse un gros changement.

D’ailleurs si j’avais 18 ans et que je devais choisir mes études, je ne choisirais pas la programmation car l’IA est déjà en train de coder aussi bien que nous, et ça va s’accentuer.

Alexandre Soyer

Le CEO de GitHub espère aussi d’ici quelques années (2 à 3 ans) , que les prédictions de Copilot complètent les 3/4 de nos réflexions.

Copilot will write 80% of code “sooner than later”.

GitHub CEO – Thomas Dohmke
Interview du CEO de GitHub à propos de GitHub Copilot
https://www.freethink.com/robots-ai/github-copilot

La moitié du code que l’on tape aujourd’hui peut être complétée et générée par une IA.

Ça donne à réfléchir sur notre avenir…

Limites éthiques : Que vont devenir nos emplois ?

Les emplois actuels vont être menacés.

Graphiste, designer, copywriter, développeur…

D’ici quelques années, énormément de métiers dits « intellectuels » seront remplacés par des IA.

Les limites humaines arrivent en un sens, car les robots vont bientôt nous dépasser techniquement parlant.

Ce n’est qu’une question de temps avant que la créativité des humains ne soit elle aussi rattrapée par les machines.

Avec les robots de Boston Dynamics, d’ici quelques années il y a fort à parier que l’IA soit intégrées dans des robots et nous aide dans notre quotidien…

Démo des robots de Boston Dynamics en 2021

Mais avant ça, des métiers comme celui de graphiste sont mis en péril :

Regarde par exemple l’image trop stylée qu’à généré Axel (qui a l’excellent blog Code Heroes au passage) via MidJourney.

Combien de temps aurait-il fallu à un graphiste pour la faire ?

Des heures…

Intelligence Artificielle pour les développeurs, coder avec l'IA de GPT-4 !
Intelligence Artificielle pour les développeurs, coder avec l’IA de GPT-4 !

La valeur ajoutée qu’on attribuait à nos métiers dits artistiques ou intellectuels, sera facilement remplaçable par une machine.

Même si pour l’instant on ne le voit pas encore venir, GPT-3 est un bébé de quelques mois encore…

IA qui génère un morceau de code pas terrible
https://twitter.com/minirop/status/1488193815823409161/photo/1

Oui, les métiers intellectuels sont menacés désormais.

Quel est l'intérêt de payer une rédacteur SEO 1 journée de travail pour produire 2 gros articles alors que la même chose, supervisé par ChatGPT pourrait en produire 10 ou 20 x plus ?

Ce serait très prétentieux de croire que ça ne va pas arriver aux développeurs non plus…

Il va être de plus en plus difficile pour un être humain d’apporter une contribution productive à la société”.

Sébastien Thrun, inventeur de la Google Car dans The Economist

On rigolait du salaire universel et on en rigole encore, mais beaucoup de personnes pensent que ça va arriver (et plus vite qu’on ne pense).

Car l’IA va mettre une grosse partie de la population mondiale au chômage d’ici quelques dizaines d’années.

Wall-e futur humanité
Wall-E et les humains du futurs : Va-t-on laisser les robots tout faire à notre place ?

Propriété intellectuelle et IA : À qui appartiennent les données ?

À qui appartient l’IA ? Est-ce une personne ? Les différents modèles utilisés ont-ils respecté notre vie privée ?

On utilise nos données pour entraîner les intelligences artificielles.

Les données ne sont plus « inertes », elles vont servir de mémoire à une intelligence supérieure…

D’ici quelques années, l’IA te connaîtra mieux que tes parents (si ce n’est pas déjà le cas ?).

Dans un premier temps, on peut déjà commencer par se demander :

  • Données d’entrées : L’exploitation des données des utilisateurs est-elle éthique ? Légale ? Alimenter l’IA est une chose, mais ce sont nos données privées derrières qui l’alimentent.
  • Données de sorties : À qui appartiennent les éléments générés ? À l’entreprise qui les a donnés ? À l’utilisateur qui les a créés ? Et si l’idée vient d’un groupe précis du modèle qui concerne une entreprise, on peut leur donner la paternité ? Quid de la partie du modèle d’apprentissage dont la data appartiendrait à quelqu’un d’autre, comme toi ou moi ?

Tellement de questions en suspens…

Mais il n’y a pas que ça.

Si Copilot utilise le code Open-Source de GitHub pour s’entraîner et que tu as aussi publié dessus, est-ce normal qu’ils se servent de ton code, sans demander ?

GitHub Copilot vol de données pour enrichir le modèle
https://twitter.com/DocSparse/status/1581461734665367554?lang=en

Les dangers d’utiliser des outils comme GitHub Copilot, c’est de retrouver son code privé sauvegardé et entrainé pour enrichir le modèle de l’IA.

Autrement dit, avec ces outils, le code privé envoyé sur les serveurs pourrait ne plus exister…

Ce qui bien sûr pose un problème : à qui est le code que tu vas écrire ? Pourquoi tu es payé au final si tu ne codes plus avec ton code ?

Fonctionne de l'IA OpenAI Codex avec GitHub Copilot
Comment GitHub Copilot fonctionne

Limites techniques actuelles

La vitesse de calcul actuelle a permis l’émergence de l’IA, comme ChatGPT, un logiciel basé sur GPT-3 qui a secoué le monde entier.

Il y a 2 ans, personne ne pensait possible qu’un logiciel comme Stable Diffusion ou MidJourney fasse un dessin aussi bien qu’un humain…

MidJourney comparaison des versions
https://aituts.com/midjourney-versions/

Une super-intelligence va émerger, c’est une question de temps.

Vitesse de calcul + Performance des algos + Données = Super IA

Heureusement nos limites technologiques actuelles nous permettent de voir venir le truc pour y mettre des barrières.

Beaucoup de personnes ont signé une lettre ouverte pour demander de mettre en pause la montée en puissance de l’IA car elle pourrait devenir dangereuse pour l’humanité.

Lettre ouverte sur l'IA pour mettre en pause le développement avant que ça ne parte trop loin
https://futureoflife.org/open-letter/pause-giant-ai-experiments/

Pour moi, c’est une bonne chose.

Si une IA apprend à se transférer via ses données sur internet, elle pourrait être capable de se cacher et personne ne serait en mesure de l’éteindre.

Elle pourrait juger que l’espèce humaine fait plus de mal que de bien et de l’anéantir, car on lui aura appris à faire le bien.

AI qui attaque des humains dans person of interest
https://personofinterest.fandom.com/wiki/Samaritan

(Je te conseille d’ailleurs l’incroyable série Person Of Interest pour ça)

C’est une possibilité à envisager, et les spéculations à ce sujet sont nombreuses.

De toute façon faut pas se leurrer, l’IA va prendre le contrôle de nos vies.

Elle a déjà commencé à le faire…

Pourquoi les développeurs doivent coder avec l’IA

Bon, je vais pas faire un speech et j’espère que t’es déjà convaincu.

Si jamais tu ne l’es pas, laisse-moi te dire qu’il y a un avant et un après.

On est en 2023, et d'ici moins de 3 ans, les devs qui n'utilisent pas l'IA seront devenues beaucoup moins intéressants pour les entreprises qui recrutent...

Tout simplement parce-qu’elles font des tâches aussi bien que nous en une fraction de seconde sur des éléments précis.

GitHub Copilot fonction générée
Écrire une fonction d’algo en quelques secondes grâce à GitHub Copilot

AlphaGo, l’IA de Google qui a battu le meilleur humain sur Terre est connu pour avoir joué le coup 37.

C’est un coup qu’aucun autre humain n’aurait fait car ce coup précis fait perdre la partie à celui ou celle qui le ferait, mais l’IA a su voir plus loin encore.

En plus d'être rapide et d'avoir plus de connaissances que nous, l'IA permet de découvrir des choses que nous n'aurions probablement jamais vues par nous-même.

Donc ?

C’est sans doute la même chose avec ton code…

L’IA peut trouver des solutions plus rapides, plus simples et plus efficaces auxquelles tu n’aurais pas pensé non plus.

Perte d’emploi dans le futur, à quoi ressemblera un développeur dans 10 ans ?

Personnellement, je pense 2 choses :

  • Notre boulot va changer, on va de moins en moins écrire d’algo et de choses techniques ou « logiques »
  • Le marché du développement va changer, comme l’IA va faire 50% de notre taff un jour, il y aura peut être pas 50% mais au moins une grosse partie de devs en moins

Au lieu de coder, on va plutôt demander à l’IA de coder pour nous.

Exactement comme GitHub Copilot X le souhaite.

GitHub Copilot et ses fonctionnalités veulent créer le futur des développeurs

Demander à l’IA de coder va être « le nouveau métier de développeur » d’ici quoi… 10 ans ? Tout au plus.

Du coup, on deviendrait des « Prompt engineer » spécialisés en dev ?

De nouveaux métiers mixtes sont en train de naître…

Métier qui va remplacer le métier de développeur
https://jobs.lever.co/Anthropic/e3cde481-d446-460f-b576-93cab67bd1ed

À l’heure actuelle l’IA ne sait pas :

  • Créer l’architecture d’un projet
  • Comprendre les problématiques dans leur ensemble
  • Décomposer un immense projet (« créer un OS ») en petites tâches
  • Appréhender les besoins métiers et la meilleure manière d’y arriver en respectant les besoins

Cependant, ça finira par arriver, la question : c’est quand.

Ce n’est pas être critique, mais en 2022 il y a eu un précédent : GPT-3 a changé la manière dont on voit le monde.

Coder avec l’IA : Comment devenir un meilleur développeur ?

Coder avec l’intelligence artificielle, que ce soit GPT-3, GPT-4 ou tout autre modèle, c’est quelque chose dont les développeurs vont avoir besoin dans les années à venir.

ChatGPT est sorti fin novembre 2022, cela ne fait même pas 1 an et ce n’est que le début.

En finissant cet article je suis tombé sur cet outil qui permet d’écrire du code, comme un dev.

Ça utilise GPT-4 et c’est bluffant :

https://github.com/AntonOsika/gpt-engineer

Ca ne fait qu’1 an qu’on joue avec la techno et nos puissances de calcul sont encore limitées…

Mais qui sait ce dont les IAs seront capables dans 3 ou 5 ans à la vitesse où ça va ?

Sans rire, ça te fait pas peur à toi pour la suite ?

N’hésite pas à me laisser ton avis en commentaire, car personnellement je suis perplexe.

De mon côté, ces prochains mois seront dédiés à la formation sur l’IA en tant que développeur.

Si ça t’intéresse aussi je t’invite à t’inscrire à la formation gratuite : coder avec l’IA.

Plus de contenu 💡

Pour lire plus de contenu similaire dans le même thématique.

4 commentaires

👩‍💻 Réagir à cet article 👨‍💻

Merci de partager ton histoire avec la communauté !