Slide 1

Slide 1 text

Au-delà du Buzz : L'IA dans le développement logicielle assistant ou agent de code ?

Slide 2

Slide 2 text

Naji Alazhar Analyste quantitatif et AI Engineer. Il conçoit et développe des applications LLM, ainsi que des modèles pour le pricing et la couverture d'instruments financiers. Wassel Alazhar Consultant, architecte et développeur. Il aide ses clients à définir leurs stratégies technologiques, concevoir des systèmes dʼinformation adaptés et constituer des équipes qui livrent du logiciel en continu. Qui Sommes-nous ?

Slide 3

Slide 3 text

LʼIA va-t-elle révolutionner notre façon de coder, ou sommes-nous juste les cobayes dʼun immense buzz marketing ?

Slide 4

Slide 4 text

Au programme Introduction Buzz ou réalité ? Assistants ou Agents de code Une question dʼautonomie Assistants Ce qui change vraiment dans nos pratiques Agents de code Promesses, limites et usages concrets Défis et Opportunités Perspectives et Conclusion

Slide 5

Slide 5 text

Buzz ou réalité ?

Slide 6

Slide 6 text

Beaucoup de bruit

Slide 7

Slide 7 text

Beaucoup de bruit… et de désillusions

Slide 8

Slide 8 text

Beaucoup de bruit… ça ne fait que commencer 󰣻

Slide 9

Slide 9 text

L'adoption massive de l'IA dans le code

Slide 10

Slide 10 text

L'émergence des agents

Slide 11

Slide 11 text

Assistants ou Agents de code Une question dʼautonomie

Slide 12

Slide 12 text

Assistants : Un IDE augmenté ? Développeur IDE Suggestion Action Décision Problem description Résolution

Slide 13

Slide 13 text

Agents de code : Les prochains “compilateursˮ ? LLM Tools Environment Problem description (aka issue) Resolution as Code (aka commit / Pull Request) Développeur

Slide 14

Slide 14 text

Assistants ou Agents : une question dʼautonomie Critère Assistant de code Agent autonome de code Autonomie Partiellement autonome : vous guide. Beaucoup plus autonome : exécute des tâches. Interaction Vous propose des suggestions (complétion, snippets). Prend des décisions pour résoudre un problème. Cas dʼusage Accélère lʼécriture de code (et des tests). Évite du contexte switching (moins perdre de temps sur Google et StackOverflow) Effectue une tâche de bout en bout (ex. Résoudre une issue et soumettre une PR en autonomie). Exemples GitHub Copilot, Cursor AI, Windsurf… Replit Agent, SWE-agent, BOLT.new, v0, SWECrafter, Github Copilot Workspaces, Cursor Composer…

Slide 15

Slide 15 text

Assistants Ce qui change vraiment dans nos pratiques

Slide 16

Slide 16 text

Complétion de code

Slide 17

Slide 17 text

Complétion de code dans un bon IDE Démo : implémentation en suivant une approche “test-firstˮ avec un IDE JetBrains et lʼassistant Github Copilot

Slide 18

Slide 18 text

CHOP

Slide 19

Slide 19 text

La tendance : des agents partout

Slide 20

Slide 20 text

La tendance : des agents partout

Slide 21

Slide 21 text

Agents de code Promesses, limites et usages concrets

Slide 22

Slide 22 text

Agents de code : Ne restez pas bloqué en mai 2024

Slide 23

Slide 23 text

Agents de code : Ça a beaucoup évolué depuis mai 24 Replit Agent SWE-agent OpenHands

Slide 24

Slide 24 text

Agents de code Démo commerciale de Bolt.new

Slide 25

Slide 25 text

Agents de code Démo 6 septembre 2024 : Développement et déploiement d'une Application Web avec Replit Agent en quelques minutes

Slide 26

Slide 26 text

Agents de code dans votre CI Démo : Faire tourner un agent de code dans gitlab-ci pour résoudre des issues automatiquement

Slide 27

Slide 27 text

Agents de code dans votre CI Démo : Faire tourner un agent de code dans gitlab-ci pour résoudre des issues automatiquement

Slide 28

Slide 28 text

Agents de code : Comment ça marche ? - Le LLM est un composant d'un agent. - L'agent utilise le LLM et interagit avec son environnement pour résoudre une tâche donnée. - L'agent interagit avec son environnement en appelant des outils et en fournissant leurs résultats comme retour d'information au LLM. Agent System prompt User prompt LLM Tools Environment

Slide 29

Slide 29 text

Agent Agents de code : Reason and Act ReAct System prompt User prompt LLM Tools Reason (aka thought) Act Observation Final Answer Environment Reason, Act, Observation… - Describe tools - Reason then act (use tools) Describe the task to be solved Source: ReAct: Synergizing Reasoning and Acting in Language Models (https://arxiv.org/abs/2210.03629

Slide 30

Slide 30 text

Agents de code : Reason and Act ReAct Reason Act

Slide 31

Slide 31 text

Agents de code : Reason and Act ReAct Reason Act Observation

Slide 32

Slide 32 text

- ACI Agent/Computer Interface) : Considérer l'agent LM comme un utilisateur et optimiser son expérience utilisateur. - Fournir des démos et des exemples : Réduit le besoin de conception complexe de prompts. - L'agent a besoin de feedback : Essentiel pour améliorer ses performances. Agents de code : principaux constats Source: SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering

Slide 33

Slide 33 text

Les Agents de code ont besoins de feedback L'agent peut corriger ses erreurs grâce à un feedback continu basé sur les tests

Slide 34

Slide 34 text

Défis et Opportunités

Slide 35

Slide 35 text

53% Défi #1 : le taux de résolution Source: https://www.swebench.com/ Verified. Le jeudi 28/12/2024 à 1700 CET

Slide 36

Slide 36 text

Défi #1 : le taux de résolution Source: https://www.swebench.com/ Verified. Le jeudi 28/12/2024 à 1700 CET

Slide 37

Slide 37 text

Défi #1 : ça évolue chaque jour

Slide 38

Slide 38 text

Opportunité #1 : économique - Coût total : 1 000 $ pour traiter 500 issues 2 $ par issue) - Issues résolues : 265 53 % - Économies potentielles : 366,025 $ 500 issues 2.77 jour homme par issue selon une étude (*) 265 issues résolues (*) “It costs on average 2.77 days for developers to create pull requests…ˮ [samples from SWEBench-Lite dataset] Source: “AutoCodeRover: Autonomous Program Improvementˮ paper. https://arxiv.org/pdf/2404.05427 La tentation pour un décideur

Slide 39

Slide 39 text

Défi #2  Comment valider ? A PR, Great! Does-it work? Avec un code testé cʼest plus simple À quoi bon, si : - Compliqué de tester / valider - Beaucoup de déchet

Slide 40

Slide 40 text

Défi #2  Agents de code avec approche test-first Lʼagent soumet du code testé

Slide 41

Slide 41 text

Défi #2  Agents de code avec approche test-first L'agent peut corriger ses erreurs grâce à un feedback continu basé sur les tests

Slide 42

Slide 42 text

Opportunité #2  Démarrage rapide Un scaffolding surpuissant 🚀 Gain de temps ⏱ Pouvoir générer rapidement la structure initiale d'un projet. Prototypage rapide 🧸 Possibilité de tester des idées et des architectures en un temps record. Itérations accélérées 🔄⚡ Valider des idées ou expérimenter lors des phases initiales du développement.

Slide 43

Slide 43 text

Défi #3  Intégrer à une base existante Problèmes fréquents - Manque de contexte global : architecture, conventions, historique. - Complexité du code existant : Les agents peinent encore avec des architectures complexes ou mal documentées. - Souvent non testable - Risque de régressions : Les modifications automatisées peuvent introduire des bugs non détectés. Résultats limités Fonctionne mieux pour : - des tâches simples ou isolées - documenter Sceptique quant à l'efficacité actuelle pour gérer des refactorings complexes ou une maintenance durable. … Mais ça progresse très très vite.

Slide 44

Slide 44 text

Défi #3  Intégrer à une base existante 🤖 ✅ Better resolution rate ✅ Decreased resolution cost ✅ Well tested codebase ✅ Enforced code standards ✅ Clear testing strategy ✅ Effective CI/CD pipelines ✅ Clear Issue formulation Ça marchera bien pour ceux qui avaient moins de problèmes Nous recommandons ces pré-requis

Slide 45

Slide 45 text

Défi #3  Intégrer à une base existante Et pour les autres 󰤇

Slide 46

Slide 46 text

Perspectives et Conclusion

Slide 47

Slide 47 text

Agents de Code : Opportunités et Progrès Adoption actuelle Le boom des assistants. Lʼémergence des agents : beaucoup dʼoutils, mais peu dʼadoption réelle. Opportunités Démarrage ultra-rapide pour de nouveaux projets (scaffolding +++). Automatisation efficace de tâches simples (petites corrections, PRs). Possible de tout héberger “localementˮ pour plus de contrôle (valable pour assistants et agents). Progrès Les agents évoluent vite, mais restent adaptés aux tâches spécifiques… pour le moment.

Slide 48

Slide 48 text

Limites et défis dʼintégration Intégration des agents Pas encore prêts pour les problèmes complexes ou bases legacy. On y travaille ! 😉) Dépendent fortement du contexte global (architecture, historique…). Une base de code bien testée est un pré-requis Générer des tests pour votre base de code legacy ne va pas marcher ! Les agents ne sont pas encore au point pour la génération des tests (c.f. SWTBench*) Souvent, le code n'est pas testable dans une codebase non testée Migration et maintenance Prometteur pour migrations floues : ex. Pandas → Polars, Pydantic v1 → v2… Limité pour les dépendances ou mises à jour de langage : préférez OpenRewrite. (*) Source: SWTBench: Testing and Validating Real-World Bug-Fixes with Code Agents

Slide 49

Slide 49 text

"LʼIA dans le développement nʼest pas encore une baguette magique, mais elle ouvre la voie à des approches innovantes. Testez, apprenez, et trouvez ce qui fonctionne pour vous."