[{"data":1,"prerenderedAt":1344},["ShallowReactive",2],{"/fr-fr/blog/categories/ai-ml/":3,"navigation-fr-fr":22,"banner-fr-fr":443,"footer-fr-fr":455,"ai-ml-category-page-fr-fr":667},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"config":12,"_id":15,"_type":16,"title":17,"_source":18,"_file":19,"_stem":20,"_extension":21},"/fr-fr/blog/categories/ai-ml","categories",false,"",{"title":9,"description":10},"IA/ML","Browse articles related to IA/ML on the GitLab Blog",{"name":9},{"template":13,"slug":14,"hide":6},"BlogCategory","ai-ml","content:fr-fr:blog:categories:ai-ml.yml","yaml","Ai Ml","content","fr-fr/blog/categories/ai-ml.yml","fr-fr/blog/categories/ai-ml","yml",{"_path":23,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"data":25,"_id":439,"_type":16,"title":440,"_source":18,"_file":441,"_stem":442,"_extension":21},"/shared/fr-fr/main-navigation","fr-fr",{"logo":26,"freeTrial":31,"sales":36,"login":41,"items":46,"search":380,"minimal":416,"duo":430},{"config":27},{"href":28,"dataGaName":29,"dataGaLocation":30},"/fr-fr/","gitlab logo","header",{"text":32,"config":33},"Commencer un essai gratuit",{"href":34,"dataGaName":35,"dataGaLocation":30},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":37,"config":38},"Contacter l'équipe commerciale",{"href":39,"dataGaName":40,"dataGaLocation":30},"/fr-fr/sales/","sales",{"text":42,"config":43},"Connexion",{"href":44,"dataGaName":45,"dataGaLocation":30},"https://gitlab.com/users/sign_in/","sign in",[47,91,190,195,301,361],{"text":48,"config":49,"cards":51,"footer":74},"Plateforme",{"dataNavLevelOne":50},"platform",[52,58,66],{"title":48,"description":53,"link":54},"La plateforme DevSecOps alimentée par l'IA la plus complète",{"text":55,"config":56},"Découvrir notre plateforme",{"href":57,"dataGaName":50,"dataGaLocation":30},"/fr-fr/platform/",{"title":59,"description":60,"link":61},"GitLab Duo (IA)","Créez des logiciels plus rapidement en tirant parti de l'IA à chaque étape du développement",{"text":62,"config":63},"Découvrez GitLab Duo",{"href":64,"dataGaName":65,"dataGaLocation":30},"/fr-fr/gitlab-duo/","gitlab duo ai",{"title":67,"description":68,"link":69},"Choisir GitLab","10 raisons pour lesquelles les entreprises choisissent GitLab",{"text":70,"config":71},"En savoir plus",{"href":72,"dataGaName":73,"dataGaLocation":30},"/fr-fr/why-gitlab/","why gitlab",{"title":75,"items":76},"Démarrer avec",[77,82,87],{"text":78,"config":79},"Ingénierie de plateforme",{"href":80,"dataGaName":81,"dataGaLocation":30},"/fr-fr/solutions/platform-engineering/","platform engineering",{"text":83,"config":84},"Expérience développeur",{"href":85,"dataGaName":86,"dataGaLocation":30},"/fr-fr/developer-experience/","Developer experience",{"text":88,"config":89},"MLOps",{"href":90,"dataGaName":88,"dataGaLocation":30},"/fr-fr/topics/devops/the-role-of-ai-in-devops/",{"text":92,"left":93,"config":94,"link":96,"lists":100,"footer":172},"Produit",true,{"dataNavLevelOne":95},"solutions",{"text":97,"config":98},"Voir toutes les solutions",{"href":99,"dataGaName":95,"dataGaLocation":30},"/fr-fr/solutions/",[101,127,150],{"title":102,"description":103,"link":104,"items":109},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":105},{"icon":106,"href":107,"dataGaName":108,"dataGaLocation":30},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[110,114,118,123],{"text":111,"config":112},"CI/CD",{"href":113,"dataGaLocation":30,"dataGaName":111},"/fr-fr/solutions/continuous-integration/",{"text":115,"config":116},"Développement assisté par l'IA",{"href":64,"dataGaLocation":30,"dataGaName":117},"AI assisted development",{"text":119,"config":120},"Gestion du code source",{"href":121,"dataGaLocation":30,"dataGaName":122},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":124,"config":125},"Livraison de logiciels automatisée",{"href":107,"dataGaLocation":30,"dataGaName":126},"Automated software delivery",{"title":128,"description":129,"link":130,"items":135},"Securité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":131},{"href":132,"dataGaName":133,"dataGaLocation":30,"icon":134},"/fr-fr/solutions/security-compliance/","security and compliance","ShieldCheckLight",[136,140,145],{"text":137,"config":138},"Sécurité et conformité",{"href":132,"dataGaLocation":30,"dataGaName":139},"Security & Compliance",{"text":141,"config":142},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":143,"dataGaLocation":30,"dataGaName":144},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":146,"config":147},"Conformité et gouvernance",{"href":148,"dataGaLocation":30,"dataGaName":149},"/fr-fr/solutions/continuous-software-compliance/","Compliance and governance",{"title":151,"link":152,"items":157},"Mesures",{"config":153},{"icon":154,"href":155,"dataGaName":156,"dataGaLocation":30},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[158,162,167],{"text":159,"config":160},"Visibilité et mesures",{"href":155,"dataGaLocation":30,"dataGaName":161},"Visibility and Measurement",{"text":163,"config":164},"Gestion de la chaîne de valeur",{"href":165,"dataGaLocation":30,"dataGaName":166},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":168,"config":169},"Données d'analyse et informations clés",{"href":170,"dataGaLocation":30,"dataGaName":171},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":173,"items":174},"GitLab pour",[175,180,185],{"text":176,"config":177},"Entreprises",{"href":178,"dataGaLocation":30,"dataGaName":179},"/fr-fr/enterprise/","enterprise",{"text":181,"config":182},"PME",{"href":183,"dataGaLocation":30,"dataGaName":184},"/fr-fr/small-business/","small business",{"text":186,"config":187},"Secteur public",{"href":188,"dataGaLocation":30,"dataGaName":189},"/fr-fr/solutions/public-sector/","public sector",{"text":191,"config":192},"Tarifs",{"href":193,"dataGaName":194,"dataGaLocation":30,"dataNavLevelOne":194},"/fr-fr/pricing/","pricing",{"text":196,"config":197,"link":199,"lists":203,"feature":288},"Ressources",{"dataNavLevelOne":198},"resources",{"text":200,"config":201},"Afficher toutes les ressources",{"href":202,"dataGaName":198,"dataGaLocation":30},"/fr-fr/resources/",[204,237,260],{"title":205,"items":206},"Premiers pas",[207,212,217,222,227,232],{"text":208,"config":209},"Installation",{"href":210,"dataGaName":211,"dataGaLocation":30},"/fr-fr/install/","install",{"text":213,"config":214},"Guides de démarrage rapide",{"href":215,"dataGaName":216,"dataGaLocation":30},"/fr-fr/get-started/","quick setup checklists",{"text":218,"config":219},"Apprentissage",{"href":220,"dataGaLocation":30,"dataGaName":221},"https://university.gitlab.com/","learn",{"text":223,"config":224},"Documentation sur le produit",{"href":225,"dataGaName":226,"dataGaLocation":30},"https://docs.gitlab.com/","product documentation",{"text":228,"config":229},"Vidéos sur les bonnes pratiques",{"href":230,"dataGaName":231,"dataGaLocation":30},"/fr-fr/getting-started-videos/","best practice videos",{"text":233,"config":234},"Intégrations",{"href":235,"dataGaName":236,"dataGaLocation":30},"/fr-fr/integrations/","integrations",{"title":238,"items":239},"Découvrir",[240,245,250,255],{"text":241,"config":242},"Histoires de succès client",{"href":243,"dataGaName":244,"dataGaLocation":30},"/fr-fr/customers/","customer success stories",{"text":246,"config":247},"Blog",{"href":248,"dataGaName":249,"dataGaLocation":30},"/fr-fr/blog/","blog",{"text":251,"config":252},"Travail à distance",{"href":253,"dataGaName":254,"dataGaLocation":30},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":256,"config":257},"TeamOps",{"href":258,"dataGaName":259,"dataGaLocation":30},"/fr-fr/teamops/","teamops",{"title":261,"items":262},"Connecter",[263,268,273,278,283],{"text":264,"config":265},"Services GitLab",{"href":266,"dataGaName":267,"dataGaLocation":30},"/fr-fr/services/","services",{"text":269,"config":270},"Communauté",{"href":271,"dataGaName":272,"dataGaLocation":30},"/community/","community",{"text":274,"config":275},"Forum",{"href":276,"dataGaName":277,"dataGaLocation":30},"https://forum.gitlab.com/","forum",{"text":279,"config":280},"Événements",{"href":281,"dataGaName":282,"dataGaLocation":30},"/events/","events",{"text":284,"config":285},"Partenaires",{"href":286,"dataGaName":287,"dataGaLocation":30},"/fr-fr/partners/","partners",{"backgroundColor":289,"textColor":290,"text":291,"image":292,"link":296},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":293,"config":294},"carte promo The Source",{"src":295},"/images/navigation/the-source-promo-card.svg",{"text":297,"config":298},"Lire les articles les plus récents",{"href":299,"dataGaName":300,"dataGaLocation":30},"/fr-fr/the-source/","the source",{"text":302,"config":303,"lists":305},"Société",{"dataNavLevelOne":304},"company",[306],{"items":307},[308,313,319,321,326,331,336,341,346,351,356],{"text":309,"config":310},"À propos",{"href":311,"dataGaName":312,"dataGaLocation":30},"/fr-fr/company/","about",{"text":314,"config":315,"footerGa":318},"Emplois",{"href":316,"dataGaName":317,"dataGaLocation":30},"/jobs/","jobs",{"dataGaName":317},{"text":279,"config":320},{"href":281,"dataGaName":282,"dataGaLocation":30},{"text":322,"config":323},"Leadership",{"href":324,"dataGaName":325,"dataGaLocation":30},"/company/team/e-group/","leadership",{"text":327,"config":328},"Équipe",{"href":329,"dataGaName":330,"dataGaLocation":30},"/company/team/","team",{"text":332,"config":333},"Manuel",{"href":334,"dataGaName":335,"dataGaLocation":30},"https://handbook.gitlab.com/","handbook",{"text":337,"config":338},"Relations avec les investisseurs",{"href":339,"dataGaName":340,"dataGaLocation":30},"https://ir.gitlab.com/","investor relations",{"text":342,"config":343},"Centre de confiance",{"href":344,"dataGaName":345,"dataGaLocation":30},"/fr-fr/security/","trust center",{"text":347,"config":348},"Centre pour la transparence de l'IA",{"href":349,"dataGaName":350,"dataGaLocation":30},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":352,"config":353},"Newsletter",{"href":354,"dataGaName":355,"dataGaLocation":30},"/company/contact/","newsletter",{"text":357,"config":358},"Presse",{"href":359,"dataGaName":360,"dataGaLocation":30},"/press/","press",{"text":362,"config":363,"lists":364},"Nous contacter",{"dataNavLevelOne":304},[365],{"items":366},[367,370,375],{"text":37,"config":368},{"href":39,"dataGaName":369,"dataGaLocation":30},"talk to sales",{"text":371,"config":372},"Aide",{"href":373,"dataGaName":374,"dataGaLocation":30},"/support/","get help",{"text":376,"config":377},"Portail clients GitLab",{"href":378,"dataGaName":379,"dataGaLocation":30},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":381,"login":382,"suggestions":389},"Fermer",{"text":383,"link":384},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":385,"config":386},"gitlab.com",{"href":44,"dataGaName":387,"dataGaLocation":388},"search login","search",{"text":390,"default":391},"Suggestions",[392,395,400,402,407,412],{"text":59,"config":393},{"href":64,"dataGaName":394,"dataGaLocation":388},"GitLab Duo (AI)",{"text":396,"config":397},"Suggestions de code (IA)",{"href":398,"dataGaName":399,"dataGaLocation":388},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":111,"config":401},{"href":113,"dataGaName":111,"dataGaLocation":388},{"text":403,"config":404},"GitLab sur AWS",{"href":405,"dataGaName":406,"dataGaLocation":388},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":408,"config":409},"GitLab sur Google Cloud ",{"href":410,"dataGaName":411,"dataGaLocation":388},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":413,"config":414},"Pourquoi utiliser GitLab ?",{"href":72,"dataGaName":415,"dataGaLocation":388},"Why GitLab?",{"freeTrial":417,"mobileIcon":422,"desktopIcon":427},{"text":418,"config":419},"Commencer votre essai gratuit",{"href":420,"dataGaName":35,"dataGaLocation":421},"https://gitlab.com/-/trials/new/","nav",{"altText":423,"config":424},"Icône GitLab",{"src":425,"dataGaName":426,"dataGaLocation":421},"/images/brand/gitlab-logo-tanuki.svg","gitlab icon",{"altText":423,"config":428},{"src":429,"dataGaName":426,"dataGaLocation":421},"/images/brand/gitlab-logo-type.svg",{"freeTrial":431,"mobileIcon":435,"desktopIcon":437},{"text":432,"config":433},"En savoir plus sur GitLab Duo",{"href":64,"dataGaName":434,"dataGaLocation":421},"gitlab duo",{"altText":423,"config":436},{"src":425,"dataGaName":426,"dataGaLocation":421},{"altText":423,"config":438},{"src":429,"dataGaName":426,"dataGaLocation":421},"content:shared:fr-fr:main-navigation.yml","Main Navigation","shared/fr-fr/main-navigation.yml","shared/fr-fr/main-navigation",{"_path":444,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"title":445,"button":446,"config":450,"_id":452,"_type":16,"_source":18,"_file":453,"_stem":454,"_extension":21},"/shared/fr-fr/banner","GitLab Duo Agent Platform est maintenant disponible en version bêta publique !",{"text":70,"config":447},{"href":448,"dataGaName":449,"dataGaLocation":30},"/gitlab-duo/agent-platform/","duo banner",{"layout":451},"release","content:shared:fr-fr:banner.yml","shared/fr-fr/banner.yml","shared/fr-fr/banner",{"_path":456,"_dir":24,"_draft":6,"_partial":6,"_locale":7,"data":457,"_id":663,"_type":16,"title":664,"_source":18,"_file":665,"_stem":666,"_extension":21},"/shared/fr-fr/main-footer",{"text":458,"source":459,"edit":465,"contribute":470,"config":475,"items":480,"minimal":654},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":460,"config":461},"Afficher le code source de la page",{"href":462,"dataGaName":463,"dataGaLocation":464},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":466,"config":467},"Modifier cette page",{"href":468,"dataGaName":469,"dataGaLocation":464},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":471,"config":472},"Veuillez contribuer",{"href":473,"dataGaName":474,"dataGaLocation":464},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":476,"facebook":477,"youtube":478,"linkedin":479},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[481,504,558,591,625],{"title":48,"links":482,"subMenu":487},[483],{"text":484,"config":485},"Plateforme DevSecOps",{"href":57,"dataGaName":486,"dataGaLocation":464},"devsecops platform",[488],{"title":191,"links":489},[490,494,499],{"text":491,"config":492},"Voir les forfaits",{"href":193,"dataGaName":493,"dataGaLocation":464},"view plans",{"text":495,"config":496},"Pourquoi choisir GitLab Premium ?",{"href":497,"dataGaName":498,"dataGaLocation":464},"/fr-fr/pricing/premium/","why premium",{"text":500,"config":501},"Pourquoi choisir GitLab Ultimate ?",{"href":502,"dataGaName":503,"dataGaLocation":464},"/fr-fr/pricing/ultimate/","why ultimate",{"title":505,"links":506},"Solutions",[507,512,515,517,522,527,531,534,537,542,544,546,548,553],{"text":508,"config":509},"Transformation digitale",{"href":510,"dataGaName":511,"dataGaLocation":464},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":137,"config":513},{"href":132,"dataGaName":514,"dataGaLocation":464},"security & compliance",{"text":124,"config":516},{"href":107,"dataGaName":108,"dataGaLocation":464},{"text":518,"config":519},"Développement agile",{"href":520,"dataGaName":521,"dataGaLocation":464},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":523,"config":524},"Transformation cloud",{"href":525,"dataGaName":526,"dataGaLocation":464},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":528,"config":529},"SCM",{"href":121,"dataGaName":530,"dataGaLocation":464},"source code management",{"text":111,"config":532},{"href":113,"dataGaName":533,"dataGaLocation":464},"continuous integration & delivery",{"text":163,"config":535},{"href":165,"dataGaName":536,"dataGaLocation":464},"value stream management",{"text":538,"config":539},"GitOps",{"href":540,"dataGaName":541,"dataGaLocation":464},"/fr-fr/solutions/gitops/","gitops",{"text":176,"config":543},{"href":178,"dataGaName":179,"dataGaLocation":464},{"text":181,"config":545},{"href":183,"dataGaName":184,"dataGaLocation":464},{"text":186,"config":547},{"href":188,"dataGaName":189,"dataGaLocation":464},{"text":549,"config":550},"Formation",{"href":551,"dataGaName":552,"dataGaLocation":464},"/fr-fr/solutions/education/","education",{"text":554,"config":555},"Services financiers",{"href":556,"dataGaName":557,"dataGaLocation":464},"/fr-fr/solutions/finance/","financial services",{"title":196,"links":559},[560,562,564,566,569,571,575,577,579,581,583,585,587,589],{"text":208,"config":561},{"href":210,"dataGaName":211,"dataGaLocation":464},{"text":213,"config":563},{"href":215,"dataGaName":216,"dataGaLocation":464},{"text":218,"config":565},{"href":220,"dataGaName":221,"dataGaLocation":464},{"text":223,"config":567},{"href":225,"dataGaName":568,"dataGaLocation":464},"docs",{"text":246,"config":570},{"href":248,"dataGaName":249},{"text":572,"config":573},"Histoires de réussite client",{"href":574,"dataGaLocation":464},"/customers/",{"text":241,"config":576},{"href":243,"dataGaName":244,"dataGaLocation":464},{"text":251,"config":578},{"href":253,"dataGaName":254,"dataGaLocation":464},{"text":264,"config":580},{"href":266,"dataGaName":267,"dataGaLocation":464},{"text":256,"config":582},{"href":258,"dataGaName":259,"dataGaLocation":464},{"text":269,"config":584},{"href":271,"dataGaName":272,"dataGaLocation":464},{"text":274,"config":586},{"href":276,"dataGaName":277,"dataGaLocation":464},{"text":279,"config":588},{"href":281,"dataGaName":282,"dataGaLocation":464},{"text":284,"config":590},{"href":286,"dataGaName":287,"dataGaLocation":464},{"title":302,"links":592},[593,595,597,599,601,603,605,609,614,616,618,620],{"text":309,"config":594},{"href":311,"dataGaName":304,"dataGaLocation":464},{"text":314,"config":596},{"href":316,"dataGaName":317,"dataGaLocation":464},{"text":322,"config":598},{"href":324,"dataGaName":325,"dataGaLocation":464},{"text":327,"config":600},{"href":329,"dataGaName":330,"dataGaLocation":464},{"text":332,"config":602},{"href":334,"dataGaName":335,"dataGaLocation":464},{"text":337,"config":604},{"href":339,"dataGaName":340,"dataGaLocation":464},{"text":606,"config":607},"Sustainability",{"href":608,"dataGaName":606,"dataGaLocation":464},"/sustainability/",{"text":610,"config":611},"Diversité, inclusion et appartenance (DIB)",{"href":612,"dataGaName":613,"dataGaLocation":464},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":342,"config":615},{"href":344,"dataGaName":345,"dataGaLocation":464},{"text":352,"config":617},{"href":354,"dataGaName":355,"dataGaLocation":464},{"text":357,"config":619},{"href":359,"dataGaName":360,"dataGaLocation":464},{"text":621,"config":622},"Déclaration de transparence sur l'esclavage moderne",{"href":623,"dataGaName":624,"dataGaLocation":464},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":362,"links":626},[627,630,632,634,639,644,649],{"text":628,"config":629},"Échanger avec un expert",{"href":39,"dataGaName":40,"dataGaLocation":464},{"text":371,"config":631},{"href":373,"dataGaName":374,"dataGaLocation":464},{"text":376,"config":633},{"href":378,"dataGaName":379,"dataGaLocation":464},{"text":635,"config":636},"Statut",{"href":637,"dataGaName":638,"dataGaLocation":464},"https://status.gitlab.com/","status",{"text":640,"config":641},"Conditions d'utilisation",{"href":642,"dataGaName":643},"/terms/","terms of use",{"text":645,"config":646},"Déclaration de confidentialité",{"href":647,"dataGaName":648,"dataGaLocation":464},"/fr-fr/privacy/","privacy statement",{"text":650,"config":651},"Préférences en matière de cookies",{"dataGaName":652,"dataGaLocation":464,"id":653,"isOneTrustButton":93},"cookie preferences","ot-sdk-btn",{"items":655},[656,658,661],{"text":640,"config":657},{"href":642,"dataGaName":643,"dataGaLocation":464},{"text":659,"config":660},"Politique de confidentialité",{"href":647,"dataGaName":648,"dataGaLocation":464},{"text":650,"config":662},{"dataGaName":652,"dataGaLocation":464,"id":653,"isOneTrustButton":93},"content:shared:fr-fr:main-footer.yml","Main Footer","shared/fr-fr/main-footer.yml","shared/fr-fr/main-footer",{"featuredPost":668,"allPosts":692,"totalPages":1342,"initialPosts":1343},{"_path":669,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":670,"content":673,"config":685,"_id":688,"_type":16,"title":689,"_source":18,"_file":690,"_stem":691,"_extension":21},"/fr-fr/blog/gitlab-duo-agent-platform-public-beta",{"noIndex":6,"title":671,"description":672},"GitLab Duo Agent Platform disponible en bêta publique","Découvrez la plateforme d'orchestration DevSecOps conçue pour permettre une collaboration asynchrone entre les équipes de développement et les agents d’IA.",{"tags":674,"category":14,"date":679,"heroImage":680,"authors":681,"description":672,"title":683,"body":684},[675,676,677,678],"AI/ML","product","features","news","2025-07-17","https://res.cloudinary.com/about-gitlab-com/image/upload/v1752678395/impw8no5tbskr6k2afgu.jpg",[682],"Bill Staples","GitLab Duo Agent Platform (bêta) : votre orchestration IA nouvelle génération","**Nous construisons l'avenir du développement logiciel.**\n\nChez GitLab, nous [réinventons l'avenir de l'ingénierie logicielle](https://about.gitlab.com/fr-fr/blog/gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops/) comme une collaboration entre humains et intelligence artificielle. Les équipes de développement se concentrent sur la résolution de problèmes techniques complexes et l'innovation, tandis que les agents d'IA gèrent les tâches routinières et répétitives qui ralentissent l’avancée des projets. Les développeurs sont libres d'explorer de nouvelles idées à moindre coût, les bogues de backlogs appartiennent au passé, et les utilisateurs des logiciels que vous créez profitent d'une expérience plus fluide, fiable et sécurisée. Ceci n'est pas un rêve lointain, et nous construisons cette réalité aujourd'hui avec GitLab Duo Agent Platform.\n\n## Qu'est-ce que GitLab Duo Agent Platform ?\n\nGitLab Duo Agent Platform est notre plateforme d'orchestration DevSecOps nouvelle génération conçue pour permettre une collaboration asynchrone entre les équipes de développement et les agents d'IA. Cette plateforme transformera votre workflow de développement, passant de processus linéaires isolés à une collaboration dynamique où des agents d'IA spécialisés travaillent à vos côtés et avec votre équipe à chaque étape du cycle de vie du développement logiciel. \n\nImaginez déléguer une tâche de refactorisation complexe à un Software Developer Agent tout en ayant simultanément un Security Analyst Agent qui recherche des vulnérabilités et un Deep Research Agent qui analyse les progrès à travers l'historique de votre dépôt. Tout cela se déroule en parallèle, orchestré de manière transparente dans GitLab.\n\nAujourd'hui, nous annonçons le lancement de la [première version bêta publique de GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/gitlab-duo/agent-platform/) pour les clients GitLab.com et GitLab Self-Managed (GitLab Premium et Ultimate). Il s'agit seulement de la première d'une série de mises à jour qui amélioreront la façon dont les logiciels sont planifiés, compilés, vérifiés et déployés, tandis que nous amplifions l'ingéniosité humaine grâce à l'automatisation intelligente.\n\nCette première version bêta se concentre sur l’amélioration de l'expérience IDE via l'extension GitLab VS Code et le plug-in JetBrains IDEs. Le mois prochain, nous prévoyons d'apporter l'expérience Duo Agent Platform à l'application GitLab et d'étendre la prise en charge de l'IDE. Permettez-moi de partager un peu plus notre vision de la roadmap d'ici à la disponibilité générale, prévue pour la fin de l’année. Vous trouverez les détails sur la première version bêta ci-dessous.\n\nRegardez cette vidéo ou lisez la suite de cet article pour découvrir ce qui est désormais disponible et ce qui est à venir. Ensuite, si vous êtes prêt à démarrer avec Duo Agent Platform, découvrez comment faire vos premiers pas sur la version bêta publique.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101993507?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"GitLab Agent Platform Beta Launch_071625_MP_v2\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## La position de GitLab en tant que plateforme d'orchestration\n\nGitLab se trouve au cœur du cycle de vie du développement en tant que système d'enregistrement pour les équipes d'ingénierie, orchestrant l'ensemble du parcours, du concept à la production, pour plus de 50 millions d'utilisateurs enregistrés, dont la moitié des entreprises du classement Fortune 500. Cela comprend plus de 10 000 clients payants dans tous les segments et secteurs d’activité, y compris les institutions publiques.\n\nCe qui donne à GitLab un avantage qu'aucun concurrent ne peut égaler : une compréhension complète de tout ce qu'il faut pour livrer des logiciels. Nous rassemblons vos projets, votre code, vos tests, vos scans de sécurité, vos contrôles de conformité et vos configurations CI/CD au sein d'un seul et même endroit. De cette manière, vous améliorez la productivité de votre équipe et orchestrez la collaboration avec les agents d'IA que vous contrôlez.\n\nEn tant que plateforme DevSecOps intelligente et unifiée, GitLab stocke tout le contexte de votre pratique d'ingénierie logicielle en un seul endroit. Nous exposerons ces données unifiées aux agents d'IA via notre graphe de connaissances. Chaque agent que nous construisons a automatiquement accès à cet ensemble de données connecté au SDLC, fournissant un contexte riche pour que les agents puissent faire des recommandations éclairées et prendre des actions qui respectent vos normes organisationnelles.\n\n**Voici un exemple de cet avantage en action.** Avez-vous déjà essayé de comprendre exactement comment un projet progresse à travers des dizaines, voire des centaines de commentaires et de tickets traités par tous les développeurs impliqués ? Notre Deep Research Agent exploite le graphe de connaissances de GitLab et les capacités de recherche sémantique pour parcourir votre epic et tous les tickets connexes, explorer le code source associé et le contexte environnant. Il corrèle rapidement les informations à travers vos dépôts, merge requests et historique de déploiement. Cela fournit des informations essentielles que les outils autonomes ne peuvent égaler et que les développeurs humains mettraient des heures à découvrir. \n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101998114?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Deep Research Demo_071625_MP_v1\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## Notre évolution stratégique des fonctionnalités d'IA vers l'orchestration d'agents\n\nGitLab Duo a été lancé comme un module d’extension, apportant l'IA générative aux équipes de développement via GitLab Duo Pro et GitLab Duo Enterprise. Avec GitLab 18.0, GitLab Duo est désormais intégré à la plateforme. Nous avons débloqué [GitLab Duo Agentic Chat](https://about.gitlab.com/fr-fr/blog/gitlab-duo-chat-gets-agentic-ai-makeover/) et les suggestions de code pour tous les utilisateurs de GitLab Premium et Ultimate, et nous fournissons un accès immédiat à GitLab Duo Agent Platform. \n\nNous avons augmenté l'investissement en ingénierie et accélérons la livraison, avec de nouvelles fonctionnalités d’IA déployées chaque mois. Mais nous ne construisons pas juste un autre assistant de codage. GitLab Duo devient une plateforme d'orchestration d'agents, où vous pouvez créer, personnaliser et déployer des agents d’IA qui travaillent à vos côtés et interagissent facilement avec d'autres systèmes, augmentant ainsi votre productivité.\n\n> **« GitLab Duo Agent Platform améliore notre workflow de développement avec une IA qui comprend vraiment notre code source et notre organisation. Avoir des agents d’IA intégrés dans notre système d'enregistrement pour le code, les tests, le CI/CD et l'ensemble du cycle de vie du développement logiciel booste la productivité, la vélocité et l'efficacité. Les agents sont devenus de vrais collaborateurs pour nos équipes, et leur capacité à comprendre l'intention, à décomposer les problèmes et à agir permet à nos équipes de se concentrer sur des tâches innovantes et stimulantes. »** - Bal Kang, Engineering Platform Lead chez NatWest\n\n### Des agents qui fonctionnent immédiatement\n\nNous introduisons des agents qui reflètent des rôles d'équipe familiers. Ces agents peuvent rechercher, lire, créer et modifier des artefacts existants dans GitLab. Considérez-les comme des agents avec lesquels vous pouvez interagir individuellement, et qui agissent également comme des blocs de construction que vous pouvez personnaliser pour créer vos propres agents. Comme les membres de votre équipe, les agents ont des spécialisations définies, telles que le développement logiciel, les tests ou la rédaction technique. En tant que spécialistes, ils exploitent les bons contextes et outils pour accomplir de manière cohérente les mêmes types de tâches, où qu'ils soient déployés.\n\nVoici quelques-uns des agents que nous construisons aujourd'hui :\n\n* **Chat Agent (maintenant en version bêta) :** il prend des requêtes en langage naturel pour fournir des informations et du contexte à l'utilisateur. Il peut effectuer des tâches de développement générales, comme la lecture de tickets ou de différences de code. Par exemple, vous pouvez demander à Chat de déboguer un job qui a échoué en fournissant son URL. \n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101953504?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"agentic-chat-in-web-ui-demo_Update V1\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\u003Cp>\u003C/p>\n\n* **Software Developer Agent (maintenant en version bêta) :** il travaille sur des éléments assignés en créant des modifications de code dans des environnements de développement virtuels et en ouvrant des merge requests pour révision.\n\n* **Product Planning Agent :** il priorise les backlogs produit, assigne des éléments de travail aux membres humains et agentiques et l'équipe, et fournit des mises à jour de projet en fonction du calendrier.\n\n* **Software Test Engineer Agent :** il teste les nouvelles contributions de code pour les bogues et valide si les problèmes signalés ont été résolus.\n\n* **Code Reviewer Agent :** il effectue des revues de code suivant les normes de l'équipe, identifie les problèmes de qualité et de sécurité, et peut fusionner le code quand il est prêt.\n\n* **Platform Engineer Agent :** il surveille les déploiements GitLab, y compris les GitLab Runners, suit la santé du pipeline CI/CD, et rapporte les problèmes de performance aux équipes d'ingénierie de plateforme humaines.\n\n* **Security Analyst Agent :** il trouve des vulnérabilités dans le code source et les applications déployées, et implémente des modifications de code et de configuration pour aider à résoudre les faiblesses de sécurité.\n\n* **Deployment Engineer Agent :** il déploie des mises à jour en production, surveille les comportements inhabituels, et annule les modifications qui impactent les performances ou la sécurité de l'application.\n\n* **Deep Research Agent :** il mène une analyse complète et multi-sources à travers tout votre écosystème de développement.\n\nCe qui rend ces agents puissants, c'est leur accès natif à la boîte à outils complète de GitLab. Aujourd'hui, nous avons plus de 25 outils, des tickets et epics aux merge requests et à la documentation, et bien plus à venir. Contrairement aux outils d’IA externes qui fonctionnent avec un contexte limité, nos agents travaillent comme de véritables membres de l'équipe avec des privilèges complets de plateforme sous votre supervision.\n\nDans les mois à venir, vous pourrez également modifier ces agents pour répondre aux besoins de votre organisation. Par exemple, vous pourrez spécifier qu'un Software Test Engineer Agent suit les meilleures pratiques pour un framework ou une méthodologie particulière, approfondissant sa spécialisation et le transformant en un membre d'équipe encore plus précieux.\n\n## Les Flows orchestrent des tâches d'agents complexes\n\nAu-dessus des agents individuels, nous introduisons les Flows d'agents. Considérez-les comme des workflows plus complexes qui peuvent inclure plusieurs agents avec des instructions, étapes et actions pré-construites pour une tâche donnée qui peut s'exécuter de manière autonome.\n\nBien que vous puissiez créer des Flows pour des tâches de base communes aux individus, ils excellent vraiment lorsqu'ils sont appliqués à des tâches complexes et spécialisées qui prendraient normalement des heures de coordination et d'effort pour être complétées. Les Flows vous aideront à terminer des tâches complexes plus rapidement et, dans de nombreux cas, de manière asynchrone sans intervention humaine.\n\nLes Flows ont des déclencheurs spécifiques pour l'exécution. Chaque Flow contient une série d'étapes, et chaque étape a des instructions détaillées qui indiquent à un agent spécialisé quoi faire. Cette approche granulaire vous permet de donner des instructions précises aux agents dans le Flow. En définissant des instructions avec plus de détails et en établissant des points de décision structurés, les Flows peuvent aider à résoudre la variabilité inhérente aux réponses d'IA tout en éliminant le besoin de spécifier les mêmes exigences, débloquant des résultats plus cohérents et prévisibles sans configuration de la part de l'utilisateur.\n\nVoici quelques exemples de Flows prêts à l'emploi :\n\n**Flow de développement logiciel (maintenant en version bêta) :** il orchestre plusieurs agents pour planifier, implémenter et tester des modifications de code de bout en bout, aidant à transformer la façon dont les équipes livrent des fonctionnalités, du concept à la production.\n\n**Flow Issue-to-MR :** il convertit automatiquement les tickets en merge requests exploitables en coordonnant les agents pour analyser les exigences, préparer des plans de mise en œuvre complets et générer du code.\n\n**Flow de conversion de fichier CI :** il rationalise les workflows de migration en demandant aux agents d'analyser les configurations CI/CD existantes et de les convertir intelligemment au format GitLab CI avec une compatibilité complète du pipeline.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101941425?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"jenkins-to-gitlab-cicd-for-blog\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\u003Cp>\u003C/p>\n\n**Flow de recherche et remplacement :** il découvre et transforme des modèles de code à travers le code source en analysant systématiquement les structures de projet, identifiant les opportunités d'optimisation et exécutant des remplacements précis.\n\n**Flow de réponse aux incidents et analyse des causes profondes :** il orchestre la réponse aux incidents en corrélant les données système, coordonnant des agents spécialisés pour l'analyse des causes profondes et exécutant les étapes de remédiation approuvées tout en gardant les parties prenantes humaines informées tout au long du processus de résolution.\n\nC'est là que GitLab Duo Agent Platform adopte une approche vraiment unique par rapport aux autres solutions d’IA. Nous ne vous donnerons pas seulement des agents pré-construits. Nous vous donnerons également le pouvoir de créer, personnaliser et partager des Flows d'agents qui correspondent parfaitement aux besoins de vos équipes et de votre organisation. Avec les Flows, vous pourrez ensuite donner aux agents un plan d'exécution spécifique pour des tâches communes et complexes.\n\nNous croyons que cette approche est plus puissante que de construire des agents spécialisés comme le font nos concurrents, car chaque organisation a des workflows différents, des normes de codage, des exigences de sécurité et une logique métier. Les outils d’IA génériques ne peuvent pas comprendre votre contexte spécifique, mais GitLab Duo Agent Platform s’adaptera au fonctionnement de votre équipe.\n\n## Pourquoi construire des agents et des Flows d'agents dans GitLab Duo Agent Platform ?\n\n**Construire rapidement.** Vous pouvez construire des agents et des Flows d'agents complexes dans Duo Agent Platform rapidement et facilement en utilisant un modèle d'extensibilité déclaratif rapide et une assistance UI.\n\n**Calcul intégré.** Avec Duo Agent Platform, vous n'avez plus à vous soucier des tracas de mise en œuvre de votre propre infrastructure pour les agents : le calcul, le réseau et le stockage sont intégrés.\n\n**Événements SDLC.** Vos agents peuvent être invoqués automatiquement sur des événements communs : pipeline en échec, déploiement interrompu, problème créé, etc.\n\n**Accès instantané.** Vous pouvez interagir avec vos agents dans GitLab ou au sein de notre plug-in IDE : assignez-leur des tickets, @mentionnez-les dans les commentaires et discutez avec eux partout où GitLab Duo Chat est disponible.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1102029239?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"assigning an agent an issue\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script> \u003Cp>\u003C/p>\n\n**Modèles intégrés et personnalisés pris en charge.** Vos agents auront un accès automatique à tous les modèles que nous prenons en charge, et les utilisateurs pourront choisir des modèles spécifiques pour des tâches spécifiques. Si vous souhaitez connecter Duo Agent Platform à votre propre modèle auto-hébergé, vous pourrez également le faire. \n\n**Points de terminaison MCP.** Chaque agent et Flow peut être accessible ou déclenché via des points de terminaison MCP natifs, vous permettant de vous connecter et de collaborer avec vos agents et vos Flows de n'importe où, y compris des outils populaires comme Claude Code, Cursor, Copilot et Windsurf.\n\n**Observabilité et sécurité.** Enfin, nous fournissons une observabilité intégrée et des tableaux de bord d'utilisation, afin que vous puissiez voir exactement qui, où, quoi et quand les agents ont effectué des actions en votre nom.\n\n## Un avenir piloté par la communauté\n\nLes contributions de la communauté ont longtemps alimenté l'innovation et le développement logiciel de GitLab. Nous sommes ravis de nous associer à notre communauté avec l'introduction du Catalogue IA. Le Catalogue IA vous permettra de créer et de partager des agents et des Flows au sein de votre organisation et à travers l'écosystème GitLab dans notre prochaine version bêta.\n\nNous croyons que les applications d’IA les plus précieuses sont susceptibles d'émerger de notre communauté, grâce à votre usage quotidien de GitLab Duo Agent Platform pour résoudre de nombreux cas d'utilisation du monde réel. En permettant le partage transparent d'agents et de Flows, nous créons un effet de réseau où chaque contribution améliore l'intelligence et la valeur collectives de la plateforme.\n\n![AI Catalog](https://res.cloudinary.com/about-gitlab-com/image/upload/v1752685501/awdwx08udwrxgvcpmssb.png \"AI Catalog\")\n\n## Disponible aujourd'hui dans GitLab Duo Agent Platform en bêta publique\n\nLa version bêta publique de GitLab Duo Agent Platform est disponible dès maintenant pour les clients Premium et Ultimate avec les fonctionnalités suivantes :\n\n**Flow de Développement Logiciel :** notre premier Flow orchestre des agents pour rassembler un contexte complet, clarifier les ambiguïtés avec les équipes de développement humaines et exécuter des plans stratégiques pour apporter des modifications précises à votre code source et votre dépôt. Il exploite l'ensemble de votre projet, y compris sa structure, son code source et son historique, ainsi que des contextes supplémentaires comme les tickets GitLab ou les merge requests pour amplifier la productivité des équipes de développement.\n\n**Nouveaux outils d'agent disponibles :** les agents ont maintenant accès à plusieurs outils pour faire leur travail, notamment :\n\n* Système de fichiers (lire, créer, éditer, trouver des fichiers, lister, Grep)\n* Exécuter la ligne de commande*\n* Tickets (lister, obtenir, obtenir les commentaires, éditer*, créer*, ajouter/mettre à jour les commentaires*)\n* Epics (obtenir, obtenir les commentaires)\n* Merge requests (obtenir, obtenir les commentaires, obtenir le diff, créer, mettre à jour)\n* Pipeline (job logs, erreurs de pipeline)\n* Projet (obtenir, obtenir le fichier)\n* Commits (obtenir, lister, obtenir les commentaires, obtenir le diff)\n* Recherche (recherche de problèmes)\n* Sécurisé (lister les vulnérabilités)\n* Recherche de documentation\n  *=Nécessite l'approbation de l'utilisateur\n\n**GitLab Duo Agentic Chat dans l'IDE :** Duo Agentic Chat transforme l'expérience de chat d'un outil de questions-réponses passif en un partenaire de développement actif directement dans votre IDE.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101953477?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"agentic-ai-launch-video_Updated V1\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n* **Retour itératif et historique de chat :** Duo Agentic Chat prend désormais en charge l'historique de chat et le retour itératif, transformant l'agent en un partenaire conversationnel. Cela favorise la confiance, permettant aux équipes de développement de déléguer des tâches plus complexes et d'offrir des conseils correctifs.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101743173?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"agentic-chat-history\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n* **Délégation rationalisée avec des commandes slash :** des commandes slash étendues et plus puissantes, telles que /explain, /tests et /include, créent un « langage de délégation » pour une intention rapide et précise. La commande /include permet l'injection explicite de contexte à partir de fichiers spécifiques, de tickets ouverts, de merge requests ou de dépendances directement dans la mémoire de travail de l'agent, rendant l'agent plus puissant et enseignant aux utilisateurs comment fournir un contexte optimal pour des réponses de qualité.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101743187?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"include-agentic-chat-jc-voiceover\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n* **Personnalisation via des règles personnalisées :** les nouvelles règles personnalisées permettent aux équipes de développement d'adapter le comportement de l'agent en fonction de leurs préférences en utilisant le langage naturel, par exemple, des guides de style de développement. Ce mécanisme façonne la personnalité de l'agent en un assistant personnalisé, évoluant vers des agents spécialisés basés sur les préférences définies par l'utilisateur et les politiques organisationnelles.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101743179?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"custom-rules-with-jc-voiceover\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n* **Support pour GitLab Duo Agentic Chat dans JetBrains IDE :** Pour aider à rencontrer les développeurs là où ils travaillent, nous avons étendu la prise en charge de Duo Agentic Chat à la famille d'IDE JetBrains, y compris IntelliJ, PyCharm, GoLand et Webstorm. Cela s'ajoute à notre support existant pour VS Code. Les utilisateurs existants obtiennent automatiquement les fonctionnalités agentiques, tandis que les nouveaux utilisateurs peuvent installer le plugin depuis le JetBrains Marketplace.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101743193?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"jetbrains-support-jc-voiceover\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n* **Support client MCP :** Duo Agentic Chat peut maintenant agir comme client MCP, se connectant aux serveurs MCP distants et locaux.\n\nCette fonctionnalité débloque la capacité de l'agent à se connecter à des systèmes au-delà de GitLab comme Jira, ServiceNow et ZenDesk pour rassembler du contexte ou prendre des mesures. Tout service qui s'expose via MCP peut maintenant faire partie de l'ensemble de compétences de l'agent. Le serveur MCP officiel GitLab arrive bientôt !\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1101743202?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"McpDemo\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n* **GitLab Duo Agentic Chat dans l'interface Web de GitLab.** Duo Agentic Chat est maintenant disponible directement dans l'interface Web de GitLab. Cette étape fait évoluer l'agent d'un assistant de codage à un véritable agent DevSecOps, car il accède à un contexte riche non lié au code, comme les tickets et les discussions intégrées aux merge requests, lui permettant de comprendre le « pourquoi » derrière une tâche. Au-delà de la compréhension du contexte, l'agent peut apporter des modifications directement depuis l'interface Web, comme mettre à jour automatiquement les statuts des tickets ou éditer les descriptions des merge requests.\n\n## Bientôt disponible dans GitLab Duo Agent Platform\n\nAu cours des prochaines semaines, nous publierons de nouvelles capacités pour Duo Agent Platform, y compris plus d'agents et de Flows prêts à l'emploi. Celles-ci permettront une personnalisation et une extensibilité encore plus grandes, amplifiant la productivité de nos clients : \n\n![GitLab Duo Agent Platform public beta roadmap](https://res.cloudinary.com/about-gitlab-com/image/upload/v1752685275/hjbe9iiu2ydp9slibsc2.png \"GitLab Duo Agent Platform public beta roadmap\")\n\n* **Expérience GitLab intégrée :** s'appuyant sur les extensions IDE disponibles dans 18.2, nous étendons les agents et les Flows au sein de la plateforme GitLab. Cette intégration élargira la manière dont vous pouvez collaborer de manière synchrone et asynchrone avec les agents. Vous pourrez assigner des tickets directement aux agents, les @mentionner dans GitLab Duo Chat, et les invoquer de manière transparente depuis n'importe où dans l'application tout en maintenant la connectivité MCP depuis votre outil de développement préféré. Cette intégration native transforme les agents en véritables membres de l'équipe de développement, accessibles dans GitLab.\n\n* **Observabilité des agents :** alors que les agents deviennent plus autonomes, nous construisons une visibilité complète de leur activité pendant qu'ils progressent dans les Flows, vous permettant de surveiller leurs processus de prise de décision, de suivre les étapes d'exécution et de comprendre comment ils interprètent et agissent sur vos défis liés au développement. Cette transparence dans le comportement des agents renforce la confiance tout en vous permettant d'optimiser les workflows, d'identifier les goulots d'étranglement et aide à garantir que les agents fonctionnent comme prévu.\n\n* **Catalogue IA :** reconnaissant que les grandes solutions viennent de l'innovation communautaire, nous introduirons bientôt la bêta publique de notre Catalogue IA — une marketplace qui vous permettra d'étendre Duo Agent Platform avec des agents et des Flows spécialisés provenant de GitLab, et au fil du temps, de la communauté. Vous pourrez déployer rapidement ces solutions dans GitLab, en exploitant le contexte à travers vos projets et votre code source.\n\n* **Graphe de connaissances :** exploitant l'avantage unique de GitLab en tant que système d'enregistrement pour le code source et son contexte environnant, nous construisons un graphe de connaissances complet qui non seulement cartographie les fichiers et les dépendances à travers le code source, mais rend également cette carte navigable pour les utilisateurs tout en accélérant les temps de requête IA et en aidant à augmenter la précision. Cela permet aux agents GitLab Duo de comprendre rapidement les relations à travers tout votre environnement de développement, des dépendances de code aux modèles de déploiement, débloquant des réponses plus rapides et plus précises aux questions complexes.\n\n![GitLab Duo Agent Platform Knowledge Graph](https://res.cloudinary.com/about-gitlab-com/image/upload/v1752685367/n0tvfgorchuhrronic3j.png \"GitLab Duo Agent Platform Knowledge Graph\")\n\n* **Créer et éditer des agents et des Flows :** comprenant que chaque organisation a des workflows et des exigences uniques, nous développons de puissantes capacités de création et d'édition d'agents et de Flows qui seront introduites à mesure que le Catalogue IA mûrit. Vous pourrez créer et modifier des agents et des Flows pour qu'ils fonctionnent précisément comme votre organisation, offrant une personnalisation à travers Duo Agent Platform qui permet des résultats de meilleure qualité et une productivité accrue.\n\n![AI Catalog](https://res.cloudinary.com/about-gitlab-com/image/upload/v1752684938/fruwqcqvvrx8gmkz5u0v.png \"AI Catalog\")\n\n* **Serveur MCP officiel GitLab :** reconnaissant que les développeurs travaillent à travers plusieurs outils et environnements, nous construisons un serveur MCP officiel GitLab qui vous permettra d'accéder à tous vos agents et Flows via MCP. Vous pourrez vous connecter et collaborer avec vos agents et vos Flows quel que soit l'endroit oú le MCP est pris en charge, y compris depuis des outils populaires comme Claude Code, Cursor, Copilot et Windsurf, débloquant une collaboration IA transparente quel que soit votre environnement de développement préféré.\n\n* **GitLab Duo Agent Platform CLI :** notre interface de ligne de commande à venir vous permettra d'invoquer des agents et de déclencher des Flows en ligne de commande, en exploitant le contexte riche de GitLab à travers l'ensemble du cycle de vie du développement logiciel : des dépôts de code et des merge requests aux pipelines CI/CD et au suivi des tickets.\n\n## Testez notre bêta publique dès aujourd'hui !\n\n* **Les clients GitLab Premium et Ultimate** dans les environnements GitLab.com et GitLab Self-Managed utilisant GitLab 18.2 peuvent utiliser Duo Agent Platform immédiatement (les fonctionnalités bêta et expérimentales pour GitLab Duo [doivent être activées](https://docs.gitlab.com/user/gitlab_duo/turn_on_off/#turn-on-beta-and-experimental-features)).\n\n* Les utilisateurs doivent télécharger l'[extension VS Code](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow) ou le [plugin JetBrains IDEs](https://plugins.jetbrains.com/plugin/22857-gitlab) et suivre notre [guide pour utiliser GitLab Duo Agentic Chat](https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/#use-agentic-chat), y compris les [commandes slash](https://docs.gitlab.com/user/gitlab_duo_chat/examples/#gitlab-duo-chat-slash-commands) Duo Chat.\n\n**Nouveau sur GitLab ?** Tout le monde peut rejoindre notre prochaine [démo Technique pour découvrir GitLab Duo Agent Platform](https://page.gitlab.com/webcasts-jul16-gitlab-duo-agentic-ai-emea-amer.html) en action. Pour avoir une expérience pratique avec GitLab Duo Agent Platform, inscrivez-vous pour un [essai gratuit](https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com%2Fsales%2F) aujourd'hui.\n\n\u003Csmall>*Cet article de blog contient des « déclarations prospectives » au sens de la Section 27A du Securities Act de 1933, tel que modifié, et de la Section 21E du Securities Exchange Act de 1934. Bien que nous croyions que les attentes reflétées dans les déclarations prospectives contenues dans cet article de blog sont raisonnables, elles sont soumises à des risques connus et inconnus, des incertitudes, des hypothèses et d'autres facteurs qui peuvent faire que les résultats ou les issues réels soient matériellement différents de tout résultat ou issue futur exprimé ou impliqué par les déclarations prospectives.*\n\n*Des informations supplémentaires sur les risques, incertitudes et autres facteurs qui pourraient faire que les résultats et les issues réels diffèrent matériellement de ceux inclus ou envisagés par les déclarations prospectives contenues dans cet article de blog sont incluses sous la rubrique « Facteurs de risque » et ailleurs dans les dépôts et rapports que nous faisons auprès de la Securities and Exchange Commission. Nous ne nous engageons pas à mettre à jour ou à réviser toute déclaration prospective ou à signaler tout événement ou circonstance après la date de cet article de blog ou à refléter la survenance d'événements imprévus, sauf si la loi l'exige.*\u003C/small>",{"featured":93,"template":686,"slug":687},"BlogPost","gitlab-duo-agent-platform-public-beta","content:fr-fr:blog:gitlab-duo-agent-platform-public-beta.yml","Gitlab Duo Agent Platform Public Beta","fr-fr/blog/gitlab-duo-agent-platform-public-beta.yml","fr-fr/blog/gitlab-duo-agent-platform-public-beta",[693,714,731,755,778,799,819,840,860,880,900,922,943,965,986,1005,1025,1045,1066,1086,1110,1132,1156,1175,1196,1215,1236,1259,1281,1301,1322],{"_path":694,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":695,"content":699,"config":708,"_id":710,"_type":16,"title":711,"_source":18,"_file":712,"_stem":713,"_extension":21},"/fr-fr/blog/enhance-application-quality-with-ai-powered-test-generation",{"noIndex":6,"title":696,"ogTitle":696,"description":697,"ogDescription":697,"ogImage":698},"Améliorez votre processus d'assurance qualité avec l’IA","Découvrez comment GitLab Duo combiné à Amazon Q améliore le processus d'assurance qualité en générant automatiquement des tests unitaires complets.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,w_1640,h_1000,c_lfill/v1749659604/Blog/Hero%20Images/Screenshot_2024-11-27_at_4.55.28_PM.png",{"title":700,"description":697,"authors":701,"heroImage":698,"date":703,"body":704,"category":14,"tags":705},"Améliorer la qualité des applications avec la génération de tests alimentée par l'IA",[702],"Cesar Saavedra","2025-07-15","Vous savez à quel point la qualité des applications est essentielle pour vos clients et votre réputation. Cependant, garantir cette qualité avec des tests complets peut s’avérer complexe. Vous êtes confronté à des processus manuels chronophages, une couverture de test incohérente au sein de votre équipe, ou des problèmes qui parviennent à passer à travers les mailles du filet. Il est ainsi frustrant de voir votre notation chuter à cause d’une assurance qualité qui devient un goulot d'étranglement plutôt qu'une protection.\n\nC'est là que [GitLab Duo combiné à Amazon Q](https://about.gitlab.com/fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/) peut transformer votre processus d’assurance qualité. Cette fonctionnalité alimentée par l'IA peut générer automatiquement des tests unitaires complets pour votre code, accélérant considérablement votre workflow d'assurance qualité. Au lieu de passer des heures à écrire des tests manuellement, vous pouvez laisser l'IA analyser votre code et créer des tests qui garantissent une couverture optimale et une qualité constante au sein de votre application.\n\n## Comment fonctionne GitLab Duo combiné à Amazon Q ?\n\nLorsque vous travaillez sur une nouvelle fonctionnalité, vous commencez par sélectionner la classe Java que vous avez ajoutée à votre projet via une merge request. Il vous suffit de naviguer vers votre merge request et de cliquer sur l'onglet « Modifier » pour voir le nouveau code que vous avez ajouté.\n\nEnsuite, vous invoquez Amazon Q en saisissant une commande d'action rapide. Tout ce que vous devez faire est de renseigner `/q test` dans la zone de commentaire du ticket. C'est aussi simple que cela : juste une barre oblique, la lettre « q », et le mot « test ».\n\nUne fois que vous avez appuyé sur la touche Entrée, Amazon Q entre en action. Il analyse votre code sélectionné, comprend sa structure, sa logique et son objectif. L'IA examine les méthodes de votre classe, les dépendances, et les cas limites potentiels pour déterminer quels tests sont nécessaires.\n\nEn quelques instants, Amazon Q génère une couverture de tests unitaires complète pour votre nouvelle classe. Il crée des tests qui couvrent non seulement le chemin heureux (« happy path »), mais aussi les cas limites et les conditions d'erreur que vous auriez pu négliger. Les tests générés suivent les modèles et conventions existants de votre projet, garantissant qu'ils s'intègrent parfaitement à votre code source.\n\n## Pourquoi utiliser GitLab Duo combiné à Amazon Q ?\n\nVous avez commencé avec le défi suivant : maintenir des applications de haute qualité tout en gérant les contraintes de temps et les pratiques de test incohérentes. GitLab Duo combiné à Amazon Q répond à ce défi en automatisant le processus de génération de tests, garantissant une couverture de code optimale et des normes de test cohérentes. Résultat ? Les problèmes sont détectés avant le déploiement, vos applications maintiennent leur qualité, et vous pouvez développer des logiciels plus rapidement sans sacrifier la fiabilité.\n\nAvantages clés de cette fonctionnalité :\n\n* Une réduction du temps consacré à l'écriture de tests unitaires\n* Une couverture de tests complète sur l'ensemble de votre code source\n* Une qualité de tests constante pour tous les membres de votre équipe\n* Une détection des problèmes avant qu'ils n'atteignent l’environnement de production\n* Une accélération de votre vitesse de développement\n\nVous souhaitez en savoir plus sur cette fonctionnalité ? Découvrez comment GitLab Duo combiné à Amazon Q transforme votre processus d'assurance qualité et consultez notre [page partenaire GitLab et AWS](https://about.gitlab.com/partners/technology-partners/aws/ \"Page partenaire GitLab et AWS\") pour obtenir des informations détaillées.\n\n\u003C!-- blank line -->\n\n\u003Cfigure class=\"video_container\">\n\u003Ciframe src=\"https://www.youtube.com/embed/pxlYJVcHY28?si=MhIz6lnHxc6kFhlL\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n#### En savoir plus sur GitLab Duo combiné à Amazon Q\n\n* [GitLab Duo combiné à Amazon Q : quand le DevSecOps rencontre l’IA agentique](https://about.gitlab.com/fr-fr/blog/gitlab-duo-with-amazon-q-devsecops-meets-agentic-ai/)\n* [GitLab Duo combiné à Amazon Q : l'IA agentique optimisée pour AWS disponible à tous les utilisateurs](https://about.gitlab.com/fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/)\n* [GitLab Duo combiné à Amazon Q : créez de nouvelles fonctionnalités en quelques minutes](https://about.gitlab.com/fr-fr/blog/gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes/) \n* [GitLab Duo combiné à Amazon Q : optimisez vos revues de code](https://about.gitlab.com/fr-fr/blog/accelerate-code-reviews-with-gitlab-duo-and-amazon-q/)",[675,706,707],"AWS","DevSecOps",{"featured":6,"template":686,"slug":709},"enhance-application-quality-with-ai-powered-test-generation","content:fr-fr:blog:enhance-application-quality-with-ai-powered-test-generation.yml","Enhance Application Quality With Ai Powered Test Generation","fr-fr/blog/enhance-application-quality-with-ai-powered-test-generation.yml","fr-fr/blog/enhance-application-quality-with-ai-powered-test-generation",{"_path":715,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":716,"content":720,"config":725,"_id":727,"_type":16,"title":728,"_source":18,"_file":729,"_stem":730,"_extension":21},"/fr-fr/blog/gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops",{"noIndex":6,"title":717,"description":718,"ogImage":719,"ogTitle":717,"ogDescription":718},"GitLab Duo Agent Platform : le DevSecOps intelligent","La plateforme DevSecOps GitLab Duo Agent Platform orchestre la collaboration entre développeurs et agents d'IA tout au long du SDLC avec l'IA agentique.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750687578/esmflevxk5bf3eezjhwk.png",{"heroImage":719,"date":721,"title":717,"description":718,"authors":722,"body":723,"category":14,"tags":724},"2025-07-03",[682],"Découvrez GitLab Duo Agent Platform, la prochaine évolution de GitLab Duo Workflow : cette plateforme innovante étend les fonctionnalités d'[IA agentique](https://about.gitlab.com/fr-fr/topics/agentic-ai/ \"Qu'est-ce que l'IA agentique ?\") à l'ensemble du cycle de développement logiciel et permet aux équipes [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ?\") de travailler en parallèle avec plusieurs agents d'IA spécialisés.\n\nVoici à quoi pourrait ressembler une de vos journées de travail :\n\n* Vous demandez à un agent d'IA d'étudier en détail un epic en cours, de résumer les contributions de la semaine précédente et de suggérer une publication pour annoncer les dernières fonctionnalités.\n* En parallèle, vous déléguez à plusieurs autres agents d'IA l'analyse de bogues d'accessibilité en leur demandant d'appliquer directement les corrections nécessaires dans le code.\n* Pendant ce temps, un autre agent d'IA relit vos modifications complexes et vous fournit des commentaires et suggestions avant une revue de code en bonne et due forme par un membre de votre équipe.\n* Enfin, lorsque l'équipe de sécurité vous signale une nouvelle vulnérabilité qui doit faire l'objet d'une investigation dans l'ensemble de votre projet, vous confiez cette tâche à votre agent d'IA dédié à la sécurité.\n\nToutes ces opérations sont exécutées simultanément pour vous aider à vous concentrer sur des tâches à forte valeur ajoutée : décisions d'architecture, résolution créative de problèmes et travail technique stratégique. Avec GitLab Duo Agent Platform, vous pouvez déléguer des tâches à cinq, dix, voire cent agents spécialisés, qui disposent tous du contexte complet de votre projet : votre code, les job logs CI, les tâches de planification, et bien plus encore. Vous automatisez ainsi vos tâches fastidieuses afin de pouvoir vous concentrer sur le travail qui vous passionne vraiment.\n\n**Il ne s'agit pas là de remplacer les équipes de développement, mais d'amplifier leur créativité et leur expertise en éliminant les points de friction liés aux tâches routinières.** C'est l'avenir que nous façonnons avec GitLab Duo Agent Platform.\n\n## Qu'est-ce que GitLab Duo Agent Platform ?\n\nGitLab Duo Agent Platform facilite la collaboration entre plusieurs équipes de développement et agents d'IA tout au long du cycle du développement logiciel, afin de les aider à améliorer considérablement leur productivité et à réduire la durée de leurs cycles de livraison.\n\nReposant sur la base sécurisée de GitLab, GitLab Duo Agent Platform est personnalisable et extensible. La plateforme permet aux équipes de développement de créer des agents capables de résoudre toutes sortes de problématiques d'ingénierie logicielle, en tirant parti du contexte global du projet à chaque étape du développement logiciel.\n\nGitLab Duo Agent Platform ne se limite pas à la création de code. La plateforme propose des agents spécialisés et des workflows personnalisés qui peuvent vous aider à réaliser une liste presque illimitée de tâches, notamment :\n\n* L'implémentation de tickets\n* Les migrations à grande échelle/mises à niveau des dépendances\n* La rédaction automatique de documentations et de publications pour annoncer la sortie de nouvelles fonctionnalités\n* La réparation de [pipelines en échec](https://about.gitlab.com/fr-fr/blog/quickly-resolve-broken-ci-cd-pipelines-with-ai/ \"Echec de pipeline\")\n* La recherche assistée lors d'incidents\n* La recherche approfondie de statuts et d'informations sur différents sujets\n* La gestion du backlog\n* La résolution de vulnérabilités\n* Les revues de certains types de code spécifiques (p. ex., base de données)\n* La création rapide d'outils internes à partir des composants déjà disponibles\n* Et plus encore !\n\nVous pourrez utiliser nos agents prêts à l'emploi, mais aussi les personnaliser et enrichir leurs capacités. Nous testons actuellement la version bêta de GitLab Duo Agent Platform avec l'aide de dizaines de clients et nous ouvrirons bientôt l'accès à d'autres équipes.\n\nDécouvrez une démonstration de GitLab Duo Agent Platform :\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1095679084?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Agent Platform Demo Clip\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## Outils, modèles et agents : à vous de choisir\n\nConformément à notre engagement de proposer une plateforme ouverte, les agents GitLab interagissent de manière fluide avec les outils d'écriture de code de votre choix via les protocoles Model Context Protocol (MCP) et Agent2Agent (A2A), que vous utilisiez Cursor, Claude Code, Windsurf, OpenAI Codex ou d'autres.\n\nLa plateforme accepte les contributions de code de n'importe quel outil de développement de votre pile, que ce code ait été écrit par un développeur ou généré par un agent d'IA. Vos workflows existants et vos outils préférés continueront à fonctionner de manière homogène lorsque vous intégrerez les fonctionnalités agentiques.\n\nGitLab Duo Agent Platform fonctionne avec les modèles de langage approuvés qui [répondent à nos critères de sélection](https://about.gitlab.com/fr-fr/ai-transparency-center/#ai-continuity-plan). Pour les entreprises qui ont des exigences strictes en matière de sécurité, la plateforme prend en charge les modèles de GitLab Duo Self-Hosted approuvés qui s'exécutent dans des environnements air-gapped. Vos exigences en matière d'infrastructure et vos règles de sécurité ne limiteront pas votre capacité à tirer parti du développement agentique.\n\n## Le contexte fait la différence, vos agents GitLab Duo aussi\n\nLa différence entre un outil d'IA utile et un agent véritablement intelligent se résume au contexte. Avec GitLab Duo Agent Platform, les agents ne travaillent pas de manière isolée : ils sont profondément intégrés à la plateforme de développement.\n\nChaque agent comprend automatiquement la vue d'ensemble de vos projets, y compris vos tickets ouverts et leur historique, les merge requests qui les ont résolus, la structure et la logique de votre code, la configuration de vos [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\"), les risques de sécurité détectés, les exigences de conformité ainsi que les relations complexes entre tous ces éléments.\n\nTout comme les membres de votre équipe, les agents disposent de tout le contexte nécessaire pour vous aider à livrer des logiciels sécurisés plus rapidement. Ils ne se contentent pas de répondre à des questions sur le code, ils sont également en mesure de fournir des analyses sur l'impact potentiel d'un changement sur votre pipeline de déploiement ou de suggérer des améliorations de sécurité en fonction de vos règles de conformité. Plus votre équipe travaillera au sein de la plateforme DevSecOps de GitLab, plus vos agents deviendront intelligents.\n\n## Des équipes plus productives avec les agents d'IA\n\nIl est presque aussi simple d'établir un climat de confiance avec les agents d'IA qu'avec les nouveaux membres d'une équipe. Vous devez tout d'abord vérifier leur travail, puis comprendre leur approche et enfin augmenter progressivement leurs responsabilités à mesure qu'ils prouvent leurs compétences.\n\nC'est ainsi que nous avons pensé notre workflow d'approbation des agents. Avant qu'un agent apporte des modifications à votre code ou à votre environnement, il vous présentera un plan clair : sa compréhension du problème, l'approche qu'il prévoit d'adopter et les actions spécifiques qu'il souhaite effectuer. Vous aurez ensuite la possibilité d'examiner l'approche qu'il aura choisie, de l'approuver ou de donner de nouvelles instructions si nécessaire. Au fil du temps, les agents fourniront un travail de plus en plus qualitatif, vous pourrez leur accorder une plus grande autonomie pour la réalisation des tâches répétitives, tout en continuant à superviser les tâches complexes ou critiques.\n\n## Une plateforme conçue pour la communauté et adaptée à vos besoins\n\nGitLab a toujours évolué grâce aux contributions de sa communauté. Cette année, nous avons franchi une étape importante, car les contributions de nos clients ont atteint un niveau record. Nous étendons désormais cette même énergie collaborative aux agents d'IA grâce à notre approche de framework ouvert.\n\nGitLab Duo Agent Platform ne se limite pas aux agents que nous créons, mais vous donne, à vous ainsi qu'à la communauté au sens large, les moyens de créer des agents spécialisés capables de résoudre vos défis d'ingénierie uniques. Que vous ayez besoin d'un agent qui comprend vos normes de codage spécifiques, qui s'intègre à votre chaîne d'outils personnalisée ou qui gère des tâches propres à votre domaine, la plateforme vous fournira les éléments de base nécessaires pour y parvenir.\n\nCe modèle crée un cercle vertueux qui tire parti de la force de la communauté GitLab grâce au partage mondial, à l'instar de notre [catalogue CI/CD](https://about.gitlab.com/blog/ci-cd-catalog-goes-ga-no-more-building-pipelines-from-scratch/). La diversité des expériences de nos clients est source d'innovation. Les retours que nous recevons des entreprises renforcent la fiabilité et la sécurité. Et les solutions partagées profitent à tous. C'est cette même approche collaborative qui a fait le succès de GitLab et qui s'applique désormais au développement agentique.\n\n## Premiers pas avec GitLab Duo Agent Platform\n\nSi vous avez testé [GitLab Duo Agentic Chat](https://about.gitlab.com/fr-fr/blog/gitlab-duo-chat-gets-agentic-ai-makeover/), désormais inclus dans chaque licence utilisateur GitLab.com GitLab 18 Premium et Ultimate, vous avez déjà eu un aperçu des possibilités offertes par l'utilisation d'agents d'IA dans votre workflow de développement.\n\nPour découvrir les capacités de GitLab Duo Agent Platform et les projets sur lesquels nous travaillons actuellement, visionnez les [démonstrations incluses dans notre événement de lancement de GitLab 18](https://about.gitlab.com/fr-fr/eighteen/).\n\nVous souhaitez être parmi les premiers à l'essayer ? Inscrivez-vous sur la [liste d'attente de la version bêta de GitLab Duo Agent Platform](https://about.gitlab.com/gitlab-duo/agent-platform/). Cet été, nous ouvrirons l'accès à d'autres équipes. De nouvelles fonctionnalités d'agent sortiront tout au long de l'année dans les prochaines versions de GitLab 18. Nous prévoyons de proposer GitLab Duo Agent Platform en disponibilité générale cet hiver.\n\n*Avertissement : cet article de blog contient des informations relatives aux produits, fonctionnalités et caractéristiques à venir. Il est important de noter que celles-ci ne sont fournies qu'à titre informatif. Veuillez ne pas vous fier à ces informations à des fins d'achat ou de planification. Comme pour tout projet, les éléments mentionnés dans cet article sont susceptibles de changer ou d'être retardés. Le développement, la sortie et le calendrier de tout produit ou de toute fonctionnalité restent à la seule discrétion de GitLab Inc.*\n\n## En savoir plus\n\n- [Du vibe coding à l'IA agentique : une roadmap pour les responsables techniques](https://about.gitlab.com/the-source/ai/from-vibe-coding-to-agentic-ai-a-roadmap-for-technical-leaders/)\n\n- [Automatisation DevOps et agents d'IA](https://about.gitlab.com/topics/agentic-ai/devops-automation-ai-agents/)\n\n- [Développement logiciel augmenté par l'IA : l'IA agentique dédiée au DevOps](https://about.gitlab.com/topics/agentic-ai/ai-augmented-software-development/)\n\n- [Analyse de code pilotée par l'IA pour une sécurité renforcée](https://about.gitlab.com/topics/agentic-ai/ai-code-analysis/)\n",[675,707,678,676],{"featured":6,"template":686,"slug":726},"gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops","content:fr-fr:blog:gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops.yml","Gitlab Duo Agent Platform What Is Next For Intelligent Devsecops","fr-fr/blog/gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops.yml","fr-fr/blog/gitlab-duo-agent-platform-what-is-next-for-intelligent-devsecops",{"_path":732,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":733,"content":740,"config":749,"_id":751,"_type":16,"title":752,"_source":18,"_file":753,"_stem":754,"_extension":21},"/fr-fr/blog/accelerate-code-reviews-with-gitlab-duo-and-amazon-q",{"ogTitle":734,"ogImage":735,"ogDescription":736,"ogSiteName":737,"noIndex":6,"ogType":738,"ogUrl":739,"title":734,"canonicalUrls":739,"description":736},"GitLab Duo combiné à Amazon Q : optimisez vos revues de code","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750096976/Blog/Hero%20Images/Blog/Hero%20Images/Screenshot%202024-11-27%20at%204.55.28%E2%80%AFPM_4VVz6DgGBOvbGY8BUmd068_1750096975734.png","Découvrez comment optimiser vos revues de code avec des agents d’IA capables d’analyser et de corriger vos merge requests.","https://about.gitlab.com","article","https://about.gitlab.com/blog/accelerate-code-reviews-with-gitlab-duo-and-amazon-q",{"title":734,"description":741,"authors":742,"heroImage":735,"date":743,"body":744,"category":14,"tags":745},"Découvrez comment optimiser vos revues de code avec des agents d’IA capables d'analyser automatiquement vos merge requests et de vous fournir des commentaires complets sur les bogues, la lisibilité et les normes de codage.",[702],"2025-06-27","Les revues de code sont essentielles pour détecter les bogues, améliorer la lisibilité du code et garantir le respect des normes de codage. Elles peuvent toutefois constituer un goulot d'étranglement majeur qui ralentit votre workflow. Lorsque vous devez livrer rapidement des fonctionnalités, attendre que plusieurs membres de l'équipe examinent votre code peut vite devenir une source de frustration. Entre les discussions interminables, les conflits de calendrier et le temps nécessaire pour que tout le monde soit sur la même longueur d'onde, une revue de code simple peut facilement s'étendre sur plusieurs jours, voire plusieurs semaines.\n\nAvec [GitLab Duo combiné à Amazon Q](https://about.gitlab.com/fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/), ce scénario appartient maintenant au passé. Notre nouvel outil d'[IA agentique](https://about.gitlab.com/fr-fr/topics/agentic-ai/ \"Qu'est-ce que l'IA agentique ?\") dédié aux clients AWS intervient à chaque étape du cycle de développement logiciel pour effectuer une revue complète de votre code en une fraction du temps qu'il vous faudrait, à vous et vos collègues. En tirant parti des capacités avancées de l'IA agentique, GitLab Duo combiné à Amazon Q rationalise l'ensemble de votre workflow de revue de code et maintient la qualité et la rigueur dont votre équipe a besoin. Vous disposez ainsi d'un relecteur expérimenté et disponible à tout moment, capable d'analyser instantanément votre code, de détecter les problèmes et de fournir des recommandations pertinentes et exploitables.\n\n## Lancement d'une revue de code\n\nComment fonctionne GitLab Duo combiné à Amazon Q ? Imaginons que vous venez de finaliser la mise à jour d'une fonctionnalité via une merge request répertoriant toutes les modifications que vous avez apportées au code. Au lieu de contacter vos collègues et d'attendre qu'ils soient disponibles pour relire votre travail, il vous suffit de saisir une commande rapide directement dans les commentaires : « /q review ». Cette commande suffit pour que l’IA entre en action. \n\n![Déclenchement d'une revue de code à l'aide de GitLab Duo combiné à Amazon Q](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097002/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097002096.png)\n\nL'agent Amazon Q s'active immédiatement et analyse vos modifications. Un message de confirmation vous indique que la revue de code est en cours et, en quelques instants, l'IA examine votre travail ligne par ligne, à la recherche d'erreurs, de bogues et d'anomalies potentiels.\n\nUne fois la revue de code terminée, vous recevez des commentaires détaillés qui couvrent tous les points critiques, conformément aux standards de votre équipe en matière de codage : détection de bogues, amélioration de la lisibilité, erreurs de syntaxe. Chaque retour de l'agent d'IA est contextualisé, avec des suggestions précises pour résoudre ces problèmes. Il vous aide à comprendre facilement ce qui nécessite votre attention et pourquoi.\n\nL'intérêt de cette approche basée sur l'IA agentique est qu'elle gère tous les aspects fastidieux de la revue de code afin que vous puissiez vous concentrer sur ce qui compte le plus : créer des logiciels performants. Vous bénéficiez des avantages d'une revue de code approfondie (détection des bogues améliorée, cohérence du code et code de meilleure qualité) sans perdre de temps. Vos délais de déploiement s'en trouvent considérablement réduits, car vous n'avez plus à patienter pour votre revue de code. Toute votre équipe gagne ainsi en productivité.\n\n## Pourquoi utiliser GitLab Duo combiné à Amazon Q ?\n\nGitLab Duo combiné à Amazon Q transforme votre workflow de développement en profondeur :\n\n* Des revues de code ultra-rapides, sans compromis sur la qualité\n* Une application cohérente des normes sur l'ensemble de votre code source\n* Des commentaires instantanés pour résoudre les problèmes avant qu'ils n'atteignent l'environnement de production\n* Des délais de déploiement réduits pour livrer de nouvelles fonctionnalités, plus rapidement\n* Plus de temps pour se concentrer sur la résolution créative des problèmes plutôt que sur des revues de code répétitives\n\nRegardez cette vidéo et découvrez comment GitLab Duo combiné à Amazon Q peut optimiser votre processus de revue de code :\n\n\u003C!-- blank line --> \u003Cfigure class=\"video_container\"> \u003Ciframe src=\"https://www.youtube.com/embed/4gFIgyFc02Q?si=GXVz--AIrWiwzf-I\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe> \u003C/figure> \u003C!-- blank line -->\n\nPour en savoir plus sur GitLab Duo combiné à Amazon Q, [contactez votre représentant GitLab](https://about.gitlab.com/fr-fr/partners/technology-partners/aws/).",[675,746,747,676,677,287,706,748],"DevSecOps platform","code review","tutorial",{"featured":6,"template":686,"slug":750},"accelerate-code-reviews-with-gitlab-duo-and-amazon-q","content:fr-fr:blog:accelerate-code-reviews-with-gitlab-duo-and-amazon-q.yml","Accelerate Code Reviews With Gitlab Duo And Amazon Q","fr-fr/blog/accelerate-code-reviews-with-gitlab-duo-and-amazon-q.yml","fr-fr/blog/accelerate-code-reviews-with-gitlab-duo-and-amazon-q",{"_path":756,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":757,"content":763,"config":772,"_id":774,"_type":16,"title":775,"_source":18,"_file":776,"_stem":777,"_extension":21},"/fr-fr/blog/speed-up-code-reviews-let-ai-handle-the-feedback-implementation",{"title":758,"description":759,"ogTitle":758,"ogDescription":759,"noIndex":6,"ogImage":760,"ogUrl":761,"ogSiteName":737,"ogType":738,"canonicalUrls":761,"schema":762},"Accélérez vos revues de code : l'IA gère les commentaires","Découvrez comment GitLab Duo combiné à Amazon Q automatise les commentaires de revues de code avec l'IA et simplifie ainsi les workflows fastidieux.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659604/Blog/Hero%20Images/Screenshot_2024-11-27_at_4.55.28_PM.png","https://about.gitlab.com/blog/speed-up-code-reviews-let-ai-handle-the-feedback-implementation","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Accélérez vos revues de code : l'IA gère les commentaires\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Cesar Saavedra\"}],\n        \"datePublished\": \"2025-06-10\",\n      }",{"title":758,"description":759,"authors":764,"heroImage":760,"date":765,"body":766,"category":14,"tags":767},[702],"2025-06-10","Vous connaissez cette sensation juste après avoir soumis votre merge request, quand les commentaires commencent à affluer ? Labels à revoir, privilégier un agencement côte à côte, passer le texte en gras, couleur du bouton à corriger… Très vite, vous passez des heures à appliquer des commentaires certes utiles, mais qui freinent le développement de nouvelles fonctionnalités. Un travail répétitif, bien connu des équipes de développement… Mais s'il existait une meilleure solution ?\n\nEt si un assistant d'IA pouvait comprendre les commentaires de revue de code et appliquer les modifications à votre place ? C'est exactement ce qu'apporte [GitLab Duo combiné à Amazon Q](https://about.gitlab.com/fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/) à votre workflow de développement. Cette intégration fluide combine la plateforme DevSecOps complète de GitLab avec les fonctionnalités d'IA avancées d'Amazon Q, créant ainsi un assistant intelligent capable de lire les commentaires des relecteurs et de les convertir directement en modifications de code. Au lieu de traiter manuellement chaque commentaire, confiez cette tâche à l'IA et concentrez-vous sur l'essentiel.\n\n## Comment utiliser GitLab Duo combiné à Amazon Q ?\n\nLes commentaires des relecteurs sont intégrés là où ils s'appliquent, au cœur de votre merge request. Reprenons les exemples mentionnés plus tôt : vous avez reçu une demande pour modifier un label de formulaire, une autre pour afficher des champs côte à côte, ou encore pour mettre certains textes en gras. Chaque commentaire représente une tâche que vous devriez normalement gérer manuellement.\n\n![commentaires dans une MR](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673634/Blog/Content%20Images/1-show-comment.png)\n\nAvec GitLab Duo combiné à Amazon Q, il vous suffit de saisir l'action rapide `/q dev` dans un commentaire. Amazon Q analyse alors tous les commentaires et commence à modifier votre code automatiquement. L'agent d'IA comprend le contexte de chaque commentaire et implémente les modifications demandées directement dans votre code source.\n\n![fonction /q dev demandant à Amazon Q d'analyser les commentaires](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673634/Blog/Content%20Images/2-invoke-q-dev.png)\n\nAmazon Q applique les commentaires, et vous pouvez ensuite visualiser l'ensemble des modifications dans l'onglet « Modifications », pour vérifier que tout a bien été pris en compte. Il ne vous reste plus qu'à lancer l'application mise à jour pour tester que tout fonctionne : le label est modifié, les champs sont affichés côte à côte, le texte est en gras et le bouton est bien bleu.\n\nDécouvrez notre démonstration du processus d'intégration de commentaires dans la revue de code dans cette vidéo :\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\"> \u003Ciframe src=\"https://www.youtube.com/embed/31E9X9BrK5s?si=ThFywR34V3Bfj1Z-\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe> \u003C/figure>\n\u003C!-- blank line -->\n\nLa gestion des commentaires de revue de code est indispensable, mais souvent laborieuse.  GitLab Duo combiné à Amazon Q transforme cette étape en un workflow fluide et automatisé, pour gagner un temps précieux. En confiant ces ajustements répétitifs à l'IA, vous gagnez du temps pour ce qui compte vraiment : innover et résoudre des problèmes complexes.\n\nAvec GitLab Duo combiné à Amazon Q, vous pouvez :\n- Économiser des heures passées à intégrer manuellement des commentaires\n- Accélérer vos cycles de revue de code\n- Assurer une gestion cohérente des commentaires de revue\n- Réduire le changement de contexte entre la revue des commentaires et l'écriture du code\n- Livrer des fonctionnalités plus rapidement avec des temps de déploiement simplifiés\n\n> #### Pour approfondir vos connaissances sur GitLab Duo combiné à Amazon Q, participez à un [AWS Summit dans votre région](https://about.gitlab.com/fr-fr/events/aws-summits/) ou [contactez votre représentant GitLab](https://about.gitlab.com/fr-fr/partners/technology-partners/aws/).\n\n## Ressources dédiées à GitLab Duo combiné à Amazon Q\n\n- [GitLab Duo combiné à Amazon Q : l'IA agentique optimisée pour AWS est désormais disponible à tous les utilisateurs](https://about.gitlab.com/fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/)\n- [Page des solutions communes GitLab et AWS](https://about.gitlab.com/fr-fr/partners/technology-partners/aws/)\n- [Documentation dédiée à GitLab Duo combiné à Amazon Q](https://docs.gitlab.com/user/duo_amazon_q/)\n- [Qu'est-ce que l'IA agentique ?](https://about.gitlab.com/fr-fr/topics/agentic-ai/)\n- [L'IA agentique : guides et ressources](https://about.gitlab.com/fr-fr/blog/agentic-ai-guides-and-resources/)",[768,769,484,706,770,771],"produit","fonctionnalités","revue de code","tutoriel",{"slug":773,"featured":93,"template":686},"speed-up-code-reviews-let-ai-handle-the-feedback-implementation","content:fr-fr:blog:speed-up-code-reviews-let-ai-handle-the-feedback-implementation.yml","Speed Up Code Reviews Let Ai Handle The Feedback Implementation","fr-fr/blog/speed-up-code-reviews-let-ai-handle-the-feedback-implementation.yml","fr-fr/blog/speed-up-code-reviews-let-ai-handle-the-feedback-implementation",{"_path":779,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":780,"content":786,"config":793,"_id":795,"_type":16,"title":796,"_source":18,"_file":797,"_stem":798,"_extension":21},"/fr-fr/blog/gitlab-duo-chat-gets-agentic-ai-makeover",{"title":781,"description":782,"ogTitle":781,"ogDescription":782,"noIndex":6,"ogImage":783,"ogUrl":784,"ogSiteName":737,"ogType":738,"canonicalUrls":784,"schema":785},"GitLab Duo Chat fait peau neuve : place à l'IA agentique ","Découvrez GitLab Duo Agentic Chat, l'assistant d’IA nouvelle génération, disponible dès aujourd’hui en version expérimentale.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099203/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2820%29_2bJGC5ZP3WheoqzlLT05C5_1750099203484.png","https://about.gitlab.com/blog/gitlab-duo-chat-gets-agentic-ai-makeover","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo Chat fait peau neuve : place à l'IA agentique \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Torsten Linz\"}],\n        \"datePublished\": \"2025-05-29\",\n      }\n                  ",{"title":781,"description":782,"authors":787,"heroImage":783,"date":789,"body":790,"category":14,"tags":791,"updatedDate":792},[788],"Torsten Linz","2025-05-29","Les assistants de chat basés sur l'IA générative se sont imposés comme des alliés incontournables des équipes de développement logiciel. Capables de suggérer du code, corriger des bogues et automatiser une multitude de tâches, ces assistants intelligents simplifient considérablement leur quotidien. \n\nMais imaginez un assistant qui ne se limite plus au code : capable de comprendre tous les artefacts de votre processus de développement, de gérer vos tickets, de documenter vos projets, et d’accéder à vos [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline Ci/CD ?\") et vos merge requests pour vous aider à mener à bien vos tâches de développement.\n\n**Découvrez GitLab Duo Agentic Chat, l'assistant d'IA nouvelle génération, qui succède à GitLab Duo Chat. Dernier-né de la plateforme GitLab, GitLab Duo Agentic Chat marque une avancée majeure dans l'assistance au développement basée sur l'IA native. Disponible dès aujourd'hui en [version expérimentale](https://docs.gitlab.com/policy/development_stages_support/#experiment),** il est accessible à tous les utilisateurs de GitLab.com via l'extension GitLab Workflow pour VS Code.\n\nContrairement aux assistants de chat traditionnels basés sur une IA conversationnelle, Agentic Chat effectue des actions en votre nom. Il décompose les problèmes complexes en tâches distinctes qu'il peut accomplir. Au lieu de répondre simplement aux questions en se basant sur le contexte que vous fournissez, il offre les capacités suivantes :\n\n* **Il détermine de manière autonome** les informations dont il a besoin pour répondre à vos questions.  \n* **Il exécute une séquence d'opérations** afin de collecter ces informations à partir de plusieurs sources.  \n* **Il formule des réponses complètes** en combinant les données provenant de l'ensemble de votre projet. \n* **Il crée et modifie des fichiers** pour vous aider à mettre en œuvre des solutions.\n\nMais bien évidemment, en tant que développeur, vous avez toujours votre mot à dire.\n\nAgentic Chat repose sur l'architecture GitLab Duo Workflow, [actuellement disponible en version bêta privée](https://about.gitlab.com/fr-fr/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai/) qui intègre des agents et des outils dédiés pour des tâches spécifiques : recherche contextuelle, modification de fichiers, et bien plus encore. \n\n**Cas d'utilisation de GitLab Duo Agentic Chat**\n\nAvec Agentic Chat, vous pouvez :\n\n* Prendre en main les nouveaux projets plus rapidement en demandant à l'IA de vous guider à travers le nouveau code base.\n\n* Commencer à effectuer immédiatement les tâches qui vous sont attribuées, même lorsque les descriptions des tickets ne sont pas claires : Agentic Chat vous aide à faire le lien entre les exigences et les implémentations.\n\n* Gérer l’implémentation : lorsqu'il est temps d'apporter des modifications, Agentic Chat peut gérer le travail d'implémentation en créant et en modifiant plusieurs fichiers dans votre projet.\n\n* Vérifier votre solution : au moment de la mise en production, Agentic Chat peut vous aider à vérifier que votre solution répond réellement aux exigences initiales en analysant vos merge requests et en les comparant au ticket ou à la tâche d'origine.\n\n![Agentic Chat - exemple](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099210/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750099210429.png)\n\n\u003Ccenter>\u003Ci>Agentic Chat apporte des modifications au code\u003C/i>\u003C/center>\n\n## De l'apprentissage à la livraison : un workflow en quatre étapes\n\nPour mieux saisir l'impact d'Agentic Chat, explorons un scénario réel vécu par notre équipe d’ingénierie. Prenons l'exemple suivant : vous intégrez une nouvelle équipe, un ticket vous est attribué, mais vous ne maîtrisez pas encore le code base. \n\nPour mieux visualiser ce scénario, n'hésitez pas à regarder la vidéo de démonstration ci-dessous :\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/uG9-QLAJrrg?si=kaOhYylMIaWkIuG8j\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n**Étape 1 : comprendre le projet**\n\nAu lieu d'explorer manuellement les fichiers et la documentation, vous pouvez soumettre le prompt suivant à Agentic Chat :\n\n```unset\nI am new to this project. Could you read the project structure and explain it to me?\n```\n\nAgentic Chat fournit une vue d'ensemble complète du projet en :  \n- explorant la structure des répertoires  \n- lisant les fichiers README et la documentation  \n- identifiant les composants et les applications clés\n\n**Étape 2 : comprendre la tâche qui vous a été attribuée**\n\nEnsuite, vous devez comprendre la tâche à effectuer. Vous pouvez donc saisir le prompt suivant :\n\n```unset\nI have been assigned Issue 1119. Could you help me understand this task, specifically where do I need to apply the refactoring?\n```\n\nAgentic Chat explique la tâche et propose une approche de refactorisation :\n- en récupérant et en analysant les détails du ticket à partir du serveur GitLab distant  \n- en examinant les fichiers associés au projet  \n- en identifiant les emplacements spécifiques nécessitant des modifications\n\n**Étape 3 : mettre en œuvre la solution**\n\nPlutôt que d'effectuer le travail manuellement, vous pouvez saisir le prompt suivant :\n\n```unset\nCould you make the edits for me? Please start with steps one, two, three.\n```\n\nAgentic Chat :  \n- crée des répertoires et fichiers si nécessaire \n- extrait et refactorise le code à plusieurs emplacements  \n- assure la cohérence de tous les fichiers modifiés  \n- fournit un résumé de toutes les modifications apportées\n\n**Étape 4 : vérifier que le travail effectué est correct**\n\nEnfin, après avoir créé votre merge request, vous pouvez vérifier votre travail avec le prompt suivant :\n\n```unset\nDoes my MR fully address Issue 1119?  \n```\n\nAgentic Chat confirme alors si toutes les exigences ont été prises en compte en analysant à la fois votre merge request et le ticket d'origine.\n\n## Essayez Agentic Chat dès aujourd'hui ! \n\nGitLab Duo Agentic Chat est actuellement disponible en tant que fonctionnalité expérimentale dans VS Code pour les utilisateurs de GitLab Duo Pro et GitLab Duo Enterprise. Découvrez les prérequis et les étapes de configuration dans notre [documentation officielle](https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/).\n\nCette version expérimentale d'Agentic Chat présente encore quelques limitations connues que nous nous efforçons de résoudre, y compris des temps de réponse parfois lents en raison de multiples appels API, une recherche basée sur des mots-clés plutôt que sur une recherche sémantique, ainsi qu'une prise en charge limitée des nouveaux dossiers locaux ou des projets autres que GitLab. **Vos retours sont précieux pour nous aider à hiérarchiser les prochaines améliorations et à proposer Agentic Chat en disponibilité générale. C'est pourquoi nous vous invitons à partager votre expérience dans [ce ticket](https://gitlab.com/gitlab-org/gitlab/-/issues/542198).**\n\n## Quelles perspectives pour Agentic Chat ?\n\nNous concentrons tous nos efforts sur l'amélioration d'Agentic Chat en vue de sa future disponibilité générale. À court terme, notre objectif est de réduire les temps de réponse et d'y intégrer les capacités dont GitLab Duo Chat dispose actuellement, telles que la compatibilité avec les modèles de GitLab Duo Self-Hosted, ainsi que la prise en charge des environnements JetBrains et Visual Studio, en plus de VS Code. Une fois cette nouvelle architecture pleinement implémentée dans GitLab Duo Chat, nous prévoyons également d'intégrer Agentic Chat directement au chat intégré à l'application web de GitLab. D'autres améliorations sont déjà en cours de développement, notamment : la modification directe des artefacts GitLab, la prise en charge du contexte à partir de serveurs personnalisés via MCP (Model Context Protocol) et la possibilité d'exécuter des commandes directement dans le terminal.\n\n> Vous souhaitez découvrir l'assistance au développement autonome, mais vous n'utilisez pas encore GitLab ? Profitez dès aujourd'hui d'un [essai gratuit de 60 jours de GitLab Ultimate avec Duo Enterprise](https://about.gitlab.com/fr-fr/free-trial/) pour tester Agentic Chat et contribuez à façonner l'avenir du développement alimenté par l'IA. Pour commencer, suivez simplement ces [étapes de configuration pour VS Code](https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/#use-agentic-chat-in-vs-code).\n\n***Avertissement : cet article de blog contient des informations relatives aux produits, fonctionnalités et caractéristiques à venir. Il est important de noter qu'elles ne sont fournies qu'à titre informatif. Veuillez ne pas vous fier à ces informations à des fins d'achat ou de planification. Comme pour tout projet, les éléments mentionnés dans cet article sont susceptibles de changer ou d’être retardés. Le développement, la sortie et le calendrier de tout produit ou fonctionnalité restent à la seule discrétion de GitLab.***\n\n## En savoir plus\n\n- [GitLab Duo Workflow : une IA agentique offrant visibilité et contrôle à l'échelle de l'entreprise](https://about.gitlab.com/fr-fr/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai/)\n- [Qu'est-ce que l'IA agentique ?](https://about.gitlab.com/fr-fr/topics/agentic-ai/)\n- [Agentic Chat : guides et ressources](https://about.gitlab.com/blog/agentic-ai-guides-and-resources/)\n",[675,678,677,746,676,748],"2025-06-05",{"slug":794,"featured":93,"template":686},"gitlab-duo-chat-gets-agentic-ai-makeover","content:fr-fr:blog:gitlab-duo-chat-gets-agentic-ai-makeover.yml","Gitlab Duo Chat Gets Agentic Ai Makeover","fr-fr/blog/gitlab-duo-chat-gets-agentic-ai-makeover.yml","fr-fr/blog/gitlab-duo-chat-gets-agentic-ai-makeover",{"_path":800,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":801,"content":807,"config":813,"_id":815,"_type":16,"title":816,"_source":18,"_file":817,"_stem":818,"_extension":21},"/fr-fr/blog/large-language-model",{"title":802,"description":803,"ogTitle":802,"ogDescription":803,"noIndex":6,"ogImage":804,"ogUrl":805,"ogSiteName":737,"ogType":738,"canonicalUrls":805,"schema":806},"Qu’est-ce qu’un grand modèle de langage (LLM) ?","Que sont les grands modèles de langage ? Découvrez leur fonctionnement, leurs applications et leurs impacts dans l’univers DevSecOps.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660057/Blog/Hero%20Images/LLM.jpg","https://about.gitlab.com/blog/large-language-model","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Qu’est-ce qu’un grand modèle de langage (LLM) ?\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab France Team\"}],\n        \"datePublished\": \"2025-05-28\",\n      }",{"title":802,"description":803,"authors":808,"heroImage":804,"date":810,"body":811,"category":14,"tags":812},[809],"GitLab France Team","2025-05-28","Les grands modèles de langage (ou Large Language Models) révolutionnent les approches [DevOps](https://about.gitlab.com/fr-fr/topics/devops/ \"Qu'est-ce que le DevOps ? \") et DevSecOps en simplifiant des tâches complexes, qu’il s’agisse de créer du code, d’examiner des logs ou de détecter des vulnérabilités.\n\nDans cet article, découvrez comment fonctionnent les grands modèles de langage, leurs applications concrètes et les principaux enjeux à surmonter pour exploiter pleinement leur potentiel.\n\n__Sommaire__\n- Qu’est-ce qu’un LLM ?\n- Comment fonctionnent les grands modèles de langage ?\n- Applications des grands modèles de langage dans une approche DevSecOps\n- Quels sont les avantages des grands modèles de langage ?\n- Quels sont les défis liés à l’utilisation des LLM ?\n- Comment GitLab utilise les LLM pour ses fonctionnalités GitLab Duo ?\n\n## Qu’est-ce qu’un LLM ? \n\nLes grands modèles de langage (LLM) sont des systèmes d’intelligence artificielle capables de traiter et de générer du texte de manière autonome. Leur apprentissage repose sur l’analyse de vastes ensembles de données issues de sources variées, afin qu’ils puissent maîtriser les structures linguistiques, les relations contextuelles et les nuances du langage.\n\nLes LLM représentent une avancée majeure dans le domaine de l’IA. Leur capacité à traiter, générer et interpréter du texte repose sur des techniques sophistiquées d’apprentissage automatique et de traitement automatique du langage naturel (NLP). Ces systèmes ne se contentent pas de traiter des mots isolés : ils analysent des séquences complexes pour saisir le sens global, les contextes subtils et les nuances linguistiques.\n\n## Comment fonctionnent les grands modèles de langage ?\n\nPour mieux comprendre leur fonctionnement, explorons certaines des caractéristiques clés des grands modèles de langages.\n\n### Apprentissage supervisé et non supervisé\n\nLes grands modèles de langage sont entraînés selon deux approches complémentaires : l’apprentissage supervisé et l’apprentissage non supervisé. Ces deux approches du machine learning permettent de maximiser leurs capacités à analyser et à générer du texte. \n\n- **L’apprentissage supervisé** repose sur des données étiquetées, où chaque entrée est associée à un résultat attendu. Le modèle apprend à associer ces entrées aux sorties correctes en ajustant ses paramètres internes pour réduire les erreurs de prédiction. Grâce à cette approche, le modèle acquiert des connaissances précises sur des tâches spécifiques, telles que la classification de textes ou la reconnaissance d’entités nommées.\n\n- **L’apprentissage non supervisé (ou apprentissage automatique)**, quant à lui, ne nécessite pas de données étiquetées. Le modèle explore de vastes volumes de texte pour découvrir des structures cachées et identifier des relations sémantiques. Ainsi, le modèle est en capacité d‘apprendre des schémas récurrents, des règles grammaticales implicites dans le texte ou encore de contextualisation des phrases et des concepts. Cette méthode permet d’entraîner les LLM sur de vastes corpus de données, accélérant considérablement leur progression sans intervention humaine directe.\n\nEn combinant ces deux approches, les grands modèles de langage bénéficient autant d'un apprentissage précis guidé par des humains que d’une exploration autonome illimitée. Cette complémentarité leur permet de se développer rapidement, tout en améliorant continuellement leur capacité à comprendre et à générer du texte de manière cohérente et contextuelle.\n\n### Apprentissage reposant sur un large volume de données \n\nLes grands modèles de langage sont entraînés à partir de milliards de phrases issues de sources variées, telles que des articles de presse, des forums en ligne, des documentations techniques, des études scientifiques et bien plus encore. Cette variété de sources leur permet d’acquérir une compréhension étendue et nuancée du langage naturel, allant des expressions courantes aux terminologies spécialisées.\n\nLa richesse des données utilisées est un facteur clé de la performance des LLM. Chaque source apporte des styles d’écriture, des contextes culturels et des niveaux de technicité différents. \n\nPar exemple :\n- __Des articles de presse__ : pour maîtriser un langage informatif et factuel.\n- __Des forums en ligne__ : pour comprendre les conversations informelles et les langages techniques des communautés spécialisées.\n- __Des documentations techniques et études scientifiques__ : pour assimiler des concepts complexes et des terminologies spécifiques, notamment dans des domaines comme le DevOps et le DevSecOps.\n\nCette diversité de contenu permet aux LLM de reconnaître des structures linguistiques complexes, d’interpréter des phrases dans différents contextes et de s’adapter à des domaines très techniques. Dans le DevSecOps, cela signifie comprendre des commandes, des configurations, des protocoles de sécurité et même des concepts liés au développement et à la maintenance de systèmes informatiques.\n\nGrâce à cette formation à grande échelle, les grands modèles de langage peuvent répondre avec précision à des questions complexes, rédiger des documentations techniques ou identifier des vulnérabilités dans des systèmes informatiques.\n\n### Architecture de réseaux neuronaux et « deep learning » \n\nLes grands modèles de langage reposent sur des architectures de réseaux neuronaux avancées. Ces réseaux sont spécialement conçus pour traiter de grandes séquences de texte tout en maintenant une compréhension précise du contexte. Cet apprentissage en « deep learning » constitue un atout majeur dans le domaine du traitement automatique du langage naturel (NLP).\n\nLa plus connue de ces structures est l’architecture des modèles séquence à séquence (transformers). Cette architecture a révolutionné le NLP grâce à sa capacité à analyser simultanément toutes les parties d’un texte, contrairement aux approches séquentielles qui traitent les mots un par un.\n\nLes modèles séquence à séquence excellent dans le traitement des textes longs. Par exemple, dans une conversation ou un document technique détaillé, ils sont capables de relier des informations distantes dans le texte pour produire des réponses précises et bien argumentées. Cette gestion du contexte est essentielle dans une approche DevSecOps, où les instructions peuvent être complexes et réparties sur plusieurs lignes de code ou étapes de configuration.\n\n### Génération de texte prédictive\n\nLorsque l'utilisateur soumet un texte, une requête ou une question, un grand modèle de langage utilise sa capacité de prédiction pour générer la suite la plus probable, fondée sur le contexte fourni.\n\nLe modèle analyse chaque mot, étudie les relations grammaticales et sémantiques, puis sélectionne les termes les plus adaptés pour produire un texte cohérent et informatif. Cette approche permet de générer des réponses précises, détaillées et adaptées au ton attendu.\n\nDans les environnements DevSecOps, cette capacité devient particulièrement utile pour :\n- **l’assistance au codage** : génération de blocs de code ou de scripts adaptés à des configurations spécifiques.\n- **la résolution de problèmes techniques** : propositions de solutions basées sur des descriptions de bogues ou d’erreurs.\n- **la rédaction de documentations techniques** : création automatique de guides, de manuels ou d'instructions.\n\nLa génération de texte prédictive permet ainsi d’automatiser de nombreuses tâches répétitives et d’accélérer le travail des équipes techniques.\n\n## Applications des grands modèles de langage dans une approche DevSecOps\n\nAvec la montée en puissance de l’automatisation, les grands modèles de langage sont devenus des alliés incontournables pour les équipes techniques. Leur capacité à comprendre et à générer du texte de manière contextuelle leur permet d’intervenir efficacement dans des environnements complexes tels que le [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ?\").\n\nGrâce à leur puissance d’analyse et leur capacité à s’adapter aux besoins spécifiques, ces modèles offrent des solutions sur mesure pour rationaliser les processus et alléger la charge de travail des équipes techniques.\n\n### Génération de code automatisée\n\nLes équipes de développement peuvent exploiter les grands modèles de langage pour transformer des spécifications fonctionnelles en code source de manière automatisée. \n\nGrâce à cette capacité, elles peuvent :\n\n- générer des scripts d'automatisation complexes,\n- créer des pipelines CI/CD adaptés aux processus spécifiques de l'entreprise,\n- produire des correctifs de sécurité sur mesure.\n- générer des explications de code et créer une documentation,\n- refactoriser le code en améliorant sa structure et sa lisibilité sans modifier les fonctionnalités,\n- générer des tests. \n\nEn s'appuyant sur les LLM, les équipes parviennent à accélérer le développement de leurs logiciels tout en réduisant les risques d'erreurs humaines.\n\n### Documentation et partage des connaissances améliorés \n\nCes puissants outils facilitent la création de manuels d'utilisation, de descriptions d'API et de tutoriels sur mesure, parfaitement adaptés au niveau d'expertise de chaque utilisateur. En s’appuyant sur des bases de connaissances existantes, les grands modèles de langages créent des réponses contextuelles aux questions fréquentes. Cela améliore la transmission des savoirs au sein des équipes, accélère l'intégration des nouveaux membres et permet de centraliser les bonnes pratiques.\n\n### Gestion des incidents et dépannage\n\nLors d’un incident, les LLM jouent un rôle crucial en analysant en temps réel les logs et les fichiers de trace. Grâce à leur capacité à croiser des informations provenant de multiples sources, ils identifient les anomalies et proposent des solutions fondées sur des incidents similaires passés. Cette approche réduit significativement le temps de diagnostic. De plus, les LLM peuvent automatiser la création de rapports d'incidents détaillés et recommander des actions correctives précises.\n\n### Création et amélioration des pipelines CI/CD\n\nLes grands modèles de langage révolutionnent la configuration des [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\"). Ils peuvent non seulement aider à créer des pipelines, mais aussi à automatiser ce processus et proposer des configurations optimales basées sur des standards de l'industrie. En adaptant les workflows selon vos besoins spécifiques, ils assurent une cohérence parfaite entre les différents environnements de développement. Les tests automatisés sont renforcés par des suggestions pertinentes, limitant ainsi les risques de défaillance. Les LLM surveillent également en continu l’efficacité des pipelines et ajustent les processus pour garantir un déploiement fluide et sans interruption.\n\n### Sécurité et conformité\n\nDans un environnement DevSecOps, les grands modèles de langage deviennent des alliés précieux pour la [sécurité et la conformité](https://about.gitlab.com/fr-fr/solutions/security-compliance/ \"Sécurité et conformité\"). Ils analysent le code source à la recherche de vulnérabilités potentielles et génèrent des recommandations correctives détaillées. Les LLM peuvent également surveiller l'application des normes de sécurité en temps réel, produire des rapports de conformité complets et automatiser l'application de correctifs de sécurité dès qu'une faille est identifiée. Cette automatisation renforce la sécurité globale et garantit un respect constant des exigences légales et industrielles.\n\n## Quels sont les avantages des grands modèles de langage ?\n\nLes grands modèles de langage transforment en profondeur les approches DevOps et DevSecOps, apportant des améliorations substantielles en matière de productivité, de sécurité et de qualité logicielle. En s’intégrant aux workflows existants, les LLM bouleversent les approches traditionnelles en automatisant des tâches complexes et en fournissant des solutions innovantes.\n\n### Amélioration de la productivité et de l’efficacité\n\nLes grands modèles de langage jouent un rôle central dans l’amélioration de la productivité et de l’efficacité des équipes techniques. En automatisant un large éventail de tâches répétitives, ils libèrent les équipes de développement des opérations routinières. Ces dernières peuvent ainsi se concentrer sur des activités stratégiques à plus forte valeur ajoutée.\n\nEn outre, les LLM agissent comme des assistants techniques intelligents capables de fournir instantanément des extraits de code pertinents, adaptés au contexte spécifique de chaque projet. De cette manière, ils réduisent considérablement le temps de recherche en proposant des solutions prêtes à l’emploi pour assister les équipes dans leur travail. Cette assistance ciblée accélère la résolution des problèmes et diminue les interruptions dans les workflows.\n\nAinsi, la productivité augmente et les projets avancent plus rapidement. Les équipes techniques peuvent prendre en charge un plus grand nombre de tâches sans compromettre la qualité des livrables.\n\n### Amélioration de la qualité du code et de la sécurité \n\nL’utilisation des grands modèles de langage dans le développement logiciel constitue un levier majeur pour améliorer autant la qualité du code que la sécurité des applications. Grâce à leurs capacités d’analyse avancées, les LLM peuvent examiner le code source ligne par ligne et détecter instantanément les erreurs syntaxiques, incohérences logiques et vulnérabilités potentielles. Leur aptitude à reconnaître le code défectueux permet de recommander des corrections adaptées et conformes aux meilleures pratiques du secteur.\n\nLes LLM jouent aussi un rôle préventif essentiel. Ils excellent dans l'identification des failles de sécurité complexes, souvent difficiles à repérer par les humains. En analysant les dépendances, ils peuvent signaler des bibliothèques obsolètes ou vulnérables, et recommander des versions mises à jour plus sûres. Cette approche contribue au maintien d’un environnement sécurisé et conforme aux normes de sécurité en vigueur.\n\nAu-delà de la correction des erreurs existantes, les LLM proposent des améliorations en suggérant des pratiques de codage et des structures de projet optimisées. Ils peuvent générer du code respectant les normes de sécurité les plus avancées, et ce, dès les premières étapes du développement.\n\n### Accélération des cycles de développement\n\nLes grands modèles de langage jouent un rôle déterminant dans l’accélération des cycles de développement logiciel en automatisant des tâches clés qui, autrement, mobiliseraient de précieuses ressources humaines.\n\nLes tâches complexes et répétitives, comme l’écriture de fonctions, la création de tests unitaires ou l’implémentation de composants standards, sont automatisées en quelques instants.\n\nLes LLM accélèrent également la phase de validation grâce à leur capacité à suggérer des scénarios de test complets et adaptés. Ils garantissent une couverture de test plus étendue en un minimum de temps, réduisant les risques d’erreurs et facilitant la détection précoce des anomalies. Cette approche préventive raccourcit le cycle de corrections et limite les retards liés aux problèmes de qualité du code.\n\nEn simplifiant les tâches techniques et en fournissant des solutions rapides et adaptées, les grands modèles de langage favorisent une réponse plus agile des entreprises aux exigences du marché. Cette accélération du cycle de développement se traduit par des mises à jour plus fréquentes, des itérations plus rapides et une meilleure capacité à adapter les produits aux besoins changeants des utilisateurs.\n\nLes cycles de développement deviennent ainsi plus courts, offrant un avantage stratégique essentiel dans un environnement technologique toujours plus exigeant.\n\n## Quels sont les défis liés à l’utilisation des LLM ?\n\nMalgré leurs nombreux avantages, les grands modèles de langage présentent certaines limites qui nécessitent une gestion attentive. Leur efficacité dépend fortement de la qualité des données utilisées lors de leur entraînement et de la mise à jour régulière de leurs bases de connaissances. De plus, des problèmes liés aux biais algorithmiques, à la sécurité des données et à la confidentialité peuvent survenir, exposant les entreprises à des risques opérationnels et juridiques. Une supervision humaine rigoureuse demeure indispensable pour garantir la fiabilité des résultats, assurer la conformité réglementaire et éviter les erreurs critiques.\n\n### Confidentialité et sécurité des données\n\nL’entraînement des LLM repose sur de vastes volumes de données, souvent issues de sources diverses, ce qui soulève des questions quant à la protection des informations confidentielles. Les données sensibles partagées avec des plateformes cloud peuvent donc être exposées à des violations potentielles. Cela inquiète particulièrement les entreprises opérant dans des secteurs réglementés.\n\nEn Europe, où des réglementations strictes comme le RGPD régissent la gestion des données, de nombreuses entreprises hésitent à transférer leurs informations vers des services externes. Les exigences réglementaires, associées à la crainte d'une exploitation non autorisée des données sensibles, incitent certaines entreprises à privilégier des solutions auto-hébergées pour conserver un contrôle total sur leurs systèmes.\n\nDes fournisseurs comme GitLab ont mis en place des garanties de sécurité robustes, telles que la non-rétention intentionnelle des données à caractère personnel et le chiffrement de bout en bout. Toutefois, cela peut ne pas suffire pour les clients les plus exigeants, qui préfèrent une maîtrise complète de leurs environnements. La mise en œuvre de solutions hybrides ou sur site devient alors une nécessité stratégique pour répondre aux exigences de sécurité de certaines entreprises.\n\nPour en savoir plus sur GitLab Duo Self-Hosted, cliquez sur l'image ci-dessous pour accéder à la visite guidée. \n\n\u003Ca href=\"https://gitlab.navattic.com/gitlab-duo-self-hosted\">\u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176132/Blog/chn5c0bsfauypnjfhmxv.png\" alt=\"GitLab Duo Self-Hosted Product Tour\">\u003C/a>\n\n### Précision et fiabilité\n\nBien que les grands modèles de langage soient capables de générer des résultats impressionnants, leur performance n’est pas infaillible. Ils peuvent produire des réponses incorrectes, incomplètes ou incohérentes. Cette imprécision devient particulièrement problématique dans le cadre de tâches critiques comme la génération de code de sécurité ou l'analyse de données sensibles.\n\nDe plus, les LLM fonctionnent sur la base de modèles probabilistes, ce qui signifie qu’ils ne « comprennent » pas véritablement le contenu qu'ils traitent, mais produisent des prédictions basées sur des probabilités statistiques. Cela peut entraîner des recommandations techniquement incorrectes, voire dangereuses, lorsqu'elles sont utilisées sans validation humaine.\n\nPour éviter ces pièges, il est essentiel de maintenir une supervision constante et d’établir des processus de validation rigoureux. Les résultats fournis par les LLM doivent alors toujours être examinés par des humains avant leur intégration dans des systèmes critiques.\n\nUne stratégie de mise à jour régulière des modèles, associée à une surveillance humaine proactive, permet de réduire les erreurs et d'améliorer progressivement la fiabilité des résultats.\n\n## Comment GitLab utilise les LLM pour ses fonctionnalités GitLab Duo ?\n\n[GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/ \"Qu'est-ce que GitLab Duo ? \") exploite la puissance des grands modèles de langage pour transformer les processus DevSecOps en intégrant des fonctionnalités alimentées par l’IA, et ce, tout au long du cycle de vie du développement logiciel. Cette approche vise à améliorer la productivité, renforcer la sécurité et automatiser des tâches complexes afin de permettre aux équipes de développement de se concentrer sur des tâches à forte valeur ajoutée.\n\n### Une assistance IA pour le développement logiciel\n\nGitLab Duo propose un soutien continu tout au long du cycle de développement logiciel grâce à des recommandations en temps réel. Les équipes de développement peuvent automatiquement générer des tests unitaires, obtenir des explications détaillées sur des segments de code complexes et bénéficier de suggestions pour améliorer la qualité de leur code.\n\n### Analyse proactive des défaillances CI/CD\n\nL’une des fonctionnalités clés de GitLab Duo est son assistance à l'analyse des échecs des jobs CI/CD. Grâce au LLM et l’IA, les équipes parviennent à identifier rapidement les sources d'erreurs dans leurs pipelines d’intégration et de déploiement continus. \n\n### Sécurité du code renforcée\n\nGitLab Duo intègre des fonctionnalités de sécurité basées sur l’IA. Le système détecte les vulnérabilités dans le code source et propose des correctifs détaillés pour en réduire les risques. Les équipes reçoivent des explications claires sur la nature des failles identifiées et peuvent appliquer des correctifs automatisés via des [merge requests](https://docs.gitlab.com/ee/user/project/merge_requests/ \"Merge request\") générées directement par GitLab Duo. Cette fonctionnalité permet de sécuriser le développement sans pour autant ralentir les cycles de développement.\n\nPour en savoir plus sur cette fonctionnalité, cliquez sur l'image ci-dessous pour accéder à notre visite guidée. \n\n\u003Ca href=\"https://gitlab.navattic.com/ve-vr-short\">\u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176145/Blog/bhpatrqtajlcys0lnjwe.png\" alt=\"GitLab Vulnerability Report Product Tour\">\u003C/a>\n\n#### Fonctionnalités clés de GitLab Duo \n\n- [GitLab Duo Chat](https://about.gitlab.com/fr-fr/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/ \"GitLab Duo Chat\") : cette fonctionnalité conversationnelle traite et génère du texte et du code de manière intuitive. Elle permet aux utilisateurs de rechercher rapidement des informations pertinentes dans des volumes importants de texte, notamment dans les tickets, les [epics](https://docs.gitlab.com/ee/user/group/epics/ \"Epics\"), le code source et la [documentation GitLab](https://docs.gitlab.com/ \"Documentation GitLab\").\n\n- [GitLab Duo Self-Hosted](https://about.gitlab.com/fr-fr/blog/gitlab-duo-self-hosted-enterprise-ai-built-for-data-privacy/ \"GitLab Duo Self-Hosted\") : GitLab Duo Self-Hosted permet aux entreprises ayant des exigences strictes en matière de confidentialité de leurs données de bénéficier des fonctionnalités d’IA de GitLab Duo avec une flexibilité dans le choix du déploiement et des LLM parmi une liste d’options supportées.\n\n- [Suggestions de code](https://about.gitlab.com/direction/create/code_creation/code_suggestions/ \"Suggestions de code\") : les équipes de développement bénéficient de suggestions de code automatisées, ce qui leur permet d'écrire du code sécurisé plus rapidement. Les tâches de codage répétitives et routinières sont ainsi automatisées, accélérant considérablement les cycles de développement logiciel.\n\nGitLab Duo ne se limite pas à ces fonctionnalités. Il offre une gamme étendue de fonctionnalités destinées à simplifier et à optimiser le développement logiciel. Que ce soit pour automatiser des tests, améliorer la collaboration entre les équipes ou renforcer la sécurité des projets, GitLab Duo constitue une solution complète pour des processus DevSecOps intelligents et efficaces.\n\nPour en savoir plus sur GitLab Duo Enterprise, cliquez sur l'image ci-dessous pour accéder à notre visite guidée. \n\n\u003Ca href=\"https://gitlab.navattic.com/duo-enterprise\">\u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752175911/Blog/b5gdnls7jdyrpeyjby5j.png\" alt=\"GitLab Duo Enterprise Product Tour\">\u003C/a>\n",[675,707],{"slug":814,"featured":6,"template":686},"large-language-model","content:fr-fr:blog:large-language-model.yml","Large Language Model","fr-fr/blog/large-language-model.yml","fr-fr/blog/large-language-model",{"_path":820,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":821,"content":827,"config":834,"_id":836,"_type":16,"title":837,"_source":18,"_file":838,"_stem":839,"_extension":21},"/fr-fr/blog/agentic-ai-guides-and-resources",{"ogTitle":822,"schema":823,"ogImage":824,"ogDescription":825,"ogSiteName":737,"noIndex":6,"ogType":738,"ogUrl":826,"title":822,"canonicalUrls":826,"description":825},"L'IA agentique : guides et ressources","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"L'IA agentique : guides et ressources\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"GitLab\"}],\n        \"datePublished\": \"2025-05-07\",\n      }\n                  ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749658912/Blog/Hero%20Images/blog-image-template-1800x945__20_.png","Découvrez ce qu’est l'IA agentique, son fonctionnement, ses avantages, ainsi que les bonnes pratiques pour l'intégrer à vos projets. ","https://about.gitlab.com/blog/agentic-ai-guides-and-resources",{"heroImage":824,"body":828,"authors":829,"updatedDate":831,"date":832,"title":822,"tags":833,"description":825,"category":14},"## IA agentique : définition\n\nL'[IA agentique](https://about.gitlab.com/fr-fr/topics/agentic-ai/ \"Qu'est-ce que l'IA agentique ?\") désigne une forme avancée d'intelligence artificielle capable d'agir de manière autonome en s'appuyant sur des modèles de langage sophistiqués et le traitement du langage naturel.\n\nContrairement à l'IA générative traditionnelle, qui nécessite une intervention humaine constante, l'IA agentique comprend les instructions, prend des décisions éclairées et exécute plusieurs séquences d'action pour atteindre un objectif défini. Elle décompose les tâches complexes en étapes plus simples et adapte sa stratégie en temps réel grâce à sa capacité d'apprentissage adaptatif lorsqu'elle rencontre des obstacles.\n\n## Informations clés sur l'IA agentique\n\n* [Vers une nouvelle ère du développement logiciel grâce à l’IA agentique](https://about.gitlab.com/the-source/ai/emerging-agentic-ai-trends-reshaping-software-development/) : découvrez comment l'IA agentique transforme le développement logiciel en remplaçant le codage isolé par des workflows intelligents qui améliorent la productivité et garantissent la sécurité.\n* [IA agentique : libérez le plein potentiel des développeurs à grande échelle](https://about.gitlab.com/fr-fr/the-source/ai/agentic-ai-unlocking-developer-potential-at-scale/) : découvrez comment l'IA agentique révolutionne le développement logiciel en dépassant la simple complétion de code pour donner naissance à de véritables partenaires d'IA capables de gérer des tâches complexes de manière proactive.\n* [Tendances de l'IA en 2025 : IA agentique, modèles auto-hébergés et bien plus encore](https://about.gitlab.com/fr-fr/the-source/ai/ai-trends-for-2025-agentic-ai-self-hosted-models-and-more/) : découvrez les principales tendances du développement logiciel alimenté par l'IA, des déploiements de modèles sur site aux agents d'IA intelligents et adaptatifs.\n* [L'IA agentique au service des équipes d'ingénierie de plateforme](https://about.gitlab.com/the-source/ai/how-agentic-ai-unlocks-platform-engineering-potential/) : découvrez comment l'IA agentique révolutionne l'ingénierie de plateforme en automatisant les workflows complexes et en intensifiant les efforts de standardisation.\n\n## Bonnes pratiques pour intégrer l'IA agentique\n\n* [Agents d’IA : sécurisez leur autonomie avec des garde-fous efficaces](https://about.gitlab.com/the-source/ai/implementing-effective-guardrails-for-ai-agents/) : découvrez les garde-fous de sécurité indispensables à l'approche [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ?\") pour encadrer les agents d'IA, tels que les contrôles de conformité, la sécurisation de l'infrastructure et la gestion des accès utilisateurs.\n\n## Les offres de GitLab en matière d'IA agentique\n\n### GitLab Duo combiné à Amazon Q\n\n* [GitLab Duo combiné à Amazon Q : l'IA agentique optimisée pour AWS est désormais disponible à tous les utilisateurs](https://about.gitlab.com/fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/) : la plateforme DevSecOps complète alimentée par l'IA de GitLab, combinée aux fonctionnalités de cloud computing les plus avancées, accélère les cycles de développement, augmente l'automatisation et améliore la qualité du code.\n* [DevSecOps + IA agentique : maintenant disponibles avec GitLab Self-Managed Ultimate sur AWS](https://about.gitlab.com/blog/devsecops-agentic-ai-now-on-gitlab-self-managed-ultimate-on-aws/) : utilisez des agents d'IA optimisés pour l'approche DevSecOps dans votre instance GitLab Self-Managed Ultimate sur AWS et tirez pleinement parti des fonctionnalités de [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/ \"Qu'est-ce que GitLab Duo ?\") combiné à Amazon Q au sein de votre entreprise.\n\nPour en savoir plus, consultez notre page [GitLab et AWS](https://about.gitlab.com/fr-fr/partners/technology-partners/aws/ \"GitLab Duo et AWS\") et visionnez une démonstration de GitLab Duo combiné à Amazon Q :\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1075753390?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Technical Demo: GitLab Duo with Amazon Q\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n#### Visite guidée\n\nCliquez sur l'image pour une visite guidée de GitLab Duo combiné à Amazon Q :\n\n[![Présentation interactive de GitLab Duo combiné à Amazon Q](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673568/Blog/Content%20Images/Screenshot_2025-05-07_at_7.24.45_AM.png)](https://gitlab.navattic.com/duo-with-q)\n\n#### Tutoriel GitLab Duo combiné à Amazon Q\n\n* [GitLab Duo combiné à Amazon Q : créez de nouvelles fonctionnalités en quelques minutes](https://about.gitlab.com/fr-fr/blog/gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes/) : GitLab Duo combiné à Amazon Q analyse les descriptions de vos tickets et génère automatiquement des solutions de code complètes et opérationnelles, pour des workflows de développement plus rapides.\n\n### GitLab Duo Workflow\n\n* [GitLab Duo Workflow](https://about.gitlab.com/fr-fr/gitlab-duo/agent-platform/) : l'avenir du développement logiciel basé sur une IA agentique sécurisée\n* [GitLab Duo Workflow : une IA agentique offrant visibilité et contrôle à l'échelle de l'entreprise](https://about.gitlab.com/fr-fr/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai/) : nos agents d'IA sécurisés et autonomes comprennent le contexte et prennent en charge les tâches complexes. Les équipes de développement sont ainsi en mesure de livrer des logiciels innovants plus rapidement. La liste d'attente pour l'accès à la version bêta privée de GitLab Duo Workflow est ouverte.\n* [Documentation GitLab Duo Workflow](https://docs.gitlab.com/user/duo_workflow/)\n\nRegardez cette présentation de GitLab Duo Workflow :\n\n\u003C!-- blank line -->\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/eN2Sd5UNc0g?si=C9HibBJ3QDDHADq2\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### Visite guidée\n\nCliquez sur l'image pour démarrer une visite de GitLab Duo Workflow :\n\n[![Visite guidée de GitLab Duo Workflow](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749673569/Blog/Content%20Images/Screenshot_2025-05-07_at_7.29.57_AM.png)](https://gitlab.navattic.com/duo-workflow)\n\n#### Tutoriels et cas d'utilisation de GitLab Duo Workflow\n\n* [Refactorisation de JavaScript en TypeScript avec GitLab Duo Workflow](https://about.gitlab.com/blog/refactoring-javascript-to-typescript-with-gitlab-duo-workflow/)\n* [Automatisation des tâches de codage fastidieuses avec GitLab Duo Workflow](https://about.gitlab.com/blog/automate-tedious-coding-tasks-with-gitlab-duo-workflow/) : découvrez comment l'IA agentique peut réduire le temps que vous consacrez aux tâches répétitives afin de vous aider à vous concentrer sur le développement et la livraison de solutions innovantes.\n* [GitLab Duo Workflow : améliorez l'assurance qualité de vos applications](https://about.gitlab.com/fr-fr/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance/) : découvrez étape par étape comment ajouter des tests unitaires à une application Java à l'aide de l'IA agentique.\n* [Résolution de défis complexes avec GitLab Duo Workflow](https://about.gitlab.com/blog/solving-complex-challenges-with-gitlab-duo-workflow/) : découvrez comment l'équipe Customer Success de GitLab utilise l'IA agentique pour résoudre des problèmes concrets comme les limites des charts Helm dans le registre de paquets.\n\n## Autres ressources sur l'IA\n\n* [Rapport Global DevSecOps 2024 : la maturité de l'IA dans l'approche DevSecOps](https://about.gitlab.com/fr-fr/developer-survey/2024/ai/)\n* [Le rôle de l'IA dans l'approche DevOps](https://about.gitlab.com/fr-fr/topics/devops/the-role-of-ai-in-devops/)\n* [Les articles récents de GitLab sur l'IA et le ML](https://about.gitlab.com/fr-fr/blog/categories/ai-ml/)",[830],"GitLab","2025-06-23","2025-05-07",[675,746,748],{"slug":835,"featured":93,"template":686},"agentic-ai-guides-and-resources","content:fr-fr:blog:agentic-ai-guides-and-resources.yml","Agentic Ai Guides And Resources","fr-fr/blog/agentic-ai-guides-and-resources.yml","fr-fr/blog/agentic-ai-guides-and-resources",{"_path":841,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":842,"content":848,"config":854,"_id":856,"_type":16,"title":857,"_source":18,"_file":858,"_stem":859,"_extension":21},"/fr-fr/blog/gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes",{"title":843,"description":844,"ogTitle":843,"ogDescription":844,"noIndex":6,"ogImage":845,"ogUrl":846,"ogSiteName":737,"ogType":738,"canonicalUrls":846,"schema":847},"GitLab Duo combiné à Amazon Q : créez de nouvelles fonctionnalités en quelques minutes","GitLab Duo combiné à Amazon Q analyse les descriptions de vos tickets et génère des solutions de code complètes et opérationnelles.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097127/Blog/Hero%20Images/Blog/Hero%20Images/Screenshot%202024-11-27%20at%204.55.28%E2%80%AFPM_4VVz6DgGBOvbGY8BUmd068_1750097126673.png","https://about.gitlab.com/blog/gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo combiné à Amazon Q : créez de nouvelles fonctionnalités en quelques minutes\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Cesar Saavedra\"}],\n        \"datePublished\": \"2025-04-28\",\n      }\n                  ",{"title":843,"description":844,"authors":849,"heroImage":845,"date":850,"body":851,"category":14,"tags":852,"updatedDate":853},[702],"2025-04-28","Vous est-il déjà arrivé de passer des jours, voire des semaines, à transformer des idées complexes en code opérationnel ? Toutes les équipes de développement connaissent cette situation. Malgré un concept solide et des exigences claires, il peut falloir beaucoup de temps et d'efforts pour élaborer un code déployable. \n\nEt si les capacités de l'[IA agentique](https://about.gitlab.com/fr-fr/topics/agentic-ai/) pouvaient tout changer ? C'est exactement ce que propose [GitLab Duo combiné à Amazon Q](https://about.gitlab.com/fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws/). En associant la plateforme [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ? \") complète alimentée par l'IA de GitLab aux fonctionnalités avancées de cloud computing d'AWS, cette intégration vous permet d'accélérer considérablement votre processus de développement d'applications, le tout au sein de votre workflow GitLab habituel. Le code que vos équipes de développement écrivent en plusieurs jours peut désormais être généré automatiquement en quelques minutes à partir des descriptions et exigences incluses dans vos tickets GitLab. \n\n## Transformer un ticket en code opérationnel\n\nDécouvrons comment cette fonctionnalité d'IA agentique fonctionne en pratique. Imaginez que vous deviez développer une application de calcul de prêt immobilier. Voici comment procéder à l'aide de GitLab Duo combiné à Amazon Q :\n\n1. **Créez votre ticket dans GitLab :** créez un [ticket](https://docs.gitlab.com/user/project/issues/) classique, contenant la liste complète des exigences de votre application. Ce ticket sert de point de départ pour développer votre solution logicielle.\n\n2. **Activez Amazon Q :** une fois votre ticket créé, ajoutez simplement un commentaire contenant la commande d'action rapide “/q dev” pour lancer Amazon Q et laisser la magie opérer. \n\n3. **Génération automatique du code :** GitLab Duo combiné à Amazon Q analyse votre ticket et le contexte de votre code source, puis génère automatiquement un code répondant à toutes vos spécifications. Et cerise sur le gâteau : l'IA soumet également ce code dans une merge request, prête pour la revue.\n\n![Capture d'écran de la fenêtre contextuelle de GitLab Duo combiné à Amazon Q](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097156/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097156018.png)\n\n4. **Revue de l'application générée** : consultez la merge request pour vérifier que le code correspond bien à vos attentes et apportez des ajustements si nécessaire. \n\n5. **Testez votre application** : enfin, assurez-vous que l'application s'exécute correctement. Vous disposez désormais d'un code opérationnel conforme à vos exigences initiales, sans effort superflu.\n\n## Une nouvelle ère pour votre développement logiciel\n\nGitLab Duo combiné à Amazon Q révolutionne le développement logiciel en automatisant intelligemment les tâches complexes, réduisant ainsi drastiquement le temps nécessaire pour produire du code opérationnel. En tirant parti de l'IA agentique, vous pouvez accélérer le déploiement de vos nouvelles fonctionnalités, ce qui permet à vos équipes de se concentrer sur des tâches plus stratégiques.\n\nAvec GitLab Duo combiné à Amazon Q, dites adieu aux tâches manuelles et développez des logiciels plus rapidement, plus efficacement et plus facilement. Vous pouvez ainsi :\n\n* **Accélérer votre processus de développement** en automatisant la création de code conformément aux exigences du projet.\n* **Maintenir une qualité constante** lors de la génération de code, pour l'ensemble de vos projets.\n* **Réduire la charge mentale** en limitant la traduction manuelle des exigences en code opérationnel.\n* **Accélérer vos cycles de sortie des nouvelles versions** en supprimant les goulots d'étranglement, notamment ceux liés à l'implémentation.\n* **Optimiser l'expertise de votre équipe** en la recentrant sur la revue de code et l'optimisation de ce dernier, plutôt que sur son écriture.\n\nVous souhaitez découvrir GitLab Duo combiné à Amazon Q ? Regardez notre vidéo de démonstration et découvrez dès aujourd'hui comment optimiser votre workflow de développement.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/jxxzNst3jpo?si=j_LQdZhUnwqoQEst\" title=\"GitLab Duo with Amazon Q demo video for dev workflow\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n> Pour en savoir plus sur GitLab Duo combiné à Amazon Q, [consultez notre documentation](https://docs.gitlab.com/user/duo_amazon_q/ \"Documentation Amazon Q\") ou [contactez notre équipe](https://about.gitlab.com/fr-fr/partners/technology-partners/aws/).",[675,706,748,746,676,236],"2025-06-03",{"slug":855,"featured":93,"template":686},"gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes","content:fr-fr:blog:gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes.yml","Gitlab Duo Amazon Q Transform Ideas Into Code In Minutes","fr-fr/blog/gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes.yml","fr-fr/blog/gitlab-duo-amazon-q-transform-ideas-into-code-in-minutes",{"_path":861,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":862,"content":867,"config":874,"_id":876,"_type":16,"title":877,"_source":18,"_file":878,"_stem":879,"_extension":21},"/fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws",{"title":863,"description":864,"ogTitle":863,"ogDescription":864,"noIndex":6,"ogImage":760,"ogUrl":865,"ogSiteName":737,"ogType":738,"canonicalUrls":865,"schema":866},"GitLab Duo combiné à Amazon Q : l'IA agentique optimisée pour AWS est désormais disponible à tous les utilisateurs","La plateforme DevSecOps complète alimentée par l'IA, combinée aux fonctionnalités de cloud computing les plus avancées, accélère les cycles de développement, augmente l'automatisation et améliore la qualité du code.","https://about.gitlab.com/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo combiné à Amazon Q : l'IA agentique optimisée pour AWS est désormais disponible à tous les utilisateurs\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emilio Salvador\"}],\n        \"datePublished\": \"2025-04-17\",\n      }\n                  ",{"title":863,"description":864,"authors":868,"heroImage":760,"date":870,"body":871,"category":14,"tags":872,"updatedDate":873},[869],"Emilio Salvador","2025-04-17","Nous sommes ravis d'annoncer aujourd'hui la disponibilité générale de [GitLab Duo combiné à Amazon Q](https://about.gitlab.com/fr-fr/partners/technology-partners/aws/), qui fournit une IA agentique tout au long du cycle de développement logiciel aux clients AWS. Basé sur GitLab Ultimate, GitLab Duo combiné à Amazon Q inclut de nombreuses fonctionnalités, telles que la complétion de code, l'explication de code, la génération de code, le chat, ainsi que l'explication et la résolution des vulnérabilités, qui sont désormais toutes optimisées par Amazon Q. Cette solution est disponible dans le cadre d'un modèle de déploiement GitLab Self-Managed pour les clients sur AWS.\n\nLes agents d'Amazon Q étant directement intégrés à la plateforme DevSecOps de GitLab, les développeurs peuvent continuer à utiliser leur environnement de développement habituel tout en bénéficiant de puissantes fonctionnalités d'IA. Le résultat ? Une expérience fluide qui permet d'accélérer les cycles de développement, de réduire les tâches manuelles et d'améliorer la qualité du code.\n\n« Le programme d'accès anticipé de GitLab Duo combiné à Amazon Q nous a permis de découvrir tout le potentiel de transformation de cette solution pour nos workflows de développement », explique Osmar Alonso, ingénieur DevOps chez Volkswagen Digital Solutions. « Même lors de la phase d'amorçage, nous avons vu comment une intégration plus avancée d'agents autonomes pouvait rationaliser notre processus, de la validation du code à la production. Nous avons hâte de découvrir comment cette technologie va nous permettre de nous concentrer sur l'innovation et d'accélérer notre transformation digitale. »\n\n## L'IA agentique s'invite dans les environnements clients complexes\n\nEn combinant l'IA agentique avec une infrastructure cloud sécurisée et fiable, GitLab et AWS apportent une sécurité, une évolutivité et une fiabilité intégrées aux environnements clients complexes, ce qui se traduit par de nombreux avantages :\n\n__Une expérience de développement unifiée pour un développement rationalisé__\n\nLes développeurs peuvent interagir avec Amazon Q via l'interface GitLab Duo Chat à partir de leur environnement de développement intégré (IDE) préféré ou de l'interface Web GitLab. Les utilisateurs n'ont ainsi pas besoin de changer de contexte pour utiliser d'autres outils et peuvent rester concentrés sur le projet en cours.\n\n__Une solution unique pour l'ensemble du cycle de développement logiciel__\n\nLes suggestions et optimisations de code exploitent les modèles et pratiques spécifiques à AWS, tandis que les outils de test comprennent les interactions et les dépendances des services AWS. Un magasin de données commun à toutes les étapes fournit un contexte essentiel aux agents d'IA, permettant une visibilité et une traçabilité complètes pour les actions pertinentes.\n\n__Un développement sécurisé avec des garde-fous à l'échelle de l'entreprise__\n\nLa sécurité et la conformité tout au long du cycle de développement logiciel sont intégrées directement dans la plateforme de développement avec des garde-fous qui aident à réduire les risques sans entraver la vélocité du développement. Cette approche sécurisée du développement logiciel garantit la transparence et l'auditabilité grâce aux agents d'IA, tout en s'intégrant de façon homogène aux services liés à la sécurité et aux frameworks de conformité d'AWS.\n\n## Comment utiliser GitLab Duo combiné à Amazon Q ?\n\nVoici cinq cas d'utilisation initiaux que nous ciblons pour aider les équipes à créer plus rapidement des logiciels sécurisés avec une IA agentique : \n\n1. **Accélération du développement des fonctionnalités** : créez des descriptions dans les tickets, générez des plans de mise en œuvre en fonction de votre code base existant et produisez des merge requests complètes prêtes pour la vérification. Vous accélérez ainsi la livraison des fonctionnalités tout en appliquant vos normes de développement internes.  \n2. **Modernisation des applications existantes** : analysez votre code base Java existant, créez un plan de mise à niveau complet et générez des merge requests contenant toutes les modifications de code nécessaires. Cela permet de réduire le temps de mise à niveau de Java, tout en maintenant une piste d'audit claire de toutes les transformations de code. La prise en charge de .NET et d'autres langages est prévue pour les prochaines versions.  \n3. **Amélioration de l'assurance qualité** : analysez le code et créez automatiquement des tests unitaires complets qui comprennent la logique de votre application et les interactions avec les services AWS. Vous pouvez ainsi augmenter la couverture des tests, réduire les tâches manuelles de rédaction des tests et contribuer à assurer une qualité de test constante pour toutes les applications.  \n4. **Optimisation de la revue de code** : insérez des commentaires inline sur les modifications de code, suggérez des améliorations basées sur les normes de développement, mettez en évidence les considérations de sécurité et de performances. Vous pouvez ainsi réduire les cycles de revue de code et fournir des merges de code de meilleure qualité pour le déploiement.  \n5. **Correction des vulnérabilités** : expliquez les vulnérabilités détectées de façon claire et détaillée, puis corrigez-les en un seul clic en fonction des modifications de code recommandées, ce qui contribue à réduire considérablement le délai entre la détection des failles et leur correction.\n\nDécouvrez GitLab Duo combiné à Amazon Q en action :\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1075753390?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Technical Demo: GitLab Duo with Amazon Q\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n> #### Profitez dès aujourd'hui des avantages de GitLab Duo combiné à Amazon Q\n> La combinaison de la plateforme DevSecOps unifiée de GitLab alimentée par l'IA et des fonctionnalités d'IA avancées d'Amazon Q offre aux clients AWS une solution qui transforme la façon dont les équipes créent et déploient les logiciels. Pour en savoir plus sur GitLab Duo combiné à Amazon Q, n'hésitez pas à nous retrouver à l'occasion d'un [AWS Global Summit dans votre région](https://about.gitlab.com/fr-fr/events/aws-summits/) ou à [contacter votre représentant GitLab](https://about.gitlab.com/fr-fr/partners/technology-partners/aws/#form).",[675,746,706,676,677,678],"2025-04-24",{"slug":875,"featured":93,"template":686},"gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws","content:fr-fr:blog:gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws.yml","Gitlab Duo With Amazon Q Agentic Ai Optimized For Aws","fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws.yml","fr-fr/blog/gitlab-duo-with-amazon-q-agentic-ai-optimized-for-aws",{"_path":881,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":882,"content":888,"config":894,"_id":896,"_type":16,"title":897,"_source":18,"_file":898,"_stem":899,"_extension":21},"/fr-fr/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance",{"title":883,"description":884,"ogTitle":883,"ogDescription":884,"noIndex":6,"ogImage":885,"ogUrl":886,"ogSiteName":737,"ogType":738,"canonicalUrls":886,"schema":887},"GitLab Duo Workflow : améliorez l'assurance qualité de vos applications ","Découvrez étape par étape comment ajouter des tests unitaires à une application Java à l'aide de l'IA agentique.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097617/Blog/Hero%20Images/Blog/Hero%20Images/Workflow%201800x945_2gQoQIbY9NvjLFpXtsxtXy_1750097616649.png","https://about.gitlab.com/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo Workflow : améliorez l'assurance qualité de vos applications \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Cesar Saavedra\"}],\n        \"datePublished\": \"2025-04-10\",\n      }\n                  ",{"title":883,"description":884,"authors":889,"heroImage":885,"date":890,"body":891,"category":14,"tags":892,"updatedDate":893},[702],"2025-04-10","Garantir la qualité de vos applications en vous appuyant sur une approche de conception pilotée par les tests, une bonne couverture de code et une détection précoce des anomalies est essentiel pour vos clients et pour votre réputation. Pourtant, ces processus peuvent rapidement devenir chronophages. Avec [GitLab Duo Workflow](https://about.gitlab.com/fr-fr/gitlab-duo/agent-platform/), l'IA agentique développée sur la plateforme [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ? \") la plus complète, vous pouvez réaliser rapidement des tâches clés au cours de votre cycle de développement logiciel. Découvrez dans ce tutoriel comment ajouter des tests unitaires à une application Java sur la base de ce [projet Java](https://gitlab.com/gitlab-da/playground/csaavedra/gdw/prodmgr-gdw) qui nous servira d'exemple.\n\n> GitLab Duo Workflow est actuellement proposé en version bêta privée. Inscrivez-vous sur la [liste d'attente](https://about.gitlab.com/fr-fr/gitlab-duo/agent-platform/) pour découvrir ce qu'il est possible de faire avec des agents d'IA qui comprennent l'ensemble de votre cycle de développement logiciel.\n\n## Ouverture de votre projet dans VS Code\n\n1. Commencez par cloner votre projet Java sur votre ordinateur local, puis ouvrez-le dans Visual Studio Code. Assurez-vous d'utiliser une branche de fonctionnalité (et non pas la branche principale ou par défaut). Si vous travaillez déjà sur une merge request, celle-ci doit être associée à sa propre branche de fonctionnalité.\n\n2. (Étape facultative.) Accédez au fichier contenant la classe Java pour laquelle vous souhaitez que GitLab Duo Workflow crée des tests unitaires. Inspectez-le afin de pouvoir confirmer ultérieurement que les tests unitaires générés couvrent bien les éléments de cette classe. Voici ce que vous verrez :\n\n![Fichier qui définit la classe Java pour laquelle vous souhaitez que GitLab Duo Workflow crée des tests unitaires](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097627/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097627482.png)\n\n**Remarque** : ce tutoriel suppose que vous avez déjà installé l'extension GitLab Duo Workflow et que vous l'avez activée dans votre VS Code. Si ce n'est pas le cas, veuillez vous référer à la [documentation d'installation](https://docs.gitlab.com/user/duo_workflow/#use-workflow-in-vs-code).\n\n3. Lancez GitLab Duo Workflow en ouvrant la palette de commandes de VS Code [Ctrl + Shift + P]. Saisissez « GitLab Duo Workflow », puis sélectionnez **GitLab : afficher GitLab Duo Workflow**. Un onglet apparaîtra alors, comme suit :\n\n![Lancement de GitLab Duo Workflow avec VS Code](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097627483.png)\n\n4. L'étape suivante consiste à ajouter des tests pour tester le constructeur par défaut, vérifier la création de l'objet et tester l'état initial des propriétés de la classe « Product » Java. Pour ce faire, saisissez le prompt suivant dans la zone de texte de GitLab Duo Workflow :\n\n```unset\nCreate unit tests for class defined in the Product.java file and store the unit tests in its own file titled ProductTest.java\n```\n\n![Zone du prompt dans GitLab Duo Workflow](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097627484.png)\n\n5. Cliquez sur le bouton **Démarrer** dans la fenêtre GitLab Duo Workflow. Deux nouvelles fenêtres apparaissent alors : une au centre de l'écran et une à droite. Celle de droite affiche l'analyse que GitLab Duo Workflow a effectuée pour proposer un plan d'action qui permettra d'atteindre l'objectif spécifié dans votre prompt. Le plan d'action détaillé est affiché dans la fenêtre centrale. Une fois l'analyse terminée et le plan d'action élaboré, vous obtenez les données de sortie suivantes :\n\n![Analyse et plan d'action générés par GitLab Duo Workflow](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097627/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097627486.png)\n\n6. Si l'analyse et le plan d'action vous conviennent, cliquez sur **Approuver le plan** en bas de la fenêtre.\n\n7. Une fois votre plan d'action approuvé, GitLab Duo Workflow exécute les modifications nécessaires dans votre projet.\n\n8. Vous voyez alors s'afficher un nouveau répertoire `src/test/java/csaa/jspring/ProductManager` contenant un nouveau fichier nommé `ProductTest.java`, lequel regroupe tous les tests unitaires pour la classe `Product.java`.\n\n![Nouveau répertoire dans le projet avec un nouveau nom de fichier `ProductTest.java`](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750097627488.png)\n\n9. En consultant ce fichier `ProductTest.java`, vous remarquerez qu'il contient des déclarations d'importation soulignées en rouge indiquant des erreurs d'importation :\n\n![`ProductTest.java` inclut des déclarations d'importation en rouge indiquant des erreurs](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097627489.png)\n\nDemandons alors à GitLab Duo Workflow de les corriger à notre place.\n\n**Remarque** : nous aurions également pu demander à GitLab Duo Workflow dans notre premier prompt de mettre à jour le fichier `pom.xml`. Comme nous ne l'avons pas fait, nous allons donc corriger ces erreurs dans un nouveau workflow.\n\n## Correction des erreurs dans le code généré avec GitLab Duo Workflow\n\n10. Démarrez un nouveau workflow en cliquant sur le bouton **Nouveau workflow** en bas de la fenêtre d'analyse sur le côté droit de votre écran.\n\n![Bouton Nouveau workflow](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097628/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097627491.png)\n\n11. Saisissez le prompt suivant :\n\n```unset\nThe file ProductTest.java has an error “The import org.junit cannot be resolved”. Please fix it\n```\n\n12. Approuvez le plan d'action proposé pour que GitLab Duo Workflow commence son analyse en lisant votre fichier `pom.xml` actuel, puis l'édite et supprime la dépendance JUnit obsolète en la remplaçant par la dépendance et la version correctes de JUnit. Enfin, GitLab Duo Workflow élimine toutes les erreurs de dépendance dans le fichier `ProductTest.java`.\n\n![GitLab Duo Workflow effectuant une analyse en lisant le fichier pom.xml](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097627/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097627492.png)\n\n## Tutoriel vidéo\n\nEn exécutant le plan d'action proposé, GitLab Duo Workflow met concrètement à jour votre projet afin de réaliser ce que vous lui avez demandé dans le prompt. Il vous aide à gagner un temps précieux, en toute simplicité, et augmente la productivité de votre équipe : vos équipes de développement peuvent ainsi consacrer plus de temps à innover et à créer de la valeur.\n\nPour découvrir ce guide étape par étape en action, regardez la vidéo du tutoriel :\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/Tuj7TgqY81Q?si=RReuL1pUsLafvAzs\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n> Inscrivez-vous à la [version bêta privée de GitLab Duo Workflow](https://about.gitlab.com/fr-fr/gitlab-duo/agent-platform/ \"Version bêta privée de GitLab Duo Workflow\") pour découvrir ce qu'il est possible de faire avec des agents d'IA qui comprennent l'ensemble de votre cycle de développement logiciel.\n\n## En savoir plus sur GitLab Duo Workflow et l'IA agentique\n\n- [GitLab Duo Workflow : une IA agentique offrant visibilité et contrôle à l'échelle de l'entreprise](https://about.gitlab.com/fr-fr/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai/)\n- [Documentation GitLab Duo Workflow]( https://docs.gitlab.com/user/duo_workflow/)\n- [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/)\n- [IA agentique : libérez le potentiel des développeurs à grande échelle (The Source)](https://about.gitlab.com/the-source/ai/agentic-ai-unlocking-developer-potential-at-scale/)\n",[675,746,748,676,677],"2025-04-29",{"slug":895,"featured":6,"template":686},"use-gitlab-duo-workflow-to-improve-application-quality-assurance","content:fr-fr:blog:use-gitlab-duo-workflow-to-improve-application-quality-assurance.yml","Use Gitlab Duo Workflow To Improve Application Quality Assurance","fr-fr/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance.yml","fr-fr/blog/use-gitlab-duo-workflow-to-improve-application-quality-assurance",{"_path":901,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":902,"content":908,"config":916,"_id":918,"_type":16,"title":919,"_source":18,"_file":920,"_stem":921,"_extension":21},"/fr-fr/blog/gitlab-duo-self-hosted-enterprise-ai-built-for-data-privacy",{"title":903,"description":904,"ogTitle":903,"ogDescription":904,"noIndex":6,"ogImage":905,"ogUrl":906,"ogSiteName":737,"ogType":738,"canonicalUrls":906,"schema":907},"GitLab Duo Self-Hosted : une IA respectueuse de la confidentialité des données","Tirez parti de la puissance de l'IA générative tout en respectant les exigences de résidence et de confidentialité des données.\n","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097840/Blog/Hero%20Images/Blog/Hero%20Images/Self-Hosted%201800x945_1dL1II2ITh2PteObA9DBLD_1750097839679.png","https://about.gitlab.com/blog/gitlab-duo-self-hosted-enterprise-ai-built-for-data-privacy","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo Self-Hosted : une IA respectueuse de la confidentialité des données\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Susie Bitters\"},{\"@type\":\"Person\",\"name\":\"Aathira Nair\"}],\n        \"datePublished\": \"2025-02-27\",\n      }\n                  ",{"title":903,"description":904,"authors":909,"heroImage":905,"date":912,"body":913,"category":14,"tags":914,"updatedDate":915},[910,911],"Susie Bitters","Aathira Nair","2025-02-27","Nous sommes ravis d'annoncer la disponibilité générale de GitLab Duo Self-Hosted pour les fonctionnalités de suggestions de code et de chat. Proposé en option aux clients GitLab Self-Managed disposant d'un abonnement GitLab Duo Enterprise, GitLab Duo Self-Hosted prend en charge les déploiements sur plusieurs plateformes, y compris les infrastructures sur site, ou dans les clouds privés et les environnements cloud sécurisés via AWS Bedrock et Azure OpenAI. GitLab Duo Self-Hosted permet aux équipes de développer des logiciels innovants avec l'IA tout en gardant un contrôle total sur les données sensibles et la propriété intellectuelle. \n\nLes préoccupations en matière de sécurité ont été un obstacle majeur à l'adoption de l'IA dans les secteurs réglementés. Notre [rapport sur la maturité de l'IA dans l'approche DevSecOps](https://about.gitlab.com/fr-fr/developer-survey/2024/ai/) révèle en effet que plus de la moitié des professionnels du DevSecOps que nous avons interrogés estiment que l'utilisation de l'IA dans le cycle du développement logiciel présente des risques. Avec [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), les entreprises sont en mesure de livrer des logiciels plus sécurisés plus rapidement en intégrant l'IA tout au long du cycle du développement logiciel.\n\nAvec GitLab Duo Self-Hosted, les chefs d'entreprise ayant des exigences strictes en matière de confidentialité des données peuvent bénéficier des fonctionnalités d'IA de GitLab Duo avec une flexibilité totale dans le choix du déploiement et des grands modèles de langage (LLM). De ce fait, parmi les pionniers à adopter GitLab Duo Self-Hosted se trouvent des organismes du secteur public ainsi que des entreprises évoluant dans des secteurs réglementés, comme les services financiers, l'industrie automobile et la santé. Ils tirent ainsi parti de l'avantage concurrentiel offert par l'IA en intégrant des outils de développement alimentés par l'IA dans leurs propres environnements et veillent également à ce que leurs équipes de sécurité conservent un contrôle total sur les données et les processus.\n\nLe témoignage d'une agence gouvernementale américaine illustre parfaitement ce propos : « Après avoir adopté GitLab comme notre plateforme DevSecOps à l'échelle de l'agence, nous avons intégré GitLab Duo Self-Hosted afin d'enrichir les capacités de notre usine logicielle. La possibilité d'exécuter GitLab Duo dans des environnements air-gapped, tout en maintenant un contrôle granulaire sur nos données, a été un critère décisif. Nous avons ainsi capitalisé sur les fonctionnalités d'IA sécurisées pour rationaliser notre workflow et renforcer la sécurité de notre infrastructure. Nous pouvons ainsi tirer parti de l'IA et accroître notre productivité tout en respectant les exigences strictes de conformité. » \n\n![Modèles de GitLab Duo Self-Hosted](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097848/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097848329.png)\n\n## Des déploiements sécurisés alimentés par l'IA\n\nGitLab Duo Self-Hosted inclut les fonctionnalités de GitLab Duo en s'appuyant sur une sélection judicieuse des meilleurs LLM d'IA, y compris ceux d'Anthropic, de Mistral et d'OpenAI. Voici les LLM pris en charge par GitLab à ce jour :\n\n* Sur site : modèles Mistral avec la plateforme vLLM  \n* AWS : Mistral et Claude Anthropic 3.5 Sonnet via AWS Bedrock  \n* Microsoft Azure : modèles OpenAI GPT via Azure AI\n\nNous évaluons actuellement d'autres modèles pour élargir cette prise en charge dans un avenir proche. [En savoir plus sur les LLM pris en charge](https://docs.gitlab.com/ee/administration/self_hosted_models/supported_models_and_hardware_requirements.html#approved-llms)\n\nGitLab Duo Self-Hosted offre plusieurs options de déploiement, notamment le déploiement sur site optimisé par le framework vLLM open source, ainsi que des déploiements de cloud privé via des services tels qu'AWS Bedrock et Microsoft Azure AI. Cette flexibilité aide les entreprises à concevoir des solutions d'IA qui correspondent à leurs exigences uniques en matière de sécurité, de conformité et de performance.\n\n## Une mise en œuvre des technologies IA/ML simplifiée\n\nLa couche d'abstraction IA de GitLab Duo permet de standardiser et de simplifier l'intégration du LLM choisi à une fonctionnalité spécifique. Cette structure atténue la complexité et la charge de travail liées à la mise en œuvre des technologies d’intelligence artificielle (IA) et d’apprentissage automatique (ML), facilitant ainsi leur adoption par les entreprises. Elle permet également d'améliorer l'expérience développeur, sans avoir à gérer la complexité liée à l'intégration et à la maintenance de plusieurs outils.\n\n![Fonctionnalités alimentées par l'IA de GitLab Duo Self-Hosted](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097848/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097848330.png)\n\n## Un contrôle renforcé des données sensibles\n\nEn isolant votre instance GitLab, votre passerelle d'IA et vos LLM dans votre propre environnement ou dans le pays de votre choix, GitLab Duo Self-Hosted vous permet de conserver les données sensibles et la propriété intellectuelle dans l'espace sécurisé que vous aurez défini. Le contrôle granulaire sur la localisation des données permet de respecter les réglementations strictes en matière de résidence des données, tout en adoptant les fonctionnalités d'IA dans des environnements sécurisés. Que vous utilisiez GitLab Duo Self-Hosted dans un environnement entièrement air-gapped avec vLLM ou que vous tiriez parti d'un cloud privé pris en charge, vous pouvez contrôler tous les aspects du déploiement, y compris l'emplacement géographique des composants. En éliminant la dépendance aux API externes et en offrant une visibilité complète sur tous les journaux de requêtes API et de réponses, GitLab Duo Self-Hosted aide même les entreprises les plus réglementées à adopter en toute confiance les fonctionnalités d'IA et à respecter les obligations de conformité les plus strictes.\n\n**Cliquez sur l’image ci-dessous pour bénéficier d’une visite interactive de GitLab Self-Hosted :\n**\n\n[![Capture d'écran de la visite guidée de GitLab Duo Self-Hostedt](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097848/Blog/Content%20Images/Blog/Content%20Images/Screenshot_2025-02-20_at_7.00.34_AM_aHR0cHM6_1750097848332.png)](https://gitlab.navattic.com/gitlab-duo-self-hosted)\n\n## Essayez GitLab Duo Self-Hosted dès aujourd'hui\n\nAdoptez l'intelligence artificielle en toute sécurité ! Intégrez des fonctionnalités d'IA tout en garantissant la protection de vos données et le respect des exigences de confidentialité. [Contactez-nous](https://about.gitlab.com/fr-fr/sales/) pour que nous puissions vous aider à configurer GitLab Duo Self-Hosted dans votre environnement dès aujourd'hui. ",[675,677,746,676,678],"2025-03-04",{"slug":917,"featured":93,"template":686},"gitlab-duo-self-hosted-enterprise-ai-built-for-data-privacy","content:fr-fr:blog:gitlab-duo-self-hosted-enterprise-ai-built-for-data-privacy.yml","Gitlab Duo Self Hosted Enterprise Ai Built For Data Privacy","fr-fr/blog/gitlab-duo-self-hosted-enterprise-ai-built-for-data-privacy.yml","fr-fr/blog/gitlab-duo-self-hosted-enterprise-ai-built-for-data-privacy",{"_path":923,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":924,"content":930,"config":937,"_id":939,"_type":16,"title":940,"_source":18,"_file":941,"_stem":942,"_extension":21},"/fr-fr/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai",{"title":925,"description":926,"ogTitle":925,"ogDescription":926,"noIndex":6,"ogImage":927,"ogUrl":928,"ogSiteName":737,"ogType":738,"canonicalUrls":928,"schema":929},"GitLab Duo Workflow : une IA agentique offrant visibilité et contrôle à l'échelle de l'entreprise","Nos agents d'IA sécurisés et autonomes comprennent le contexte du projet, déchargent vos équipes des tâches complexes et accélèrent la livraison de logiciels. Découvrez la version bêta privée de GitLab Duo Workflow. ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660174/Blog/Hero%20Images/Workflow_1800x945.png","https://about.gitlab.com/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo Workflow : une IA agentique offrant visibilité et contrôle à l'échelle de l'entreprise\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Pini Wietchner\"}],\n        \"datePublished\": \"2025-02-24\",\n      }\n                  ",{"title":925,"description":926,"authors":931,"heroImage":927,"date":933,"body":934,"category":14,"tags":935},[932],"Pini Wietchner","2025-02-24","Nous sommes ravis d'annoncer aujourd'hui l'ouverture de la liste d'attente qui vous permet d'accéder à la [version bêta privée de GitLab Duo Workflow](https://about.gitlab.com/fr-fr/gitlab-duo/agent-platform/), **notre IA agentique intégrée à la plateforme [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que DevSecOps ?\") la plus complète.** Nouvelle étape de notre roadmap en matière d'IA, GitLab Duo Workflow accompagne les équipes de développement tout au long de leur projet. Que ce soit pour la configuration initiale, le processus de déploiement, le débogage, ou encore la coordination entre les équipes, tout est directement réalisé au sein de l'IDE. \n\nIntégré à la plateforme GitLab, GitLab Duo Workflow simplifie la collaboration, l'intégration et le déploiement continus, ainsi que la gestion de la sécurité et de la conformité. Objectif affiché : aider les entreprises à accélérer leurs processus de développement à l'aide d'agents d'IA. \n\nGitLab Duo Workflow facilite l'ensemble du processus de développement :   \n* Lancement rapide de projets \n* Modernisation du code\n* Réalisation de tâches contextuelles \n* Rédaction de la documentation\n* Amélioration de la couverture de test\n* Et bien plus encore \n\nEt ce n'est que le début. Grâce à son intégration au magasin de données unifié de GitLab, plus vous utilisez GitLab, plus GitLab Duo Workflow se nourrit du contexte de votre code, de vos configurations, des résultats de vos scans de sécurité et de vos pratiques de déploiement. Résultat : une expérience de développement toujours plus puissante et parfaitement adaptée à vos besoins.\n\n## Les promesses et les défis des agents d'IA\n\nLes logiciels ont fondamentalement transformé notre monde, mais seule une infime fraction de la population mondiale possède aujourd'hui les compétences nécessaires pour les développer. Pourtant, ces équipes de développement améliorent la vie de milliards d'utilisateurs qui bénéficient des avancées technologiques via leurs smartphones et Internet. Imaginez un monde où les innovations se multiplient grâce à un nombre croissant de personnes capables de développer, sécuriser et livrer des logiciels prêts à l'emploi qui impactent des milliards d'individus. **Ce futur prometteur est à notre portée grâce à l'IA agentique.**\n\nLes agents d'IA comprennent le contexte, mémorisent des ensembles complets de codes bases et collaborent activement sur des projets logiciels complexes menés par les équipes DevSecOps. Avec les agents d'IA, ces équipes peuvent désormais créer des logiciels à une échelle auparavant inimaginable.\n\nCependant, de nombreuses questions importantes restent en suspens concernant la visibilité, le contrôle et l'impact de l'IA sur le travail des développeurs et développeuses. Il est essentiel que les entreprises s'assurent que l'IA améliore les capacités de leurs équipes tout en leur permettant de superviser leur processus de développement. L'adoption de l'IA doit non seulement faciliter le travail des équipes, mais aussi garantir la sécurité, la conformité et la gouvernance.\n\n## L'adoption réussie de l'IA dépend de votre plateforme, pas de l'ajout de nouveaux outils\n\nÀ mesure que vous augmentez la taille des équipes de développement, le volume de code et les risques de sécurité potentiels, l'ajout d'outils distincts pour chaque nouvelle problématique a pour seul effet d'augmenter la complexité du processus. Notre récente [enquête DevSecOps](https://about.gitlab.com/the-source/platform/devops-teams-want-to-shake-off-diy-toolchains-a-platform-is-the-answer/) montre à quel point ce dilemme est réel : les équipes DevSecOps jonglent parfois avec jusqu'à 14 outils différents, ce qui leur fait perdre jusqu'à 80 % de leur temps consacré en réalité à des tâches autres que le codage. Pour que l'IA soit vraiment efficace, elle a également besoin de données unifiées de haute qualité, ce qui est difficile à obtenir avec des outils disparates.\n\n**La plateforme DevSecOps de GitLab combinée aux agents d'IA** réunit toutes les fonctionnalités dans un modèle de données unique qui inclut le code source, les merge requests, les epics, les utilisateurs, les droits d'accès et bien plus encore. Nos agents d'IA utilisent ce contexte pour simplifier le travail des équipes et automatiser les tâches non liées au codage qui monopolisent le temps des équipes de développement. Ils peuvent, par exemple, réaliser des scans de sécurité visant à détecter des vulnérabilités ou encore vérifier l'application des règles de conformité. Lorsque l'IA est intégrée directement à la plateforme, ces fonctionnalités deviennent d'autant plus puissantes, et les agents d'IA agissent alors comme de véritables partenaires tout en vous permettant de garder le contrôle sur la manière dont ils améliorent le processus.\n\n**Et c'est précisément ce que nous proposons avec GitLab Duo Workflow.**\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1059060959?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"GitLab Duo Workflow, the future of secure agentic AI software development\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>`\n\n## GitLab Duo Workflow : des agents d'IA intégrés à la plateforme DevSecOps la plus complète\n\nTirant parti de la plateforme DevSecOps complète et unifiée de GitLab, GitLab Duo Workflow aide les équipes de développement à travailler à leur plein potentiel. Contrairement aux assistants IA pour le code qui se limitent à générer des portions de code, GitLab Duo Workflow comprend l'ensemble de votre cycle de développement et automatise les tâches routinières. Ainsi, les équipes peuvent se concentrer sur l'innovation stratégique et la résolution de problèmes de façon plus créative. \n\nLes fonctionnalités que nous développons actuellement dans GitLab Duo Workflow aideront les équipes de la manière suivante : \n\n### Un lancement rapide de projets\n\nLes équipes de développement passent un temps précieux à configurer de nouveaux projets, à gérer les dépendances et à mettre en place une infrastructure de base au lieu de se concentrer sur la création de nouvelles fonctionnalités. Avec GitLab Duo Workflow, vous pouvez **automatiser la mise en place d'un projet directement dans l'IDE** : vous disposez dès le départ des configurations nécessaires, ce qui vous permet de vous concentrer sur l'innovation plus rapidement.\n\n### Des applications modernes \n\nLa modernisation du code hérité ne se limite pas à la mise à jour de la syntaxe. Elle nécessite de comprendre les dépendances, les tests, les [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\") et la documentation. GitLab Duo Workflow vous aide à **moderniser votre code base en gérant le processus de refactorisation**, depuis le code source jusqu'aux tests.\n\n### Du changement de contexte à un état de concentration optimale et ininterrompue\n\nLes équipes de développement changent constamment d'outils, de documentation et de codes bases pour résoudre des problèmes. GitLab Duo Workflow aide à **résoudre les tâches en prenant en compte l'intégralité du contexte des tickets et merge requests liés à votre code base**, ce qui permet aux équipes de rester concentrés sur leurs workflows.\n\n### Des connaissances dynamiques\n\nLa documentation devenant rapidement obsolète, le code base devient plus difficile à comprendre et à maintenir. GitLab Duo Workflow **aide les développeurs et développeuses à générer et à mettre à jour la documentation**, y compris les fichiers README, les diagrammes de flux de code et la documentation de l'architecture logicielle.\n\n### Des tests complets\n\nÀ mesure que votre code base devient de plus en plus volumineux, maintenir une couverture de test complète devient de plus en plus complexe. GitLab Duo Workflow **peut générer des tests pour des sections entières de votre code base** tout en s'intégrant à votre infrastructure de test existante, facilitant ainsi la livraison de logiciels plus fiables.\n\n## Inscrivez-vous à notre version bêta privée \n\n[Inscrivez-vous à la liste d'attente de la version bêta privée de GitLab Duo Workflow](https://about.gitlab.com/fr-fr/gitlab-duo/agent-platform/) et découvrez notre nouvelle IA agentique sécurisée (de la configuration des projets jusqu'à leur déploiement). Intégrés à la plateforme DevSecOps de GitLab, ces agents vous assistent à chaque étape de votre cycle de développement logiciel tout en garantissant la sécurité nécessaire et le contrôle total sur les processus et les données à l'échelle de votre entreprise.\n\n *Avertissement : cette page contient des informations relatives aux produits, fonctionnalités et outils à venir. Celles-ci ne sont fournies qu'à titre informatif. Veillez donc à ne pas vous fier à ces informations à des fins d'achat ou de planification. Comme pour tout projet, les éléments mentionnés sont susceptibles de changer ou d'être retardés. Le développement, la sortie et le calendrier de tout produit ou fonctionnalité restent à la seule discrétion de GitLab Inc.*",[746,675,677,676,678,936],"workflow",{"slug":938,"featured":93,"template":686},"gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai","content:fr-fr:blog:gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai.yml","Gitlab Duo Workflow Enterprise Visibility And Control For Agentic Ai","fr-fr/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai.yml","fr-fr/blog/gitlab-duo-workflow-enterprise-visibility-and-control-for-agentic-ai",{"_path":944,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":945,"content":951,"config":959,"_id":961,"_type":16,"title":962,"_source":18,"_file":963,"_stem":964,"_extension":21},"/fr-fr/blog/automating-with-gitlab-duo-part-3-validating-testing",{"title":946,"description":947,"ogTitle":946,"ogDescription":947,"noIndex":6,"ogImage":948,"ogUrl":949,"ogSiteName":737,"ogType":738,"canonicalUrls":949,"schema":950},"Automatisation avec GitLab Duo : comment valider des tests (Partie 3)","Découvrez le test que nous avons effectué pour valider l'impact de GitLab Duo sur les tests automatisés de notre équipe et les résultats que nous avons obtenus.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097447/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%284%29_3LZkiDjHLjhqEkvOvBsVKp_1750097447404.png","https://about.gitlab.com/blog/automating-with-gitlab-duo-part-3-validating-testing","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Automatisation avec GitLab Duo : comment valider des tests (Partie 3)\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Byron Boots\"}],\n        \"datePublished\": \"2024-12-17\",\n      }\n                  ",{"title":946,"description":947,"authors":952,"heroImage":948,"date":954,"body":955,"category":14,"tags":956,"updatedDate":958},[953],"Byron Boots","2024-12-17","Dans les articles précédents de cette série, nous avons vu [comment utiliser GitLab Duo pour générer des tests pour notre code](https://about.gitlab.com/fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests/) et présenté [ce que nous avons appris en utilisant GitLab Duo pour générer des tests automatisés](https://about.gitlab.com/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing/). Nous avons également partagé quelques-unes des façons dont nous avons abordé les changements apportés aux tests générés par GitLab Duo. Ce dernier article de la série présente un test que nous avons effectué pour valider l'impact de GitLab Duo sur les tests automatisés de notre équipe et dévoile les résultats que nous avons obtenus jusqu'à présent.\n\n### Résultats des tests de validation\n\nAfin de valider la valeur ajoutée de notre utilisation de [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/ \"GitLab Duo \") pour générer des tests, nous avons mis GitLab Duo et nous-mêmes au défi de remplacer et d'augmenter la couverture des tests. L'équipe a supprimé tous les tests précédemment écrits afin d'obtenir une couverture de test de 0 %, puis a méthodiquement parcouru le dépôt et créé de nouveaux fichiers de test pour stocker ceux générés par GitLab Duo.\n\nL'équipe a ensuite suivi les étapes décrites dans [le premier article de blog](https://about.gitlab.com/fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests/) pour générer des tests. Pour fournir un groupe témoin stable, aucun humain n'a modifié les tests et fichiers de test et nous avons ajouté un commentaire `Tests générés par GitLab Duo` en haut avec le suffixe `duo.py` pour indiquer d'où venaient les tests.\n\nToutes les itérations des tests ont été réalisées uniquement par le biais d'interactions avec GitLab Duo via la fenêtre `Générer des tests` et GitLab Duo Chat, comme mentionné dans [le deuxième article de la série](https://about.gitlab.com/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing/). Comme indiqué alors, nous avons demandé à GitLab Duo de faire des mises à jour en fonction des erreurs rencontrées, des échecs de tests et des exemples d'extraits de code que GitLab Duo peut utiliser comme contexte supplémentaire. \n\nLors de nos tests avec GitLab Duo, des tests et des rapports de couverture ont été exécutés afin d'évaluer si les tests générés augmentaient la couverture des tests et apportaient la valeur ajoutée que nous attendions. En tirant parti de la [visualisation de la couverture de test de GitLab](https://docs.gitlab.com/ee/ci/testing/test_coverage_visualization/), nous avons pu surveiller en permanence les résultats de notre travail.\n\nAprès avoir utilisé GitLab Duo pour régénérer des tests pour le code précédemment couvert par nos tests essentiellement manuels, nous avons pu atteindre une couverture de test de 84 %. Ce fut une grande réussite pour l'équipe car :\n\n1. Il s'agissait d'une amélioration significative par rapport à la couverture précédente, qui était de 74 %. \n2. Il a fallu environ deux jours à un ingénieur pour atteindre 84 %, alors qu'il avait fallu environ quatre semaines à plusieurs ingénieurs pour atteindre 74 %.\n\nDepuis cette expérience, l'équipe est parvenue à augmenter la couverture à 89 % avec l'aide de GitLab Duo, tout en continuant à introduire de nouvelles fonctionnalités.\n\n![illustration des réalisations](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097456/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097456771.png)\n\nL'utilisation de GitLab Duo a permis d'améliorer l'efficacité et la couverture des tests, et a également permis aux équipes de développement disposant d'un contexte plus restreint au sujet du code existant d'écrire rapidement des tests de qualité. Cela a permis à l'équipe de développer de nouvelles fonctionnalités sans craindre d'introduire des erreurs.\n\n> Vous souhaitez [tester GitLab Duo](https://about.gitlab.com/fr-fr/solutions/gitlab-duo-pro/sales/) ? Commencez un essai gratuit de 60 jours dès aujourd'hui.\n",[675,957,746,677],"testing","2025-01-23",{"slug":960,"featured":6,"template":686},"automating-with-gitlab-duo-part-3-validating-testing","content:fr-fr:blog:automating-with-gitlab-duo-part-3-validating-testing.yml","Automating With Gitlab Duo Part 3 Validating Testing","fr-fr/blog/automating-with-gitlab-duo-part-3-validating-testing.yml","fr-fr/blog/automating-with-gitlab-duo-part-3-validating-testing",{"_path":966,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":967,"content":973,"config":980,"_id":982,"_type":16,"title":983,"_source":18,"_file":984,"_stem":985,"_extension":21},"/fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing",{"ogTitle":968,"schema":969,"ogImage":970,"ogDescription":971,"ogSiteName":737,"noIndex":6,"ogType":738,"ogUrl":972,"title":968,"canonicalUrls":972,"description":971},"Comment générer des tests complexes avec GitLab Duo","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Automatisation avec GitLab Duo : comment générer des tests complexes (Partie 2) \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Byron Boots\"}],\n        \"datePublished\": \"2024-12-10\",\n      }\n                  ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099243/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%284%29_3LZkiDjHLjhqEkvOvBsVKp_1750099243011.png","Découvrez comment nous générons des tests complexes en utilisant les fonctionnalités alimentées par l’IA de GitLab Duo.","https://about.gitlab.com/blog/automating-with-gitlab-duo-part-2-complex-testing",{"heroImage":970,"body":974,"authors":975,"updatedDate":976,"date":977,"title":978,"tags":979,"description":971,"category":14},"Le premier article de notre série en trois parties sur la [génération de tests avec GitLab Duo](https://about.gitlab.com/blog/automating-with-gitlab-duo-part-1-generating-tests/) portait sur l'automatisation des tests de code. Nous allons maintenant partager les leçons que nous avons tirées de l'utilisation de l'IA pour la génération de tests.\n\n## Quelles sont les situations rencontrées et les solutions apportées ? \n\nDans l'ensemble, nous sommes satisfaits des résultats obtenus en utilisant [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/) pour générer des tests sur notre code. Comme pour toute génération de langage, certains cas ont nécessité des ajustements mineurs, tels que la correction des chemins d'importation ou la modification du contenu des jeux de données. Pour les cas les plus complexes, nous avons dû nous rappeler que les solutions d'IA manquent souvent de contexte. Voici comment nous avons géré les situations de test plus complexes avec GitLab Duo.\n\n### Mise à jour des scénarios de test existants\n\nComme c'est souvent le cas lors du développement d'un produit logiciel, nous avons rencontré des situations qui nécessitaient des mises à jour de tests existants. Plutôt que d'apporter manuellement des ajustements à une suite complète de tests pour un problème commun, nous avons tiré pleinement parti de la fenêtre GitLab Duo Chat dans VS Code. Nous avons par exemple utilisé le prompt de Chat « Veuillez mettre à jour les tests fournis pour utiliser unittest plutôt que pytest  » pour refactoriser les tests, puis nous avons collé les tests que nous voulions que GitLab Duo mette à jour.\n\n![Génération de tests automatisés](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099252/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750099252303.png)\n\n\u003Cbr>\u003C/br>\n\n![Prompt de chat demandant l'utilisation d'unittest plutôt que pytest\n](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099252/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750099252304.png)\n\n**Remarque :** nous avons copié-collé les recommandations de GitLab Duo dans notre code.\n\n### Création de tests pour le code hérité \n\nLa création de tests pour un code hérité dont nous savions qu'il fonctionnait est une autre situation difficile que nous avons rencontrée. Dans de telles circonstances, il était utile de fournir des extraits d'erreur avec les tests échoués et de demander à GitLab Duo de proposer de nouveaux tests. Un copier-coller complet depuis la fenêtre du terminal des échecs et des erreurs constatés vers Chat, accompagné de la demande « Veuillez expliquer et corriger ce test échoué » ou de prompts similaires, a permis d'obtenir un résumé des problèmes rencontrés par le test, ainsi qu'un nouveau test permettant de les résoudre. Nous avons constaté que cela nécessitait parfois plusieurs cycles de refactorisation au fur et à mesure que de nouvelles défaillances de test étaient identifiées. L'efficacité de GitLab Duo pour fournir diverses solutions de refactorisation a toutefois été rapide et a eu un effet positif sur la productivité des équipes.\n\n### Gestion des abstractions et codes complexes\n\nDans d'autres instances, la modularisation ou la complexité de notre code a entraîné des variations dans les résultats de GitLab Duo. Lors de la génération de tests, GitLab Duo a par exemple parfois généré une série de tests réussis et échoués en raison de différences dans l'approche des tests. Nous avons fourni à GitLab Duo son propre exemple de test réussi et lui avons demandé de modifier les tests individuels un par un pour qu'ils correspondent au style des tests réussis afin de maintenir la cohérence. Nous avons également fourni à GitLab Duo un fichier de tests de fonctionnement pour un objet ou une tâche similaire afin qu'il puisse refléter la structure.\n\n### Vérification de la conformité du code généré à nos standards\n\nLors du développement d'un module Python, GitLab Duo a généré de nombreux tests à l'aide d'objets simulés Mock. Ces derniers nécessitaient souvent une refactorisation, en particulier en ce qui concerne la standardisation des noms. Dans de tels cas, nous avons pu utiliser GitLab Duo Chat pour refactoriser les tests avec des instructions sur les composants de test spécifiques à mettre à jour. Demander à GitLab Duo de procéder à ces changements a été beaucoup plus rapide que de refactoriser les tests individuellement, comme nous l'avions fait auparavant.\n\n### Gestion des scénarios non couverts\n\nGitLab Duo a généré des tests pour des scénarios supplémentaires que l'équipe n'avait pas pris en compte auparavant, augmentant ainsi la couverture des tests. Heureusement, nous avons pu utiliser GitLab Duo pour traiter rapidement et efficacement ces cas particuliers et étendre la couverture des tests, ce qui constitue une valeur ajoutée essentielle permettant à notre équipe de construire rapidement et de manière sûre un produit robuste.\n\n## Quels enseignements avons-nous tirés ?\n\nVoici quelques leçons clés ayant contribué à notre réussite avec GitLab Duo :\n\n* **Rapidité et efficacité pour un développement et une itération accélérés :** le rôle de GitLab Duo dans la génération de tests automatisés a été un accélérateur clé du développement et a permis à notre équipe de travailler plus rapidement et avec une plus grande confiance dans nos changements.\n* **Utilisation de prompts appropriés :** en utilisant GitLab Duo pour notre cas d'utilisation, nous avons abordé l'ingénierie des prompts, un sujet clé en matière d'optimisation de l'apprentissage automatique. Nous avons parfois dû modifier notre question de quelques mots-clés pour obtenir la réponse idéale.\n* **Compréhension des frameworks et du code sous-jacents :** lorsqu'un code généré par l'IA est intégré à un produit, ne serait-ce qu'à titre de test, il est essentiel de comprendre comment le code fonctionne afin de pouvoir le déboguer de manière adéquate et de demander des modifications en connaissance de cause.\n* **Compréhension de l'état final souhaité et des normes :** de la même manière que l'on respecte les normes de codage pour le formatage et l'utilisation de la bibliothèque lorsqu'on développe sans IA, il est important de garder à l'esprit les résultats escomptés et les normes à respecter lors de l'utilisation de l'IA. GitLab Duo a besoin de contexte pour comprendre les normes de codage, il est donc essentiel que les membres de l'équipe qui utilisent GitLab Duo assurent une supervision adéquate de ses résultats afin de garantir le respect de la qualité ainsi que d'autres attentes.\n* **GitLab Duo ne remplace pas tous les tests :** bien que nous utilisions GitLab Duo de manière significative pour générer des tests automatisés, ce dernier ne remplace pas nos autres tests et la supervision humaine. Les tests fonctionnels, les tests d'intégration et d'autres encore occupent toujours une place importante dans le processus d'assurance qualité et dans le cycle du développement logiciel.\n\nDans le prochain article de cette série, nous aborderons un test que nous avons effectué pour valider l'impact de GitLab Duo sur les tests automatisés de notre équipe et nous discuterons des résultats impressionnants que nous avons obtenus jusqu'à présent.",[953],"2025-01-14","2024-12-10","Automatisation avec GitLab Duo : comment générer des tests complexes (Partie 2) ",[675,957,746],{"slug":981,"featured":6,"template":686},"automating-with-gitlab-duo-part-2-complex-testing","content:fr-fr:blog:automating-with-gitlab-duo-part-2-complex-testing.yml","Automating With Gitlab Duo Part 2 Complex Testing","fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing.yml","fr-fr/blog/automating-with-gitlab-duo-part-2-complex-testing",{"_path":987,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":988,"content":993,"config":999,"_id":1001,"_type":16,"title":1002,"_source":18,"_file":1003,"_stem":1004,"_extension":21},"/fr-fr/blog/gitlab-duo-with-amazon-q-devsecops-meets-agentic-ai",{"title":989,"description":990,"ogTitle":989,"ogDescription":990,"noIndex":6,"ogImage":760,"ogUrl":991,"ogSiteName":737,"ogType":738,"canonicalUrls":991,"schema":992},"GitLab Duo combiné à Amazon Q : quand le DevSecOps rencontre l’IA agentique","L'intégration d'agents d'IA autonomes dans la plateforme DevSecOps alimentée par l'IA de GitLab accélère la productivité des équipes de développement, la modernisation des applications et l'innovation.","https://about.gitlab.com/blog/gitlab-duo-with-amazon-q-devsecops-meets-agentic-ai","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo combiné à Amazon Q : quand le DevSecOps rencontre l’IA agentique\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Emilio Salvador\"}],\n        \"datePublished\": \"2024-12-03\",\n      }",{"title":989,"description":990,"authors":994,"heroImage":760,"date":995,"body":996,"category":14,"tags":997,"updatedDate":998},[869],"2024-12-03","Nous sommes ravis d'annoncer le lancement de GitLab Duo combiné à Amazon Q, une offre commune qui réunit la plateforme DevSecOps complète alimentée par l'IA de GitLab et les agents d'IA autonomes d'Amazon Q dans une solution unique et intégrée.\n\nGitLab Duo combiné à Amazon Q révolutionne le développement logiciel en intégrant de puissants agents d'IA directement dans vos workflows quotidiens. Au lieu de passer d'un outil à l'autre, les développeurs peuvent désormais accélérer les tâches clés (du développement de fonctionnalités aux revues de code) au sein de la plateforme DevSecOps complète de GitLab. Les agents d'IA d'Amazon Q agissent comme des assistants intelligents qui automatisent les tâches chronophages, telles que la génération de code à partir des conditions requises, la création de tests unitaires, les revues de code et la modernisation des applications Java. En gérant ces tâches complexes, cette offre commune aide les équipes à se concentrer sur l'innovation, tout en respectant les normes strictes de sécurité et de qualité.\n\nCette offre propose une expérience développeur optimisée pour les entreprises, avec les fonctionnalités suivantes :\n* La plateforme GitLab unifiée avec un magasin de données unique, qui automatise la compilation, les tests, l'empaquetage et le déploiement de code sécurisé\n* GitLab Duo combiné à Amazon Q Developer, qui tire parti du contexte des projets GitLab pour générer des modifications dans plusieurs fichiers en fonction des tâches\n* Les agents d'IA Amazon Q intégrés à GitLab Duo, qui mettent à jour les tickets et créent des merge requests par tâche, avec des autorisations limitées au projet\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1033653810?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"GitLab Duo and Amazon Q\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## Un partenariat innovant entre GitLab et AWS\n\nGitLab Duo combiné à Amazon Q est le fruit d'une collaboration étroite entre les équipes d'ingénierie de GitLab et d'AWS, qui ont uni leurs forces pour transformer le développement logiciel. Ce partenariat associe l'expertise de GitLab en matière de pratique DevSecOps unifiée au leadership d'AWS dans le domaine du cloud computing, pour créer une solution innovante qui comprend la façon de travailler des équipes de développement.\n\nL'intégration des agents autonomes d'Amazon Q à la plateforme complète alimentée par l'IA de GitLab ne se limite pas à une simple intégration technique. Nous proposons une expérience qui rend le développement alimenté par l'IA naturel tout en garantissant la sécurité, la conformité et la fiabilité exigées par les entreprises.\n\nLes analystes du secteur reconnaissent l'importance de cette intégration pour améliorer le développement logiciel alimenté par l'IA :\n\n***« Avec cette offre commune, GitLab et AWS unissent leurs forces pour faire de l'IA agentique une réalité dans le développement logiciel », explique Katie Norton, Research Manager chez IDC. « GitLab Duo combiné à Amazon Q répond à des besoins bien définis et à des défis critiques qui permettent aux clients d'exploiter pleinement le potentiel de l'IA. »***\n\n***« Tant les développeurs que les entreprises pour lesquelles ils travaillent recherchent de plus en plus des expériences simplifiées et unifiées », déclare Rachel Stephens, Senior Analyst chez RedMonk. « Surtout à l'ère de l'IA, où la sécurité et la protection des données sont primordiales, les entreprises veulent exploiter la puissance des technologies de pointe tout en contrôlant les risques et en éliminant les chaînes d'outils logiciels disparates. Le partenariat entre GitLab Duo et Amazon Q offre aux développeurs les outils dont ils ont besoin dans le cadre d'une expérience DevSecOps complète. »***\n\n## 4 avantages clés pour les clients \n\nGitLab Duo combiné à Amazon Q associe l'approche DevSecOps alimentée par l'IA à l'ensemble le plus complet de fonctionnalités de cloud computing et permet aux équipes de développement de :\n\n### 1. Rationaliser le développement de fonctionnalités, de l'idée au code \n\nLes équipes de développement passent souvent de nombreuses heures à traduire les exigences en code, ce qui ralentit la livraison de fonctionnalités et aboutit à un déploiement incohérent. Vous pouvez désormais faire appel à GitLab Duo combiné à Amazon Q en utilisant la nouvelle action rapide `/q dev`, qui convertit en quelques minutes une description de ticket directement en code prêt à être intégré dans une merge request. L'agent analyse les exigences, planifie la mise en œuvre et génère une merge request complète, tout en respectant les normes de développement de votre équipe. Les équipes peuvent itérer rapidement grâce aux retours constructifs fournis dans les commentaires, ce qui réduit considérablement le délai nécessaire pour passer de l'idée à la production.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1034050110?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Feature Dev with Rev\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n### 2. Moderniser facilement le code hérité \n\nLa mise à niveau des applications Java nécessite généralement des semaines de planification minutieuse, des modifications manuelles du code et des tests approfondis. L'action rapide `/q transform` change la donne en automatisant l'ensemble du processus de modernisation du code des applications Java. En quelques minutes, et non plus en quelques heures, l'agent analyse votre code base Java 8 ou 11, crée un plan de mise à niveau complet et génère des merge requests entièrement documentées pour la migration vers Java 17. Chaque modification est suivie et traçable, ce qui donne confiance aux équipes tout en améliorant la sécurité et les performances des applications.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1034050145?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"QCT\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n### 3. Accélérer les revues de code tout en maintenant la qualité \n\nLes revues de code créent souvent des goulots d'étranglement : les équipes attendent des jours pour obtenir des retours constructifs, mais doivent maintenir des normes cohérentes. Avec l'action rapide `/q review`, vous obtenez des retours instantanés et intelligents sur la qualité et la sécurité du code directement dans les merge requests. En identifiant automatiquement les problèmes potentiels et en suggérant des améliorations en fonction de vos normes, les équipes peuvent maintenir un code de haute qualité tout en réduisant considérablement les cycles de revue de code.\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1034050136?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Code Reviews\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n### 4. Automatiser les tests pour livrer du code en toute confiance\n\nLa création manuelle de tests prend beaucoup de temps et aboutit souvent à une couverture de test incohérente entre les équipes. Avec l'action rapide `/q test`, vous pouvez générer automatiquement des tests unitaires complets qui comprennent la logique de votre application. L'agent assure une couverture de test de toutes les parties du code les plus critiques et des cas particuliers en s'alignant sur vos modèles de test actuels. Grâce à cette automatisation, les équipes peuvent détecter les problèmes plus tôt et maintenir des normes de qualité cohérentes, ce qui permet aux développeurs de gagner un temps précieux.\n\n\u003Cdiv style=\"padding:54.37% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1034050181?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Use GitLab Duo with Amazon Q to add tests\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n## Sécurité et garde-fous de niveau entreprise\n\nConçue pour offrir une mise à l'échelle et une sécurité accrue aux entreprises, cette offre associe la sécurité, la conformité et la confidentialité intégrées de GitLab à l'agent d'IA d'Amazon Q. Elle accélère ainsi les workflows de développement, ce qui permet aux entreprises de livrer des logiciels sécurisés plus rapidement.\n\nElle inclut :\n\n* Des garde-fous intégrés qui maintiennent la vélocité du développement  \n* Des contrôles granulaires pour les fonctionnalités alimentées par l'IA à tous les niveaux : utilisateur, projet et groupe  \n* La sécurité intégrée à chaque étape du développement dans les workflows existants\n\nLes équipes DevSecOps peuvent faire évoluer l'environnement de développement en toute sécurité avec le cloud le plus utilisé au monde.\n\n## Ce qui vous attend\n\nGitLab Duo combiné à Amazon Q s'appuie sur notre intégration existante avec [AWS annoncée en mai 2024](https://press.aboutamazon.com/2024/4/aws-announces-general-availability-of-amazon-q-the-most-capable-generative-ai-powered-assistant-for-accelerating-software-development-and-leveraging-companies-internal-data). Il s'agit d'une étape importante dans notre mission commune de transformation du développement logiciel. Cette intégration plus poussée des fonctionnalités d'IA marque le début de notre collaboration élargie avec AWS. Nous continuerons à faire évoluer ces fonctionnalités en nous concentrant sur les objectifs suivants :\n\n* Extension des fonctionnalités d'IA à l'ensemble du cycle du développement logiciel  \n* Amélioration de la productivité des équipes de développement  \n* Réponse aux exigences de développement des entreprises à grande échelle\n\n**GitLab Duo combiné à Amazon Q est disponible dès aujourd'hui dans une [branche publique](https://gitlab.com/groups/gitlab-org/-/epics/16059) du Projet GitLab.org. Pour bénéficier d'un accès en avant-première et en savoir plus sur la façon dont GitLab et AWS transforment votre processus de développement logiciel, consultez [notre site web](https://about.gitlab.com/fr-fr/partners/technology-partners/aws/).**",[678,706,675,746,236],"2024-12-06",{"slug":1000,"featured":93,"template":686},"gitlab-duo-with-amazon-q-devsecops-meets-agentic-ai","content:fr-fr:blog:gitlab-duo-with-amazon-q-devsecops-meets-agentic-ai.yml","Gitlab Duo With Amazon Q Devsecops Meets Agentic Ai","fr-fr/blog/gitlab-duo-with-amazon-q-devsecops-meets-agentic-ai.yml","fr-fr/blog/gitlab-duo-with-amazon-q-devsecops-meets-agentic-ai",{"_path":1006,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1007,"content":1013,"config":1019,"_id":1021,"_type":16,"title":1022,"_source":18,"_file":1023,"_stem":1024,"_extension":21},"/fr-fr/blog/quickly-resolve-broken-ci-cd-pipelines-with-ai",{"title":1008,"description":1009,"ogTitle":1008,"ogDescription":1009,"noIndex":6,"ogImage":1010,"ogUrl":1011,"ogSiteName":737,"ogType":738,"canonicalUrls":1011,"schema":1012},"Échecs de pipelines CI/CD : comment les corriger rapidement avec l'IA","Découvrez comment l'analyse des causes profondes alimentée par l'IA résout les problèmes d'exécution de pipelines CI/CD de façon plus intelligente et plus rapidement.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097355/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%2811%29_78Dav6FR9EGjhebHWuBVan_1750097355230.png","https://about.gitlab.com/blog/quickly-resolve-broken-ci-cd-pipelines-with-ai","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Échecs de pipelines CI/CD : comment les corriger rapidement avec l'IA\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Itzik Gan Baruch\"}],\n        \"datePublished\": \"2024-12-03\",\n      }",{"title":1008,"description":1009,"authors":1014,"heroImage":1010,"date":995,"body":1016,"category":14,"tags":1017,"updatedDate":1018},[1015],"Itzik Gan Baruch","Les pipelines CI/CD sont essentiels à l'efficacité dans le développement logiciel, car ils aident les équipes à tester, compiler et déployer le code rapidement. Cependant, lorsque ces pipelines échouent, c'est tout le cycle de développement qui se trouve ralenti : les délais ne sont pas respectés et les équipes doivent corriger le code tout en faisant avancer les projets en cours.\n\n![Pipeline CI/CD avec plusieurs jobs en échec](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097362/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097362772.png)\n\n\u003Ccenter>\u003Ci>Pipeline CI/CD avec plusieurs jobs en échec\u003C/i>\u003C/center>\u003Cbr>\u003C/br>\n\n**Mais quelles sont les raisons pour lesquelles les pipelines ne s'exécutent-ils pas ?** Analysons cela ensemble.\n\n## Pourquoi les pipelines CI/CD échouent-ils ? \n\nOn parle d'échec lorsque le workflow automatisé de votre [pipeline CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/), comprenant généralement des étapes telles que la compilation, les tests et le déploiement du code, ne s'exécute pas comme prévu et génère un message d'erreur. Par conséquent, le code n'est pas correctement compilé, testé ou déployé, ce qui retarde la livraison du logiciel et nécessite d'identifier et de résoudre le problème rencontré. \n\nLes échecs de pipelines CI/CD peuvent survenir pour diverses raisons. Voici les causes les plus fréquentes :\n- __Erreurs de syntaxe :__ une petite erreur dans le code, comme un point-virgule manquant ou un nom de variable incorrect, peut faire échouer le pipeline.\n- __Échec des tests :__ les tests unitaires ou d'intégration peuvent échouer en raison d'un code défectueux, de configurations incorrectes ou de dépendances incompatibles.\n- __Configurations erronées :__ des paramètres incorrects du pipeline ou des configurations d'environnement peuvent provoquer l'échec des compilations ou des déploiements.\n\nD'autres problèmes plus complexes peuvent également s'ajouter comme :\n- Des problèmes d'Infrastructure as Code ([IaC](https://about.gitlab.com/fr-fr/topics/gitops/infrastructure-as-code/)) : des erreurs lors du provisionnement de l'infrastructure cloud, telles que des fautes dans les scripts Terraform ou les templates CloudFormation, peuvent empêcher le déploiement.\n- Les défis que posent Kubernetes et GitOps : des configurations erronées dans les [clusters Kubernetes](https://about.gitlab.com/fr-fr/blog/kubernetes-the-container-orchestration-solution/) ou des problèmes affectant les workflows [GitOps](https://about.gitlab.com/fr-fr/topics/gitops/) (par exemple, la synchronisation de l'état des ressources Kubernetes avec les dépôts [Git](https://about.gitlab.com/fr-fr/blog/what-is-git/ \"Qu'est-ce que Git ? \")) peuvent causer l'échec des pipelines et rendre difficile le diagnostic.\n- Des traces de piles d'appels longues et désordonnées : lorsqu'une erreur se produit dans les profondeurs du système, les traces de piles d'appels peuvent devenir longues et difficiles à déchiffrer, en particulier lorsqu'elles couvrent plusieurs composants ou services.\n\nCes obstacles compliquent et ralentissent le dépannage, car les équipes de développement doivent souvent passer au crible des logs détaillés et complexes, examiner les fichiers de configuration et tester différentes solutions afin d'identifier la cause profonde.\n\n## Quel est l’impact réel des pipelines en échec ? \n\nEn plus de retarder votre déploiement, un pipeline qui échoue devient une source de stress et de frustration. Les équipes sont obligées d'interrompre leur travail pour s'atteler à la résolution du problème, ce qui multiplie les perturbations. Alors que le respect des délais est compromis, l'équipe est soumise à une pression accrue. Mais pourquoi le dépannage manuel est-il si stressant ?\n\n### Dépannage manuel \n\nLe temps nécessaire pour corriger un pipeline défaillant peut varier en fonction de différents critères, tels que :\n- La connaissance du projet par l’équipe de développement\n- Son expérience avec des problèmes similaires\n- Ses compétences globales en matière de résolution de problèmes\n\nIl est à la fois éprouvant et fastidieux d'analyser manuellement les logs pour comprendre ce qui s'est passé. Les logs proviennent généralement de diverses sources, y compris d'erreurs d'application et de messages système. Ils sont en outre souvent mal structurés et donc difficiles à interpréter. Les équipes doivent alors constamment basculer entre les nombreuses tâches pour corriger le pipeline, ce qui ralentit encore le processus.\n\nAvec [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), les équipes de développement peuvent passer au crible toutes ces données éparpillées et repérer les problèmes beaucoup plus rapidement. Grâce à ce processus simplifié, vous n'avez pas besoin d'une expertise approfondie pour comprendre ce qui s'est passé. Avec l'IA, la réparation de vos pipelines devient plus rapide, plus facile et beaucoup moins stressante.\n\n\u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176104/Blog/zxvvu7p9vc3qpmwl32ya.png\" alt=\"broken pipeline\">\n\n\u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176108/Blog/bpx6dqilfhltzboyp8k8.png\" alt=\"fix suggestions for broken pipelines\">\n\n## L'analyse des causes profondes de GitLab Duo avec l'IA générative\n\nSi votre pipeline CI/CD échoue, vous n'avez plus besoin de consacrer des heures à le dépanner manuellement. Recourez simplement à l'[analyse des causes profondes (Root Cause Analysis) de GitLab Duo](https://docs.gitlab.com/user/gitlab_duo_chat/examples/#troubleshoot-failed-cicd-jobs-with-root-cause-analysis). Cette fonctionnalité, alimentée par l'IA, identifie rapidement la cause exacte de l'échec de votre pipeline CI/CD et suggère des correctifs, directement au sein de la plateforme [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que DevSecOps ?\") de GitLab. Peu importe la longueur ou la complexité de vos traces de piles d'appels, la fonctionnalité  d’analyse des causes profondes de GitLab Duo analyse toutes les données en détail, puis vous fournit des informations claires et exploitables.\n\n**Cette fonctionnalité vous indique la cause exacte de l'échec, propose des corrections et identifie même les fichiers et les lignes de code spécifiques qui nécessitent une attention particulière.** Pour vous faciliter encore plus la tâche, il suggère des correctifs de code pour rendre votre pipeline de nouveau fonctionnel. Le dépannage devient ainsi beaucoup plus rapide et plus simple.\n\n\u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176111/Blog/nmagby9hoksskogve53m.png\" alt=\"root cause of failure\">\n\n\u003Cimg src=\"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176115/Blog/dndis1cedwbmbnj33q3v.png\" alt=\"example fix\">\n\nEn plus de vous apporter des réponses, l'analyse des causes profondes de GitLab Duo vous permet également de poser des questions complémentaires pour en savoir plus sur les raisons de cet échec. Vous souhaitez explorer des solutions alternatives ? Aucun problème. Il vous suffit d'[ajouter du contexte](https://docs.gitlab.com/ee/user/gitlab_duo_chat/index.html#the-context-chat-is-aware-of) à votre requête en faisant référence à d'autres fichiers, tickets ou epics de votre dépôt. Par exemple, vous pouvez ouvrir votre fichier `.gitlab-ci.yml` dans l'IDE et poser la question suivante dans le chat : « Sur la base de ce fichier et du pipeline CI/CD analysé, comment proposeriez-vous d'optimiser le pipeline ? »\n\n## La confidentialité avant tout : vos données restent dans GitLab\nLa fonctionnalité d'analyse des causes profondes de GitLab Duo est prête à l'emploi sur la plateforme, ce qui représente un atout majeur. Vous n'avez pas à basculer vers un autre outil ou à chercher de l'aide extérieure. De plus, vos [logs et vos données sensibles restent sécurisés](https://about.gitlab.com/fr-fr/privacy/), car vous n'avez pas besoin de les envoyer à des solutions d'IA externes. Parfaitement intégrée à la plateforme GitLab, l'analyse des causes profondes de GitLab Duo offre des informations précieuses sans jamais compromettre la confidentialité de vos données.\n\n![pipelines en échec - image 6](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097363/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097362773.png)\n\n## Lancez-vous dès aujourd'hui\n\nDécouvrez comment l'IA peut optimiser et accélérer votre processus de développement logiciel. Suivez notre présentation produit de GitLab Duo Enterprise ci-dessous et découvrez comment les informations générées par l'IA à l'aide de GitLab Duo peuvent transformer chaque étape de votre cycle de développement logiciel, de la planification au déploiement, en passant par le codage et le dépannage. Cliquez sur l'image ci-dessous pour lancer la démo !\n\n[![Présentation de GitLab Duo Enterprise](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097363/Blog/Content%20Images/Blog/Content%20Images/Screenshot_2024-12-02_at_12.41.10_PM_aHR0cHM6_1750097362774.png)](https://gitlab.navattic.com/duo-enterprise)\n\n> [Commencez votre essai gratuit de 60 jours de GitLab Duo dès aujourd'hui !](https://about.gitlab.com/fr-fr/solutions/gitlab-duo-pro/sales/)",[675,746,748,677],"2025-02-17",{"slug":1020,"featured":6,"template":686},"quickly-resolve-broken-ci-cd-pipelines-with-ai","content:fr-fr:blog:quickly-resolve-broken-ci-cd-pipelines-with-ai.yml","Quickly Resolve Broken Ci Cd Pipelines With Ai","fr-fr/blog/quickly-resolve-broken-ci-cd-pipelines-with-ai.yml","fr-fr/blog/quickly-resolve-broken-ci-cd-pipelines-with-ai",{"_path":1026,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1027,"content":1033,"config":1039,"_id":1041,"_type":16,"title":1042,"_source":18,"_file":1043,"_stem":1044,"_extension":21},"/fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests",{"title":1028,"description":1029,"ogTitle":1028,"ogDescription":1029,"noIndex":6,"ogImage":1030,"ogUrl":1031,"ogSiteName":737,"ogType":738,"canonicalUrls":1031,"schema":1032},"Automatisation avec GitLab Duo : comment générer des tests (Partie 1)","Découvrez comment nous utilisons GitLab Duo pour générer des tests automatisés et améliorer la rapidité et la qualité de notre développement.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097480/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%284%29_3LZkiDjHLjhqEkvOvBsVKp_1750097480784.png","https://about.gitlab.com/blog/automating-with-gitlab-duo-part-1-generating-tests","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Automatisation avec GitLab Duo : comment générer des tests (Partie 1)\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Byron Boots\"}],\n        \"datePublished\": \"2024-12-02\",\n      }\n                  ",{"title":1028,"description":1029,"authors":1034,"heroImage":1030,"date":1035,"body":1036,"category":14,"tags":1037,"updatedDate":1038},[953],"2024-12-02","Très chronophages, les tests automatisés donnent parfois l'impression de ne pas faire avancer le projet. Cependant, comme de nombreux développeurs et développeuses en ont probablement fait l'expérience, les tests automatisés offrent un retour sur investissement globalement positif. Nous l'avons particulièrement constaté lors de la construction d'un module personnalisé que nous appellerons assistant GitLab dans cet article.\n\nNotre développement initial s'est concentré sur la migration de fonctionnalités éprouvées et utilisées à partir de scripts existants vers un nouveau module dont le seul but était de servir de base pour les fonctionnalités futures. Bien que les scripts existants n'aient pas fait l'objet de tests automatisés, leur utilisation systématique a constitué une preuve concrète que la fonctionnalité fonctionnait comme prévu.\n\nNotre objectif était de fournir une solution plus mature à ce problème, et les tests automatisés sont donc devenus une nécessité. La difficulté consistait à construire efficacement tout en équilibrant le temps nécessaire pour tester et garantir la robustesse du produit, et ce, avec un total de trois membres d'équipe. Le goulot d'étranglement n'était donc pas des moindres. C'est pourquoi nous avons décidé de tirer parti de [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), notre suite de fonctionnalités alimentées par l'IA, pour la génération de tests afin d'améliorer la rapidité et la qualité du produit livré.\n\nCette série de trois articles sur l'automatisation avec GitLab Duo couvre les points suivants :\n\n1. L'utilisation de GitLab Duo pour générer des tests pour le code \n2. La gestion de situations plus complexes avec GitLab Duo par une approche interactive\n3. Les résultats que nous avons pu obtenir (Spoiler : 1 développeur + GitLab Duo = 84 % de couverture en 2 jours)\n\n## Générer des tests pour le code avec GitLab Duo\n\nBien que les fonctionnalités soient disponibles dans tous les outils, cet article couvrira l'utilisation de GitLab Duo dans VS Code, avec l'[extension GitLab Workflow pour VS Code](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow) pour générer des tests. Des liens vers d'autres options de GitLab Duo sont disponibles dans les références mentionnées ci-dessous.\n\n### Installez et activez GitLab Duo\n\nComme prérequis à l'utilisation de GitLab Duo, nous nous sommes assurés de disposer d'un accès aux fonctionnalités de GitLab Duo. Si vous ne disposez pas encore de GitLab Duo, vous pouvez [bénéficier d'un essai gratuit de 60 jours](https://about.gitlab.com/fr-fr/solutions/gitlab-duo-pro/sales/?type=free-trial).\n\nPour utiliser GitLab Duo Chat dans VS Code, nous avons suivi les [instructions d'installation](https://docs.gitlab.com/ee/user/gitlab_duo_chat/#use-gitlab-duo-chat-in-vs-code). L'extension GitLab Duo Chat s'est ensuite affichée dans la barre latérale et nous avons pu ouvrir la fenêtre de Chat.\n\n![Fenêtre « Poser une question »](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097489/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097488918.png)\n\n### Générez de tests avec Chat\n\nL'assistant GitLab est un module personnalisé construit pour standardiser l'interaction avec l'API GitLab à toutes les étapes du travail et étend d'autres fonctionnalités de la bibliothèque pour simplifier le développement et le travail de script. Une fois qu'une méthode ou une fonctionnalité a été migrée vers l'assistant GitLab et semble avoir été implémentée de manière appropriée, le processus de génération de tests était simple. Nous avons :\n- Sélectionné la méthode, la classe ou le fichier entier dans l'IDE.\n- Effectué un clic droit sur le code sélectionné.\n- Sélectionné **« Générer des tests »** sous **GitLab Duo Chat**.\n\n![Séquence de génération de tests, y compris le menu déroulant pour générer des tests](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097489/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097488919.png)\n\nEn quelques secondes, les tests ont été générés et présentés dans la fenêtre de GitLab Duo Chat. Ces tests peuvent être revus et/ou ajoutés au code base, par copier/coller, dans des fichiers de test existants ou nouveaux. Comme c'est le cas avec la plupart des générations actuelles de traitement du langage naturel, en particulier en ce qui concerne le contexte, certains des tests initiaux créés par GitLab Duo ont échoué et ont donc nécessité une mise au point (par exemple, en ce qui concerne les dépendances imbriquées).\n\n> **Conseil :** GitLab Duo ne crée pas automatiquement les fichiers dans lesquels ajouter les tests générés. Nous avons trouvé utile de créer de nouveaux fichiers de tests et d'ajouter un commentaire `# Tests générés par GitLab Duo` en haut et d'y ajouter le suffixe `_duo.py` pour indiquer d'où venaient les tests.\n\nGitLab Duo a fourni un excellent point de départ pour développer les tests automatisés de l'assistant GitLab et a considérablement amélioré la productivité en matière d'écriture de tests et de couverture du code, accélérant ainsi le processus de développement de manière conséquente. Parallèlement à GitLab Duo, de nombreuses itérations de tests utiles ont été introduites dans le module de l'assistant GitLab avec une supervision humaine.\n\nDans le prochain article de cette série, nous partagerons [les enseignements tirés de l'utilisation de GitLab Duo pour la génération de tests automatisés](https://about.gitlab.com/blog/automating-with-gitlab-duo-part-2-complex-testing/) et comment aborder des situations plus complexes en travaillant de manière interactive avec l'IA.\n\n## En savoir plus sur la génération de tests avec GitLab Duo \n\nGitLab Duo peut être utilisé de plusieurs façons pour générer des tests, consultez les autres options ci-dessous :\n\n* L'interface utilisateur de GitLab \n* [Le Web IDE GitLab (VS Code dans le cloud)](https://docs.gitlab.com/ee/user/project/web_ide/index.html) \n* VS Code, avec l'[extension GitLab Workflow pour VS Code](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow) \n* IDE JetBrains, avec le [plug-in GitLab Duo pour JetBrains](https://plugins.jetbrains.com/plugin/22325-gitlab-duo) \n* Visual Studio pour Windows, avec l'[extension GitLab pour Visual Studio](https://marketplace.visualstudio.com/items?itemName=GitLab.GitLabExtensionForVisualStudio)\n",[675,748,957,746,677],"2025-01-03",{"slug":1040,"featured":6,"template":686},"automating-with-gitlab-duo-part-1-generating-tests","content:fr-fr:blog:automating-with-gitlab-duo-part-1-generating-tests.yml","Automating With Gitlab Duo Part 1 Generating Tests","fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests.yml","fr-fr/blog/automating-with-gitlab-duo-part-1-generating-tests",{"_path":1046,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1047,"content":1053,"config":1060,"_id":1062,"_type":16,"title":1063,"_source":18,"_file":1064,"_stem":1065,"_extension":21},"/fr-fr/blog/gitlab-duo-enterprise-is-now-available",{"title":1048,"description":1049,"ogTitle":1048,"ogDescription":1049,"noIndex":6,"ogImage":1050,"ogUrl":1051,"ogSiteName":737,"ogType":738,"canonicalUrls":1051,"schema":1052},"GitLab Duo Enterprise est maintenant disponible","Découvrez comment GitLab Duo Enterprise prend en charge l'ensemble du cycle de vie DevSecOps.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665660/Blog/Hero%20Images/Untitled__1800_x_945_px_.png","https://about.gitlab.com/blog/gitlab-duo-enterprise-is-now-available","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo Enterprise est maintenant disponible\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"David DeSanto, Chief Product Officer, GitLab\"}],\n        \"datePublished\": \"2024-09-03\",\n      }\n                  ",{"title":1048,"description":1049,"authors":1054,"heroImage":1050,"date":1056,"body":1057,"category":14,"tags":1058,"updatedDate":1059},[1055],"David DeSanto, Chief Product Officer, GitLab","2024-09-03","[GitLab Duo Enterprise](https://about.gitlab.com/fr-fr/gitlab-duo/) est un partenaire d'IA de bout en bout conçu pour soutenir l'ensemble du cycle du développement logiciel. Cette puissante suite d'outils d'IA a pour objectif d'augmenter la productivité des équipes de développement, d'améliorer la sécurité, d'optimiser la collaboration et d'accélérer vos processus DevSecOps.\n\nQuelles sont les principales fonctionnalités de GitLab Duo Enterprise ?\n- Assistance intelligente au codage dans plus de 25 langages de programmation\n- Explication et résolution des failles de sécurité alimentées par l'IA \n- Génération automatisée de tests et analyse des causes profondes\n- Amélioration de la collaboration entre les équipes avec des résumés pilotés par l'IA\n- Calcul du retour sur investissement avec le tableau de bord d'analyse d'impact de l'IA\n\n## Pourquoi avons-nous développé GitLab Duo Enterprise\n\nAlors que les entreprises cherchent à livrer de meilleurs logiciels plus rapidement et à créer de la valeur pour leurs clients, elles font face à des défis de taille qui ralentissent leurs progrès. [Notre rapport](http://about.gitlab.com/developer-survey/2024/ai) indique que 95 % des entreprises envisagent d'utiliser l'IA dans le cycle du développement logiciel, ou s'en servent déjà. Cependant, 55 % des répondants à l'enquête ont déclaré qu'ils estimaient que l'utilisation de l'IA pour le développement logiciel présentait des risques.\n\nParmi les points de friction courants en entreprise, nous retrouvons l'expérience et la productivité inadaptées des équipes de développement, les exigences croissantes en termes de sécurité et de conformité, la collaboration inefficace entre les équipes et la difficulté à évaluer le ROI des investissements dans les technologies d'IA. GitLab Duo Enterprise répond à tous ces défis en fournissant à vos équipes de développement un partenaire d'IA sécurisé, efficace et puissant. \n\n**Découvrez dans cet article comment GitLab Duo Enterprise transforme la façon dont votre entreprise crée et déploie des logiciels.**\n\n## Augmentez la productivité des développeurs grâce à l'assistance intelligente au codage\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1004252678?h=83f35171b6&amp;badge=0&amp;badge=0&amp?autoplay=1&loop=1&autopause=0&background=1&muted=1\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Code Suggestions clip\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\u003Cp>\u003C/p>\n\nL'un des principaux obstacles au développement de logiciels est le caractère chronophage des tâches routinières de codage. Passez plus rapidement aux tâches ayant le plus d'impact avec :\n\n- __Les suggestions de code__ qui prennent en charge plus de 25 langages de programmation. Cet outil alimenté par l'IA accélère la création de code, en améliore la qualité et réduit le temps passé sur des tâches standard.\n\nToutefois, il ne s'agit pas seulement d'écrire du nouveau code. \n\n- La fonctionnalité d'__explication du code__ de GitLab Duo Enterprise permet aux équipes de développement de comprendre rapidement du code complexe ou inconnu.\n\n- En parallèle, le **réusinage du code** permet aux développeurs d'[améliorer et de moderniser le code existant](https://about.gitlab.com/blog/refactor-code-into-modern-languages-with-ai-powered-gitlab-duo/).\n\n- La __génération de tests__ automatise la création de tests unitaires complets. Le résultat ? Les équipes peuvent se concentrer sur des tâches à forte valeur ajoutée qui stimulent l'innovation, ce qui accélère les cycles de développement et améliore la qualité des logiciels.\n\n> Découvrez comment [l'entreprise technologique européenne Cube](https://about.gitlab.com/customers/cube/) utilise les suggestions de code, la génération de tests et d'autres fonctionnalités de GitLab Duo pour améliorer la rapidité, la réactivité et le rendement. \n\n## Favorisez la collaboration et la communication entre les équipes\n\nUne collaboration efficace est fondamentale pour un développement logiciel réussi, mais elle est souvent entravée par de longues discussions, des merge requests complexes et des revues de code chronophages. Pour relever ces défis, GitLab Duo Enterprise met à disposition des équipes une suite d'outils de résumé et de génération de modèles : \n- __Résumé des discussions :__ cet outil permet aux membres de l'équipe de se tenir rapidement informés, sans avoir à lire les longues conversations dans les tickets.\n- __Résumé des merge requests :__ cet outil donne un aperçu clair et concis des modifications proposées.\n- __Résumé des revues du code :__ optimisez le processus de revue de code pour permettre de meilleurs transferts entre les auteurs et les relecteurs. \n\nEn clarifiant la communication et en accélérant la prise de décision, GitLab Duo Enterprise aide les équipes à travailler plus efficacement et à obtenir des résultats plus rapidement.\n\n## Simplifiez le dépannage et le débogage\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1004252688?h=fc6c048bfd&amp;badge=0&amp;badge=0&amp?autoplay=1&loop=1&autopause=0&background=1&muted=1\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Root Cause Analysis clip\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\u003Cp>\u003C/p>\n\nLorsque les pipelines de développement échouent, l’impact sur le délai des projets peut être important. Dans de tels cas, la fonctionnalité d'__analyse des causes profondes__ de GitLab Duo Enterprise change la donne. L'analyse des causes profondes parcourt automatiquement les journaux et fournit des explications détaillées des échecs ainsi que des correctifs potentiels à effectuer. Le temps consacré au troubleshooting (ou dépannage) s'en trouve considérablement réduit.\n\nIl ne s'agit pas seulement de gagner du temps. La [résolution plus rapide des problèmes de compilation CI/CD](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/) permet aux équipes de continuer sur leur lancée, de réduire les temps d'arrêt et, en fin de compte, de publier des mises à jour logicielles plus fréquentes et plus fiables.\n\n## Renforcez la sécurité tout au long du cycle de développement logiciel\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1004252706?h=73e568b89c&amp;badge=0&amp;badge=0&amp?autoplay=1&loop=1&autopause=0&background=1&muted=1\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"Vulnerability Explanation and Resolution clip\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\u003Cp>\u003C/p>\n\nL'omniprésence des menaces de cybersécurité oblige les équipes de développement à doter les applications d'une sécurité robuste. Pour y parvenir, GitLab Duo Enterprise propose des fonctionnalités d'__explication et de résolution des vulnérabilités__. Ces outils alimentés par l'IA aident les [développeurs et développeuses à comprendre les failles de sécurité](https://about.gitlab.com/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities/), puis génèrent automatiquement des merge requests contenant des suggestions de correctifs.\n\n## Mesurez l'impact de l'IA pour prendre des décisions stratégiques\n\n\u003Cdiv style=\"padding:56.25% 0 0 0;position:relative;\">\u003Ciframe src=\"https://player.vimeo.com/video/1004252663?h=d35106288b&amp;badge=0&amp?autoplay=1&loop=1&autopause=0&background=1&muted=1\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"AI Impact Dashboard clip\">\u003C/iframe>\u003C/div>\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\u003Cp>\u003C/p>\n\nDémontrer le ROI des investissements technologiques est crucial.  GitLab Duo Enterprise répond à ce besoin avec un __tableau de bord d'analyse d'impact de l'IA__. Cet outil d'analyse, construit sur l'analyse du flux de valeur et les métriques DORA4, fournit des indicateurs clairs sur les améliorations de la durée du cycle et l'augmentation des fréquences de déploiement. Les entreprises ont ainsi les moyens de quantifier les avantages tangibles de l'adoption de l'IA dans leurs processus de développement.\n\nEn offrant des informations sur la corrélation entre l'utilisation de l'IA et les principaux indicateurs de productivité, le [tableau de bord d'analyse d'impact de l'IA](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/) permet aux dirigeants de prendre des décisions fondées sur les données concernant l'allocation des ressources et les investissements technologiques stratégiques.\n\n## Adoptez une approche DevSecOps alimentée par l'IA\n\nAlors que nous vous présentons GitLab Duo Enterprise, nous sommes également fiers d'annoncer que GitLab a été nommée leader dans le premier [Magic Quadrant™ de Gartner® dédié aux assistants IA pour le code](https://about.gitlab.com/fr-fr/gartner-mq-ai-code-assistants/). Cette reconnaissance souligne notre engagement à fournir des solutions d'IA qui génèrent une réelle valeur commerciale pour les entreprises.\n\nL'avenir du développement logiciel est là, et il est alimenté par l'IA. Nous sommes à vos côtés pour vous aider à intégrer une IA intelligente et évolutive tout au long du cycle de vie DevSecOps afin que vous puissiez fournir des résultats à vos clients plus rapidement.\n\n> [Découvrez GitLab Duo Enterprise dès aujourd'hui et profitez d'un essai gratuit de 60 jours !](https://about.gitlab.com/solutions/gitlab-duo-pro/sales/?type=free-trial&toggle=gitlab-duo-pro)\n",[675,676,746,677,678],"2024-09-11",{"slug":1061,"featured":93,"template":686},"gitlab-duo-enterprise-is-now-available","content:fr-fr:blog:gitlab-duo-enterprise-is-now-available.yml","Gitlab Duo Enterprise Is Now Available","fr-fr/blog/gitlab-duo-enterprise-is-now-available.yml","fr-fr/blog/gitlab-duo-enterprise-is-now-available",{"_path":1067,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1068,"content":1074,"config":1080,"_id":1082,"_type":16,"title":1083,"_source":18,"_file":1084,"_stem":1085,"_extension":21},"/fr-fr/blog/refactor-code-into-modern-languages-with-ai-powered-gitlab-duo",{"title":1069,"description":1070,"ogTitle":1069,"ogDescription":1070,"noIndex":6,"ogImage":1071,"ogUrl":1072,"ogSiteName":737,"ogType":738,"canonicalUrls":1072,"schema":1073},"Comment réusiner le code dans des langages modernes grâce à GitLab Duo alimenté par l'IA ","Ce tutoriel détaillé à destination des développeurs leur permet d'utiliser l'IA pour moderniser leur code en passant à un nouveau langage de programmation. Il leur offre également l'occasion d'acquérir des connaissances sur les nouvelles fonctionnalités associées à ce langage.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662465/Blog/Hero%20Images/GitLab_Duo_Workflow_Unified_Data_Store__1_.png","https://about.gitlab.com/blog/refactor-code-into-modern-languages-with-ai-powered-gitlab-duo","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Comment réusiner le code dans des langages modernes grâce à GitLab Duo alimenté par l'IA \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"}],\n        \"datePublished\": \"2024-08-26\",\n      }\n                  ",{"title":1069,"description":1070,"authors":1075,"heroImage":1071,"date":1077,"body":1078,"category":14,"tags":1079},[1076],"Michael Friedrich","2024-08-26","S'il vous incombe de moderniser le code base ou le framework en passant à un nouveau langage de programmation, ou si vous avez besoin d'en savoir plus sur les nouvelles fonctionnalités de ce langage, [GitLab Duo](https://about.gitlab.com/gitlab-duo/) alimenté par l'IA peut vous prêter main forte. Apprenez à aborder les défis posés par le réusinage du code en adoptant de bonnes pratiques grâce à des exemples tirés des 20 dernières années de ma carrière de codeur. \n\nLes prompts et les exemples de cet article sont illustrés dans différents IDE : VS Code et JetBrains (IntelliJ IDEA, PyCharm et CLion), sur lesquels sont installés les [extensions/plugins de GitLab Duo](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/supported_extensions.html). L'environnement de développement utilise GitLab.com, y compris les mises à jour vers le grand modèle de langage (LLM) Claude 3.5 d'Anthropic pour les [suggestions de code](https://docs.gitlab.com/ee/user/gitlab_duo/#code-suggestions) de GitLab Duo et [GitLab Chat](https://docs.gitlab.com/ee/user/gitlab_duo/#gitlab-duo-chat). Pour faire bref : on gagne en puissance et en efficacité.\n\nVous pouvez lire l'article dans son intégralité ou accéder directement à une section spécifique. Le code source et des Challenges, accompagnés d'exercices, sont également fournis à des fins d'auto-apprentissage.\n\n- [Réusiner le code aux normes d'un langage de programmation moderne](#refactor-code-to-modern-programming-language-standards)\n    - [Générer en Java 7 et réusiner en Java 8](#generate-java-7-and-refactor-to-java-8)\n    - [Réusiner pour répondre à différentes normes C++](#refactor-across-c%2B%2B-standards)\n        - [Migration : réusiner de la norme C++03 à C++14](#migration-refactor-c%2B%2B03-into-c%2B%2B14)\n        - [Retour à une version précédente : réusiner de la norme C++23 à C++11](downgrade-refactor-c%2B%2B23-to-c%2B%2B11)\n    - [Expliquer et réusiner en COBOL](#explain-and-refactor-cobol)\n- [Réusiner d'un langage à un autre](#refactor-a-language-into-another-language)\n    - [Réusiner du C en Rust](#refactor-c-to-rust)\n    - [Réusiner du Perl en Python](#refactor-perl-to-python)\n- [Autres exemples pratiques de réusinage](#more-refactoring-hands-on)\n    - [Réusiner du JavaScript](#refactor-javascript)\n    - [Réusiner du Bash en ZSH ou SH](#refactor-bash-to-zsh-or-sh)\n    - [Autres cas d'utilisation et tutoriels](#more-use-cases-and-tutorials)\n- [Principaux points à retenir](#key-take-out)\n\n## Réusiner le code aux normes d'un langage de programmation moderne\n\nLes sections suivantes illustrent comment réusiner le code. Elles fournissent également des explications sur les différences spécifiques au langage de programmation étudié. \n\n### Générer en Java 7 et réusiner en Java 8 \n\nUn client voulait savoir si GitLab Duo prend en charge Java 7. Lorsque j'ai testé les suggestions de code et les prompts de GitLab Chat pour générer du code en Java 7, j'ai également pensé à des conseils pour effectuer la migration. Claude 3.5 d'Anthropic est capable de comprendre les différences entre divers langages de programmation, tout comme GitLab Duo.\n\nL'exemple suivant illustre un prompt pour générer du code en Java 7 à l'aide des suggestions de code.\n\n```java\n// Generate a new class for a File Manager. Use Java 7 features only.\nimport java.io.*;\nimport java.nio.file.*;\nimport java.util.*;\n\npublic class FileManager {\n    private Path rootDirectory;\n\n    public FileManager(String rootPath) throws IOException {\n        this.rootDirectory = Paths.get(rootPath);\n        if (!Files.exists(rootDirectory)) {\n            Files.createDirectories(rootDirectory);\n        }\n    }\n\n    public void createFile(String fileName, String content) throws IOException {\n        Path filePath = rootDirectory.resolve(fileName);\n        Files.write(filePath, content.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);\n    }\n\n    public String readFile(String fileName) throws IOException {\n        Path filePath = rootDirectory.resolve(fileName);\n        return new String(Files.readAllBytes(filePath));\n    }\n\n    public void deleteFile(String fileName) throws IOException {\n        Path filePath = rootDirectory.resolve(fileName);\n        Files.delete(filePath);\n    }\n\n    public List\u003CString> listFiles() throws IOException {\n        List\u003CString> fileList = new ArrayList\u003C>();\n        try (DirectoryStream\u003CPath> stream = Files.newDirectoryStream(rootDirectory)) {\n            for (Path file : stream) {\n                fileList.add(file.getFileName().toString());\n            }\n        }\n        return fileList;\n    }\n\n    public void copyFile(String sourceFileName, String destinationFileName) throws IOException {\n        Path sourcePath = rootDirectory.resolve(sourceFileName);\n        Path destinationPath = rootDirectory.resolve(destinationFileName);\n        Files.copy(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);\n    }\n\n    public void moveFile(String sourceFileName, String destinationFileName) throws IOException {\n        Path sourcePath = rootDirectory.resolve(sourceFileName);\n        Path destinationPath = rootDirectory.resolve(destinationFileName);\n        Files.move(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);\n    }\n\n    public long getFileSize(String fileName) throws IOException {\n        Path filePath = rootDirectory.resolve(fileName);\n        return Files.size(filePath);\n    }\n\n    public boolean fileExists(String fileName) {\n        Path filePath = rootDirectory.resolve(fileName);\n        return Files.exists(filePath);\n    }\n}\n```\n\nVous pouvez poursuivre dans votre IDE en suivant ces étapes :\n\n1. Parcourez et comprenez le code généré : sélectionnez le code dans l'éditeur (en bleu sur la capture d'écran), ouvrez GitLab Duo Chat et envoyez la commande slash `/explain` comme prompt.\n\n![Validation du code généré avec la commande slash `/explain` dans GitLab Duo Chat](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675059/Blog/Content%20Images/intellij_java7_generate_refactor.png)\n\n2. Réusinez le code Java 7 en Java 8 : sélectionnez le code dans l'éditeur, ouvrez GitLab Chat et envoyez `/refactor using Java 8 features` pour affiner le prompt.\n3. Si vous ne souhaitez pas réusiner le code, créez un nouveau fichier `java8.java` et générez du code spécifique en Java 8 à l'aide des suggestions de code en saisissant le prompt `// Generate a new class for a File Manager. Use Java 8 features only.`.\n4. Continuez à écrire du code en Java 8 dans le même contexte en vous servant des complétions de code alimentées par l'IA.\n\nVous pouvez regarder chaque étape dans le vidéo ci-dessous.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/XKRv6uBkD2I\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nLe code source est disponible dans le [projet Challenge GitLab Duo - Générer et réusiner du code de Java 7 à 8](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-generate-refactor-java-7-to-8).\n\n### Réusiner pour répondre à différentes normes C++\n\nFruit d'une longue histoire, la norme C++ peut désormais être considérée comme stable et mature. En fonction de l'architecture et des plateformes cibles, la norme prise en charge dépend du compilateur sur le système d'exploitation hôte.\n\nAu cours de ma carrière, j'ai dû prendre en charge 25 distributions Linux et Windows différentes dans des projets open source. D'après mon expérience, les compilateurs ne prennent pas en charge les fonctionnalités de langage plus récentes et les normes C++ de la même manière. Nous avons adopté les fonctionnalités C++11 en 2015, et n'avons jamais évoqué une migration vers C++14 ou C++17. \n\nLe réusinage des fonctions et des algorithmes pour passer à une nouvelle norme C++ aurait nécessité trop d'efforts, et il aurait fallu recevoir de l'aide pour comprendre les différences. À l'époque, nous faisions nos recherches dans des livres, en ligne, sur Stack Overflow et parfois avec des outils d'aide au réusinage du code.\n\nLes assistants alimentés par l'IA et GitLab Duo ont changé la donne : on a maintenant la possibilité de demander aux suggestions de code et à GitLab Chat de fournir du code source dans une norme C++ spécifique. Il est également possible de comparer les différentes sorties. \n\nL'exemple suivant part d'un prompt pour générer du code source spécifiquement pour la norme C++03. Il implémente un analyseur de configuration simple pour le format de configuration `.ini`.\n\n```c++\n/* Create a config parser which can parse an ini format\nUse C++03 standard only\n */\n\n#include \u003Ciostream>\n#include \u003Cfstream>\n#include \u003Cstring>\n#include \u003Cmap>\n#include \u003Csstream>\n\nclass ConfigParser {\nprivate:\n    std::map\u003Cstd::string, std::map\u003Cstd::string, std::string> > config;\n\npublic:\n    ConfigParser() {}\n\n    bool parse(const std::string& filename) {\n        std::ifstream file(filename.c_str());\n        if (!file.is_open()) {\n            return false;\n        }\n\n        std::string line;\n        std::string currentSection;\n\n        while (std::getline(file, line)) {\n            // Trim whitespace\n            size_t first = line.find_first_not_of(\" \\t\");\n            size_t last = line.find_last_not_of(\" \\t\");\n            if (first == std::string::npos) continue; // Skip empty lines\n            line = line.substr(first, (last - first + 1));\n\n            if (line[0] == '[' && line[line.length() - 1] == ']') {\n                // This is a section\n                currentSection = line.substr(1, line.length() - 2);\n            } else {\n                // This is a key-value pair\n                size_t delimiterPos = line.find('=');\n                if (delimiterPos != std::string::npos) {\n                    std::string key = line.substr(0, delimiterPos);\n                    std::string value = line.substr(delimiterPos + 1);\n                    config[currentSection][key] = value;\n                }\n            }\n        }\n\n        file.close();\n        return true;\n    }\n\n    std::string getValue(const std::string& section, const std::string& key) const {\n        std::map\u003Cstd::string, std::map\u003Cstd::string, std::string> >::const_iterator sectionIt = config.find(section);\n        if (sectionIt != config.end()) {\n            std::map\u003Cstd::string, std::string>::const_iterator keyIt = sectionIt->second.find(key);\n            if (keyIt != sectionIt->second.end()) {\n                return keyIt->second;\n            }\n        }\n        return \"\";\n    }\n\n    void printConfig() const {\n        std::map\u003Cstd::string, std::map\u003Cstd::string, std::string> >::const_iterator sectionIt;\n        for (sectionIt = config.begin(); sectionIt != config.end(); ++sectionIt) {\n            std::cout \u003C\u003C \"[\" \u003C\u003C sectionIt->first \u003C\u003C \"]\" \u003C\u003C std::endl;\n            std::map\u003Cstd::string, std::string>::const_iterator keyIt;\n            for (keyIt = sectionIt->second.begin(); keyIt != sectionIt->second.end(); ++keyIt) {\n                std::cout \u003C\u003C keyIt->first \u003C\u003C \" = \" \u003C\u003C keyIt->second \u003C\u003C std::endl;\n            }\n            std::cout \u003C\u003C std::endl;\n        }\n    }\n};\n\nint main() {\n    ConfigParser parser;\n    if (parser.parse(\"config.ini\")) {\n        std::cout \u003C\u003C \"Config file parsed successfully.\" \u003C\u003C std::endl;\n        parser.printConfig();\n\n        std::cout \u003C\u003C \"Value of 'key1' in 'section1': \" \u003C\u003C parser.getValue(\"section1\", \"key1\") \u003C\u003C std::endl;\n    } else {\n        std::cout \u003C\u003C \"Failed to parse config file.\" \u003C\u003C std::endl;\n    }\n    return 0;\n}\n```\n\nLes mêmes prompts peuvent être utilisés pour l'[explication du code](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#explain-code-in-the-ide), la [génération de tests](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#write-tests-in-the-ide), ainsi que le [réusinage du code](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#refactor-code-in-the-ide): `/explain focus on C++03 features`, `/tests for C++03 features`, `/refactor into C++03`. \n\nLes normes C++ suivantes ont été testées avec les suggestions de code de GitLab Duo :\n\n- C++03\n- C++11\n- C++14\n- C++17\n- C++20\n- C++23\n\nVous pouvez trouver le code source dans le [projet Challenge - Réusiner l'analyseur de configuration aux normes Cpp](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-refactor-cpp-standards-config-parser). \n\nDe nombreuses combinaisons différentes permettent de réusiner le code source pour passer d'une norme C++ à une autre. Les exemples suivants illustrent la modernisation de code en C++ en cas de mise à niveau de la version, mais testent également un retour à une version précédente dans le cas où des développeurs ambitieux qui souhaitaient utiliser C++20 ont dû revenir à C++11 pour prendre en charge les environnements de leurs entreprises clientes.\n\n#### Migration : réusiner de la norme C++03 à C++14 \n\nL'objectif est de moderniser le code et de comprendre les changements entre C++03 et C++14. Ouvrez le code source [03.cpp](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-refactor-cpp-standards-config-parser/-/blob/main/03.cpp?ref_type=heads) dans l'IDE, sélectionnez-le et utilisez le prompt suivant pour GitLab Chat : \n\n```markdown\n/refactor into C++14 and explain the changes\n```\n\nRéponse potentielle de GitLab Duo Chat : \n\n```markdown\n…\n\nExplanations of the changes:\n\n1. Default constructor: Changed `ConfigParser() {}` to `ConfigParser() = default;` to use the default constructor.\n2. File opening: Removed `.c_str()` when opening the file, as C++11 and later support `std::string` directly.\n3. Lambda functions: Introduced a lambda function trim to handle string trimming, making the code more readable and reusable.\n4. Auto keyword: Used `auto` for type deduction in various places, improving code readability.\n5. Range-based for loops: In the `printConfig` method, replaced traditional for loops with range-based for loops, which are more concise and less error-prone.\n6. Structured bindings: Used structured bindings in the range-based for loops to directly access key-value pairs.\n7. If statements with initializers: In the `getValue` method, used if statements with initializers to combine the find operation and the check in a single line.\n8. String member functions: Used `front()` and `back()` instead of array-style access for the first and last characters of strings.\n9. Uniform initialization: Used uniform initialization `{}` instead of parentheses `()` for object creation.\n10. Removed `std::endl`: Replaced `std::endl` with `'\\n'` for better performance, as `std::endl` forces a flush of the output buffer.\n\nThese changes make the code more modern, concise, and potentially more efficient while maintaining the same functionality.\n\n```\n\n![Modifications reflétées dans le code](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675059/Blog/Content%20Images/duo_refactor_cpp_clion_chat_cpp03_to_14_01.png)\n\n![Modifications reflétées dans le code 2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675060/Blog/Content%20Images/duo_refactor_cpp_clion_chat_cpp03_to_14_02.png)\n\n#### Retour à une version précédente : réusiner de la norme C++23 à C++11\n\nIl peut arriver que des développeurs commencent à implémenter une nouvelle fonctionnalité ou une étude de faisabilité en utilisant une norme C++ moderne, par exemple la norme C++20, mais que les versions réellement prises en charge par les environnements des entreprises clientes nécessitent des compilateurs plus anciens compatibles C++11. Le retour à une version précédente a un coût. Il faut évaluer quelles fonctionnalités du langage sont toujours prises en charge et anticiper les autres inconvénients qui pourraient survenir.\n\nOuvrez le code source [23.cpp](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-refactor-cpp-standards-config-parser/-/blob/main/23.cpp?ref_type=heads) dans l'IDE, sélectionnez-le et saisissez le prompt suivant dans GitLab Duo : \n\n```markdown\n/refactor into C++11, explain the necessary changes and potential problems\n```\n\nRéponse potentielle de GitLab Duo Chat : \n\n```markdown\nThe main changes required to make this code compatible with C++11 are:\n\n1. Remove the C++23 standard comment, as it's no longer applicable.\n2. Replace `std::string::find_first_not_of` and `std::string::find_last_not_of` with C++11 compatible alternatives in the trim function.\n3. Use `const auto&` instead of `auto` for loop variables to avoid unnecessary copying.\n\nPotential problems in the original code:\n\n1. The original code used C++23 features, which might not be widely supported yet.\n2. The `trim` function used `std::string::find_first_not_of` and `std::string::find_last_not_of`, which are not available in C++11.\n3. The use of `auto` instead of `const auto&` in some loops could lead to unnecessary copying of complex objects.\n\nThese issues have been addressed in the refactored version. The `trim` function now uses `std::find_if_not` with lambda functions to achieve the same result in a C++11 compatible way. The use of `const auto&` ensures that no unnecessary copying occurs when iterating over the config map.\n```\n\n![The `trim` function now uses `std::find_if_not` with lambda functions to achieve the same result in a C++11 compatible way](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675059/Blog/Content%20Images/duo_refactor_cpp_clion_chat_cpp23_to_11_01.png)\n\n![The use of `const auto&` ensures that no unnecessary copying occurs when iterating over the config map](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675059/Blog/Content%20Images/duo_refactor_cpp_clion_chat_cpp23_to_11_02.png)\n\n**Pratique asynchrone**: testez d'autres scénarios de réusinage de version.\n\n### Expliquer et réusiner en COBOL\n\nVous pouvez utiliser GitLab Duo pour expliquer le code source, analyser, corriger et réusiner les programmes COBOL. Bien que je n'aie jamais appris ou codé en COBOL, j'ai trouvé ce [cours de programmation COBOL](https://github.com/openmainframeproject/cobol-programming-course) et ses nombreux exemples utiles.\n\nJ'ai ensuite demandé à GitLab Chat comment démarrer avec COBOL, créer un programme COBOL et compiler un programme COBOL sur macOS.\n\n```markdown\nPlease explain what COBOL is and its syntax\n\nPlease create a COBOL program that shows the first steps\n\nTell me more about the COBOL compiler. Which system do I need? Can I do it on my macOS?\n\n```\n\n![Demande adressée à GitLab Duo Chat pour qu'il explique COBOL et sa syntaxe](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675059/Blog/Content%20Images/vscode_chat_cobol_generate_example.png)\n\nOuvrez un programme COBOL, sélectionnez le code source, passez à GitLab Duo Chat et envoyez le prompt `/explain` pour expliquer l'objectif et la fonctionnalité.\n\nVous pouvez également affiner les prompts pour obtenir des résumés plus généraux, par exemple :\n\n```markdown\n/explain like I am five\n```\n\n> Conseil : les langages de programmation partagent des algorithmes et des fonctionnalités similaires. GitLab Chat a proposé d'expliquer COBOL en Python. Par conséquent, j'ai ajusté les prompts suivants pour demander une explication en Python.\n\n```markdown\n/explain in a different programming language\n```\n\nVous pouvez également utiliser la commande slash `/refactor` comme prompt dans GitLab Chat pour améliorer la qualité du code, résoudre les problèmes potentiels et essayer de réusiner COBOL en Python.\n\n```markdown\n/refactor fix the environment error\n\n/refactor fix potential problems\n\n/refactor into Python\n```\n\nLa vidéo [GitLab Duo Coffee Chat - Challenge : expliquer et réusiner des programmes COBOL](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-explain-refactor-cobol-program) montre toutes les étapes abordées dans un cas d'utilisation pratique. Elle illustre notamment comment trouver une période manquante : \n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/pwlDmLQMMPo\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Réusiner d'un langage à un autre\n\nLa modernisation et l'amélioration de la qualité du code nécessitent parfois de changer de langage de programmation. Des prompts de réusinage similaires dans GitLab Duo peuvent accélérer le processus de migration. L'exemple de COBOL avec Python n'est qu'une des nombreuses exigences en vigueur dans les environnements d'entreprise. Examinons d'autres cas d'utilisation.\n\n### Réusiner du C en Rust\n\nAu début de 2024, plusieurs langages de programmation, comme C, ont été accusés de ne pas être à mémoire sécurisée. Les recommandations pour les projets futurs comprennent l'utilisation de [langages à mémoire sécurisée](https://about.gitlab.com/blog/memory-safe-vs-unsafe/) comme Rust. Comment démarrer la migration et quels sont les défis à relever ?\n\nEssayons avec un exemple simple en C. Le code a été généré à l'aide des suggestions de code et devrait contenir les informations de base sur le système d'exploitation, comme le nom, la version et la plateforme. Le code C dispose d'une compatibilité multiplateforme sur Windows, Linux et macOS pour la compilation.\n\n```c\n// Read OS files to identify the platform, name, versions\n// Print them on the terminal\n#include \u003Cstdio.h>\n#include \u003Cstdlib.h>\n#include \u003Cstring.h>\n\n#ifdef _WIN32\n    #include \u003Cwindows.h>\n#elif __APPLE__\n    #include \u003Csys/utsname.h>\n#else\n    #include \u003Csys/utsname.h>\n#endif\n\nvoid get_os_info() {\n    #ifdef _WIN32\n        OSVERSIONINFOEX info;\n        ZeroMemory(&info, sizeof(OSVERSIONINFOEX));\n        info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);\n        GetVersionEx((OSVERSIONINFO*)&info);\n\n        printf(\"Platform: Windows\\n\");\n        printf(\"Version: %d.%d\\n\", info.dwMajorVersion, info.dwMinorVersion);\n        printf(\"Build: %d\\n\", info.dwBuildNumber);\n    #elif __APPLE__\n        struct utsname sys_info;\n        uname(&sys_info);\n\n        printf(\"Platform: macOS\\n\");\n        printf(\"Name: %s\\n\", sys_info.sysname);\n        printf(\"Version: %s\\n\", sys_info.release);\n    #else\n        struct utsname sys_info;\n        uname(&sys_info);\n\n        printf(\"Platform: %s\\n\", sys_info.sysname);\n        printf(\"Name: %s\\n\", sys_info.nodename);\n        printf(\"Version: %s\\n\", sys_info.release);\n    #endif\n}\n\nint main() {\n    get_os_info();\n    return 0;\n}\n```\n\nOuvrez le code source dans [`os.c`](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-refactor-c-to-rust/-/blob/897bf57a14bb7be07d842e7f044f93a61456d611/c/os.c) dans JetBrains CLion, par exemple. Sélectionnez le code source et saisissez le prompt `/explain` dans GitLab Chat pour expliquer l'objectif et la fonctionnalité. Entrez ensuite le prompt `/refactor` dans GitLab Chat pour réusiner le code C, puis poursuivez avec : `/refactor into Rust`.\n\nInitialisez un nouveau projet Rust (astuce : demandez à GitLab Duo Chat) et copiez le code source généré dans le fichier `src/main.rs`. Exécutez `cargo build` pour compiler le code.\n\n![Initialisez un nouveau projet Rust et copiez le code source généré dans le fichier `src/main.rs`. Exécution de `cargo build` pour compiler le code.](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675059/Blog/Content%20Images/jetbrains_clion_c_rust.png)\n\nVous pouvez voir toutes les étapes dans la vidéo [GitLab Duo Coffee Chat : Challenge - Réusiner du C en Rust](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-refactor-c-to-rust). Vous verrez en outre une erreur de compilation qui sera corrigée à l'aide de GitLab Chat et de la commande slash `/refactor`. La session montre également comment améliorer la maintenabilité du nouveau code Rust en renforçant la gestion des erreurs. \n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/nf8g2ucqvkI\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### Réusiner du Perl en Python \n\nUn script opérationnel tourne sur des serveurs de production. Son auteur a quitté l'entreprise il y a dix ans et personne ne veut y toucher. Ce problème ne concerne peut-être pas qu'un seul script, mais peut-être plusieurs scripts, voire une application entière. Il a été décidé de tout migrer vers Python 3, dans le but de moderniser le code et de comprendre les changements entre Perl et Python.\n\nRécemment, au cours d'un atelier GitLab Duo, un client a demandé s'il était possible d'effectuer une migration directe avec GitLab Duo. En un mot, la réponse est : oui. Pour clarifier : vous pouvez saisir des prompts plus spécifiques dans GitLab Chat pour réusiner le code Perl en Python, comme dans d'autres exemples de cet article.\n\nOuvrez le code source `script.pl` dans l'IDE, sélectionnez-le et ouvrez GitLab Chat.\n\n```perl\n#!/usr/bin/perl\nuse strict;\nuse warnings;\n\nopen my $md_fh, '\u003C', 'file.md' or die \"Could not open file.md: $!\";\n\nmy $l = 0;\nmy $e = 0;\nmy $h = 0;\n\nwhile (my $line = \u003C$md_fh>) {\n  $l++;\n  if ($line =~ /^\\s*$/) {\n    $e++;\n    next;\n  }\n  if ($line =~ /^#+\\s*(.+)/) {\n    print \"$1\\n\";\n    $h++; \n  }\n}\n\nprint \"\\nS:\\n\"; \nprint \"L: $l\\n\";\nprint \"E: $e\\n\"; \nprint \"H: $h\\n\";\n```\n\nYou can use the following prompts to:\n\n1. `/explain` its purpose, and `/refactor` to improve the code.\n2. `/refactor into Python` pour obtenir un script Python fonctionnel.\n\n![Réusinage en Python](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675059/Blog/Content%20Images/pycharm_duo_refactor_perl_python.png)\n\n\n> Astuce : vous pouvez réusiner le code Perl dans d'autres langages cibles. La vidéo [GitLab Duo Coffee Chat : Challenge - Réusiner du Perl en Python](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-refactor-perl-python) fournit des exemples avec PHP, Ruby, Rust, Go, Java, VB.NET, C# et d'autres langages.\n> \n> Si vous souhaitez continuer à utiliser des scripts Perl, vous pouvez configurer [Perl comme langage supplémentaire](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/supported_extensions.html#add-support-for-more-languages) en vous servant des suggestions de code de GitLab Duo. GitLab Chat comprend déjà Perl et peut vous aider si vous utilisez des questions et des prompts de commande slash, comme vous pouvez le voir dans la vidéo ci-dessous.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/03HGhxXg9lw\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Autres exemples pratiques de réusinage\n\n### Réusiner du JavaScript \n\nEddie Jaoude montre dans un exemple pratique comment réusiner du code JavaScript pour améliorer sa qualité ou ajouter des fonctionnalités. \n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/mHn8KOzpPNY\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### Réusiner du Bash en ZSH ou SH\n\nJ'utilise Bash comme shell depuis 20 ans et je suis récemment passé à ZSH sur macOS. À cause de ce changement, mon script ne fonctionnait pas et mon terminal affichait des erreurs inconnues. Les limitations du shell sont un autre cas d'utilisation. Elles justifient également le réusinage : certains systèmes d'exploitation ou distributions Linux/Unix ne fournissent pas Bash, mais uniquement SH, par exemple Alpine.\n\n![Réusinage de scripts shell](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675059/Blog/Content%20Images/intellj_refactor_shell_scripts.png)\n\nLe [GitLab Duo Coffee Chat : Challenge - Réusiner des scripts shell](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/code-challenges/challenge-refactor-shell-scripts) fournit un exemple avec un programme C qui peut suivre les fichiers syslog et un script de compilation écrit en Bash. Tout au long du Challenge, GitLab Chat reçoit des requêtes avec des prompts `/explain` et `/refactor` pour améliorer le code. Il est également possible de réusiner du Bash en SH ou ZSH pour assurer la conformité à POSIX. À la fin de la session, GitLab Chat doit fournir cinq implémentations de scripts shell différentes et expliquer les principaux résumés.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/mssqYjlKGzU\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n### Autres cas d'utilisation et tutoriels\n\n- [Documentation : cas d'utilisation de GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo/use_cases.html)\n- [Tutoriel : meilleurs conseils pour obtenir des suggestions de code alimentées par l'IA efficaces avec GitLab Duo](https://about.gitlab.com/blog/top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo/)\n- [Tutoriel : 10 bonnes pratiques pour utiliser GitLab Duo Chat alimenté par l'IA](https://about.gitlab.com/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat/)\n\n## Principaux points à retenir \n\n1. GitLab Duo fournit une aide efficace pour expliquer et réusiner le code. \n2. Il est possible de réusiner le code pour l'adapter aux normes de différents langages et poser des questions de suivi dans GitLab Chat.\n3. Les prompts de suggestion de code peuvent générer des normes spécifiques à des langages de programmation, et la complétion de code respecte le contexte du code actuel.\n4. Le réusinage du code dans de nouveaux langages de programmation contribue aux plans de migration et de modernisation à long terme.\n5. Le code peut être « rétrogradé » à une version précédente lorsque les normes d'un langage sont prises en charge par un ancien système.\n6. GitLab Duo peut expliquer du code complexe et des langages de programmation avec différents exemples de langages de programmation.\n7. La mise à jour vers Claude 3.5 d'Anthropic sur GitLab.com a amélioré une fois de plus la qualité et la rapidité des suggestions de code et de GitLab Chat (il est recommandé de mettre à niveau GitLab Auto-géré vers la version 17.3).\n8. Votre seule limite : votre imagination et les points de friction en production.\n\nApprenez-en plus sur les suggestions de code et les workflows efficaces de GitLab Chat, et commencez à réusiner du code alimenté par l'IA avec GitLab Duo dès aujourd'hui !\n\n> [Commencez votre essai gratuit de 60 jours de GitLab Duo !](https://about.gitlab.com/solutions/gitlab-duo-pro/sales/?type=free-trial&toggle=gitlab-duo-pro_)\n",[675,748,707],{"slug":1081,"featured":6,"template":686},"refactor-code-into-modern-languages-with-ai-powered-gitlab-duo","content:fr-fr:blog:refactor-code-into-modern-languages-with-ai-powered-gitlab-duo.yml","Refactor Code Into Modern Languages With Ai Powered Gitlab Duo","fr-fr/blog/refactor-code-into-modern-languages-with-ai-powered-gitlab-duo.yml","fr-fr/blog/refactor-code-into-modern-languages-with-ai-powered-gitlab-duo",{"_path":1087,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1088,"content":1094,"config":1104,"_id":1106,"_type":16,"title":1107,"_source":18,"_file":1108,"_stem":1109,"_extension":21},"/fr-fr/blog/gitlab-named-a-leader-in-2024-gartner-magic-quadrant-for-ai-code-assistants",{"title":1089,"description":1090,"ogTitle":1089,"ogDescription":1090,"noIndex":6,"ogImage":1091,"ogUrl":1092,"ogSiteName":737,"ogType":738,"canonicalUrls":1092,"schema":1093},"Magic Quadrant 2024 : GitLab, Leader des agents IA de code","GitLab reconnue pour sa capacité d'exécution et l'exhaustivité de sa vision en matière de technologie d'assistant IA pour le code.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664458/Blog/Hero%20Images/Gartner_AI_Code_Assistants_Blog_Post_Cover_Image_1800x945.png","https://about.gitlab.com/blog/gitlab-named-a-leader-in-2024-gartner-magic-quadrant-for-ai-code-assistants","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab nommée Leader dans le Magic Quadrant 2024 de Gartner dédié aux assistants IA pour le code\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Dave Steer\"}],\n        \"datePublished\": \"2024-08-22\",\n      }",{"title":1095,"description":1096,"authors":1097,"heroImage":1091,"date":1099,"body":1100,"category":14,"tags":1101,"updatedDate":1103},"GitLab nommée Leader dans le Magic Quadrant 2024 de Gartner dédié aux assistants IA pour le code","Dans le premier Magic Quadrant™ de Gartner® applicable à cette catégorie, GitLab est reconnue pour sa capacité d'exécution et l'exhaustivité de sa vision en matière de technologie d'assistant IA pour le code.",[1098],"Dave Steer","2024-08-22","Nous sommes ravis d'annoncer que GitLab a été reconnue comme Leader dans la première édition du [Magic Quadrant™ de Gartner® dédié aux assistants IA pour le code](https://about.gitlab.com/fr-fr/gartner-mq-ai-code-assistants/ \"Magic Quadrant™ de Gartner® 2024 dédié aux assistants de codage IA\"). Cette reconnaissance importante à nos yeux souligne notre engagement à fournir à nos clients des capacités alimentées par l'IA qui accélèrent la livraison de logiciels, renforcent la sécurité et stimulent l'innovation. \n\nLes assistants IA pour le code ne se limitent pas à la génération et à la complétion de code. Ce sont des partenaires qui améliorent l'efficacité des équipes de développement dans une démarche de collaboration, en améliorant la qualité du code et en favorisant l'apprentissage continu. Les assistants comme GitLab Duo, notre suite de fonctionnalités alimentées par l'IA, automatisent les tâches routinières et fournissent des suggestions intelligentes. Les développeurs et développeuses ont ainsi plus de temps pour se concentrer sur la résolution de problèmes de plus haut niveau. \n\n![Image assistants d'IA pour le codage Gartner MQ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749675964/Blog/Content%20Images/AI_Code_Assistants_MQ_graphic__1_.png)\n\n> Téléchargez le [rapport Magic Quadrant™ 2024 de Gartner® dédié aux assistants IA pour le code](https://about.gitlab.com/fr-fr/gartner-mq-ai-code-assistants/).\n\n## Assistants IA pour le code : rapidité, sécurité et intégration fluide\n\nLes assistants IA pour le code font partie intégrante des entreprises de toutes tailles, aidant les équipes DevSecOps à développer et à déployer des logiciels sécurisés plus rapidement. Cependant, l'IA révèle la pleine étendue de sa valeur lorsqu'elle est intégrée tout au long du cycle de développement logiciel. Contrairement aux solutions d'IA ponctuelles et limitées qui peuvent entraîner la fragmentation des chaînes d'outils et l'apparition de silos de données, la plateforme complète de GitLab intègre l'IA de la planification à la production. Elle comporte des métriques et des tableaux de bord qui offrent une visibilité et des informations globales.\n\n## La puissance de GitLab Duo\n\n[GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/) est une boîte à outils complète de fonctionnalités d'IA, conçue pour améliorer l'expérience des développeurs et développeuses, contrôler la sécurité en amont dans le cycle de développement logiciel et renforcer la collaboration entre les équipes Dev, Sec et Ops. \n\nVoici ses principales fonctionnalités : \n\n* Les suggestions de code permettent la génération et la complétion de code\n* Le chat apporte une assistance contextuelle intégrée au sein de l'application sur l'explication du code, le réusinage du code et la génération de tests\n* L'explication des vulnérabilités permet de mieux comprendre les vulnérabilités dans le code\n* La résolution des vulnérabilités aide à atténuer les vulnérabilités détectées\n* L'analyse des causes profondes résout les problèmes de pipeline\n* Le tableau de bord d'analyse d'impact de l'IA permet d'obtenir des informations en temps réel et d'évaluer le ROI de l'IA dans une entreprise\n\n## Optimisez votre retour sur investissement avec l'IA \n\nLes dirigeants d'entreprise et les ingénieurs ont besoin de visibilité pour savoir comment l'IA est utilisée tout au long du cycle de développement logiciel dans le but d'évaluer le retour de leurs investissements technologiques. Le [tableau de bord d'analyse d'impact de l'IA](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/) de GitLab leur fournit cette visibilité, grâce à des métriques permettant d'évaluer les taux d'adoption de l'IA, les améliorations des performances et plus encore.\n\n## La flexibilité, la confidentialité et la transparence au premier plan\n\nLes clients de GitLab qui souhaitent explorer les capacités alimentées par l'IA peuvent utiliser GitLab Duo pour tirer parti de la puissance de l'intelligence artificielle en toute sécurité dans l'IDE de leur choix ou dans un espace de travail de développement à distance, tout en profitant d'une tarification flexible et d'un essai gratuit de 60 jours. En outre, le [centre de transparence sur l'IA de GitLab](https://about.gitlab.com/fr-fr/ai-transparency-center/) vous donne une visibilité complète sur nos pratiques de gouvernance et de transparence. \n\nBientôt, les entreprises pourront [adapter leur expérience d'IA](https://about.gitlab.com/fr-fr/blog/meet-gitlab-duo-workflow-the-future-of-ai-driven-development/) à leurs exigences stratégiques et réglementaires grâce à la personnalisation des modèles et au déploiement de modèles auto-hébergés. La personnalisation des modèles permettra aux entreprises de personnaliser GitLab Duo et d'exploiter tout le potentiel de l'IA conformément à leurs objectifs commerciaux, à leurs besoins opérationnels et aux attentes de leurs clients. Le déploiement de modèles auto-hébergés garantit que les données ne quittent pas l'environnement sécurisé d'une entreprise, réduisant ainsi le risque d'atteinte à la sécurité et garantissant la conformité dans les secteurs hautement réglementés. \n\n## L'avenir de l'IA au sein des processus DevSecOps\n\nGitLab est votre partenaire de développement de logiciels alimenté par l'IA. Nous donnons aux équipes les outils nécessaires pour créer, sécuriser et déployer des logiciels plus rapidement. Notre engagement en faveur de l'innovation vous permet d'être toujours à la pointe des avancées en matière d'IA. Nous continuons à révolutionner les processus DevSecOps. Retrouvez-nous bientôt pour découvrir de nouvelles mises à jour de notre roadmap.\n\n> [Téléchargez le rapport Magic Quadrant™ 2024 de Gartner® dédié aux assistants IA pour le code](https://about.gitlab.com/fr-fr/gartner-mq-ai-code-assistants/).\n\n***Source : Gartner, Magic Quadrant dédié aux assistants IA pour le code, Arun Batchu, Haritha Khandabattu, Philip Walsh, Matt Brasier, août 2024***\n\n***GARTNER est une marque déposée et une marque de service de Gartner, Inc. et/ou de ses sociétés affiliées aux États-Unis et à l'étranger, et MAGIC QUADRANT est une marque déposée de Gartner, Inc. et/ou de ses sociétés affiliées. Elles sont utilisées ici avec autorisation. Tous droits réservés.***\n\n***Gartner ne cautionne aucun fournisseur, produit ou service décrit dans ses publications de recherche, et ne conseille pas aux utilisateurs de la technologie de sélectionner uniquement les fournisseurs ayant les notes les plus élevées ou toute autre désignation. Les publications de recherche de Gartner reflètent les opinions de l'organisation de recherche de Gartner\net ne doivent pas être interprétées comme des déclarations de fait. Gartner décline toute garantie, expresse ou implicite, à l'égard de cette recherche, y compris toute garantie de qualité marchande ou d'adéquation à un usage particulier.***\n\n***Ce graphique a été publié par Gartner Inc. dans le cadre d'un rapport plus vaste et doit être évalué dans le contexte de l'ensemble du document. Le document produit par Gartner est disponible sur demande auprès de Gartner B.V.***",[678,675,707,1102],"research","2024-09-05",{"slug":1105,"featured":93,"template":686},"gitlab-named-a-leader-in-2024-gartner-magic-quadrant-for-ai-code-assistants","content:fr-fr:blog:gitlab-named-a-leader-in-2024-gartner-magic-quadrant-for-ai-code-assistants.yml","Gitlab Named A Leader In 2024 Gartner Magic Quadrant For Ai Code Assistants","fr-fr/blog/gitlab-named-a-leader-in-2024-gartner-magic-quadrant-for-ai-code-assistants.yml","fr-fr/blog/gitlab-named-a-leader-in-2024-gartner-magic-quadrant-for-ai-code-assistants",{"_path":1111,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1112,"content":1118,"config":1126,"_id":1128,"_type":16,"title":1129,"_source":18,"_file":1130,"_stem":1131,"_extension":21},"/fr-fr/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",{"title":1113,"description":1114,"ogTitle":1113,"ogDescription":1114,"noIndex":6,"ogImage":1115,"ogUrl":1116,"ogSiteName":737,"ogType":738,"canonicalUrls":1116,"schema":1117},"Développement de GitLab Duo : corriger les failles de sécurité avec l'IA ","Ce tutoriel montre comment l'explication et la résolution des vulnérabilités de GitLab Duo, vous aident à résoudre rapidement les vulnérabilités.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098106/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750098106040.png","https://about.gitlab.com/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Développement de GitLab Duo : corriger les failles de sécurité avec l'IA \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"},{\"@type\":\"Person\",\"name\":\"Alana Bellucci\"}],\n        \"datePublished\": \"2024-07-15\",\n      }\n                  ",{"title":1113,"description":1114,"authors":1119,"heroImage":1115,"date":1121,"body":1122,"category":14,"tags":1123,"updatedDate":1125},[1076,1120],"Alana Bellucci","2024-07-15","Imaginez que dès votre premier jour dans votre nouveau poste, un incident de production majeur mobilise l'intervention de chaque membre de votre équipe. De nombreuses vulnérabilités critiques apparaissent, nécessitant une attention, une analyse, une atténuation et une correction immédiates. Mais par où commencer votre enquête ? \n\nDécouvrez comment l'explication et la résolution des vulnérabilités de GitLab Duo, ainsi que nos autres fonctionnalités alimentées par l'IA, peuvent vous aider à résoudre les vulnérabilités en quelques minutes. L'exemple pratique ci-dessous illustre comment bénéficier de l'assistance alimentée par l'IA de GitLab Duo pour analyser et expliquer les vulnérabilités. Des mesures correctives supplémentaires, accompagnées de corrections de code générées par l'IA dans les merge requests, sont également mises en évidence afin d'accélérer la résolution des vulnérabilités.\n\n> Démarrez [un essai gratuit de GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/#free-trial) pour profiter des avantages de la correction des vulnérabilités au sein de vos équipes.\n\n## Première étape : l'analyse\n\nLa première étape consiste à évaluer l'impact et la gravité de la vulnérabilité. Ouvrez l'interface utilisateur de GitLab et accédez au [rapport de vulnérabilités](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/) accessible via le menu `Sécurisation > Rapport de vulnérabilités`. Appliquez le filtre `SAST` pour identifier les vulnérabilités les plus critiques à traiter.\n\n![Aperçu des rapports de vulnérabilités](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/vulnerability_reports_overview_aHR0cHM6_1750098116056.png)\n\nLes résultats du scanner SAST sont présentés sous forme d'un résumé dans la vue détaillée, avec un lien vers le code source. Ils incluent des informations provenant d'avis de sécurité accessibles au public. Les équipes de développement rencontrent souvent des difficultés pour lancer l'analyse directement à partir du rapport de sécurité, surtout si elles ne sont pas pleinement informées de la portée de l'attaque, des détails techniques et des environnements affectés.\n\n## Comprendre et atténuer les risques avec l'explication des vulnérabilités\n\nIl est essentiel de bien comprendre la vulnérabilité et de déterminer la manière la plus appropriée et la plus efficace de la corriger. Les corrections apportées ne doivent pas compromettre les fonctionnalités existantes. Si c'est le cas, il est important d'échanger avec les chargés de maintenance et les Product Owners, et de fournir un résumé détaillé des vulnérabilités ainsi que des mesures d'atténuation possibles. Lorsque vous devez traiter du code écrit par un ancien employé qui a quitté l'entreprise ou du code qui n'a pas été testé, cela peut compliquer considérablement la planification des corrections.  \n\nL'explication des vulnérabilités alimentée par l'IA permet de résumer la manière dont un attaquant peut exploiter la vulnérabilité et apporte des informations supplémentaires sur son impact et les mesures correctives possibles.\n\nPar exemple, une vulnérabilité d'injection de commandes dans le système d'exploitation, comme illustrée dans l'extrait de code suivant :\n\n```php\n\u003C?php \n\n// Read variable name from GET request\n$name = $_GET['name'];\n\n// Use the variable name to call eval and print its value \neval('echo $' . $name . ';');\n```\n\nLe rapport de vulnérabilité n'est pas assez détaillé et nécessite une compréhension complète du contexte et de l'impact. Sélectionnez le bouton `Expliquer la vulnérabilité` dans le coin supérieur droit. GitLab Duo Chat s'ouvre et suggère une action prédéfinie de prompt. Cette fonctionnalité vous fournit des informations supplémentaires sur la vulnérabilité, car elle décrit comment celle-ci peut être exploitée et corrigée. \n\n![Neutralisation incorrecte des\néléments spéciaux utilisés dans une commande de système d'exploitation\n('OS Command Injection') ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750098116057.png)\n\n### Faire de l’explication des vulnérabilités une conversation contextuelle\n\nVous remarquerez également un changement au niveau de l'interface utilisateur : le volet d'explication des vulnérabilités a été remplacé par un workflow GitLab Duo Chat. Parfois, une vulnérabilité complexe nécessite d'être décomposée en plusieurs étapes d'atténuation ou passe par des chemins de code source peu clairs.\n\nVous pouvez explorer l'arborescence du code source et utiliser le même contexte de Chat pour expliquer, corriger, réusiner et tester le code.\n\nVoyons comment fonctionne le workflow complet à l'aide d'un exemple en langage C, dans lequel le scanning de sécurité a détecté un débordement de tampon.\n\n1. Ouvrez la vue détaillée de la faille de sécurité et sélectionnez le bouton `Expliquer la vulnérabilité` en haut à droite. Le prompt de GitLab Duo Chat s'ouvre, fournit un résumé du problème et des vecteurs d'attaque potentiels, puis propose une solution.\n\n![Utilisation de l'IA pour les vulnérabilités - image 4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750098116059.png)\n\n2. Passez en revue la correction proposée et demandez à GitLab Duo Chat de vous indiquer d'autres solutions, en utilisant le prompt `Pouvez-vous proposer une solution alternative en utilisant une fonction différente ?`. L'idée est d'en apprendre davantage sur les fonctions alternatives à `strcpy()` dont l'utilisation pourrait être plus sûre.\n\n![Utilisation de l'IA pour les vulnérabilités - image 3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750098116060.png)\n\n3. GitLab Duo Chat propose une solution alternative qui utilise `strlcpy()`, illustrée dans l'exemple suivant. Cette fonction ne copie que le nombre de caractères autorisé dans la chaîne cible et termine toujours la chaîne par « null ». Elle renvoie également la longueur de la chaîne source pour déterminer si celle-ci a été tronquée.\n\n![Utilisation de l'IA pour les vulnérabilités - image 5](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750098116062.png)\n\n4. Cliquez ensuite sur l'URL du fichier `Emplacement` pour accéder à la vue du code source. Ouvrez à nouveau GitLab Duo Chat et vérifiez que le contexte d'explication de la vulnérabilité précédente est toujours présent. L'étape suivante consiste à ajouter des tests avant d'appliquer la correction proposée. Cette approche permet d'éviter de perturber des fonctionnalités ou d'introduire des régressions. Par exemple, utilisez le prompt suivant : `En fonction du contexte de la vulnérabilité et du code source ouvert, comment ajouteriez-vous des tests pour cette vulnérabilité ?`.\n\n![Utilisation de l'IA pour les vulnérabilités - image 7 ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750098116063.png)\n\n5. Après avoir généré les tests (et en supposant qu'ils ont maintenant été ajoutés), vous pouvez également demander à GitLab Duo Chat de réusiner le code source, en utilisant le prompt `Pouvez-vous également réusiner le code source ?` dans la même session.\n\n![Utilisation de l'IA pour les vulnérabilités - image 6](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750098116063.png)\n\nLe workflow montre comment analyser, comprendre, atténuer, obtenir des approches alternatives, ajouter des tests et même réusiner les corrections de vulnérabilités. \n\nVous pouvez reprendre cette mesure corrective à l'aide de GitLab Duo Chat, puis basculer dans le Web IDE pour modifier le code source après avoir appris comment faire. Parmi les autres workflows continus, citons la validation des modifications et le déclenchement des [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\"), ainsi que les scans de sécurité réalisés tout au long du cycle de développement DevSecOps. \n\n## Corriger les failles de sécurité avec la résolution des vulnérabilités assistées par l'IA\n\nPour comprendre et corriger une faille de sécurité, des compétences en développement sont toujours nécessaires pour créer un correctif, exécuter des pipelines et effectuer des scans de sécurité dans une merge request. Il peut également être nécessaire de déployer les corrections dans un environnement de staging et de les tester sur une période plus longue.\n\nL'IA peut être utile dans cette situation, en proposant une correction en fonction du contexte et du code source fournis.\n\nAstuce : pensez à la vulnérabilité la plus frustrante que vous avez dû corriger au cours de votre carrière et recréez-la pour vous familiariser avec GitLab Duo. La [liste CWE de Mitre qui recense les 25 faiblesses logicielles les plus dangereuses](https://cwe.mitre.org/top25/archive/2023/2023_top25_list.html) peut être également un bon point de départ.  \n\nL'exemple suivant implémente la faille [CWE-328 : Utilisation d'une fonction de hachage faible](https://cwe.mitre.org/data/definitions/328.html) en utilisant `md5`. La faille est correctement identifiée par [le test SAST](https://docs.gitlab.com/ee/user/application_security/sast/).  \n\n```python\nimport hashlib\n\nclass User:\n    def __init__(self, username, password):\n        self.username = username\n        self.password = password\n\n    def set_password(self, password):\n        self.password = hashlib.md5(password.encode()).hexdigest()\n```\n\n![Utilisation de l'IA pour les vulnérabilités - image 8](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750098116064.png)\n\nCliquez sur le bouton en haut à droite `Résoudre avec une merge request`. Une merge request s'ouvre, dans laquelle une correction générée par l'IA est proposée. Dans le cas de cette vulnérabilité, une correction possible consisterait à utiliser une fonction de hachage différente.\n\n![Utilisation de l'IA pour les vulnérabilités - image 9](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098116065.png)\n\nLe fait de ne pas vérifier les codes d'erreur des fonctions ou les exceptions potentielles est un autre exemple de vulnérabilité courante. Les extraits de code en langage C suivants illustrent un exemple d'attaques par temporisation contre les opérations de fichiers en lien avec la faille [CWE-362](https://cwe.mitre.org/data/definitions/362.html) pour les appels `fopen()` et `chmod()`. \n\n```c\n#include \u003Cstdio.h>\n#include \u003Cstring.h>\n#include \u003Csys/mman.h>\n#include \u003Csys/stat.h>\n#include \u003Cunistd.h>\n\nint main(int argc, char **argv) {##$_0A$####$_0A$##    // File operations##$_0A$##    char *fname = \"gitlab.keksi\";##$_0A$####$_0A$##    FILE *fp;##$_0A$##    fp = fopen(fname, \"r\");##$_0A$##    fprintf(fp, \"Hello from GitLab Duo Vulnerability Resolution Challenge\");##$_0A$##    fclose(fp);##$_0A$####$_0A$##    // Potential chmod() timing attacks    ##$_0A$####$_0A$##    // Make the file world readable##$_0A$##    chmod(fname, S_IRWXU|S_IRWXG|S_IRWXO);##$_0A$####$_0A$##    return 0;##$_0A$##}\n```\n\nLe rapport SAST pour l'appel `chmod()` ressemblerait à ceci : \n\n![Utilisation de l'IA pour les vulnérabilités - image 10](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750098116065.png)\n\nLa merge request `chmod()` proposée inclut la gestion des erreurs et corrige un autre problème potentiel affectant les fichiers accessibles en écriture dans le monde entier, en modifiant les autorisations de `777` à `600`.\n\n![Utilisation de l'IA pour les vulnérabilités - image 11](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750098116066.png)\n\n> Essayez l'exercice asynchrone suivant : recherchez, analysez et corrigez la vulnérabilité de la fonction `fopen()`.\n\n## Nécessité d'une prise en charge accrue de l'IA par GitLab Duo \n\nSouvent, un problème de sécurité peut être temporairement résolu par une correction rapide ou une solution de contournement qui donne aux équipes de développement le temps nécessaire pour élaborer une solution plus durable. Dans d'autres situations, le problème peut devenir plus complexe et nécessiter la désactivation des API de fonctionnalités ou l'atténuation des règles du pare-feu jusqu'à ce qu'un correctif approprié puisse être déployé en production.\n\nGitLab Duo offre des fonctionnalités avancées alimentées par l'IA capables de résoudre ces problèmes. \n\n**Explication du code :** en tant que développeur ou ingénieur en sécurité, il est essentiel de comprendre les modifications apportées au code. Dans l'IDE, utilisez la [fonctionnalité d'explication du code](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#explain-code-in-the-ide) pour avoir une meilleure compréhension du correctif proposé par l'IA pour résoudre la vulnérabilité. Vous saurez exactement quels ajustements ont été réalisés et leurs justifications.\n\n**Analyse des causes profondes :** si un correctif fait échouer votre pipeline, utilisez la [fonctionnalité d'analyse des causes profondes](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/). Cet outil identifie et explique le problème sous-jacent, ce qui vous donne les moyens de le résoudre efficacement. Après avoir appliqué les corrections nécessaires, vous pouvez relancer les tests pour vous assurer que le problème est résolu.\n\n**Réusinage :** même après la correction d'une vulnérabilité, il est pertinent de se demander si le code peut être amélioré pour être plus sécurisé. Dans l'IDE, ouvrez GitLab Duo Chat et utilisez l'[action de réusinage](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#refactor-code-in-the-ide) pour explorer d'autres moyens plus sûrs d'écrire votre code. Cette approche proactive permet de maintenir un code base robuste et sécurisé.\n\nEn tirant parti de ces fonctionnalités offertes par GitLab Duo, vous pouvez aborder et résoudre les failles de sécurité en toute confiance, en veillant à la sécurité et l'efficacité de votre code.\n\n## Et après ?\n\nNous prévoyons d'intégrer directement l'explication et la résolution des vulnérabilités en amont du cycle du développement logiciel, dans le processus de merge request. Cette intégration vous permettra de traiter et de résoudre les vulnérabilités plus tôt dans le cycle de développement, d'optimiser votre workflow et d'améliorer la sécurité du code dès le début du projet.\n\n## Lancez-vous dès maintenant avec GitLab Duo\n\nConsultez notre [documentation](https://docs.gitlab.com/ee/user/gitlab_duo/turn_on_off.html) pour activer les fonctionnalités offertes par GitLab Duo. De plus, l'[explication des vulnérabilités](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#explaining-a-vulnerability) et la [résolution des vulnérabilités](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#vulnerability-resolution) de GitLab Duo seront bientôt disponibles dans GitLab Auto-géré et GitLab Dedicated.\n\n> Démarrez [un essai gratuit de GitLab Duo](https://about.gitlab.com/gitlab-duo/#free-trial) pour profiter des avantages de la correction des vulnérabilités au sein de votre entreprise !\n\n#### En savoir plus sur le « Développement de GitLab Duo »\n- [Comment nous validons et testons les modèles d'IA à grande échelle](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n\n- [Mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n\n- [Comment nous utilisons nos propres fonctionnalités d'IA](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n\n- [Tester et sécuriser le code généré par l'IA](https://about.gitlab.com/fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/)\n\n- [L'IA combinée à l'analyse des causes profondes pour réparer les pipelines CI/CD](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/)\n\n- [Tour d'horizon des dernières améliorations de GitLab Duo Chat](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-a-roundup-of-recent-chat-enhancements/)",[675,1124,676,677,748],"security","2024-08-02",{"slug":1127,"featured":93,"template":686},"developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities","content:fr-fr:blog:developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities.yml","Developing Gitlab Duo Use Ai To Remediate Security Vulnerabilities","fr-fr/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities.yml","fr-fr/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",{"_path":1133,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1134,"content":1140,"config":1150,"_id":1152,"_type":16,"title":1153,"_source":18,"_file":1154,"_stem":1155,"_extension":21},"/fr-fr/blog/developing-gitlab-duo-a-roundup-of-recent-chat-enhancements",{"title":1135,"description":1136,"ogTitle":1135,"ogDescription":1136,"noIndex":6,"ogImage":1137,"ogUrl":1138,"ogSiteName":737,"ogType":738,"canonicalUrls":1138,"schema":1139},"GitLab Duo : les dernières améliorations de GitLab Duo Chat","Découvrez les dernières améliorations de GitLab Duo Chat, notamment une nouvelle intégration, l'annulation des prompts et des mises à niveau architecturales.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098374/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750098374059.png","https://about.gitlab.com/blog/developing-gitlab-duo-a-roundup-of-recent-chat-enhancements","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Développement de GitLab Duo : tour d'horizon des dernières améliorations de GitLab Duo Chat\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Jannik Lehmann\"},{\"@type\":\"Person\",\"name\":\"David O'Regan\"}],\n        \"datePublished\": \"2024-07-10\",\n      }\n                  ",{"title":1141,"description":1142,"authors":1143,"heroImage":1137,"date":1146,"body":1147,"category":14,"tags":1148,"updatedDate":1149},"GitLab Duo : tour d'horizon des dernières améliorations de GitLab Duo Chat","Découvrez les dernières améliorations apportées à GitLab Duo Chat, notamment une nouvelle intégration, l'annulation des prompts et des mises à niveau architecturales.",[1144,1145],"Jannik Lehmann","David O'Regan","2024-07-10","GitLab s'engage à [améliorer en permanence GitLab Duo Chat](https://gitlab.com/gitlab-org/gitlab/-/issues/430124), notre assistant d'IA, pour répondre aux besoins en constante évolution de nos utilisateurs. Voici quelques améliorations récentes qui simplifieront votre workflow et amélioreront votre productivité.\n\n## Explication des vulnérabilités : une nouvelle intégration\n\nNous avons franchi une étape importante dans l'évolution de GitLab Duo Chat : l'intégration de [l'explication des vulnérabilités de GitLab Duo](https://about.gitlab.com/fr-fr/the-source/ai/understand-and-resolve-vulnerabilities-with-ai-powered-gitlab-duo/). Il s'agit de la première fonctionnalité de notre plateforme [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/) à être intégrée à GitLab Duo Chat par une équipe externe au groupe dédié à l'IA, mettant ainsi en valeur l'esprit de collaboration et les capacités interfonctionnelles de GitLab.\n\n### Principaux points forts de cette intégration :\n\n- **Une exécution rapide :** l'équipe est passée d'une phase d'exploration à la mise en œuvre de cette fonctionnalité en seulement trois semaines, démontrant ainsi une grande agilité et vitesse d'exécution.\n- **Une collaboration entre les équipes :** cette intégration a été menée par des équipes externes au groupe dédié à l'IA, ouvrant ainsi la voie à des intégrations de fonctionnalités plus diversifiées à l'avenir.\n- **Une meilleure compréhension des risques liés à la sécurité :** les utilisateurs pourront bientôt utiliser GitLab Duo Chat pour mieux comprendre les failles de sécurité détectées dans leurs projets.\n\nCette intégration représente une étape importante pour faire de GitLab Duo Chat un outil encore plus puissant et polyvalent pour les équipes de développement, en particulier dans le domaine de la sécurité.\n\n## Prise en compte améliorée du contexte\n\nNous avons réalisé des progrès significatifs au niveau de la compréhension du contexte par GitLab Duo Chat, ce qui rend cet assistant alimenté par l'IA plus intelligent et utile dans divers scénarios.\n\n### Disponibilité des connaissances\n\nGitLab Duo Chat a constamment accès aux éléments suivants :\n- la [documentation de GitLab](https://docs.gitlab.com/ \"documentation de GitLab\") ;\n- des connaissances générales sur la programmation et le codage.\n\nIl est important de noter que GitLab Duo Chat ne dispose pas d'un accès illimité à l'ensemble de votre instance ou de votre code base GitLab. Il peut donc uniquement traiter les informations spécifiques que vous fournissez dans votre requête ou celles qui sont immédiatement pertinentes pour le contenu de votre vue actuelle dans l'IDE ou l'interface utilisateur de GitLab.\n\nNous nous efforçons en permanence d'étendre la connaissance contextuelle de GitLab Duo Chat en incluant davantage de types de contenu, en mettant toujours l'accent sur la protection de la vie privée des utilisateurs et la sécurité des données. Cette diversification progressive vise à faire de GitLab Duo Chat un assistant encore plus puissant pour votre workflow de développement, tout en garantissant des limites d'accès aux données appropriées.\n\n### Connaissances contextuelles améliorées\n\nGitLab Duo Chat dispose désormais [d'une meilleure compréhension du contexte de votre projet](https://docs.gitlab.com/ee/user/gitlab_duo_chat/#the-context-chat-is-aware-of), à la fois dans les IDE et l'interface utilisateur de GitLab. Voici quelques exemples de ce que GitLab Duo Chat est capable de comprendre.\n\nDans l'interface utilisateur de GitLab :\n- **Les epics** : GitLab Duo Chat comprend quand vous faites référence à « cette epic » ou utilisez l'URL de l'epic.\n- **Les tickets** : similaire aux epics, GitLab Duo Chat reconnaît « ce ticket » ou l'URL du ticket.\n- **Les fichiers de code** : lorsqu'un seul fichier est affiché, GitLab Duo Chat sait interpréter les requêtes concernant « ce code » ou « ce fichier ».\n\nDans les IDE :\n- **Le code sélectionné** : GitLab Duo Chat analyse le code que vous avez sélectionné lorsque vous posez des questions sur « ce code » ou « ce fichier ».\n- **Les epics et les tickets** : GitLab Duo Chat est capable de comprendre leur contexte si vous fournissez l'URL.\n\nDe plus, lorsque vous utilisez des commandes slash comme `/explain`, `/refactor` ou `/tests` dans les IDE, GitLab Duo Chat a accès au code sélectionné.\n\n![Capture d'écran de la fenêtre GitLab Duo Chat](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098382/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750098382107.png)\n\n### Historique et mise en cache des discussions\nGitLab Duo Chat conserve les 50 derniers messages échangés dans l'historique de discussions. Cet historique expire trois jours après la dernière utilisation. La fermeture de votre navigateur ou de votre IDE ne supprimera pas définitivement votre historique tant que le délai spécifié n'est pas dépassé. Cependant, il est important de noter que la conservation à long terme des données de chat n'est actuellement pas disponible.\n\n## Annulation des prompts : arrêt des réponses à la demande\n\nL'une des fonctionnalités les plus attendues est désormais disponible : [l'annulation des prompts](https://gitlab.com/groups/gitlab-org/-/epics/13662). Vous pouvez désormais annuler les prompts en cours de GitLab Duo Chat sur la plateforme GitLab.com. Cette fonctionnalité vous offre [un plus grand contrôle sur vos interactions](https://gitlab.com/gitlab-org/gitlab/-/issues/458397).\n- __Disponibilité immédiate :__ cette fonctionnalité est d'ores et déjà déployée sur la plateforme GitLab.com.\n- __Disponibilité prochaine :__ cette fonctionnalité sera disponible pour les instances auto-gérées dans notre prochaine version. Elle sera fournie aux utilisateurs de GitLab Dedicated à l'occasion de la mise à niveau mensuelle.\n- __En cours :__ [intégration pour les extensions de certains éditeurs de code](https://docs.gitlab.com/ee/editor_extensions/) ; suivez l'avancement du projet [via ce ticket](https://gitlab.com/gitlab-org/editor-extensions/gitlab-jetbrains-plugin/-/issues/335).\n\nCette amélioration vous permet d'annuler une réponse si vous avez soumis votre prompt trop rapidement ou si vous avez changé d'avis. Cette fonctionnalité à priori mineure peut cependant vous faire gagner du temps et vous éviter toute frustration.\n\nPour annuler un prompt dans GitLab Duo Chat, procédez comme suit :\n1. Ouvrez GitLab Duo Chat dans GitLab.com.\n2. Commencez à saisir votre prompt ou votre question, par exemple « De quoi parle ce ticket ? ».\n\n![Écran montrant le début de la procédure d'annulation des prompts dans GitLab Duo Chat](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098382/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750098382108.png)\n\n3. Après avoir envoyé votre prompt, si vous souhaitez annuler la réponse, recherchez le nouveau bouton « Annuler » qui apparaît pendant que GitLab Duo Chat génère une réponse.\n\n![Capture d'écran du bouton Annuler dans GitLab Chat](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098382/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750098382110.png)\n\n4. Cliquez sur le bouton « Annuler » pour suspendre immédiatement le processus de génération de la réponse.\n\n![Capture d'écran montrant l'annulation de la réponse](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098382/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098382112.png)\n\n## Améliorations de l'architecture de GitLab Duo Chat \n\nNous avons également apporté des améliorations à l'architecture de GitLab Duo Chat pour rendre cette fonctionnalité plus robuste et plus efficace :\n\n- Le passage au protocole Language Server Protocol ([LSP](https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp)) permet d'améliorer l'intégration de GitLab Duo Chat dans divers environnements de développement. \n- Le Language Server de GitLab est un projet TypeScript expérimental qui fournit une interface commune pour que les extensions IDE intègrent les fonctionnalités de GitLab. Il prend actuellement en charge les suggestions de code de GitLab Duo et à l'avenir prendra aussi en charge GitLab Duo Chat.\n\nBien que ce changement concerne principalement l'architecture sous-jacente, les utilisateurs peuvent constater :\n- une amélioration de la réactivité et des performances lors de l'utilisation de GitLab Duo Chat sur différents IDE et éditeurs ;\n- un comportement plus cohérent des fonctionnalités de GitLab Duo Chat dans divers environnements de développement ;\n- une plus grande capacité pour l'ajout de nouvelles fonctionnalités et améliorations à l'avenir.\n\nDécouvrez dans la vidéo ci-dessous la façon dont le Language Server de GitLab alimente les suggestions de code :\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/VQlWz6GZhrs?si=_G5mOyYqEGAmnRv4\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## Et après ?\n\nNous cherchons sans cesse à améliorer GitLab Duo Chat. Voici quelques exemples de projets en cours :\n\n- Nous migrons actuellement nos fonctionnalités d'IA vers [Claude 3.5 Sonnet](https://gitlab.com/gitlab-org/gitlab/-/issues/468334). Cette mise à niveau améliorera les performances et les capacités de GitLab Duo Chat et d'autres fonctionnalités alimentées par l'IA.\n- Nous travaillons activement pour que [GitLab Duo Chat puisse fonctionner avec des modèles personnalisés et auto-hébergés](https://gitlab.com/groups/gitlab-org/-/epics/13760). Les entreprises pourront ainsi utiliser leurs propres modèles d'IA avec Duo Chat, ce qui leur permettra d'avoir plus de contrôle sur la base de connaissances de l'IA et d'améliorer potentiellement les performances de tâches spécifiques à leur domaine.\n- Nous finalisons actuellement le processus de [synchronisation des messages entre différentes interfaces](https://gitlab.com/gitlab-org/gitlab/-/issues/418760), y compris l'interface web (WebUI). L'objectif est de garantir une communication fluide et cohérente, améliorant ainsi votre expérience de collaboration en veillant à ce que vous ayez accès aux mêmes informations peu importe le dispositif que vous utilisez.\n- Nous [migrons la fonctionnalité de « Résumé des commentaires » vers GitLab Duo Chat](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156650). Il sera bientôt possible de résumer plusieurs commentaires d'un ticket directement dans Duo Chat, ce qui vous permettra de comprendre plus rapidement les points et enseignements clés des discussions, et d'améliorer votre expérience collaborative.\n\nNous avons hâte de [connaître votre avis sur ces améliorations](https://gitlab.com/gitlab-org/gitlab/-/issues/430124). Retrouvez-nous bientôt pour découvrir d'autres innovations et améliorations liées à GitLab Duo Chat.  \n\n#### En savoir plus sur le « Développement de GitLab Duo »\n- [Comment nous validons et testons les modèles d'IA à grande échelle](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n\n- [Mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n\n- [Comment nous utilisons nos propres fonctionnalités d'IA](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n\n- [Tester et sécuriser le code généré par l'IA](https://about.gitlab.com/fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/)\n\n- [L'IA combinée à l'analyse des causes profondes pour réparer les pipelines CI/CD](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/)\n",[675,677,676],"2024-08-01",{"slug":1151,"featured":93,"template":686},"developing-gitlab-duo-a-roundup-of-recent-chat-enhancements","content:fr-fr:blog:developing-gitlab-duo-a-roundup-of-recent-chat-enhancements.yml","Developing Gitlab Duo A Roundup Of Recent Chat Enhancements","fr-fr/blog/developing-gitlab-duo-a-roundup-of-recent-chat-enhancements.yml","fr-fr/blog/developing-gitlab-duo-a-roundup-of-recent-chat-enhancements",{"_path":1157,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1158,"content":1163,"config":1169,"_id":1171,"_type":16,"title":1172,"_source":18,"_file":1173,"_stem":1174,"_extension":21},"/fr-fr/blog/meet-gitlab-duo-workflow-the-future-of-ai-driven-development",{"title":1159,"description":1160,"ogTitle":1159,"ogDescription":1160,"noIndex":6,"ogImage":824,"ogUrl":1161,"ogSiteName":737,"ogType":738,"canonicalUrls":1161,"schema":1162},"GitLab Duo Workflow et l’avenir du développement logiciel piloté par l’IA","GitLab Duo Workflow, notre agent d'IA autonome, est en passe de révolutionner la manière dont les équipes créent et déploient des logiciels.","https://about.gitlab.com/blog/meet-gitlab-duo-workflow-the-future-of-ai-driven-development","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo Workflow et l’avenir du développement logiciel piloté par l’IA\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"David DeSanto, Chief Product Officer, GitLab\"}],\n        \"datePublished\": \"2024-06-27\",\n      }",{"title":1159,"description":1160,"authors":1164,"heroImage":824,"date":1165,"body":1166,"category":14,"tags":1167,"updatedDate":1168},[1055],"2024-06-27","Du code qui s’écrit tout seul ? Une telle solution relève encore du rêve, mais elle pourrait bientôt devenir réalité. Grâce aux progrès continus des grands modèles linguistiques (LLM) et à la plateforme DevSecOps unifiée et pilotée par l'IA de GitLab, cet avenir se dessine rapidement. Lors de notre [événement de lancement de GitLab 17](https://about.gitlab.com/fr-fr/seventeen/), nous vous avons présenté GitLab Duo Workflow, un agent d'IA autonome, capable de transformer la manière dont les équipes construisent, sécurisent, déploient et surveillent les logiciels. \n\nGitLab Duo Workflow dépasse l’usage actuel des assistants d'IA réactifs, basés sur des prompts, en s'intégrant pleinement aux équipes et en contribuant de manière proactive à optimiser chaque aspect du cycle du développement logiciel. Workflow se distingue en tirant parti du magasin de données unifié de GitLab, qui connecte, de manière fluide, l'ensemble des données, des projets, des dépôts et de la documentation. Il devient ainsi un agent intelligent, toujours disponible, qui surveille en permanence vos projets : il anticipe les problèmes potentiels dans l'environnement de production, identifie et corrige automatiquement les failles de sécurité, optimise vos applications pour des performances optimales et accélère l'intégration des nouveaux membres de l'équipe. Le tout, en créant rapidement des environnements de développement à distance personnalisés.\n\nL'IA transforme la création de logiciels sécurisés, leur maintenance, leur mise à jour, leur déploiement et leur surveillance. Elle permet aux entreprises de développer plus de logiciels qu'elles n'auraient pu l'imaginer auparavant. Nous souhaitons offrir une approche DevSecOps pilotée par l'AI et GitLab Duo Workflow marque la première étape de notre parcours ambitieux. En effet, notre objectif est de permettre aux développeurs de se concentrer sur la résolution de problèmes, l'innovation et la création de valeur. [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/) gère quant à lui les tâches répétitives et optimise les processus en arrière-plan.\n\n## La vision de GitLab Duo Workflow\nAvec GitLab Duo Workflow, nous vous offrons la possibilité d'automatiser et d'optimiser intégralement votre processus de développement logiciel pour plusieurs cas d'utilisation essentiels.\n### 1. Un développement automatisé\n\nGitLab Duo Workflow s'intègre directement à l'IDE, facilitant ainsi la planification et la priorisation des tâches selon les projets individuels et les processus organisationnels. Sur la base d'un élément de travail donné (epic, ticket ou tâche), Workflow établit un plan de mise en œuvre que les développeurs peuvent ensuite reprendre et affiner. Workflow passe ensuite en revue le plan, et génère ou réécrit le code afin d'atteindre et de satisfaire les exigences définies. Pour ce faire, le processus se déroule dans un [espace de travail de développement à distance de GitLab](https://about.gitlab.com/blog/quick-start-guide-for-gitlab-workspaces/), ce qui permet à Workflow d'évaluer, d'écrire et de tester les modifications de code en toute sécurité. Ce processus permet également de s'assurer que le code produit par Workflow répond parfaitement aux exigences et qu'il passe tous les tests du pipeline CI, y compris les scans de sécurité. En cas d'échec du pipeline, Workflow traite automatiquement les problèmes et les résout si nécessaire. Il veille à ce que seul un code de haute qualité, conforme aux normes de votre entreprise, soit créé, validé et intégré à vos projets.\n\nLorsque le code est prêt, Workflow crée automatiquement une merge request (requête de fusion) comprenant les modifications de code et suit les processus d'approbation de cette requête. Cela comprend les interactions avec le réviseur ou le chargé de maintenance responsable de valider le code. Vous pouvez même demander à Workflow de procéder à une revue de votre code et de commenter vos merge requests, comme le ferait un réviseur de code humain. Mieux encore, Workflow mettra en œuvre ses suggestions à votre demande. Et ce n'est que le début.\n\n### 2. Une amélioration continue intelligente\nGitLab Duo Workflow analyse votre codebase en temps réel. Il suggère des optimisations d'architecture afin d'améliorer l'efficacité, d'accroître les performances et de réduire les coûts. Il identifie les opportunités de réusinage du code de manière proactive pour favoriser l'évolutivité et s'attaque également à la dette technique en suggérant des modifications aux développeurs ou en les mettant en œuvre automatiquement dans un environnement sandbox. En outre, Workflow utilise des capacités d'automatisation pour ajuster automatiquement l'allocation et l'utilisation des ressources cloud en fonction des besoins fluctuants de vos projets de développement logiciel, afin de s'assurer que vos applications atteignent toujours leurs objectifs de performance.\n\n### 3. Une sécurité et une conformité proactives\nLa sécurité et la conformité sont des priorités absolues pour toute entreprise. GitLab Duo Workflow invite automatiquement et en temps réel les développeurs à appliquer des correctifs, à réusiner le code non sécurisé et à s'adapter aux nouvelles menaces. Notre agent évalue aussi en permanence les risques de sécurité associés à vos applications et à vos environnements de production. Si nécessaire, il vous guide pour mettre en œuvre des mesures d'atténuation.\n\n### 4. Une optimisation autonome des performances\nGitLab Duo Workflow intègre des boucles de rétroaction élaborées, qui permettent un apprentissage et une amélioration continus. En analysant les données des outils de surveillance, les interactions des utilisateurs et les résultats commerciaux, il peut affiner en continu sa vision de votre codebase. Cette démarche garantit l'alignement de l'architecture de vos applications sur les besoins de votre entreprise. Comme c'est le cas pour tous les agents d'IA, Workflow s'améliore constamment : à mesure qu'il devient partenaire à part entière de votre entreprise, il apprend à détecter et à corriger ses propres erreurs.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://player.vimeo.com/video/967982166?badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allowfullscreen=\"true\" title=\"GitLab Duo Workflow the future of AI-driven DevSecOps\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\n## L'avenir de l'IA est déjà à notre portée\nGitLab Duo Workflow représente une véritable avancée, car cette IA ne nécessite plus d'interventions humaines répétées. À la place, elle pilote les workflows et les processus de développement, en s'adressant aux humains lorsqu'elle en a besoin pour résoudre les problèmes. Grâce à l'interface DevSecOps unifiée et pilotée par l'IA de GitLab, les entreprises peuvent désormais développer une nouvelle génération d'applications propulsées par l'IA avec une rapidité, une efficacité et une innovation inégalées, tout en respectant les normes de sécurité et de conformité les plus rigoureuses. Et sans aucun compromis.\n\nNous continuons d'explorer de nouveaux horizons avec l'IA. Retrouvez-nous bientôt pour découvrir nos futures innovations et en savoir plus sur l'avenir de l'intelligence artificielle dans le DevSecOps. Façonnons ensemble l'avenir du DevSecOps piloté par l'IA et donnons à vos équipes les moyens de réaliser leur plein potentiel.\n\n> [Inscrivez-vous à notre liste d'attente](https://forms.gle/5ppRuNVb8LwSPNVJA), pour accéder au programme de pré-lancement de GitLab Duo Workflow. ",[675,746,707,678,936],"2024-07-03",{"slug":1170,"featured":93,"template":686},"meet-gitlab-duo-workflow-the-future-of-ai-driven-development","content:fr-fr:blog:meet-gitlab-duo-workflow-the-future-of-ai-driven-development.yml","Meet Gitlab Duo Workflow The Future Of Ai Driven Development","fr-fr/blog/meet-gitlab-duo-workflow-the-future-of-ai-driven-development.yml","fr-fr/blog/meet-gitlab-duo-workflow-the-future-of-ai-driven-development",{"_path":1176,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1177,"content":1183,"config":1190,"_id":1192,"_type":16,"title":1193,"_source":18,"_file":1194,"_stem":1195,"_extension":21},"/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",{"ogTitle":1178,"schema":1179,"ogImage":1180,"ogDescription":1181,"ogSiteName":737,"noIndex":6,"ogType":738,"ogUrl":1182,"title":1178,"canonicalUrls":1182,"description":1181},"GitLab Duo : l'IA combinée à l'analyse des causes profondes","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Développement de GitLab Duo : l'IA combinée à l'analyse des causes profondes pour réparer les pipelines CI/CD\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Rutvik Shah\"},{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"}],\n        \"datePublished\": \"2024-06-06\",\n      }\n                  ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097321/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750097321081.png","Découvrez comment nous avons associé une fonctionnalité d'analyse des causes profondes à l'IA pour vous aider à réparer les pipelines CI/CD défectueux.","https://about.gitlab.com/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",{"title":1184,"description":1181,"authors":1185,"heroImage":1180,"date":1187,"body":1188,"category":14,"tags":1189},"GitLab Duo : l'IA combinée à l'analyse des causes profondes pour réparer les pipelines CI/CD",[1186,1076],"Rutvik Shah","2024-06-06","***L'IA générative marque une avancée majeure dans le domaine du développement logiciel, simplifiant le processus de développement, de sécurisation et d'exploitation des logiciels. Notre série d'articles de blog, rédigée par nos équipes produit et ingénierie, vous propose un aperçu de notre processus de création, de test et de déploiement des fonctionnalités d'IA que vous avez besoin d'intégrer dans l'ensemble de l'entreprise. Explorez les nouvelles capacités de GitLab Duo et découvrez comment elles aident les équipes DevSecOps à livrer de meilleurs résultats aux clients.***\n\nAvez-vous déjà été contraint d'interrompre votre workflow [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ?\"), voire de retarder votre processus de déploiement logiciel, alors que vous cherchiez la cause profonde d'un problème de pipeline [CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/benefits-continuous-integration/) ? Traditionnellement, lorsqu'un problème survient au cours du processus de création de logiciels, les développeurs doivent parcourir les fichiers journaux et le résoudre après de multiples essais. [L'analyse des causes profondes de GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), l'une de nos fonctionnalités alimentées par l'IA, élimine les hypothèses en déterminant la cause profonde de l'échec d'un pipeline CI/CD. \n\nDécouvrez dans cet article ce qu’est l'analyse des causes profondes et comment appliquer cette fonctionnalité GitLab Duo alimentée par l'IA à votre workflow DevSecOps.\n\n> Vous avez manqué notre événement virtuel à l’occasion du lancement de GitLab 17 ? [Accédez au replay !](https://about.gitlab.com/fr-fr/seventeen/)\n\n## Qu’est-ce que l'analyse des causes profondes ?\n\nL'analyse des causes profondes de GitLab Duo est une fonctionnalité alimentée par l'IA qui analyse les journaux pour vous aider à identifier une cause profonde et suggère une solution lorsqu'un job log CI/CD échoue.\n\nBien qu'elle soit souvent utilisée pour gérer les incidents liés aux produits, ses méthodes et ses pratiques de débogage se retrouvent dans tous les workflows DevSecOps. Lorsque les équipes Ops, les administrateurs et les ingénieurs de plateforme enquêtent sur les échecs de pipeline, ils sont confrontés à des erreurs de déploiement de l'Infrastructure as Code (IaC), à des problèmes liés à [Kubernetes](https://about.gitlab.com/fr-fr/blog/kubernetes-the-container-orchestration-solution/ \"Qu'est-ce que Kubernetes ? \") et [GitOps](https://about.gitlab.com/fr-fr/topics/gitops/ \"GitOps\"), ainsi qu'à de longues traces d'appels détaillant la séquence complète des fonctions ou des méthodes impliquées dans les défaillances.\n\nRassemblant les équipes sur une seule interface, la fonctionnalité d'analyse des causes profondes de GitLab Duo fait appel à l'IA pour résumer, analyser et proposer des correctifs afin que les entreprises puissent déployer plus rapidement des logiciels sécurisés.\n\nUn pipeline peut échouer pour diverses raisons, notamment des erreurs de syntaxe dans le code, des dépendances manquantes, des échecs de test pendant le processus de compilation, des délais d'attente dépassés lors du déploiement de Kubernetes et de l'IaC, ainsi que de nombreux autres problèmes potentiels. Lorsque de tels échecs se produisent, toute l'équipe a la responsabilité d'examiner minutieusement les logs générés par le pipeline. Ce processus d'examen du job log consiste à vérifier minutieusement les sorties détaillées pour identifier les erreurs spécifiques et les causes profondes de l'échec du pipeline. Par exemple, le pipeline suivant a enregistré plusieurs échecs qui doivent être examinés et corrigés.\n\n![Image illustrant plusieurs échecs de jobs](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097332601.png)\n\nLa durée nécessaire pour corriger ces échecs est très variable et grandement influencée par plusieurs facteurs, tels que :\n\n* la connaissance du projet par le développeur,\n* son niveau d'expérience avec des problèmes similaires,\n* son niveau de compétence global en matière de dépannage et de résolution de problèmes dans le contexte du pipeline.\n\nL'analyse manuelle peut être extrêmement difficile et chronophage, dans la mesure où les données des journaux se composent de journaux d'applications et de messages système rassemblant de nombreuses sources d'échec potentielles. Un correctif de pipeline typique peut consister en plusieurs itérations et en un changement de contexte. La complexité et la nature non structurée des fichiers journaux illustrent à la perfection la manière dont l'IA générative permet d'accélérer les tâches. L'utilisation de l'IA peut réduire considérablement le temps nécessaire pour identifier et corriger une erreur de pipeline. Elle abaisse également le niveau d'expertise nécessaire pour réparer un pipeline comme celui présenté ci-dessus.\n\nRegardez la fonctionnalité d’analyse des causes profondes de GitLab Duo en action :\n\n\u003C!-- blank line -->\n\n\u003Cfigure class=\"video_container\">\n\n \u003Ciframe src=\"https://www.youtube.com/embed/sTpSLwX5DIs?si=J6-0Bf6PtYjrHX1K\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\n\u003C/figure>\n\n\u003C!-- blank line -->\n\n## Comment fonctionne l'analyse des causes profondes ?\n\n[L'analyse des causes profondes](https://docs.gitlab.com/ee/user/ai_experiments.html#root-cause-analysis) transmet une partie du job log CI/CD à la [passerelle d'IA de GitLab](https://docs.gitlab.com/ee/architecture/blueprints/ai_gateway/). GitLab intègre ce segment dans les limites du token du grand modèle de langage (LLM) et l'associe à un prompt créé en amont afin de fournir des informations sur les raisons possibles de l'échec du job. Le prompt demande également au LLM de fournir un exemple de résolution du job qui a échoué.\n\nVoici deux exemples de scénarios où la fonctionnalité d'analyse des causes profondes de GitLab peut vous être utile.\n\n#### 1. Analysez une erreur de dépendance Python\n\nUne application Python peut importer des modules de package contenant des fonctionnalités qui ne sont pas fournies dans la bibliothèque standard. Le projet « [Challenge - Root Cause Analysis - Python Config](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config) » met en œuvre une application qui analyse la configuration et initialise une base de données SQLite. Ces deux éléments fonctionnent sans dépendance. Le projet utilise les meilleures pratiques CI/CD avec une mise en cache et un environnement Python. La dernière implémentation de la fonctionnalité ajoute un client de mise en cache Redis et la compilation CI/CD échoue maintenant pour une raison quelconque. \n\nGrâce à la fonctionnalité d'analyse des causes profondes de GitLab Duo, vous pouvez immédiatement repérer que le texte `ModuleNotFoundError` signifie que le module n'est pas installé dans l'environnement Python. GitLab Duo suggère également un exemple de correctif : l'installation du module Redis via le gestionnaire de paquets PIP.\n\n![Image représentant le message 'modulenotfounderror' et la résolution suggérée par GitLab Duo](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097332602.png)\n\nPour consulter le pipeline défectueux, cliquez sur [ce lien](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config/-/jobs/6992716398). \n\nLe prompt d'analyse des causes profondes de GitLab fournit un résumé du problème, qui semble découler d'un module `redis` manquant. Essayons de le résoudre en installant le module `redis`. Vous pouvez appeler `pip install redis` dans la section `script` du job CI/CD, ou utiliser une approche plus sophistiquée avec le fichier `requirements.txt`. Ce dernier est utile si vous souhaitez avoir une source unique de vérité pour les dépendances installées dans l'environnement de développement et les pipelines CI/CD.\n\n```yaml\ntest:\n  extends: [.python-req]\n  stage: test \n  before_script:\n    # [🦊] hint: Root cause analysis. # Solution 1: Install redis using pip\n    - pip install redis\n    # Solution 2: Add redis to requirements.txt, use pip\n    - pip install -r requirements.txt \n\n  script:\n    - python src/main.py\n```\n\nUne fois la dépendance Python manquante corrigée, le job CI/CD échoue à nouveau. Utilisez une nouvelle fois l'analyse des causes profondes de GitLab et vous constaterez qu'aucun service Redis n'est en cours d'exécution dans le job. Dans GitLab Duo Chat, saisissez le prompt `How to start a Redis service in CI/CD` (Comment démarrer un service Redis dans CI/CD) pour apprendre à configurer l'attribut `services` dans le job CI/CD.\n\n![Illustre le prompt indiquant comment démarrer un service Redis](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097333/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097332602.png)\n\nModifiez le fichier `.gitlab-ci.yml` avec le job `test` et indiquez le service `redis`.\n\n```yaml\ntest:\n  extends: [.python-req]\n  stage: test \n  before_script:\n    # [🦊] hint: Root cause analysis.\n    # Solution 1: Install redis using pip\n    - pip install redis\n    # Solution 2: Add redis to requirements.txt, use pip\n    - pip install -r requirements.txt \n\n  script:\n    - python src/main.py\n\n  # Solution 3 - Running Redis\n  services:\n    - redis\n```\n\nL'exécution du serveur Redis vous permet d'exécuter avec succès l'application Python et d'enregistrer sa sortie dans le job log CI/CD.\n\n![sortie de l'application Python](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097332603.png)\n\nLa solution est fournie dans le [dépôt solution/](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-python-config/-/tree/main/solution?ref_type=heads).\n\n**Conseil :** vous pouvez également demander à [GitLab Duo Chat](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html) de suivre les problèmes potentiels à l'avenir.\n\n```markdown\nHow to lint Python code? Which tools are recommended for CI/CD.\nHow to pin a package version in Python requirements file?\t\nWhat are possible ways that this exception stacktrace is triggered in the future?\nAre there ways to prevent the application from failing?\n```\n\nL'exemple suivant est plus avancé et comprend plusieurs échecs. \n\n#### 2. Analysez le runtime Go manquant\n\nLes jobs CI/CD peuvent être exécutés dans des conteneurs, générés à partir de l'attribut `image` fourni. Si le conteneur ne fournit pas de runtime de langage de programmation, les sections `script` exécutées faisant référence au binaire `go` échouent. Par exemple, il est nécessaire de comprendre et de corriger le message d'erreur `/bin/sh: eval: line 149: go: not found`. \n\nPlusieurs raisons peuvent expliquer que la commande `go` ne se trouve pas dans le contexte de runtime du conteneur :\n\n1. Le job utilise une image de conteneur minimale, par exemple `alpine`, et le runtime du langage Go n'a pas été installé.\n2. Le job utilise la mauvaise image de conteneur par défaut, par exemple, celle indiquée au-dessus de la configuration CI/CD ou correspondant au mot-clé `default`.\n3. Le job utilise le Shell executor (exécuteur Shell) à la place de l'image de conteneur. Le runtime Go n'est pas installé sur le système d'exploitation hôte, il échoue pour un autre motif ou n'est pas configuré.\n\nNotre projet « [Challenge - Root Cause Analysis - Go GitLab Release Fetcher](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-go-gitlab-release-fetcher) » propose un exercice d'analyse et de résolution des problèmes CI/CD avec une application de récupération de versions GitLab, écrite en langage Go. Les jobs CI/CD `build` et `docker-build` échouent. La résolution du problème a différentes portées : comprendre pourquoi le runtime Go n'est pas installé et en apprendre davantage sur la syntaxe `Dockerfile`.\n\n![Capture d'écran montrant l'échec du job Modifier l'étiquette Docker](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097332603.png)\n\nLe [dépôt `solution/`](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/root-cause-analysis/challenge-root-cause-analysis-go-gitlab-release-fetcher) suggère deux solutions possibles après l'analyse des causes profondes. \n\n## Entraînez-vous à utiliser l'analyse des causes profondes\n\nVoici plusieurs scénarios pour lesquels vous pouvez vous entraîner à travailler avec la fonctionnalité d'analyse des causes profondes de GitLab.\n\n* Lorsque vous rencontrez des délais d'attente expirés ou des erreurs de déploiements. \n* Lorsque des pipelines IaC OpenTofu ou Terraform ne parviennent pas à provisionner vos ressources cloud.\n* Lorsque le playbook Ansible échoue et affiche un message d'erreur cryptique d'autorisation dans le CI/CD.\n* Lorsque la trace d'appels Java contient 10 pages.\n* Lorsqu'un script shell met en évidence une erreur d'exécution.\n* Lorsqu'un script Perl échoue sur la seule ligne que ce script contient.\n* Lorsque le job CI/CD est interrompu et que la section qui en serait la cause n'est pas évidente.\n* Lorsqu'un délai d'attente de connexion réseau est atteint et que vous pensez qu'il ne peut pas s'agir du DNS.\n\n## Quels sont les prochains développements prévus pour l'analyse des causes profondes de GitLab Duo ?\n\nNous voulons aider nos utilisateurs à réduire le nombre d'itérations nécessaires pour valider leurs [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ? \"). À l'avenir, la fonctionnalité d'analyse des causes profondes de GitLab s'ouvrira systématiquement et affichera la réponse dans GitLab Duo Chat, notre assistant d'IA. Les utilisateurs pourront alors s'appuyer sur la recommandation pour générer un correctif plus précis en posant des questions spécifiques (par exemple, des correctifs spécifiques pour un langage de programmation particulier) ou en demandant des correctifs alternatifs en fonction de la cause profonde identifiée.\n\nPar exemple, voici le résultat de l'analyse des causes profondes d'un job ayant rencontré un échec :\n\n![Réponse de l'Analyse des causes profondes](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097332/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097332603.png)\n\nLes utilisateurs peuvent poser des questions de suivi qui approfondissent la réponse générée par l'IA.\n\n* Je ne veux pas créer ma propre image Docker. Veuillez suggérer d'autres façons de résoudre le problème.\n* Je n'ai pas accès à la création d'image Docker. Il semble que le binaire Go soit manquant. Pouvez-vous suggérer des images alternatives ?\n\nGitLab exécutera également un benchmark de la qualité des réponses générées et mettra en place des améliorations pour rendre l'utilisation plus conviviale et efficace.\n\nConsultez notre [epic sur la disponibilité générale de l'analyse des causes profondes](https://gitlab.com/groups/gitlab-org/-/epics/13080) pour en savoir plus et laissez un commentaire sur notre [ticket dédié à l'analyse des causes profondes](https://gitlab.com/groups/gitlab-org/-/epics/13872) pour nous dire ce que vous pensez de cette fonctionnalité. \n\n## Profitez dès maintenant des nombreux avantages de l'analyse des causes profondes\n\nPour activer cette fonctionnalité, consultez notre [documentation](https://docs.gitlab.com/ee/user/ai_experiments.html#root-cause-analysis). L'analyse des causes profondes est disponible actuellement pour nos clients GitLab Ultimate et sera bientôt disponible dans GitLab Auto-géré et GitLab Dedicated.\n\nVous souhaitez tester GitLab Ultimate ? Commencez dès aujourd'hui [un essai gratuit de 30 jours](https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/blog&glm_content=default-saas-trial). \n\n## En savoir plus sur le « Développement de GitLab Duo »\n\n* [Développement de GitLab Duo : comment nous validons et testons les modèles d'IA à grande échelle](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n* [Développement de GitLab Duo : mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n* [Développement de GitLab Duo : comment nous utilisons nos propres fonctionnalités d'IA](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n* [Développement de GitLab Duo : tester et sécuriser le code généré par l'IA](https://about.gitlab.com/fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/)",[675,748,707,746,677],{"slug":1191,"featured":93,"template":686},"developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd","content:fr-fr:blog:developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd.yml","Developing Gitlab Duo Blending Ai And Root Cause Analysis To Fix Ci Cd","fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd.yml","fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd",{"_path":1197,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1198,"content":1204,"config":1209,"_id":1211,"_type":16,"title":1212,"_source":18,"_file":1213,"_stem":1214,"_extension":21},"/fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code",{"title":1199,"description":1200,"ogTitle":1199,"ogDescription":1200,"noIndex":6,"ogImage":1201,"ogUrl":1202,"ogSiteName":737,"ogType":738,"canonicalUrls":1202,"schema":1203},"Développement de GitLab Duo : tester et sécuriser le code généré par l'IA ","Découvrez, étape par étape, comment améliorer la fiabilité et la sécurité du code généré par l'IA à l'aide de GitLab Duo et de GitLab Pages.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097183/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750097183481.png","https://about.gitlab.com/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Développement de GitLab Duo : tester et sécuriser le code généré par l'IA \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"David O'Regan\"}],\n        \"datePublished\": \"2024-05-30\",\n      }\n                  ",{"title":1199,"description":1200,"authors":1205,"heroImage":1201,"date":1206,"body":1207,"category":14,"tags":1208},[1145],"2024-05-30","___L'IA générative marque une avancée majeure dans le domaine du développement logiciel, simplifiant le processus de développement, de sécurisation et d'exploitation des logiciels. Notre nouvelle série d'articles de blog, rédigée par nos équipes produit et ingénierie, vous propose un aperçu de notre processus de création, de test et de déploiement des fonctionnalités d'IA que vous avez besoin d'intégrer dans l'ensemble de l'entreprise. Explorez les nouvelles capacités de GitLab Duo et découvrez comment elles aideront les équipes DevSecOps à livrer de meilleurs résultats aux clients.___\n\nAlors que l’intelligence artificielle continue de révolutionner le domaine du développement logiciel, il est essentiel d’effectuer des tests approfondis du code qu’elle génère pour en assurer sa sécurité. Découvrez dans cet article comment combiner [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), notre suite de fonctionnalités d'IA qui alimente le workflow DevSecOps, et [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/) afin de tester rigoureusement et de sécuriser le code généré par l'IA. \n\n## Les défis du code généré par l'IA\n\nLe code généré par l'IA n'est pas toujours parfait et peut parfois être affecté par différents types de problèmes, parmi lesquels : des algorithmes incorrects ou incomplets, des problèmes de dépendance, ou encore des failles de sécurité.\n\nD'après une [étude publiée par l'Association of Computing Machinery](https://dl.acm.org/doi/pdf/10.1145/3613904.3642596), qui a analysé les réponses fournies par ChatGPT aux questions de programmation, 52 % des réponses contenaient des informations incorrectes et 77 % étaient jugées trop prolixes. Malgré ces lacunes, les utilisateurs ont préféré les réponses complètes et bien articulées de ChatGPT dans 35 % des cas, allant même jusqu'à ignorer les informations incorrectes dans 39 % des cas. Pour surmonter ces défis, il est donc essentiel de recourir à des outils et frameworks avancés.\n\n## L'approche de GitLab en matière de sécurité et de tests de l'IA\n\nGitLab a élaboré une stratégie de contenu complète axée sur l’intégration de mesures de sécurité dans le workflow de développement. En tirant parti de GitLab Duo pour la génération de code alimentée par l'IA et de GitLab Pages pour intégrer des rapports de test, les développeurs peuvent ainsi s'assurer que leur code généré par l'IA est à la fois sécurisé et fiable.\n\nVoici un guide détaillé pour intégrer GitLab Duo et GitLab Pages avec un [serveur Web Flask](https://flask.palletsprojects.com/en/3.0.x/).\n\n### 1. Créez un nouveau projet sur GitLab.com\n\n- Accédez à [GitLab.com](http://GitLab.com).\n- Cliquez sur le bouton « Nouveau projet ».\n- Sélectionnez « Créer un projet vide ».\n- Attribuez un nom au projet (par exemple, AI_Code_Security).\n- Définissez le niveau de visibilité (Privé, Interne ou Public).\n- Cliquez sur « Créer le projet ».\n\n### 2. Activez les suggestions de code de GitLab Duo\n\n- Accédez à votre projet.\n- Cliquez sur le bouton « Web IDE » pour ouvrir le Web IDE.\n- Assurez-vous que les fonctionnalités de GitLab Duo, telles que les suggestions de code et GitLab Duo Chat, sont activées.\n- Commencez à coder dans le [Web IDE](https://docs.gitlab.com/ee/user/project/web_ide/). GitLab Duo vous propose des suggestions de code en temps réel pour améliorer votre programmation.\n\n### 3. Créez un serveur Web Flask\n\nVous pouvez créer un serveur Web Flask en utilisant le commentaire (surligné en vert) dans la capture d'écran ci-dessous.\n\n![Test DGD - image 1](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097192/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097192520.png)\n\n### 4. Générez des tests avec GitLab Duo\n\nLes tests unitaires sont essentiels pour valider la fonctionnalité du code généré. Utilisez la commande `/tests` de GitLab Duo pour [générer des suggestions de tests directement dans le Web IDE](https://docs.gitlab.com/ee/user/gitlab_duo_chat_examples.html#write-tests-in-the-ide). Cette commande peut être adaptée pour inclure des instructions supplémentaires afin de se concentrer sur certains aspects tels que la performance, la régression ou l'utilisation de frameworks spécifiques.\n\n##### Exemple d'utilisation dans le Web IDE :\n\n- Sélectionnez le code pour lequel vous souhaitez générer des tests.\n- Utilisez la commande `/tests` suivie d'instructions supplémentaires si nécessaire.\n\n![Test DGD - image 2](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097192/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097192521.png)\n\n### 5. Identifiez les problèmes liés au code généré par l'IA à l'aide de GitLab Duo Chat\n\nEffectuez une revue de code avec GitLab Duo Chat et affinez le code généré par l'IA. Par exemple, vous pouvez rechercher des vulnérabilités de sécurité dans le code du serveur Web Flask :\n\n```unset\nPrompt : Examinez ce code pour détecter d'éventuelles vulnérabilités en matière de sécurité et des problèmes de dépendance.\n```\n\n![Test DGD - image 3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097192/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097192523.png)\n\nGitLab Duo Chat peut permettre d'identifier les vulnérabilités dans le code ci-dessus.\n\n### 6. Générez des rapports de test\nAprès avoir effectué vos tests, générez un rapport de test qui sera déployé à l'aide de GitLab Pages.\n\n```unset\nPrompt : Écrivez-moi un script Python pour générer un rapport de test qui sera déployé à l'aide de GitLab Pages.\n```\n\n![Test DGD - image 4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097192/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097192525.png)\n\nVoici l'exécution du prompt :\n\n- Le script s'assure de l'existence du répertoire test_reports.\n- Il exécute le fichier `test_server.py` à l'aide de `subprocess.run()`, en capturant la sortie.\n- La sortie brute est enregistrée dans `test_reports/test_output.txt`.\n- Un rapport HTML est généré. Il est enregistré sous `test_reports/index.html` et intègre la sortie du test dans des balises `\u003Cpre>` pour en assurer la lisibilité.\n\n### 7. Déployez le rapport de test avec GitLab Pages\n\nUtilisez [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/) pour héberger et afficher le rapport de test. Voici la configuration de notre fichier `.gitlab-ci.yml` pour déployer le rapport de test.\n\n```python\n\nstages:\n  - test\n  - deploy\ntest_job:\n  stage: test\n  script:\n    - python generate_test_report.py\n  artifacts:\n    paths:\n      - test_reports/\npages:\n  stage: deploy\n  script:\n    - mv test_reports public\n  artifacts:\n    paths:\n      - public\n\n ```\n\nAvec cette configuration, l'étape `test_job` exécute le script Python pour générer le rapport de test. L'étape `pages` déplace le répertoire `test_reports` vers `public` que GitLab Pages utilise pour diffuser le contenu.\n\n### 8. Intégrez les rapports de test dans les widgets MR\n\nL'intégration des [rapports de test dans les widgets MR](https://docs.gitlab.com/ee/ci/testing/unit_test_reports.html) permet de visualiser immédiatement les résultats des tests. Vous pouvez ainsi inclure le rapport de test en tant qu'artefact dans la configuration de votre [pipeline CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ? \") :\n\n```python\n\nstages:\n  - build\n  - test\n  - deploy\n\nbuild_job:\n  stage: build\n  script:\n    - echo \"Building the project...\"\n    - # Your build commands here\n\ntest_job:\n  stage: test\n  script:\n    - mkdir -p test-reports\n    - python test_server.py > test-reports/results.xml\n  artifacts:\n    when: always\n    reports:\n      junit: test-reports/results.xml\n    paths:\n      - test-reports/results.xml\n\npages:\n  stage: deploy\n  script:\n    - mkdir .public\n    - mv test-reports .public/\n  artifacts:\n    paths:\n      - .public\n\n```\nEn incluant le rapport de test en tant qu'artefact et en l'indiquant dans la section des rapports, GitLab affiche automatiquement les résultats des tests dans les widgets MR. Vous disposez alors d'une visibilité immédiate sur les résultats des tests, renforçant ainsi la transparence et la fiabilité du processus de développement.\n\n### Étude de cas \n\nImaginez qu'un extrait de code généré par l'IA introduise une dépendance présentant des vulnérabilités connues. Avec ses stratégies de sécurité, GitLab Duo signalerait cette dépendance lors du processus de génération de code. Dans l'exemple ci-dessous, l'extrait de code a été généré par l'IA :\n\n```python\n\nimport os\nfrom flask import Flask, request\n\napp = Flask(__name__)\n\n@app.route('/search')\ndef search():\n    query = request.args.get('query')\n    execute_os_command(query)\n    return 'You searched for: ' + query\n\ndef execute_os_command(command):\n    os.system(command)\n\nif __name__ == '__main__':\n    app.run()\n\n```\n\nDans cet exemple, le point de terminaison de recherche est exposé à une vulnérabilité d'injection de commandes dans le système d'exploitation. Grâce au test statique de sécurité des applications ([SAST](https://docs.gitlab.com/ee/user/application_security/sast/)) de GitLab, cette vulnérabilité serait détectée lors de l'exécution du pipeline CI/CD.\n\n##### Intégrez le scan SAST pour détecter les vulnérabilités\n\nLe SAST de GitLab analyse automatiquement votre code à la recherche de failles de sécurité. Voici comment l'intégrer dans votre fichier `.gitlab-ci.yml` pour détecter des problèmes :\n\n```python\n\nstages:\n  - build\n  - test\n  - sast\n  - deploy\n\nbuild_job:\n  stage: build\n  script:\n    - echo \"Building the project...\"\n    - # Your build commands here\n\ntest_job:\n  stage: test\n  script:\n    - python test_server.py > test-reports/results.xml\n  artifacts:\n    when: always\n    reports:\n      junit: test-reports/results.xml\n    paths:\n      - test-reports/results.xml\n\nsast_job:\n  stage: sast\n  script:\n    - echo \"Running SAST...\"\n  artifacts:\n    reports:\n      sast: gl-sast-report.json\n  only:\n    - branches\n\npages:\n  stage: deploy\n  script:\n    - mv test-reports public\n  artifacts:\n    paths:\n      - public\n\n```\n\nDans cette configuration, l'étape `sast_job` exécute le SAST pour détecter les vulnérabilités dans le code. Un rapport est généré (`gl-sast-report.json`), qui sera inclus dans les artefacts du pipeline. En intégrant des stratégies de sécurité et des frameworks de test robustes, GitLab Duo aide ses clients à s'assurer que leur code généré par l'IA est à la fois efficace et sécurisé.\n\n## Commencez dès maintenant\nL'utilisation de l'IA dans le développement logiciel est très prometteuse, mais présente également de nouveaux défis à relever. En exploitant les fonctionnalités avancées d'outils tels que GitLab Duo et GitLab Pages, les développeurs peuvent désormais réaliser des tests approfondis du code produit par l'IA pour garantir sa sécurité et sa fiabilité. \n\n> [Testez GitLab Ultimate gratuitement pendant 30 jours](https://gitlab.com/-/trials/new?glm_content=+default-saas-trial&glm_source=about.gitlab.com%2Fblog) et accédez aux fonctionnalités avancées de GitLab Duo et GitLab Pages.\n\n## En savoir plus sur la série d’articles dédiée au « Développement de GitLab Duo »\n\n- [Comment nous validons et testons les modèles d'IA à grande échelle](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale/)\n- [Mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n- [Comment nous utilisons nos propres fonctionnalités d’IA](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-how-we-are-dogfooding-our-ai-features/)\n",[675,707,748,1124],{"slug":1210,"featured":6,"template":686},"how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code","content:fr-fr:blog:how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code.yml","How Gitlab Duo Helps Secure And Thoroughly Test Ai Generated Code","fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code.yml","fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code",{"_path":1216,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1217,"content":1223,"config":1230,"_id":1232,"_type":16,"title":1233,"_source":18,"_file":1234,"_stem":1235,"_extension":21},"/fr-fr/blog/developing-gitlab-duo-how-we-are-dogfooding-our-ai-features",{"ogTitle":1218,"schema":1219,"ogImage":1220,"ogDescription":1221,"ogSiteName":737,"noIndex":6,"ogType":738,"ogUrl":1222,"title":1218,"canonicalUrls":1222,"description":1221},"GitLab Duo : nos fonctionnalités d’IA adoptées en interne","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Développement de GitLab Duo : comment nous utilisons nos propres fonctionnalités d’IA \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"David O'Regan\"}],\n        \"datePublished\": \"2024-05-20\",\n      }","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098360/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750098360821.png","Découvrez des exemples concrets de la façon dont nous intégrons l'IA dans notre SDLC et comment nous utilisons des métriques pour évaluer leur réussite.","https://about.gitlab.com/blog/developing-gitlab-duo-how-we-are-dogfooding-our-ai-features",{"title":1224,"description":1225,"authors":1226,"heroImage":1220,"date":1227,"body":1228,"category":14,"tags":1229},"GitLab Duo : comment nous utilisons nos propres fonctionnalités d’IA","Dans le cadre de notre série d’articles de blog, nous partageons des exemples concrets de la façon dont nous intégrons l'IA dans notre cycle de développement logiciel et comment nous utilisons des métriques pour évaluer leur réussite.",[1145],"2024-05-20","***L'IA générative marque une avancée majeure dans le domaine du développement logiciel, simplifiant le processus de développement, de sécurisation et d'exploitation des logiciels. Notre nouvelle série d'articles de blog, rédigée par nos équipes produit et ingénierie, vous propose un aperçu de notre processus de création, de test et de déploiement des fonctionnalités d'IA que vous avez besoin d'intégrer dans l'ensemble de l'entreprise. Explorez les nouvelles capacités de GitLab Duo et découvrez comment elles aideront les équipes DevSecOps à livrer de meilleurs résultats aux clients.***\n\n[GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), notre suite de fonctionnalités alimentées par l'IA, a transformé nos workflows d'ingénierie internes, générant des gains d'efficacité tout au long de notre processus de développement. En tant que fervents partisans du dogfooding et de la transparence, nous voulions montrer comment nos équipes tirent parti de l'IA au quotidien, y compris des fonctionnalités phares comme les suggestions de code de GitLab Duo et [GitLab Duo Chat](https://docs.gitlab.com/ee/user/gitlab_duo_chat/index.html \"Fonctionnalité GitLab Duo Chat\"), pour rationaliser les processus de développement, réduire les efforts manuels et améliorer la productivité. Découvrez dans cet article les bénéfices de GitLab Duo pour nos équipes.\n\n## Comment nos équipes utilisent GitLab Duo ?\n\nNos équipes ont intégré de nombreuses [fonctionnalités de GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/#features \"Fonctionnalités de GitLab Duo\"). Découvrez comment GitLab Duo les aide à mener à bien leurs projets.\n\n### Résumé et documentation\n\n* **Rationaliser le processus de revue de code :** [Gosia Ksionek](https://about.gitlab.com/company/team/#mksionek), Staff Backend Engineer, présente les avantages pratiques de l'IA dans son workflow en utilisant GitLab Duo pour rationaliser le processus de revue de code. Elle utilise efficacement GitLab Duo pour résumer les [merge requests](https://www.youtube.com/watch?v=3SIhe8dgFEc&feature=youtu.be), ce qui facilite et accélère l'examen des modifications apportées au code. En plus de résumer les merge requests, Gosia utilise également GitLab Duo pour [répondre aux questions relatives au code](https://www.youtube.com/watch?v=6n0I53XsjTc) et [expliquer les extraits de code complexes](https://www.youtube.com/watch?v=3m2YRxa1SCY). Cela améliore sa productivité et l'aide à mieux comprendre et gérer des codebases complexes. À travers ces démonstrations, Gosia souligne comment GitLab Duo peut considérablement améliorer l'efficacité et la clarté du processus de développement, ce qui en fait un outil inestimable pour les développeurs.\n\n\u003Ccenter>\n\nDans cette vidéo, Gosia utilise le résumé de merge requests de GitLab Duo :\n\n\u003C!-- ligne vide -->\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/3SIhe8dgFEc?si=Q8JG3Ix3K_THhbpv\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- ligne vide -->\n\nDans cette vidéo, Gosia utilise GitLab Duo pour répondre aux questions relatives au code : \n\n\u003C!-- ligne vide -->\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/6n0I53XsjTc?si=LA9VBHrgXpfJImSL\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- ligne vide -->\n\nDans cette vidéo, Gosia utilise GitLab Duo pour expliquer des extraits de code complexes :\n\n\u003C!-- ligne vide -->\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/3m2YRxa1SCY?si=oms3szKwZoz-4yeq\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- ligne vide -->\n\n\u003C/center>\n\n* **Condenser les fils de commentaires :** [Bartek Marnane](https://about.gitlab.com/company/team/#bmarnane), Vice President of Expansion Software Development, utilise GitLab Duo pour condenser de longs fils de discussion en résumés concis, en veillant à ce que tous les détails pertinents soient capturés lors de la mise à jour des descriptions des tickets.\n* **Créer une nouvelle documentation :** [Taylor McCaslin](https://about.gitlab.com/company/team/#tmccaslin), Group Manager, Product - Data Science Section, a tiré parti de GitLab Duo afin de [créer une nouvelle documentation pour GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo/index.html \"Documentation de GitLab Duo\"). Ce qui lui a permis d'améliorer la clarté et la cohérence du contenu, tout en réduisant considérablement le temps requis pour documenter de nouvelles fonctionnalités.\n* **Rédiger des notes de version :** [Amanda Rueda](https://about.gitlab.com/company/team/#amandarueda), Senior Product Manager, utilise GitLab Duo pour [rédiger des résumés brefs et percutants pour les notes de version](https://gitlab.com/groups/gitlab-org/-/epics/10267), mettant en évidence les modifications et leur valeur pour les utilisateurs. En utilisant des prompts bien conçus comme ci-dessous, Amanda dynamise son workflow et s'assure que chaque note de version est claire, concise et centrée sur l'utilisateur, améliorant ainsi la communication globale et l'expérience utilisateur :\n  \u003Cbr>\u003Cbr>*« Veuillez créer un résumé en deux phrases de ce changement, qui peut être utilisé pour nos notes de version. Le ton doit être décontracté et le tutoiement doit être utilisé. Le résumé doit inclure une description du problème ou du changement apporté et être lié à la valeur que nous créons pour vous, l'utilisateur. »*\n  \u003Cbr>\u003Cbr>\n      - Voici quelques exemples de notes de version co-créées avec GitLab Duo :\n        - [Options étendues pour trier votre roadmap](https://gitlab.com/gitlab-org/gitlab/-/issues/460492)\n        - [Clarté du tableau de bord des tickets avec jalons et itérations](https://gitlab.com/gitlab-org/gitlab/-/issues/25758)\n        - [Fonctionnalités de gestion de la conception étendues aux équipes produit](https://gitlab.com/gitlab-org/gitlab/-/issues/438829)\n* **Optimiser la navigation sur le site de documentation :** [Suzanne Selhorn](https://about.gitlab.com/company/team/#sselhorn), Staff Technical Writer, a tiré parti de GitLab Duo pour [optimiser la navigation à gauche de la documentation](https://docs.gitlab.com/ee/user/get_started/get_started_projects.html) en fournissant un ordre de pages basé sur le workflow. Suzanne a fourni une liste de fonctionnalités à GitLab Duo, qui a généré l'ordre optimal, mettant à jour la navigation de gauche en conséquence. GitLab Duo a également rédigé la documentation [de démarrage](https://docs.gitlab.com/ee/user/get_started/get_started_planning_work.html) beaucoup plus rapidement que si Suzanne l’avait fait manuellement.\n\n### Définition des objectifs et alignement de l'équipe\n\n* **Rédiger et affiner des OKR :** [François Rosé](https://about.gitlab.com/company/team/#francoisrose), Engineering Manager, trouve l'aide de [GitLab Duo Chat](https://about.gitlab.com/blog/gitlab-duo-chat-now-generally-available/) inestimable pour rédiger et affiner des [OKR](https://about.gitlab.com/fr-fr/blog/what-is-an-okr-definition/ \"Qu'est-ce qu'un ORK ?\"). En formulant des objectifs clairs et efficaces, François améliore la définition des objectifs et l'alignement de son équipe. En utilisant le chat, François s'assure que chaque OKR est précis, actionnable et aligné avec les objectifs, ce qui améliore la performance et la cohésion globales de l'équipe. Voici un exemple de prompt qu'il utilise :\u003Cbr>\u003Cbr>\n\n     *« Voici un OKR que je pense créer :*\n\n  ```\n  *Objectif : Revenir sur les rétrospectives, pour favoriser une équipe prospère*\n\n  *Résultat clé : Mesurer la satisfaction des rétrospectives de 100 % des membres de l'équipe*\n\n  *Résultat clé : Identifier 3 améliorations pour les rétrospectives asynchrones*\n\n  *Résultat clé : Mettre en œuvre 1 amélioration*\n\n  *Veuillez fournir des commentaires directs sur la manière d'améliorer la formulation de cet objectif et de ces résultats clés. »*\n  ```\n\n  \u003Cbr>\u003Cbr>\n* **Rationaliser les processus de recrutement :** GitLab Duo Chat a aidé [Denys Mishunov](https://about.gitlab.com/company/team/#dmishunov), Staff Frontend Engineer, à mettre à jour le modèle d'e-mail pour les candidats aux entretiens techniques en formulant un texte clair et concis. De cette manière, l'équipe collabore pour affiner la communication afin de s'assurer que les candidats reçoivent toutes les informations nécessaires.\n\n### Réponse et configuration des incidents\n\n* **Résumer les incidents en production :** [Steve Xuereb](https://about.gitlab.com/company/team/#sxuereb), Staff Site Reliability Engineer, utilise GitLab Duo pour résumer les incidents en production et créer des revues d'incidents détaillées, rationalisant ainsi le processus de documentation.\n* **Créer des fichiers « .gitlab-ci.yml » :**  Steve utilise également la fonctionnalité Chat pour créer des fichiers de type « .gitlab-ci.yml », ce qui a considérablement accéléré son workflow. De plus, l'[explication de code](https://docs.gitlab.com/ee/user/ai_features.html#code-explication) fournit des réponses détaillées qui sont utiles lors d'incidents, améliorant sa productivité et sa compréhension du codebase.\n\n### Génération de code et tests\n\n* **Développement full stack :** [Peter Hegman](https://about.gitlab.com/company/team/#peterhegman), Senior Frontend Engineer, utilise les [suggestions de code pour son développement JavaScript et Ruby](https://gitlab.com/gitlab-org/gitlab/-/issues/435783#note_1731321963). Les suggestions de code sont devenues un outil puissant pour les développeurs évoluant au sein d'une pile technique complète.\n* **Générer des scripts Python :** Denys a mené [une expérience en utilisant GitLab Duo pour une tâche non liée à GitLab](https://gitlab.com/gitlab-org/ai-powered/ai-framework/ai-experimentation). Cet exemple met en évidence la flexibilité et l'utilité de nos outils d'IA au-delà des tâches de développement de logiciels typiques.\n\n\u003Ccenter>\n\nRegardez comment Denys utilise GitLab Duo pour générer des scripts Python afin de récupérer des données de contenu et les stocker localement :\n\n\u003C!-- ligne vide -->\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/30ZTtk4K5yU?si=p5ZcFLg6dTZL5gFE\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- ligne vide -->\n\n\u003C/center>\n\n### Recherche et assistance\n\n* **Générer le code source de test :**  [Michael Friedrich](https://about.gitlab.com/company/team/#dnsmichi), Senior Developer Advocate, utilise GitLab Duo pour générer le code source de test pour les composants [CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce que l'approche CI/CD ?\"). Cette approche a été partagée dans diverses conférences et présentations, notamment lors de l’événement Open Source @ Siemens ([consultez la présentation](https://go.gitlab.com/duA2Fc)). De cette manière, l'utilisation de GitLab Duo permet de s'assurer que le code est cohérent, bien documenté et aligné avec nos bonnes pratiques. Découvrez [l’exemple de Rust](https://gitlab.com/components/rust#contributing).\n\n![Exemple Rust](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098367/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750098367547.png)\n\n* **Rationaliser les tâches de recherche :** Les membres de notre équipe se tournent régulièrement vers le chat lorsqu'ils ont des questions sur les fonctionnalités de GitLab. « Lorsque j'ai une question sur les fonctionnalités de GitLab, j'utilise systématiquement le chat plutôt que d'ouvrir 100 onglets de navigateur. Ce workflow m'aide à apporter une aide efficace aux utilisateurs du forum de notre communauté. Par exemple, j'ai récemment [aidé un utilisateur dans le cadre d'un déploiement SSH](https://forum.gitlab.com/t/how-to-make-ssh-deployment-more-clear-in-gitlab/102051/4?u=dnsmichi) en utilisant cette méthode. », indique Michael. L'utilisation du chat permet non seulement de gagner du temps, mais aussi de fournir des informations rapides et précises, améliorant ainsi l'assistance que nous offrons à notre communauté.\n\n### Test de fonctionnalités\n\n* **Tester les nouvelles fonctionnalités :** Nos ingénieurs utilisent GitLab Duo pour tester de nouvelles fonctionnalités telles que [la prise en charge de Markdown dans les suggestions de code](https://gitlab.com/gitlab-org/gitlab/-/issues/443365). « Je dois tester la prise en charge de Markdown dans les suggestions de code pour rédiger des articles de blog et la documentation de GitLab dans VS Code. J'ai vu que cela avait été fusionné pour la version 17.0 », indique l'un des membres de notre équipe. En testant ces fonctionnalités en interne, nous nous assurons qu'elles répondent à nos normes de qualité avant leur sortie.\n\n### Comprendre les codebases externes\n\n* **Expliquer les projets externes :** La fonctionnalité « /explain » de GitLab Duo est particulièrement utile pour comprendre les projets externes importés dans GitLab. Cette capacité a été mise en avant dans un récent livestream animé par Michael Friedrich et Eddie Jaoude, expert en open source. Dans cette vidéo, Michael nous fait savoir qu’il utilise la fonctionnalité « /explain » sur des projets externes pour comprendre le code source et qu’il a présenté cette idée pour en apprendre davantage sur les projets open source, les dépendances, etc. Cette fonctionnalité est inestimable pour les développeurs qui doivent rapidement comprendre les fonctionnalités et les dépendances de codebases inconnues, ce qui améliore considérablement leur efficacité et leur compréhension.\n\n\u003Ccenter>\nRegardez la vidéo de Michael sur la fonctionnalité « /explain » lors du livestream avec Eddie Jaoude :\n\u003C!-- ligne vide -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/L2Mx8hOhkEE?si=R7W3v4EDqeJCaPOw\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- ligne vide -->\n\n\u003C/center>\n\n## Quels sont les avantages de GitLab Duo ?\n\nL'intégration de GitLab Duo a eu de nombreux impacts positifs, ce qui a considérablement amélioré nos workflows d'ingénierie et de développement de produits :\n\n* De nombreuses tâches qui nécessitaient auparavant une intervention manuelle sont désormais automatisées, ce qui libère un temps précieux pour nos ingénieurs. Par exemple, la synthèse de longs fils de discussion et la création de code standard sont désormais plus efficaces, ce qui permet à notre équipe de se concentrer sur des problèmes plus complexes.\n* Le temps nécessaire pour documenter et résumer les tickets a diminué, ce qui permet une diffusion de l'information et une prise de décision plus rapides.\n* Avec les suggestions de code et les explications assistées par l'IA, nos équipes produisent un code de meilleure qualité avec moins d'erreurs et des processus de débogage plus rapides. L'intégration de GitLab Duo dans les revues d'incidents et l'assistance au codage a rendu les revues de code plus efficaces et plus efficientes.\n* Les tâches administratives, telles que la rédaction d'OKR et la création de notes de version, ont été rationalisées.\n\nGitLab Duo a contribué non seulement à améliorer notre efficacité, mais également à améliorer la qualité et la rapidité de nos processus de développement, illustrant ainsi le pouvoir de transformation de l'IA dans le développement de logiciels.\n\n## Et après ?\n\nNous nous engageons à intégrer davantage l'IA dans nos workflows et à améliorer continuellement les fonctionnalités de GitLab Duo en fonction des retours internes et de l'évolution des besoins. La collecte de données avec le tableau de bord d'analyse d'impact de l'IA guidera les améliorations et fera en sorte que GitLab Duo reste à la pointe des outils de développement pilotés par l'IA.\n\n![Dogfooding appliqué à GitLab Duo - tableau de bord d'analyse de l'IA](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098367/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098367547.png)\n\n> [Essayez GitLab Duo gratuitement dès aujourd'hui !](https://about.gitlab.com/fr-fr/gitlab-duo/#free-trial)\n\n## En savoir plus sur le « Développement de GitLab Duo »\n\n* [Comment nous validons et testons les modèles d'IA à grande échelle](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale/)\n* [Mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/)\n* [Tester et sécuriser le code généré par l'IA](https://about.gitlab.com/fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/ \"Tester et sécuriser le code généré par l'IA\")\n* [L'IA combinée à l'analyse des causes profondes pour réparer les pipelines CI/CD](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/ \"L'IA combinée à l'analyse des causes profondes pour réparer les pipelines CI/CD\")",[675,747,677,746,936],{"slug":1231,"featured":93,"template":686},"developing-gitlab-duo-how-we-are-dogfooding-our-ai-features","content:fr-fr:blog:developing-gitlab-duo-how-we-are-dogfooding-our-ai-features.yml","Developing Gitlab Duo How We Are Dogfooding Our Ai Features","fr-fr/blog/developing-gitlab-duo-how-we-are-dogfooding-our-ai-features.yml","fr-fr/blog/developing-gitlab-duo-how-we-are-dogfooding-our-ai-features",{"_path":1237,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1238,"content":1244,"config":1253,"_id":1255,"_type":16,"title":1256,"_source":18,"_file":1257,"_stem":1258,"_extension":21},"/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai",{"ogTitle":1239,"schema":1240,"ogImage":1241,"ogDescription":1242,"ogSiteName":737,"noIndex":6,"ogType":738,"ogUrl":1243,"title":1239,"canonicalUrls":1243,"description":1242},"GitLab Duo : ROI et tableau d'analyse d'impact de l’IA","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Développement de GitLab Duo : mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Haim Snir\"}],\n        \"datePublished\": \"2024-05-15\",\n      }","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098611/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750098611370.png","Découvrez cette nouvelle fonctionnalité qui fournit des métriques détaillées, permettant de comprendre l'efficacité des investissements en IA.","https://about.gitlab.com/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai",{"title":1245,"description":1246,"authors":1247,"heroImage":1241,"date":1249,"body":1250,"category":14,"tags":1251},"GitLab Duo : mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact","Notre série d’articles de blog se poursuit avec la présentation d'une nouvelle fonctionnalité qui fournit des métriques détaillées, telles que le taux d'utilisation des suggestions de code, permettant de comprendre l'efficacité des investissements en IA.",[1248],"Haim Snir","2024-05-15","***L'IA générative marque une avancée majeure dans le domaine du développement logiciel, simplifiant le processus de développement, de sécurisation et d'exploitation des logiciels. Notre nouvelle série d'articles de blog, rédigée par nos équipes produit et ingénierie, vous propose un aperçu de notre processus de création, de test et de déploiement des fonctionnalités d'IA que vous avez besoin d'intégrer dans l'ensemble de l'entreprise. Explorez les nouvelles capacités de GitLab Duo et découvrez comment elles aideront les équipes DevSecOps à livrer de meilleurs résultats aux clients.***\n\nÀ l'heure où les entreprises adoptent [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/), notre suite de fonctionnalités d'IA visant à optimiser les workflows [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ?\"), les chefs d'entreprise et les responsable en ingénierie ont besoin d'une visibilité en temps réel sur le retour sur investissement de cette technologie. Les données d'utilisation granulaires, l'amélioration des performances, le compromis entre rapidité, sécurité et qualité, ainsi que d'autres [métriques de productivité](https://about.gitlab.com/blog/measuring-ai-effectiveness-beyond-developer-productivity-metrics/) sont essentiels pour évaluer l'efficacité de l'IA dans le développement de logiciels. C'est pour cette raison que nous avons créé le tableau de bord d'analyse d'impact de l'IA pour GitLab Duo. Disponible dans GitLab 17.0, cette fonctionnalité offre un nouveau moyen de mesurer le retour sur investissement de l'IA.\n\n> Découvrez l'avenir du développement logiciel piloté par l'IA lors de notre événement virtuel à l’occasion du lancement de GitLab 17. [Accédez au replay](https://about.gitlab.com/fr-fr/seventeen/ \"Replay du lancement de GitLab 17\") !\n\n## Comprendre le retour sur investissement des fonctionnalités de GitLab Duo alimentées par l'IA\n\nPour évaluer correctement l'impact de l'IA sur le cycle de vie du développement logiciel, les entreprises nous ont indiqué qu'elles souhaitaient :\n\n* Visualiser les indicateurs qui se sont améliorés grâce aux investissements dans l'IA,\n* Comparer les performances des équipes qui utilisent l'IA avec celles des équipes qui ne l’utilisent pas,\n* Suivre les progrès de l'adoption de l'IA,\n* Automatiser l'extraction d'informations à partir d'un grand volume de données de performance.\n\nLe tableau de bord d'analyse d'impact de l'IA regroupe ces fonctionnalités, et bien plus encore, avec une visualisation personnalisable, permettant aux équipes de :\n\n* **Surveiller l'adoption de l'IA :** observer les taux d'adoption de l'IA permet aux organisations d'évaluer les stratégies organisationnelles pour maximiser le retour sur investissement de leurs investissements technologiques. \n* **Suivre les améliorations en termes de performance :** en suivant les indicateurs de performance et en observant les modifications après l'adoption de l'IA, les dirigeants peuvent rapidement évaluer les avantages et la valeur commerciale des fonctionnalités d'IA.\n\n## Qu'est-ce que le tableau de bord d'analyse d'impact de l'IA ?\n\nDans cette première version du tableau de bord d'analyse d'impact de l'IA, nous nous concentrons sur la mise à disposition d'informations et de métriques sur l'adoption de la fonctionnalité de suggestions de code de GitLab Duo, notamment :\n\n* **Les métriques d'utilisation détaillées :** découvrez le ratio d'utilisation mensuelle de la fonctionnalité de suggestions de code par rapport au nombre total de contributeurs uniques au code pour savoir dans quelle mesure les suggestions de code sont adoptées au sein de vos équipes.\n* **L'étude de corrélation :** examinez comment les tendances de l'utilisation de l'IA au sein d'un projet ou d'un groupe influencent d'autres métriques de productivité essentielles, affichées pour le mois en cours et les six derniers mois. \n\n  * Pour cette analyse de corrélation, nous avons ajouté une nouvelle métrique : le « Taux d'utilisation des suggestions de code » comme variable indépendante (la cause). Le taux d'utilisation mensuel des suggestions de code représente le nombre d'utilisateurs mensuels uniques de la fonctionnalité de suggestions de code divisé par le nombre total de [contributeurs](https://docs.gitlab.com/ee/user/profile/contributions_calendar.html#user-contribution-events) uniques par mois. GitLab prend en compte le nombre total de contributeurs uniques au code par mois, ce qui signifie que seuls les utilisateurs dont les événements sont poussés sont inclus dans le calcul.\n  * Comme variables dépendantes (l'effet), nous avons ajouté les [indicateurs de performance](https://docs.gitlab.com/ee/user/analytics/value_streams_dashboard.html#dashboard-metrics-and-drill-down-reports) suivants : la durée du cycle, le délai d'exécution et la fréquence de déploiement. Et comme [mesures de qualité et de sécurité](https://docs.gitlab.com/ee/user/analytics/value_streams_dashboard.html#dashboard-metrics-and-drill-down-reports), nous avons ajouté le taux d'échec des modifications et les vulnérabilités critiques. \n* **Une vue comparative :**  comprenez la différence de performance des équipes qui utilisent ou non l'IA et gérez le compromis entre rapidité, qualité et exposition à la sécurité.\n\n![Comparaison de l'utilisation de l'IA et des performances SDLC](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098621/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750098620998.png)\n\n## Quelles sont les prochaines étapes ?\n\nA l'avenir, nous souhaitons faire évoluer notre tableau de bord d’analyse d'impact de l’IA en ajoutant :\n\n1. De nouvelles vignettes telles que les « Sièges GitLab Duo : assignés et utilisés », les « Suggestions de code : taux d'acceptation % » et le « GitLab Duo Chat : utilisateurs uniques » pour obtenir un aperçu plus approfondi des modèles d'utilisation de GitLab Duo.\n\n![Tableau de bord d'analyse d'impact de l'IA](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098621/Blog/Content%20Images/Blog/Content%20Images/Screenshot_2024-07-17_at_12.50.31_aHR0cHM6_1750098620999.png)\n\n2. Un nouveau diagramme de comparaison pour aider les utilisateurs à observer la corrélation des changements d'une métrique avec les changements des autres :\n\n![Histogramme de comparaison de l'impact de l'IA](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098621/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750098621000.png)\n\n3. Des statistiques d'IA dans le [rapport d'analyse des contributions](https://docs.gitlab.com/ee/user/group/contribution_analytics/index.html) pour comprendre comment les utilisateurs interagissent avec les fonctionnalités d'IA. Découvrez quels utilisateurs tirent parti des fonctionnalités d'IA et si leurs performances ont évolué au fil du temps :\n\n![Rapport d'analyse des contributions](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098621/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098621001.png)\n\n## Commencez dès aujourd'hui\n\nNous sommes très enthousiastes concernant le potentiel du tableau de bord d'analyse d'impact de l'IA. D'une part pour sa capacité à démontrer les résultats commerciaux réels de l'IA, mais aussi pour prendre des décisions plus éclairées concernant l'IA du futur dans le cadre de l'optimisation du cycle de vie DevSecOps. Pour plus d'informations sur la suite des événements et pour partager vos commentaires ou vos questions, [consultez notre epic dédié au tableau de bord d'analyse d'impact de l'IA](https://gitlab.com/groups/gitlab-org/-/epics/12978).\n\n[Essayez GitLab Duo gratuitement](https://about.gitlab.com/fr-fr/gitlab-duo/#free-trial \"Essayer gratuitement GitLab Duo\") dès aujourd'hui !\n\n## En savoir plus sur la série d’articles dédiée au « Développement de GitLab Duo »\n\n* [GitLab Duo : comment nous validons et testons les modèles d'IA à grande échelle](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale/ \"Développement de GitLab Duo : comment nous validons et testons les modèles d'IA à grande échelle\")\n* [GitLab Duo : mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/ \"Développement de GitLab Duo : mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact\")\n* [GitLab Duo : comment nous utilisons nos propres fonctionnalités d’IA](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-how-we-are-dogfooding-our-ai-features/ \"Développement de GitLab Duo : comment nous utilisons nos propres fonctionnalités d’IA\")\n* [GitLab Duo : tester et sécuriser le code généré par l'IA](https://about.gitlab.com/fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/ \"Développement de GitLab Duo : tester et sécuriser le code généré par l'IA\")\n\n*Avertissement : cet article de blog contient des informations relatives aux produits, fonctionnalités et caractéristiques à venir. Il est important de noter que les informations contenues dans cet article de blog ne sont fournies qu'à titre informatif. Veuillez ne pas vous fier à ces informations à des fins d'achat ou de planification. Comme pour tout projet, les éléments mentionnés dans cet article sont susceptibles de changer ou d’être retardés. Le développement, la sortie et le calendrier de tout produit ou fonctionnalité restent à la seule discrétion de GitLab.*",[675,1252,677],"performance",{"slug":1254,"featured":93,"template":686},"developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai","content:fr-fr:blog:developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai.yml","Developing Gitlab Duo Ai Impact Analytics Dashboard Measures The Roi Of Ai","fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai.yml","fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai",{"_path":1260,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1261,"content":1267,"config":1275,"_id":1277,"_type":16,"title":1278,"_source":18,"_file":1279,"_stem":1280,"_extension":21},"/fr-fr/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale",{"ogTitle":1262,"schema":1263,"ogImage":1264,"ogDescription":1265,"ogSiteName":737,"noIndex":6,"ogType":738,"ogUrl":1266,"title":1262,"canonicalUrls":1266,"description":1265},"GitLab Duo : validation et tests des modèles d'IA","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Développement de GitLab Duo : comment nous validons et testons les modèles d'IA à grande échelle\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Susie Bitters\"}],\n        \"datePublished\": \"2024-05-09\",\n      }","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659856/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25.png","Découvrez comment nous évaluons les LLM, les adaptons à des cas d'utilisation et les affinons pour fournir de meilleures réponses aux utilisateurs. ","https://about.gitlab.com/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale",{"title":1268,"description":1269,"authors":1270,"heroImage":1264,"date":1271,"body":1272,"category":14,"tags":1273},"GitLab Duo : comment nous validons et testons les modèles d'IA à grande échelle","Notre série d’articles de blog débute avec un aperçu de la façon dont nous évaluons les grands modèles de langage (LLM), les adaptons à des cas d'utilisation et les affinons pour fournir de meilleures réponses aux utilisateurs.",[910],"2024-05-09","***L'[IA générative](https://about.gitlab.com/fr-fr/topics/agentic-ai/ \"Qu'est-ce que l'IA générative ?\") marque une avancée majeure dans le domaine du développement logiciel, simplifiant le processus de développement, de sécurisation et d'exploitation des logiciels. Notre nouvelle série d’articles de blog, rédigée par nos équipes produit et ingénierie, vous propose un aperçu de notre processus de création, de test et de déploiement des fonctionnalités d'IA que vous avez besoin d'intégrer dans l'ensemble de l'entreprise. Explorez les nouvelles capacités de GitLab Duo et découvrez comment elles aideront les équipes [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps?\") à livrer de meilleurs résultats aux clients.***\n\nGitLab attache une grande importance à la confiance que nos clients nous accordent. Maintenir cette confiance implique une transparence dans la manière dont nous concevons, évaluons et garantissons la qualité des fonctionnalités d'IA de [GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo/ \"GitLab Duo\"). Les fonctionnalités de GitLab Duo reposent sur un ensemble diversifié de modèles, ce qui nous permet de prendre en charge une multitude de cas d'utilisation et apporte de la flexibilité à nos clients. GitLab n'est pas lié à un seul fournisseur de modèles. Nous utilisons actuellement les modèles de fondation de [Google](https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/blob/main/ai_gateway/models/vertex_text.py?ref_type=heads#L86) et [Anthropic](https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/blob/main/ai_gateway/models/anthropic.py?ref_type=heads#L62). Néanmoins, nous procédons continuellement à l'évaluation des modèles les plus adaptés aux cas d'utilisation de GitLab Duo. Dans cet article, nous vous présentons un aperçu de notre processus de validation des modèles d'IA.\n\n> [Essayez GitLab Duo gratuitement](https://about.gitlab.com/fr-fr/gitlab-duo/#free-trial \"Essai gratuit de GitLab Duo\") dès aujourd'hui !\n\n## Comprendre les grands modèles de langage (LLM)\n\nLes [grands modèles de langage (LLM)](https://about.gitlab.com/fr-fr/blog/large-language-model/ \"Qu'est-ce qu'un grand modèle de langage ?\") sont des modèles d'IA générative qui alimentent de nombreuses fonctionnalités d'IA sur l'ensemble de la plateforme. Entraînés sur de vastes ensembles de données, les LLM prédisent le mot suivant dans une séquence en fonction du contexte précédent. Sur la base d'un prompt, ils génèrent un texte semblable à celui d’un être humain en échantillonnant à partir de la distribution de probabilité des mots conditionnée par le prompt.\n\nLes LLM permettent des suggestions de code intelligentes, des chatbots conversationnels, des explications de code, des analyses de vulnérabilités et bien plus encore. Leur capacité à produire des résultats variés pour un prompt donné rend difficile l'évaluation standardisée de la qualité. Les LLM peuvent être optimisés pour différentes caractéristiques. C'est la raison pour laquelle tant de modèles d'IA sont en cours de développement.\n\n## Tester à grande échelle\n\nContrairement aux systèmes logiciels traditionnels où les entrées et les sorties peuvent être plus facilement définies et testées, les LLM produisent des résultats souvent nuancés, diversifiés et dépendants du contexte. Tester ces modèles nécessite des stratégies complètes qui tiennent compte des interprétations subjectives et variables de la qualité, ainsi que de la nature stochastique de leurs résultats. Nous ne pouvons donc pas juger de la qualité du résultat d'un LLM de manière individuelle ou anecdotique ; nous devons plutôt être capables d'examiner le schéma global du comportement d'un LLM. Pour avoir une idée de ces schémas, nous devons réaliser des tests à grande échelle. Les tests à grande échelle font référence au processus d'évaluation des performances, de la fiabilité et de la robustesse d'un système ou d'une application sur un large éventail de données et de cas d'utilisation. Notre [Framework d'évaluation centralisé (CEF)](https://about.gitlab.com/direction/ai-powered/ai_framework/ai_evaluation/) utilise des milliers de prompts liés à des dizaines de cas d'utilisation pour nous permettre d'identifier des schémas significatifs et d'évaluer le comportement global de nos modèles LLM de fondation et des fonctionnalités GitLab Duo dans lesquelles ils sont intégrés.\n\nLes tests à grande échelle nous aident à :\n\n* **Garantir la qualité :** les tests à grande échelle nous permettent d'évaluer la qualité et la fiabilité de ces modèles sur un large éventail de scénarios et d’entrées. En validant les résultats de ces modèles à grande échelle, nous pouvons commencer à identifier des schémas et à atténuer les problèmes potentiels tels que les biais systématiques, les anomalies et les inexactitudes.\n* **Optimiser les performances :** la mise à l'échelle des efforts de test permet à GitLab d'évaluer les performances et l'efficacité des LLM dans des conditions réelles. Cela comprend l'évaluation de facteurs tels que la qualité du résultat, la latence et le coût pour optimiser le déploiement et l'exploitation de ces modèles dans les fonctionnalités de GitLab Duo.\n* **Atténuer les risques :** tester les LLM à grande échelle contribue à atténuer les risques associés à leur déploiement dans des applications critiques. En effectuant des tests approfondis sur divers ensembles de données et cas d'utilisation, nous pouvons identifier et résoudre les défaillances potentielles, les vulnérabilités de sécurité et les considérations éthiques avant qu'ils n'affectent nos clients.\n\nTester les LLM à grande échelle est impératif pour garantir leur fiabilité et leur robustesse en vue de leur déploiement au sein de la [plateforme DevSecOps de GitLab](https://about.gitlab.com/fr-fr/platform/ \"Plateforme DevSecOps de GitLab\"). En investissant dans des stratégies de test complètes qui englobent divers ensembles de données, cas d'utilisation et scénarios, GitLab s'efforce de libérer tout le potentiel des workflows alimentés par l'IA tout en atténuant les risques potentiels.\n\n### Comment nous testons à grande échelle\n\nVoici les étapes que nous suivons pour tester les LLM à grande échelle.\n\n#### Étape 1 : Créer une bibliothèque de prompts comme proxy pour la production\n\nAlors que d'autres entreprises consultent et utilisent les données clients pour entraîner leurs fonctionnalités d'IA, GitLab ne procède actuellement pas de la sorte. En conséquence, nous avons dû développer une bibliothèque de prompts complète qui sert de proxy à la fois pour la mise à l'échelle et pour l'activité de production.\n\nCette bibliothèque de prompts est composée de questions et de réponses. Les questions représentent les types de requêtes ou d'entrées que nous nous attendons à voir en production, tandis que les réponses représentent une vérité terrain de ce que serait notre réponse idéale. Cette réponse de référence pourrait également être considérée mentalement comme une réponse cible. La question tout comme la réponse peuvent être générées par des humains, mais ne le sont pas nécessairement. Ces paires de questions/réponses nous offrent une base de comparaison et un cadre de référence qui nous permettent de faire ressortir les différences entre les modèles et les fonctionnalités. Lorsque l'on pose la même question à plusieurs modèles et qu'ils génèrent des réponses différentes, nous pouvons utiliser notre réponse de référence pour déterminer quel modèle a fourni une réponse qui est le plus étroitement alignée avec notre cible et les noter en conséquence.\n\nUne fois de plus, il est essentiel qu'une bibliothèque de prompts complète soit représentative des entrées que nous prévoyons de rencontrer en production. Nous voulons savoir dans quelle mesure les modèles de fondation s'adaptent à notre cas d'utilisation spécifique et dans quelle mesure nos fonctionnalités sont performantes. Il existe de nombreux ensembles de données de prompts de référence, mais ceux-ci peuvent ne pas correspondre aux cas d'utilisation que nous envisageons pour les fonctionnalités chez GitLab. Notre bibliothèque de prompts, en revanche, est conçue pour être spécifique aux fonctionnalités et aux cas d'utilisation de GitLab.\n\n#### Étape 2 : Performance du modèle de référence\n\nUne fois que nous avons créé une bibliothèque de prompts qui reflète avec précision l'activité de production, nous intégrons ces questions dans [différents modèles](https://about.gitlab.com/direction/ai-powered/ai_framework/ai_evaluation/foundation_models/) pour tester dans quelle mesure ils répondent aux besoins de nos clients. Nous comparons chaque réponse à notre vérité terrain et lui attribuons un classement basé sur une série de métriques, incluant : le [score de similarité cosinus](https://about.gitlab.com/direction/ai-powered/ai_framework/ai_evaluation/metrics/#similarity-scores), le [score de similarité croisée](https://about.gitlab.com/direction/ai-powered/ai_framework/ai_evaluation/metrics/#cross-similarity-score), le [juge LLM](https://about.gitlab.com/direction/ai-powered/ai_framework/ai_evaluation/metrics/#llm-judge) et le [filtrage de consensus avec un juge LLM](https://about.gitlab.com/direction/ai-powered/ai_framework/ai_evaluation/metrics/#consensus-filtering-with-llm-judge). Cette première itération nous fournit une base de référence pour évaluer la performance de chaque modèle et guide notre sélection d'un modèle de fondation pour nos fonctionnalités. Par souci de brièveté, nous n'entrerons pas dans les détails ici, mais nous vous encourageons à en savoir plus sur ces métriques [en consultant notre page AI Evaluation Metrics](https://about.gitlab.com/direction/ai-powered/ai_framework/ai_evaluation/metrics/). Il est important de noter que ce n'est pas un problème résolu ; l'industrie de l'IA au sens large mène activement des recherches et développe de nouvelles techniques. L'équipe de validation des modèles de GitLab reste à l'affût des actualités de ce secteur et itère continuellement sur la façon dont nous mesurons et évaluons les LLM que GitLab Duo utilise.\n\n#### Étape 3 : Développer des fonctionnalités\n\nMaintenant que nous disposons d'une base de référence pour les performances du modèle que nous avons sélectionné, nous pouvons commencer à développer nos fonctionnalités en toute confiance. Bien que l'ingénierie des prompts suscite beaucoup d'enthousiasme, se concentrer uniquement sur le changement du comportement d'un modèle via le prompting (ou toute autre technique) sans validation signifie que vous opérez à l'aveugle et que vous surajustez très probablement vos prompts. Vous pourriez résoudre un problème, mais en causer une dizaine d'autres sans le savoir. La création d'une base de référence pour évaluer les performances d'un modèle nous permet de suivre l'évolution du comportement au fil du temps pour tous les cas d'utilisation dont nous avons besoin. Chez GitLab, nous revalidons quotidiennement les performances de nos fonctionnalités pendant le développement actif pour nous assurer que toutes les modifications améliorent la fonctionnalité globale.\n\n#### Étape 4 : Itérer encore et encore\n\nVoici comment fonctionnent nos itérations expérimentales. À chaque cycle, nous examinons les scores de nos tests à grande échelle pour identifier des schémas :\n\n* Quels sont les points communs entre les domaines les moins performants de notre fonctionnalité ?\n* Notre fonctionnalité se comporte-t-elle mal en fonction d'une métrique spécifique ou d'un cas d'utilisation particulier ?\n* Observons-nous des erreurs récurrentes qui apparaissent en réponse à un certain type de question ?\n\nLes schémas de ce type ne commencent à émerger que lorsque nous effectuons des tests à grande échelle, ce qui nous permet de cibler nos versions expérimentales. Sur la base de ces schémas, nous proposons une variété de fonctionnalités expérimentales ou d'approches pour essayer d'améliorer les performances dans un domaine spécifique et sur une métrique spécifique.\n\nCependant, les tests à grande échelle sont à la fois coûteux et chronophages. Pour permettre une itération plus rapide et moins coûteuse, nous concevons un ensemble de données à plus petite échelle qui agira comme un mini-proxy. Le sous-ensemble ciblé sera pondéré pour inclure les paires de questions/réponses que nous souhaitons améliorer, et le sous-ensemble plus large comprendra également un échantillonnage de tous les autres cas d'utilisation et scores pour nous assurer que nos modifications n'affectent pas négativement la fonctionnalité de manière générale. Le but sera d'effectuer la modification et de l'exécuter sur le sous-ensemble de données ciblé et d'observer comment la nouvelle réponse se compare à la base de référence et comment elle se compare à la vérité terrain.\n\nUne fois que nous avons trouvé un prompt qui répond au cas d'utilisation spécifique sur lequel nous travaillons avec le sous-ensemble ciblé, nous validons ce prompt par rapport à un sous-ensemble de données plus large afin de nous assurer qu'il n'affecte pas négativement d'autres aspects de la fonctionnalité. Ce n'est que lorsque nous pensons que le nouveau prompt améliore nos performances dans notre domaine cible grâce aux métriques de validation ET qu'il ne dégrade pas les performances ailleurs, que nous poussons cette modification en production.\n\nL'ensemble du framework d'évaluation centralisé est ensuite exécuté avec le nouveau prompt et nous validons qu'il a augmenté les performances de l'ensemble de la fonctionnalité par rapport à la base de référence de la veille. C'est ainsi que GitLab itère constamment afin de s'assurer que vous tirez parti des meilleures et des plus récentes performances des fonctionnalités alimentées par l'IA dans l'écosystème GitLab. Cette approche nous permet de nous assurer que nous continuons à travailler plus rapidement, ensemble.\n\n### Rendre GitLab Duo encore meilleur\n\nNous espérons que cet article vous donnera un aperçu de la façon dont nous développons de manière responsable les fonctionnalités de GitLab Duo. Ce processus a été développé alors que nous avons mis les [suggestions de code GitLab Duo](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/) et le [GitLab Duo Chat](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html) en phase de disponibilité générale. Nous avons également intégré ce processus de validation dans notre processus de développement lorsque nous itérons sur les fonctionnalités de GitLab Duo. Il faut beaucoup de tâtonnements, et il arrive souvent qu'en corrigeant un élément, on en détériore trois autres. Mais nous disposons d’informations basées sur les données concernant ces impacts, ce qui nous aide à nous assurer que GitLab Duo s'améliore constamment.\n\n> [Essayez GitLab Duo gratuitement](https://about.gitlab.com/fr-fr/gitlab-duo/#free-trial \"Essai gratuit de GitLab Duo\") dès aujourd'hui !\n\n\u003Cfigure class=video_container>\n\u003Ciframe width=560 height=315 src=\"https://www.youtube-nocookie.com/embed/LifJdU3Qagw?si=A4kl6d32wPYC4168\" title=\"YouTube video player\" frameborder=0 allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen=\"\">\u003C/iframe>\n\u003C/figure>",[675,707,746,677,1274],"inside GitLab",{"slug":1276,"featured":93,"template":686},"developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale","content:fr-fr:blog:developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale.yml","Developing Gitlab Duo How We Validate And Test Ai Models At Scale","fr-fr/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale.yml","fr-fr/blog/developing-gitlab-duo-how-we-validate-and-test-ai-models-at-scale",{"_path":1282,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1283,"content":1289,"config":1295,"_id":1297,"_type":16,"title":1298,"_source":18,"_file":1299,"_stem":1300,"_extension":21},"/fr-fr/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat",{"title":1284,"description":1285,"ogTitle":1284,"ogDescription":1285,"noIndex":6,"ogImage":1286,"ogUrl":1287,"ogSiteName":737,"ogType":738,"canonicalUrls":1287,"schema":1288},"GitLab Duo Chat : 10 bonnes pratiques à connaître","Découvrez nos conseils et astuces pour intégrer GitLab Duo Chat à vos workflows DevSecOps alimentés par l'IA. ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097639/Blog/Hero%20Images/Blog/Hero%20Images/blog-image-template-1800x945%20%281%29_77JeTV9gAmbXM0224acirV_1750097638765.png","https://about.gitlab.com/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Duo Chat : 10 bonnes pratiques à connaître\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"}],\n        \"datePublished\": \"2024-04-02\",\n      }",{"title":1284,"description":1285,"authors":1290,"heroImage":1286,"date":1291,"body":1292,"category":14,"tags":1293,"updatedDate":1294},[1076],"2024-04-02","Entamer une conversation avec l'IA peut s'avérer difficile. Par quelle question commencer ? Comment la formuler ? Quel degré de contexte est nécessaire ? La conversation fournira-t-elle des résultats optimaux et efficaces ?\n\nDans ce tutoriel, découvrez 10 conseils et bonnes pratiques pour intégrer GitLab Duo Chat dans vos workflows DevSecOps alimentés par l'IA et affiner vos prompts afin d'obtenir des résultats optimaux.\n\n## Première étape : ouvrez GitLab Duo Chat \n\n[GitLab Duo Chat](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html) est disponible dans l'interface utilisateur (UI) de GitLab, dans le Web IDE et dans les IDE de programmation pris en charge, comme VS Code. \n\nDans VS Code, vous pouvez ouvrir GitLab Duo Chat dans le volet de gauche par défaut. Vous pouvez également glisser-déposer l'icône dans le volet de droite. Ainsi, GitLab Duo Chat reste ouvert pendant que vous écrivez du code et que vous naviguez dans l'arborescence des fichiers, que vous effectuez des actions Git et plus encore. Pour réinitialiser l'emplacement de Chat, ouvrez la palette de commandes (en appuyant sur le raccourci clavier `Command+Maj+P` (sous macOS) ou `Ctrl+Maj+P` (sous Windows/Linux), puis saisissez `View: Reset View Locations`. La procédure à suivre est illustrée dans cette courte vidéo.\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/foZpUvWPRJQ\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n\nLe Web IDE et VS Code partagent le même framework : la même méthode fonctionne dans le Web IDE pour proposer des workflows plus efficaces.\n\n![Chat dans le Web IDE](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750097645344.png)\n\n## 10 bonnes pratiques à suivre pour une utilisation optimale de GitLab Duo Chat\n\n### 1. Discutez\n\nLes chats sont des conversations, pas des formulaires de recherche.\n\nPour lancer la conversation, commencez avec les termes de recherche que vous utiliseriez lors d'une recherche sur un navigateur et expérimentez en fonction de la réponse et des données de sortie. Dans cet exemple, commençons par un projet C# et les bonnes pratiques associées. \n\n> c# start project best practices \n\n![Prompt demandant les bonnes pratiques de démarrage d'un projet C# et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097646/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750097645345.png)\n\nLa réponse est utile pour comprendre un large champ d'application du langage C#, mais ne propose pas immédiatement de bonnes pratiques. Poursuivons avec une question plus ciblée dans le même contexte. \n\n> Please show the project structure for the C# project. \n\n![Prompt demandant la structure du projet C# et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750097645346.png)\n\nCette réponse est utile. Poursuivons avec une question relative à [Git](https://about.gitlab.com/fr-fr/blog/what-is-git/ \"Qu'est-ce que Git ? \") et utilisons la même structure : demandons directement à l'IA de nous montrer un exemple.\n\n> Show an example for a .gitignore for C# \n\n![Prompt demandant un exemple de fichier .gitignore en langage C# et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image25_aHR0cHM6_1750097645347.png)\n\nPoursuivons avec GitLab CI/CD et demandons à l'IA comment créer le projet C#.\n\n> Show a GitLab CI/CD configuration for building the C# project \n\n![Prompt demandant un exemple de configuration de GitLab CI/CD pour la création du projet C# et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image16_aHR0cHM6_1750097645349.png)\n\nDans cet exemple, GitLab Duo Chat nous encourage à demander des modifications spécifiques. Demandons-lui d'utiliser le SDK .NET 8.0 au lieu du SDK .NET 6.0. \n\n> In the above example, please use the .NET SDK 8.0 image \n\n![Prompt demandant à GitLab Duo Chat d'utiliserl'image du SDK .NET 8.0 et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image32_aHR0cHM6_1750097645350.png)\n\nLa configuration CI/CD utilise l'interface de ligne de commande (CLI) .NET. Essayons de suivre cette bonne pratique pour générer des commandes plus efficaces afin de créer la structure des projets et des tests. \n\n> Explain how to create projects and test structure on the CLI \n\n![Prompt demandant d'expliquer comment créer des projets et tester la structure sur l'interface CLI et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image14_aHR0cHM6_1750097645351.png)\n\nNous pourrions exécuter ces commandes dans le terminal, mais, pour cet exemple, imaginons que nous souhaitions rester dans VS Code. Posons la question à Chat.\n\n> Explain how to open a new terminal in VS Code \n\n![Prompt demandant d'expliquer comment ouvrir un nouveau terminal dans VS Code et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image5_aHR0cHM6_1750097645351.png)\n\n### 2. Affinez le prompt pour gagner en productivité\n\nConsidérez GitLab Duo Chat comme un être humain et employez des phrases complètes qui fournissent suffisamment de contexte à vos pensées et à vos questions. \n\nSi vous êtes un utilisateur expérimenté de la recherche par navigateur, vous connaissez peut-être l'approche qui consiste à concevoir la question, à ajouter plus de termes pour affiner sa portée et redémarrer la recherche après avoir ouvert de nombreux onglets. \n\nDans le cas d'une recherche par navigateur, vous obtiendriez probablement quatre à cinq fenêtres de recherche différentes. \n\n```markdown\nc# start project best practices\nc# .gitignore\nc# gitlab cicd \nc# gitlab security scanning \nc# solutions and projects, application and tests\n``` \n\nVous pouvez également suivre cette stratégie lors d'une conversation avec GitLab Duo Chat. Cela nécessite d'ajouter plus de contexte afin de la transformer en une approche conversationnelle. GitLab Duo Chat vous permet de poser plusieurs questions dans une même conversation. \n\nExemple : vous devez commencer par un nouveau projet C#, appliquer les bonnes pratiques, ajouter un fichier `.gitignore` et configurer CI/CD ainsi qu'un scanning de sécurité, comme dans la recherche ci-dessus. Dans Chat, vous pouvez regrouper plusieurs questions dans une même demande.\n\n> How can I get started creating an empty C# console application in VS Code? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#, and add security scanning for GitLab. Explain how solutions and projects in C# work, and how to add a test project on the CLI. \n\n![Prompt demandant d'ajouter plus de contexte et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image37_aHR0cHM6_1750097645352.png)\n\nDans cette réponse, Chat suggère de demander des exemples de configuration spécifiques dans les questions de suivi de la conversation. Pratique asynchrone : créez des questions de suivi. Vous pouvez omettre `C# ` comme contexte dans la même session de chat.\n\n> Please show an example for a .gitignore. Please show a CI/CD configuration. Include the SAST template. \n\n### 3. Suivez des patterns de prompt \n\nSuivez le pattern : `Énoncer le problème, demander de l'aide, fournir des demandes supplémentaires`. Vous ne pouvez pas penser à tout lorsque vous posez la première question. Commencez par `énoncer le problème, demander de l'aide` lors de la première itération. \n\n> I need to fulfill compliance requirements. How can I get started with Codeowners and approval rules ?\n\n![Prompt demandant de l'aide au sujet des Codeowners et des règles d'approbation et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image19_aHR0cHM6_1750097645352.png)\n\nMême si la réponse est utile, elle reste générique. Il se peut que vous souhaitiez obtenir une aide spécifique pour la configuration de votre équipe. \n\n> Please show an example for Codeowners with different teams : backend, frontend, release managers. \n\n![Prompt demandant un exemple de fichier Codeowners pour différentes équipes (backend, frontend, managers de release) et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image31_aHR0cHM6_1750097645353.png)\n\nUne alternative consiste à décrire la situation dans laquelle vous vous trouvez et à demander de l'aide. Suivez le modèle STAR (Situation, Tâche, Action et Résultat) pour construire votre conversation. \n\n> I have a Kubernetes cluster integrated in GitLab. Please generate a Yaml configuration for a Kubernetes service deployment. Explain how GitOps works as a second step. How to verify the results? \n\n![Prompt incluant plusieurs questions et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image27_aHR0cHM6_1750097645354.png)\n\n### 4. Utilisez une communication à contexte faible \n\nFournissez autant de contexte que nécessaire pour obtenir une réponse. L'historique précédent ou le code source ouvert ne fournit parfois pas de contexte utile. Pour obtenir une réponse plus adaptée, appliquez un pattern de [communication à contexte faible](https://handbook.gitlab.com/handbook/company/culture/all-remote/effective-communication/#understanding-low-context-communication), qui est utilisé dans les communications 100 % à distance chez GitLab.\n\nLa question suivante ne fournit pas suffisamment de contexte dans le cadre d'un projet C++.\n\n> Should I use virtual override instead of just override? \n\n![Prompt demandant si les utilisateurs doivent utiliser le remplacement virtuel au lieu d'un simple remplacement et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image34_aHR0cHM6_1750097645354.png)\n\nEssayez plutôt d'ajouter davantage de contexte :\n\n> When implementing a pure virtual function in an inherited class, should I use virtual function override, or just function override? Context is C++. \n\n![Prompt offrant plus de détails et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image36_aHR0cHM6_1750097645355.png)\n\nVous pouvez également consulter l'exemple dans la vidéo [GitLab Duo Coffee Chat : Refactor C++ functions into OOP classes for abstract database handling](https://youtu.be/Z9EJh0J9358?t=2190). \n\n### 5. Répétez la question\n\nL'IA n'est pas prévisible. Sa réponse peut parfois différer des résultats attendus, ou elle ne produit pas d'exemples de code source ni d'extraits de code de configuration en raison du manque de contexte. Il est recommandé de répéter la question et de préciser les conditions requises.\n\nDans l'exemple suivant, nous voulons créer une application C#. Lors de la première tentative, nous n'avons pas spécifié le type d'application alors que le langage C# peut servir à créer une console/un terminal ou des applications d'interface utilisateur. Le résultat ne fournit pas non plus d'exemple de code source vide. Le second prompt répété ajoute deux mots supplémentaires : `console` et `empty`. \n\n> How can I get started creating an C# application in VS Code? \n> \n> How can I get started creating an empty C# console application in VS Code? \n\nLes résultats du prompt diffèrent. La première réponse est utile pour commencer en suivant les instructions dans la fenêtre VS Code, mais elle ne nous indique pas où se trouve le code source et comment le modifier. La réponse obtenue suite à la répétition et à l'amélioration du prompt fournit des instructions sur la façon de remplacer le template par défaut par un code de type « hello world ».\n\n![Répétition/modification du prompt et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image28_aHR0cHM6_1750097645355.png)\n\nVous pouvez également combiner des stratégies de répétition et d'affinement, et demander à Chat de montrer un exemple de code d'application et de tests.\n\n> How can I get started creating an empty C# console application in VSCode? Please show an example for application and tests. \n\n![Prompt demandant un exemple d'application et de tests et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750097645356.png)\n\n#### Répétez la question après avoir posé des questions génériques \n\nLorsque vous posez des questions génériques sur la technologie, GitLab Duo Chat peut ne pas être en mesure de vous aider. Dans le scénario suivant, nous n'avons pas pu obtenir de suggestion de framework et d'outils de compilation Java. Les possibilités de réponse sont trop nombreuses : elles peuvent concerner des outils de compilation tels que Maven et Gradle et [plus de 100 frameworks Java](https://fr.wikipedia.org/wiki/Liste_de_frameworks_Java), selon la pile technologique et les conditions requises.\n\n![Prompt demandant un framework et des outils de compilation Java et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750097645356.png)\n\nNous souhaitons maintenant nous concentrer sur un environnement client avec [Java Spring Boot](https://spring.io/projects/spring-boot). \n\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. \n\n![Prompt demandant des informations supplémentaires (notamment un exemple hello world) et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image26_aHR0cHM6_1750097645357.png)\n\nCe prompt donne déjà d'excellents résultats. Effectuez l'exercice asynchrone suivant : répétez le prompt et demandez comment déployer l'application, en ajoutant plus de détails à chaque étape. Vous pouvez également transformer le prompt en conversation de suivi.\n\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD. \n>\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD, using container images. \n>\n> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD, using container images. Use Kubernetes and GitOps in GitLab. \n\n### 6. Faites preuve de patience\n\nLes mots simples ou les phrases courtes peuvent ne pas générer les résultats souhaités, [comme le montre cet exemple vidéo](https://youtu.be/JketELxLNEw?t=1220). GitLab Duo Chat peut parfois deviner correctement à partir des données disponibles, mais peut également demander plus de contexte.\n\nExemple : le terme `labels` qui apparaît dans la documentation GitLab.\n\n![Prompt portant sur les labels et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image12_aHR0cHM6_1750097645357.png)\n\nLimitez la question aux énoncés de problèmes et ciblez l'utilisation du tableau des tickets.\n\n> Explain labels in GitLab. Provide an example for efficient usage with issue boards.\n\n![Prompt demandant d'inclure un exemple et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image21_aHR0cHM6_1750097645358.png)\n\nVous pouvez également formuler un énoncé de problème suivi d'une question et demander des exemples supplémentaires.\n\n> I don't know how to use labels in GitLab. Please provide examples, and how to use them for filters in different views. Explain these views with examples.\n\n![Prompt énonçant un problème et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750097645358.png)\n\nDe plus, évitez les questions fermées et précisez le contexte.\n\n> Can you help me fix performance regressions? \n\n![Prompt demandant de l'aide pour corriger les régressions affectant les performances et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image18_aHR0cHM6_1750097645359.png)\n\nFournissez plutôt davantage de contexte sur la régression affectant les performances, y compris les langages de programmation, les frameworks, la pile technologique et les environnements. L'exemple suivant utilise un environnement datant d'il y a plusieurs années, qui peut encore être utile aujourd'hui.\n\n> My PHP application encounters performance regressions using PHP 5.6 and MySQL 5.5. Please explain potential root causes, and how to address them. The app is deployed on Linux VMs. \n\n![Prompt plus détaillé et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image24_aHR0cHM6_1750097645360.png)\n\n### 7. Réinitialisez la conversation et lancez-en une nouvelle\n\nIl peut arriver que l'historique du chat montre une courbe d'apprentissage différente et ne fasse pas appel au contexte adéquat pour les questions de suivi. Il est également possible que GitLab Duo Chat ne puisse pas répondre aux questions spécifiques que vous avez posées. L'IA générative n'est pas prévisible et peut donc parfois ne pas être en mesure de fournir certains exemples à l'instant précis. Cependant, elle peut les fournir dans sa réponse à une future question (ce comportement a été observé dans la version bêta de GitLab Duo Chat). Les grands modèles de langage (LLM) sous-jacents peuvent parfois insister pour donner une réponse spécifique, créant une boucle sans fin.\n\n> How can I get started creating an empty C# console application in VSCode? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#, and add security scanning for GitLab. Explain how solutions and projects in C# work, and how to add a test project on the CLI.\n\nAprès avoir posé la question ci-dessus et demandé un exemple de configuration, nous avons tenté de réduire la portée de la question afin d'obtenir une réponse plus adaptée. Nous n'avons pas obtenu le résultat escompté, car Chat prend en compte le contexte de l'historique du chat et fait référence aux réponses précédentes.\n\n> How can I get started creating an empty C# console application in VSCode? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#. \n\n![Prompt demandant des exemples de configuration et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image23_aHR0cHM6_1750097645360.png)\n\nPour forcer GitLab Duo Chat à utiliser un nouveau contexte, utilisez la commande slash `/reset` pour remettre la session à zéro. Répétez ensuite la question pour obtenir de meilleurs résultats. Vous pouvez également utiliser `/clean` ou `/clear` pour supprimer tous les messages de la conversation.\n\n### 8. Gagnez en productivité en utilisant les commandes slash dans l'IDE \n\n#### Explication du code\n\n- Q : Code généré ? Code existant ? Code hérité ?\n- R : Utilisez la [commande slash `/explain` dans l'IDE](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html#explain-code-in-the-ide).\n- R2 : Affinez le prompt pour obtenir des réponses plus ciblées, par exemple : `/explain focus on potential shortcomings or bugs`.\n\n![Prompt utilisant la commande slash /explain](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/gitlab_duo_chat_slash_commands_explain_01_aHR0cHM6_1750097645361.png)\n\n![Prompt affiné](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750097645361.png)\n\n#### Refactorisation du code\n\n- Q : Code illisible ? Code spaghetti trop long ? Aucune couverture de test ?\n- R : Utilisez la [commande slash `/refactor` dans l'IDE](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html#refactor-code-in-the-ide).\n- R2 : Affinez le prompt pour effectuer des actions plus ciblées, par exemple refactoriser du code pour obtenir des patterns orientés objet : `/refactor into object-oriented classes with methods and attributes`. \n\n![Prompt utilisant la commande slash /refactor](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image35_aHR0cHM6_1750097645362.png)\n\n![Prompt affiné](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image30_aHR0cHM6_1750097645362.png)\n\n#### Génération de tests\n\n- Q : Le code peut être testé, mais créer les tests prend trop de temps ?\n- R : Utilisez la [commande slash `/tests` dans l'IDE](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html#write-tests-in-the-ide).\n\n- R2 : Affinez le prompt pour utiliser des frameworks de test spécifiques ou des cibles de test. Vous pouvez également demander à GitLab Duo Chat de se concentrer sur la refactorisation du code, puis de générer des tests : `/tests focus on refactoring the code into functions, and generate tests`.\n\n![Prompt utilisant la commande slash /tests](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image29_aHR0cHM6_1750097645363.png)\n\n![Prompt affiné](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750097645363.png)\n\nDécouvrez d'autres cas pratiques de workflows de développement complets dans notre [documentation](https://docs.gitlab.com/ee/user/gitlab_duo_examples.html).\n\n### 9. Affinez le prompt pour les commandes slash\n\nVous trouverez dans cet article de nombreux conseils pour rendre vos prompts plus spécifiques. Cette approche contribue à améliorer la productivité d'un workflow alimenté par l'IA. De la même manière, les commandes slash permettent d'obtenir de meilleurs résultats dans GitLab Duo Chat.\n\nRécemment, un client a posé la question suivante : « L'explication de code utilisant `/explain` peut-elle générer des commentaires intégrés au code ? ». La réponse est non. Vous pouvez cependant poser des questions de suivi à l'aide de prompts dans Chat et demander un résumé sous la forme d'un commentaire de code. Le langage de programmation doit être indiqué.\n\nDans l'exemple suivant, un [code client HTTP C++ utilisant la bibliothèque cURL](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5cc9bdd65ee8ee16c548bea0402c18f8209d4d06/chat/slash-commands/c++/cli.cpp) nécessite plus de documentation. Vous pouvez affiner le prompt `/explain` en fournissant des instructions plus précises en demandant à GitLab Duo Chat d'expliquer le code en ajoutant des commentaires au code, puis copier-coller le prompt ainsi obtenu dans l'éditeur.\n\n> /explain add documentation, rewrite the code snippet \n\n![Prompt demandant d'ajouter de la documentation/de réécrire l'extrait de code et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image13_aHR0cHM6_1750097645363.png)\n\nVous pouvez également demander à GitLab Duo Chat de refactoriser le code source (via la commande `/refactor`) et de générer des commentaires au code via un prompt personnalisé.\n\n> /refactor add code comments and documentation\n\n![Prompt demandant de réusiner le code source et de générer des commentaires de code](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image15_aHR0cHM6_1750097645364.png)\n\n### 10. Utilisez les commandes slash de manière créative\n\nLorsque l'IA ne connaît pas la réponse à une question sur le code source ou le langage de programmation, réfléchissez à la manière dont les commandes slash `/explain`, `/refactor` et `/tests` peuvent vous aider.\n\nDans l'exemple suivant, une chaîne de requête SQL en C++ est créée sur une seule ligne. Pour améliorer la lisibilité et avoir la possibilité d'ajouter plus de colonnes de base de données à l'avenir, il peut être utile de choisir une chaîne multiligne.\n\n> std::string sql = \"CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL)\";\n\nVous pouvez demander à GitLab Duo Chat des précisions à ce sujet, par exemple en posant la question suivante :\n\n> How to create a string in C++ using multiple lines? \n\nChat peut répondre avec une explication et éventuellement un exemple de code source. Dans ce contexte, il peut proposer de créer une valeur de chaîne C++ sur plusieurs lignes, par exemple en utilisant le caractère `\\n`, affectée à une variable. \n\nLa condition requise est plutôt de formater uniquement le code écrit et d'affecter des valeurs de variable dans plusieurs lignes. Il n'est pas nécessaire que la valeur de chaîne elle-même contienne une représentation de chaîne multiligne. \n\nVous disposez d'une alternative pour fournir un contexte supplémentaire dans VS Code et le Web IDE : sélectionnez le code source en question, effectuez un clic droit et accédez au menu `GitLab Duo Chat > Refactor`. Cela permet d'ouvrir la fenêtre de prompt de GitLab  Duo Chat et de déclencher immédiatement la tâche de code `/refactor`.\n\nCette dernière peut toutefois ne pas produire les résultats attendus. La refactorisation d'une chaîne SQL sur une seule ligne peut signifier beaucoup de choses : utiliser plusieurs lignes pour plus de lisibilité, créer des constantes et plus encore.\n\nLes tâches de code fournissent une option pour rendre le prompt plus spécifique. Vous pouvez ajouter plus de texte après la commande `/refactor` et demander à GitLab Duo Chat d'utiliser un type de code, un algorithme ou un design pattern spécifique. \n\nRéessayons en sélectionnant le code source, en affichant la fenêtre du chat, en saisissant le prompt suivant et en appuyant sur Entrée. \n\n> /refactor into a multi-line written string. Show different approaches for all C++ standards. \n\n![Prompt demandant de réusiner le code en une chaîne écrite multiligne et réponse obtenue](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image17_aHR0cHM6_1750097645364.png)\n\n**Astuce :** vous pouvez utiliser la fonctionnalité de suggestions de code de GitLab Duo pour affiner encore plus le code source après la refactorisation, ou utiliser d'autres affinements de prompt `/refactor`.\n\n>/refactor into a multi-line written string, show different approaches \n>\n> /refactor into multi-line string, not using raw string literals\n>\n> /refactor into a multi-line written string. (/refactor en une chaîne écrite multiligne.) Faites en sorte que le nom de la table soit paramétrable\n\nDécouvrez une autre approche avec le type `stringstream` dans la vidéo « [GitLab Duo Coffee Chat : Refactor C++ functions into OOP classes for abstract database handling](https://www.youtube.com/watch?v=Z9EJh0J9358) ». \n\n#### Explication des vulnérabilités\n\nLe résultat peut être aléatoire, mais vous pouvez également exécuter la commande slash `/explain` pour obtenir des explications sur les failles de sécurité. Dans cet exemple, le [code C](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5a5f293dfbfac7222ca4013d8f9ce9b462e4cd3a/chat/slash-commands/c/vuln.c) contient plusieurs vulnérabilités liées notamment à des dépassements de mémoire tampon strcpy(), à des fichiers modifiables par tout le monde et à des attaques de type « race condition ».\n\n> /explain why this code has multiple vulnerabilities \n\n![Prompt demandant des explications sur les multiples vulnérabilités du code](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image20_aHR0cHM6_1750097645365.png)\n\n#### Refactorisation du code C  en langage Rust\n\nLe langage Rust garantit la sécurité de la mémoire. Vous pouvez demander à GitLab Duo Chat de refactoriser le [code C](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/blob/5a5f293dfbfac7222ca4013d8f9ce9b462e4cd3a/chat/slash-commands/c/vuln.c)  vulnérable en Rust, en utilisant la commande `/refactor`. Entraînez-vous avec des prompts plus précis afin d'obtenir de meilleurs résultats.\n\n> /refactor into Rust and use high level libraries \n\n![Prompt dans Chat](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097645/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750097645366.png)\n\n### Raccourcis \n\nEssayez ces raccourcis dans votre environnement et entraînez-vous de manière asynchrone avec GitLab Duo Chat.\n\n1. Inspectez le code vulnérable des CVE et demandez le problème rencontré et comment y remédier, en utilisant le prompt `/explain why is this code vulnerable`. \n**Astuce :** importez des projets open source dans GitLab pour tirer parti des explications de code de GitLab Duo Chat.\n1. Essayez de refactoriser le code dans de nouveaux langages de programmation pour faciliter la migration du code hérité.\n1. Vous pouvez également essayer de réusiner le code d'une configuration Jenkins dans GitLab CI/CD, en utilisant le prompt `/refactor into GitLab CI/CD configuration`. \n\n### En savoir plus\n\nIl existe de nombreux environnements et défis différents à relever. Consultez notre [documentation sur GitLab Duo Chat](https://docs.gitlab.com/ee/user/gitlab_duo_chat.html) pour découvrir plus d'exemples pratiques, ainsi qu'une section contenant des [exemples de cas d'utilisation de GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo_examples.html) contenant des informations sur les workflows DevSecOps alimentés par l'IA, notamment à l'aide de GitLab Duo Chat. \n\n> Vous souhaitez utiliser GitLab Duo Chat ? [Commencez votre essai gratuit dès aujourd'hui](https://about.gitlab.com/fr-fr/solutions/gitlab-duo-pro/sales/).\n",[675,748,746,677],"2025-03-12",{"slug":1296,"featured":93,"template":686},"10-best-practices-for-using-ai-powered-gitlab-duo-chat","content:fr-fr:blog:10-best-practices-for-using-ai-powered-gitlab-duo-chat.yml","10 Best Practices For Using Ai Powered Gitlab Duo Chat","fr-fr/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat.yml","fr-fr/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat",{"_path":1302,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1303,"content":1309,"config":1316,"_id":1318,"_type":16,"title":1319,"_source":18,"_file":1320,"_stem":1321,"_extension":21},"/fr-fr/blog/learn-advanced-rust-programming-with-a-little-help-from-ai-code-suggestions",{"title":1304,"description":1305,"ogTitle":1304,"ogDescription":1305,"noIndex":6,"ogImage":1306,"ogUrl":1307,"ogSiteName":737,"ogType":738,"canonicalUrls":1307,"schema":1308},"Programmation en Rust à l’aide de l'IA : tutoriel","Poursuivez votre apprentissage de la programmation en Rust à l'aide de ce tutoriel et des suggestions de code alimentées par l'IA de GitLab Duo.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662439/Blog/Hero%20Images/codewithheart.png","https://about.gitlab.com/blog/learn-advanced-rust-programming-with-a-little-help-from-ai-code-suggestions","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Programmation en Rust à l’aide de l'IA : tutoriel\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"}],\n        \"datePublished\": \"2023-10-12\",\n      }",{"title":1304,"description":1305,"authors":1310,"heroImage":1306,"date":1311,"body":1312,"category":14,"tags":1313,"updatedDate":1315},[1076],"2023-10-12","Il y a 20 ans, pour apprendre un nouveau langage de programmation, il fallait installer la bibliothèque MSDN de Visual Studio 6 avec 6 CD-ROM. Trouver les bons algorithmes prenait du temps et nécessitait des livres et des recherches manuelles. Aujourd'hui, grâce à la collaboration à distance et à l'intelligence artificielle (IA), vous pouvez facilement créer un [espace de développement à distance](https://about.gitlab.com/blog/quick-start-guide-for-gitlab-workspaces/), partager votre écran et coder en groupe. De plus, [GitLab Duo offre des suggestions de code](/gitlab-duo/) alimentées par l'IA, adaptées à votre style de programmation et à votre expérience, même avec peu d'informations et de contexte.\n\nCe tutoriel basé sur notre [article d'introduction à Rust](/blog/learning-rust-with-a-little-help-from-ai-code-suggestions-getting-started/) vous guidera dans le développement d'une application simple de lecteur de flux.\n\n## Préparations\nConfigurez [VS Code](/blog/learning-rust-with-a-little-help-from-ai-code-suggestions-getting-started/#vs-code) et [votre environnement de développement Rust](/blog/learning-rust-with-a-little-help-from-ai-code-suggestions-getting-started/#development-environment-for-rust).\n\n### Suggestions de code\nVérifiez les suggestions de code avant de les accepter. GitLab Duo génère des suggestions de code en temps réel que vous pouvez accepter en appuyant sur la touche `tab`. Notez qu'il est plus fiable d'écrire du nouveau code que de refactoriser un code existant. Notez aussi que l'IA peut proposer des suggestions différentes pour le même code. Tenez compte des [limitations connues](https://docs.gitlab.com/ee/user/project/repository/code_suggestions.html#known-limitations) qui peuvent affecter votre apprentissage.\n\n**Astuce :** les suggestions de code prennent en charge les instructions multilignes. Affinez les spécifications si besoin pour obtenir de meilleures suggestions.\n\n```rust\n    // Create a function that iterates over the source array\n    // and fetches the data using HTTP from the RSS feed items.\n    // Store the results in a new hash map.\n    // Print the hash map to the terminal.\n```\n\nLe volet de l'extension VS Code s'affiche lorsqu'une suggestion est proposée. Utilisez `tab` pour accepter les lignes suggérées, ou `cmd cursor right` pour accepter un mot. Le menu à trois points vous permet d'afficher la barre d'outils à tout moment.\n\n![Volet de l'extension VS Code des suggestions de code de GitLab Duo avec des instructions](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_code_suggestions_options_overlay_keep_toolbar.png){: .shadow}\n\n## Ressources Rust\nRust est l'un des [langages pris en charge par les suggestions de code](https://docs.gitlab.com/ee/user/project/repository/code_suggestions.html#supported-languages). Le tutoriel [« Rust by Example »](https://doc.rust-lang.org/rust-by-example/) et le [livre officiel « Le langage de programmation Rust »](https://doc.rust-lang.org/book/) sont une bonne aide pour les débutants. Nous les utiliserons également dans cet article.\n\n### Création d'une application de lecture de flux\nIl existe plusieurs façons d'apprendre Rust en créant une application. Vous pouvez utiliser des bibliothèques Rust, appelées `Crates`. Nous les explorerons pus tard dans ce tutoriel. Vous pouvez aussi créer une application pour traiter des fichiers image en ligne de commande, résoudre un labyrinthe ou des Sudokus, ou même développer des jeux. Le livre [Hands-on Rust](https://hands-on-rust.com/) apprend Rust par la création d'un jeu d'exploration de donjon. Ma collègue, Fatima Sarah Khalid, a conçu [Dragon Realm en C++ en s'aidant de l'IA](/blog/building-a-text-adventure-using-cplusplus-and-code-suggestions/).\n\nNous allons construire une application pour collecter des informations depuis des versions de sécurité, des articles de blog et des forums comme Hacker News, via des flux RSS. Nous filtrerons certains mots-clés ou des versions spécifiques dans ces flux. Voici ce que notre application devra faire :\n\n1. Récupérer des données depuis des sites web HTTP, API REST, mais surtout depuis des flux RSS.\n2. Analyser les données.\n3. Présenter les données à l'utilisateur ou les sauvegarder.\n4. Optimiser la lecture des flux.\n\nLes données fournies par l'application dans notre exemple sont présentées dans cet article, après les étapes d'apprentissage :\n\n![Terminal VS Code, exécution de Cargo avec des sorties d'éléments formatées](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_terminal_cargo_run_formatted_output_final.png)\n\nL'application doit être modulaire, servant de base pour ajouter d'autres données, filtres et hooks pour des actions ultérieures.\n\n### Initialisation du projet\nRappel : `cargo init` dans la racine du projet crée la structure du fichier, y compris le point d'entrée `main()`. Nous allons créer et utiliser des modules Rust à l'étape suivante.\n\nD'abord, créez un répertoire nommé `learn-rust-ai-app-reader`, ouvrez-le et exécutez `cargo init`, ce qui initialise également (`git init`) un dépôt Git local. Configurez ensuite le dépôt distant avec l'URL par exemple `https://gitlab.com/gitlab-de/use-cases/ai/learn-with-ai/learn-rust-ai-app-reader`, ajustez le chemin de votre espace de nommage, et effectuez un push pour [créer automatiquement un nouveau projet privé sur GitLab](https://docs.gitlab.com/ee/user/project/#create-a-new-project-with-git-push).\n\n```shell\nmkdir learn-rust-ai-app-reader\ncd learn-rust-ai-app-reader\n\ncargo init\n\ngit remote add origin https://gitlab.com/gitlab-de/use-cases/ai/learn-with-ai/learn-rust-ai-app-reader.git\ngit push --set-upstream origin main\n```\n\nOuvrez VS Code à partir du répertoire créé. La CLI `code` ouvre une fenêtre VS Code sur macOS.\n\n```shell\ncode .\n```\n\n### Définition des URL des flux RSS\nAjoutez une table de hachage pour stocker les URL des flux RSS dans le fichier `src/main.rs` dans la fonction `main()`. Utilisez les suggestions de code de GitLab Duo pour créer un objet [`HashMap`](https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html) avec un commentaire multilignes et initialisez-le avec les valeurs par défaut pour Hacker News et TechCrunch. Vérifiez l'exactitude des URL incluses dans les suggestions.\n\n```rust\nfn main() {\n    // Define RSS feed URLs in the variable rss_feeds\n    // Use a HashMap\n    // Add Hacker News and TechCrunch\n    // Ensure to use String as type\n\n}\n```\n\nLe commentaire intégré au code doit inclure :\n\n1. Le nom de la variable `rss_feeds`.\n2. Le type `HashMap`.\n3. Les paires clé/valeur initiales.\n4. La string comme type utilisable avec les appels `to_string()`).\n\nVoici une suggestion possible :\n\n```rust\nuse std::collections::HashMap;\n\nfn main() {##$_0A$##    // Define RSS feed URLs in the variable rss_feeds##$_0A$##    // Use a HashMap##$_0A$##    // Add Hacker News and TechCrunch##$_0A$##    // Ensure to use String as type##$_0A$##    let rss_feeds = HashMap::from([##$_0A$##        (\"Hacker News\".to_string(), \"https://news.ycombinator.com/rss\".to_string()),##$_0A$##        (\"TechCrunch\".to_string(), \"https://techcrunch.com/feed/\".to_string()),##$_0A$##    ]);##$_0A$####$_0A$##}\n```\n\n![VS Code avec les suggestions de code pour les URL des flux RSS pour Hacker News et TechCrunch](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_main_array_rss_feed_urls_suggested.png)\n\nOuvrez un terminal dans VS Code (cmd+maj+p, recherchez `terminal`), exécutez `cargo build` pour appliquer les modifications. Ajoutez la ligne d'importation `use std::collections::HashMap;` suite au message d'erreur.\n\nEnsuite, utilisez les URL des flux RSS. Dans notre [article](/blog/learning-rust-with-a-little-help-from-ai-code-suggestions-getting-started/) précédent, nous avons expliqué la division du code en fonctions. Ce tutoriel se concentre sur l'organisation modulaire du code avec des modules Rust.\n\n## Modules\nLes [modules](https://doc.rust-lang.org/rust-by-example/mod.html) organisent le code et peuvent restreindre l'accès aux fonctions à partir de la portée main(). Pour notre application, nous récupérerons le flux RSS et analyserons la réponse XML. La structure appelante `main()` n'accèdera qu'à la fonction `get_feeds()`. Les autres fonctionnalités sont disponibles dans le module.\n\nCréez un fichier `feed_reader.rs` dans le répertoire `src/`. Demandez aux suggestions de code de créer un module public nommé `feed_reader` avec une fonction publique `get_feeds()` prenant une string HashMap en entrée. Assurez-vous que le nom du fichier et du module correspondent et suivent la [structure de module Rust](https://doc.rust-lang.org/book/ch07-02-defining-modules-to-control-scope-and-privacy.html).\n\n![Suggestions de code : créez un module public, avec des types de fonctions et d'intrants](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_public_module_function_input.png){: .shadow}\n\nEn fournissant aux suggestions de code le nom de la variable et son type, le module `std::collections::HashMap` sera automatiquement importé. Astuce : ajustez les commentaires et les types de variables pour améliorer les suggestions. Passer des paramètres de fonction sous forme de références d'objet est une bonne pratique en Rust.\n\n```rust\n// Create public module feed_reader\n// Define get_feeds() function which takes rss_feeds as String HashMap reference as input\npub mod feed_reader {\n    use std::collections::HashMap;\n\n    pub fn get_feeds(rss_feeds: &HashMap\u003CString, String>) {\n        // Do something with the RSS feeds\n    }\n}\n```\n\n![Suggestions de code : module public avec la fonction `get_feeds()` et la variable d'intrant suggérée](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_public_module_function_input.png){: .shadow}\n\nPour guider les suggestions de code, suivez ces étapes :\n\n1. `// Iterate over the RSS feed URLs`\n2. `// Fetch URL content`\n3. `// Parse XML body`\n4. `// Print the result`\n\n![Suggestions de code : module public avec la fonction `get_feeds()`, étape 1 : itération](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_module_function_01_iterate.png){: .shadow}\n\n![Suggestions de code : module public avec la fonction `get_feeds()`, étape 2 : récupération du contenu de l'URL](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_module_function_02_fetch_content.png){: .shadow}\n\n![Suggestions de code : module public avec la fonction `get_feeds()`, étape 3 : analyse du corps XML](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_module_function_03_parse_body.png){: .shadow}\n\n![Suggestions de code : module public avec la fonction `get_feeds()`, étape 4 : impression des résultats](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_module_function_04_print_result.png){: .shadow}\n\nSuggestion de code possible :\n\n```rust\n// Create public module feed_reader\n// Define get_feeds() function which takes rss_feeds as String HashMap reference as input\npub mod feed_reader {\n    use std::collections::HashMap;\n\n    pub fn get_feeds(rss_feeds: &HashMap\u003CString, String>) {\n        // Iterate over the RSS feed URLs\n        for (name, url) in rss_feeds {\n            println!(\"{}: {}\", name, url);\n\n            // Fetch URL content\n            let body = reqwest::blocking::get(url).unwrap().text().unwrap();\n\n            // Parse XML body\n            let parsed_body = roxmltree::Document::parse(&body).unwrap();\n\n            // Print the result\n            println!(\"{:#?}\", parsed_body);\n        }\n    }\n}\n```\n\nRemarquez le nouveau mot-clé : [`unwrap()`](https://doc.rust-lang.org/rust-by-example/error/option_unwrap.html). Rust n'accepte pas les valeurs `null` et utilise le [type `Option`](https://doc.rust-lang.org/rust-by-example/std/option.html) pour représenter les valeurs. Si vous avez la certitude d'utiliser un type encapsulé comme `Text` ou `String`, vous pouvez appeler la méthode `unwrap()` pour obtenir la valeur, mais elle provoquera un arrêt brutal du programme si la valeur est `None`.\n\n**Remarque** : les suggestions de code se réfèrent à la fonction `reqwest::blocking::get` pour suivre l'instruction `// Fetch URL content` du commentaire. Le nom de la [crate `reqwest`](https://docs.rs/reqwest/latest/reqwest/) n'est pas une faute de frappe. Cette crate simplifie les requêtes HTTP, en mode asynchrone ou bloquant.\n\nL'analyse XML peut varier selon les flux RSS, alors testez la fonction `get_feeds()` et ajustez le code si nécessaire.\n\n### Appel de la fonction du module dans main()\n\nLa fonction main() ne connaît pas encore la fonction `get_feeds()`. Nous devons donc importer son module. Contrairement à d'autres langages de programmation, qui utilisent les mots-clés `include` ou `import`, Rust utilise des répertoires de fichiers\n\npour organiser les modules. Dans notre exemple, les deux fichiers source existent au même niveau de répertoire. `feed_reader.rs` est interprété comme une crate, contenant un module appelé `feed_reader`, qui définit la fonction `get_feeds()`.\n\n```\nsrc/\n  main.rs\n  feed_reader.rs\n```\n\nPour accéder à `get_feeds()` à partir du fichier `feed_reader.rs`, commencez par [indiquer le chemin du module](https://doc.rust-lang.org/book/ch07-04-bringing-paths-into-scope-with-the-use-keyword.html) dans la portée `main.rs`, puis appeler le chemin complet de la fonction.\n\n```rust\nmod feed_reader;\n\nfn main() {\n\n    feed_reader::feed_reader::get_feeds(&rss_feeds);\n\n```\n\nUtilisez le mot-clé `use` pour importer le chemin complet de la fonction avec un nom court.\n\n```rust\nmod feed_reader;\nuse feed_reader::feed_reader::get_feeds;\n\nfn main() {\n\n    get_feeds(&rss_feeds);\n\n```\n\n**Astuce :** consultez [l'article « Clear explanation of the Rust module system »](https://www.sheshbabu.com/posts/rust-module-system/) pour plus de détails.\n\n```diff\n\nfn main() {\n    // ...\n\n    // Print feed_reader get_feeds() output\n    println!(\"{}\", feed_reader::get_feeds(&rss_feeds));\n```\n\n```rust\nuse std::collections::HashMap;\n\nmod feed_reader;\n// Alternative: Import full function path\n//use feed_reader::feed_reader::get_feeds;\n\nfn main() {\n    // Define RSS feed URLs in the variable rss_feeds\n    // Use a HashMap\n    // Add Hacker News and TechCrunch\n    // Ensure to use String as type\n    let rss_feeds = HashMap::from([\n        (\"Hacker News\".to_string(), \"https://news.ycombinator.com/rss\".to_string()),\n        (\"TechCrunch\".to_string(), \"https://techcrunch.com/feed/\".to_string()),\n    ]);\n\n    // Call get_feeds() from feed_reader module\n    feed_reader::feed_reader::get_feeds(&rss_feeds);\n    // Alternative: Imported full path, use short path here.\n    //get_feeds(&rss_feeds);\n}\n```\n\nExécutez `cargo build` à nouveau dans le terminal pour compiler le code.\n\n```shell\ncargo build\n```\n\nDemander des suggestions de code pour des bibliothèques courantes (comme les requêtes HTTP ou l'analyse XML) peut provoquer des erreurs de compilation telles que :\n\n1. Erreur : `could not find blocking in reqwest`. Solution : activez la fonctionnalité `blocking` pour la crate dans `Config.toml`: `reqwest = { version = \"0.11.20\", features = [\"blocking\"] }`.\n2. Erreur : `failed to resolve: use of undeclared crate or module reqwest`. Solution : ajoutez la crate `reqwest`.\n3. Erreur : `failed to resolve: use of undeclared crate or module roxmltree`. Solution : ajoutez la crate `roxmltree`.\n\n```shell\nvim Config.toml\n\nreqwest = { version = \"0.11.20\", features = [\"blocking\"] }\n```\n\n```shell\ncargo add reqwest\ncargo add roxmltree\n```\n\n**Astuce :** copiez le message d'erreur avec l'en-tête `Rust \u003Cerror message>` dans un navigateur pour vérifier si la crate manquante est disponible. Cette recherche vous dirigera sur crates.io. Ajoutez ensuite les dépendances manquantes.\n\nAprès la compilation, exécutez le code avec `cargo run` et vérifiez la sortie du flux RSS de Hacker News.\n\n![Terminal VS Code, exécution de Cargo pour récupérer le flux XML de Hacker News](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_terminal_fetch_rss_feed_output_hacker_news.png){: .shadow}\n\nProchaine étape : analyse XML dans un format lisible par un humain Nous allons maintenant explorer les solutions existantes et le rôle des crates Rust.\n\n## Crates\nLes flux RSS suivent des protocoles et spécifications communs. Pour analyser les éléments XML et comprendre la structure de l'objet sous-jacent, vérifiez si un développeur a déjà résolu ce problème et utilisez son code.\n\nEn Rust, le code réutilisable est organisé en [`Crates`](https://doc.rust-lang.org/rust-by-example/crates.html) et disponible sur crates.io. Ajoutez ces dépendances dans le fichier `Config.toml` dans la section `[dependencies]` ou avec `cargo add \u003Cname>`.\n\nPour notre application, utilisez la [crate feed-rs](https://crates.io/crates/feed-rs) en exécutant la commande suivante dans le terminal :\n\n```shell\ncargo add feed-rs\n```\n\n![Terminal VS Code Terminal : ajout d'une crate, vérification dans le fichier Config.toml](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_rust_crate_add_feed-rs_explained.png)\n\n### feed-rs pour analyser un flux XML\nAccédez à `src/feed_reader.rs` pour modifier l'analyse XML. GitLab Duo sait appeler la fonction `parser::parse` de la crate `feed-rs`. Les suggestion de code comprennent le cas particulier : `feed-rs` [attend des octets bruts en entrée, et non des chaînes](https://docs.rs/feed-rs/latest/feed_rs/parser/fn.parse_with_uri.html) pour déterminer l'encodage. Fournissez des instructions dans le commentaire pour obtenir le résultat prévu.\n\n```rust\n            // Parse XML body with feed_rs parser, input in bytes\n            let parsed_body = feed_rs::parser::parse(body.as_bytes()).unwrap();\n```\n\n![Suggestions de code : module public avec la fonction `get_feeds()`, étape 5 : modification de l'analyseur XML en feed-rs](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_module_function_05_use_feed_rs_to_parse.png){: .shadow}\n\nLes avantages de `feed-rs` se révèlent en exécutant votre programme avec la commande `cargo run` : les clés et valeurs sont converties en types d'objets Rust réutilisables.\n\n![Terminal VS Code, exécution de Cargo pour récupérer le flux XML de Hacker News](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_terminal_fetch_rss_feed_output_hacker_news_feed_rs.png){: .shadow}\n\n## Configuration du runtime : arguments de programme\nJusqu'à présent, nous avons utilisé des valeurs de flux RSS codées en dur. La prochaine étape est de configurer ces flux RSS au moment de l'exécution.\n\nRust propose des [arguments de programme](https://doc.rust-lang.org/rust-by-example/std_misc/arg.html) via la bibliothèque « Std misc » standard. Il est plus rapide d'apprendre [l'analyse des arguments](https://doc.rust-lang.org/rust-by-example/std_misc/arg/matching.html) directement que d'utiliser des crates (par exemple, la crate [clap](https://docs.rs/clap/latest/clap/)) ou de passer par un fichier de configuration ou un autre format ([TOML](https://toml.io/en/), YAML). Pour cet article, j'ai bien essayé d'autres pistes, mais sans succès. Relevez le défi et essayez de configurer les flux RSS d'une autre manière.\n\nUne méthode simple consiste à passer les paramètres sous la forme `\"name,url\"` avec les valeurs séparées par une virgule `,` pour extraire le nom et l'URL. Demandez aux suggestions de code d'effectuer cette action et d'inclure les nouvelles valeurs dans la table de hachage `rss_feeds`. La variable peut ne pas être modifiable et doit être remplacée par `let mut rss_feeds`.\n\nAccédez à `src/main.rs` et ajoutez le code suivant à la fonction `main()` après la variable `rss_feeds`. Écrivez un commentaire qui définit les arguments de programme et vérifiez le code suggéré.\n\n```rust\n    // Program args, format \"name,url\"\n    // Split value by , into name, url and add to rss_feeds\n```\n\n![Suggestions de code pour les arguments de programme et découpage des paires nom,URL pour la variable rss_feeds](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_program_args_boring_solution.png){: .shadow}\n\nDans notre exemple, le code est le suivant :\n\n```rust\nfn main() {\n    // Define RSS feed URLs in the variable rss_feeds\n    // Use a HashMap\n    // Add Hacker News and TechCrunch\n    // Ensure to use String as type\n    let mut rss_feeds = HashMap::from([\n        (\"Hacker News\".to_string(), \"https://news.ycombinator.com/rss\".to_string()),\n        (\"TechCrunch\".to_string(), \"https://techcrunch.com/feed/\".to_string()),\n    ]);\n\n    // Program args, format \"name,url\"\n    // Split value by , into name, url and add to rss_feeds\n    for arg in std::env::args().skip(1) {\n        let mut split = arg.split(\",\");\n        let name = split.next().unwrap();\n        let url = split.next().unwrap();\n        rss_feeds.insert(name.to_string(), url.to_string());\n    }\n\n    // Call get_feeds() from feed_reader module\n    feed_reader::feed_reader::get_feeds(&rss_feeds);\n    // Alternative: Imported full path, use short path here.\n    //get_feeds(&rss_feeds);\n}\n```\n\nPassez les arguments directement avec `cargo run`, avant les arguments contenant `--`. Ajoutez des guillemets doubles à tous les arguments et une virgule après le nom. Utilisez l'URL du flux RSS comme argument. Séparez les arguments par des espaces.\n\n```\ncargo build\n\ncargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https://www.cncf.io/feed/\"\n```\n\n![Terminal VS Code, exemple de sortie de flux RSS pour le blog GitLab](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_terminal_gitlab_blog_rss_feed_example.png){: .shadow}\n\n### Gestion des erreurs des intrants saisis\nSi l'entrée ne correspond pas aux attentes du programme, [générez une erreur](https://doc.rust-lang.org/rust-by-example/error.html) pour aider à corriger les arguments, par exemple en cas d'URL invalide. Ajoutez un commentaire dans le code pour que les suggestions de code incluent une vérification de l'URL.\n\n```rust\n    // Ensure that URL contains a valid format, otherwise throw an error\n```\n\nVérifiez si `url` commence par `http://` ou `https://`. Sinon, utilisez la [macro panic!](https://doc.rust-lang.org/rust-by-example/std/panic.html) pour générer une erreur. Dans notre exemple, le code est le suivant :\n\n```rust\n    // Program args, format \"name,url\"\n    // Split value by , into name, url and add to rss_feeds\n    for arg in std::env::args().skip(1) {\n        let mut split = arg.split(\",\");\n        let name = split.next().unwrap();\n        let url = split.next().unwrap();\n\n        // Ensure that URL contains a valid format, otherwise throw an error\n        if !url.starts_with(\"http://\") && !url.starts_with(\"https://\") {\n            panic!(\"Invalid URL format: {}\", url);\n        }\n\n        rss_feeds.insert(name.to_string(), url.to_string());\n    }\n```\n\nTestez la gestion des erreurs en supprimant `:` dans l'une des chaînes d'URL. Ajoutez la variable d'environnement `RUST_BACKTRACE=full` pour un affichage plus détaillé des résultats lorsque l'appel `panic()`.\n\n```\nRUST_BACKTRACE=full cargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https//www.cncf.io/feed/\"\n```\n\n![Terminal VS Code avec un format d'URL incorrect, traçage des erreurs suite à un arrêt brutal du programme](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_terminal_url_format_error_panic_backtrace.png){: .shadow}\n\n## Persistance et stockage des données\nUne solution classique consiste à stocker les données du flux analysé dans un nouveau fichier. Demandez aux suggestions de code de générer un nom de fichier incluant le nom du flux RSS et la date au format ISO.\n\n```rust\n    // Parse XML body with feed_rs parser, input in bytes\n    let parsed_body = feed_rs::parser::parse(body.as_bytes()).unwrap();\n\n    // Print the result\n    println!(\"{:#?}\", parsed_body);\n\n    // Dump the parsed body to a file, as name-current-iso-date.xml\n    let now = chrono::offset::Local::now();\n    let filename = format!(\"{}-{}.xml\", name, now.format(\"%Y-%m-%d\"));\n    let mut file = std::fs::File::create(filename).unwrap();\n    file.write_all(body.as_bytes()).unwrap();\n```\n\nUtilisez la [crate chrono](https://crates.io/crates/chrono). Ajoutez-la à l'aide de `cargo add chrono`, puis exécutez `cargo build` et `cargo run`.\n\nLes fichiers seront enregistrés dans le répertoire où `cargo run` est exécuté. Si vous exécutez le binaire directement dans le répertoire `target/debug/`, les fichiers y seront sauvegardés.\n\n![VS Code avec fichier de contenu du flux RSS CNCF, enregistré sur le disque](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_cncf_rss_feed_saved_on_disk.png)\n\n## Optimisation\nLes URL dans `rss_feeds` sont traitées de manière séquentielle, ce qui peut être lent avec plus de 100 URL. Pourquoi ne pas les traiter en parallèle ?\n\n### Exécution asynchrone\nRust permet l'exécution asynchrone avec des [threads](https://doc.rust-lang.org/book/ch16-01-threads.html).\n\nLa méthode la plus simple est de créer un thread pour chaque URL de flux RSS. Nous explorerons les stratégies d'optimisation ultérieurement. Avant de passer à l'exécution parallèle, mesurez le temps d'exécution séquentiel en faisant précéder `time` par `cargo run`.\n\n```\ntime cargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https://www.cncf.io/feed/\"\n\n0.21s user 0.08s system 10% cpu 2.898 total\n```\n\nCet exercice peut nécessiter du codage manuel. Conservez l'état séquentiel dans une validation Git et une nouvelle branche `sequential-exec` pour comparer l'impact de l'exécution parallèle.\n\n```shell\ngit commit -avm \"Sequential execution working\"\ngit checkout -b sequential-exec\ngit push -u origin sequential-exec\n\ngit checkout main\n```\n\n### Création de threads\nOuvrez `src/feed_reader.rs` et réusinez la fonction `get_feeds()`. Lancez une validation Git de l'état actuel, puis supprimez le contenu de la portée de la fonction. Ajoutez les commentaires suivants dans le code comme instructions pour les suggestions de code :\n\n1. `// Store threads in vector` : stockez les gestionnaires de thread dans un vecteur pour attendre que tous les threads se terminent à la fin de l'appel de la fonction.\n2. `// Loop over rss_feeds and spawn threads` : créez un code standard pour itérer sur les flux RSS et générer un thread pour chacun.\n\nAjoutez les instructions `use` suivantes pour les modules `thread` et `time`.\n\n```rust\n    use std::thread;\n    use std::time::Duration;\n```\n\nContinuez à écrire le code et fermez la boucle for. Ajoutez les gestionnaires de thread au vecteur `threads` et joignez-les à la fin de la fonction.\n\n```rust\n    pub fn get_feeds(rss_feeds: &HashMap\u003CString, String>) {\n\n        // Store threads in vector\n        let mut threads: Vec\u003Cthread::JoinHandle\u003C()>> = Vec::new();\n\n        // Loop over rss_feeds and spawn threads\n        for (name, url) in rss_feeds {\n            let thread_name = name.clone();\n            let thread_url = url.clone();\n            let thread = thread::spawn(move || {\n\n            });\n            threads.push(thread);\n        }\n\n        // Join threads\n        for thread in threads {\n            thread.join().unwrap();\n        }\n    }\n```\n\nAjoutez la crate `thread`, compilez et exécutez le code.\n\n```shell\ncargo add thread\n\ncargo build\n\ncargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https://www.cncf.io/feed/\"\n```\n\nAucune donnée n'est traitée ni affichée. Explorez les nouveaux mots-clés avant de réintégrer la fonctionnalité.\n\n### Portées, threads et fermetures des fonctions\nLe code suggéré utilise de nouveaux mots-clés et design patterns. Le gestionnaire de thread de type `thread::JoinHandle` permet d'attendre la fin des threads ([join()](https://doc.rust-lang.org/book/ch16-01-threads.html#waiting-for-all-threads-to-finish-using-join-handles)).\n\n`thread::spawn()` génère un thread pour passer un objet fonction. Une expression [de fermeture](https://doc.rust-lang.org/book/ch13-01-closures.html) est passée en tant que fonction anonyme. Les paramètres de fermeture sont passés avec la syntaxe `||`. La [fermeture `move`](https://doc.rust-lang.org/book/ch16-01-threads.html#using-move-closures-with-threads) déplace les variables de portée de la fonction dans celle du thread. Pas besoin de préciser manuellement les variables qui doivent être passées dans la nouvelle portée de la fonction/fermeture.\n\nCependant, `rss_feeds` est passé comme référence `&` par la structure d'appel de la fonction `get_feeds()` et n'est valide que dans la portée de la fonction. Utilisez le code suivant pour provoquer une erreur :\n\n```rust\npub fn get_feeds(rss_feeds: &HashMap\u003CString, String>) {\n\n    // Store threads in vector\n    let mut threads: Vec\u003Cthread::JoinHandle\u003C()>> = Vec::new();\n\n    // Loop over rss_feeds and spawn threads\n    for (key, value) in rss_feeds {\n        let thread = thread::spawn(move || {\n            println!(\"{}\", key);\n        });\n    }\n}\n```\n\n![Terminal VS Code, erreur liée à la portée de la variable et aux références avec une fermeture déplacée dans un thread](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_terminal_cargo_build_error_function_threads_variable_scopes.png){: .shadow}\n\nLa variable `key`, pourtant créée dans la portée de la fonction, fait référence à `rss_feeds` et ne peut pas être déplacée dans la portée du thread. Les valeurs accessibles depuis la table de hachage des paramètres de fonction `rss_feeds` nécessitent une copie locale avec `clone()`.\n\n![Terminal VS Code, création de thread avec clone](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_rust_thread_spawn_clone.png){: .shadow}\n\n```rust\npub fn get_feeds(rss_feeds: &HashMap\u003CString, String>) {\n\n    // Store threads in vector\n    let mut threads: Vec\u003Cthread::JoinHandle\u003C()>> = Vec::new();\n\n    // Loop over rss_feeds and spawn threads\n    for (name, url) in rss_feeds {\n        let thread_name = name.clone();\n        let thread_url = url.clone();\n        let thread = thread::spawn(move || {\n            // Use thread_name and thread_url as values, see next chapter for instructions.\n```\n\n## Analyse du flux XML dans les types d'objets\nL'étape suivante consiste à analyser le flux RSS dans la fermeture du thread. Ajoutez les commentaires suivants dans le code pour guider les suggestions de code :\n\n1. `// Parse XML body with feed_rs parser, input in bytes` : récupérer le contenu de l'URL du flux RSS et l'analyser avec les fonctions de la crate `feed_rs`.\n2. `// Check feed_type attribute feed_rs::model::FeedType::RSS2 or Atom and print its name` : extraire le type de flux pour comparer l'attribut `feed_type` avec [`feed_rs::model::FeedType`](https://docs.rs/feed-rs/latest/feed_rs/model/enum.FeedType.html). Les suggestions de code doivent aussi recevoir des instructions avec les valeurs enum exactes à comparer.\n\n![Demande adressée aux suggestions de code de comparer les types de flux spécifiques](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_feed_rs_type_condition.png){: .shadow}\n\n```rust\n            // Parse XML body with feed_rs parser, input in bytes\n            let body = reqwest::blocking::get(thread_url).unwrap().bytes().unwrap();\n            let feed = feed_rs::parser::parse(body.as_ref()).unwrap();\n\n            // Check feed_type attribute feed_rs::model::FeedType::RSS2 or Atom and print its name\n            if feed.feed_type == feed_rs::model::FeedType::RSS2 {\n                println!(\"{} is an RSS2 feed\", thread_name);\n            } else if feed.feed_type == feed_rs::model::FeedType::Atom {\n                println!(\"{} is an Atom feed\", thread_name);\n            }\n```\n\nExécutez le programme et vérifiez les données de sortie.\n\n```\ntime cargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https://www.cncf.io/feed/\"\n\nCNCF is an RSS2 feed\nTechCrunch is an RSS2 feed\nGitLab Blog is an Atom feed\nHacker News is an RSS2 feed\n```\n\nPour cela, ouvrez les URL des flux dans le navigateur ou en inspectant les fichiers téléchargés.\n\nHacker News utilise RSS 2.0, avec `channel(title,link,description,item(title,link,pubDate,comments))`. TechCrunch et le blog de la CNCF ont une structure similaire.\n```xml\n\u003Crss version=\"2.0\">\u003Cchannel>\u003Ctitle>Hacker News\u003C/title>\u003Clink>https://news.ycombinator.com/\u003C/link>\u003Cdescription>Links for the intellectually curious, ranked by readers.\u003C/description>\u003Citem>\u003Ctitle>Writing a debugger from scratch: Breakpoints\u003C/title>\u003Clink>https://www.timdbg.com/posts/writing-a-debugger-from-scratch-part-5/\u003C/link>\u003CpubDate>Wed, 27 Sep 2023 06:31:25 +0000\u003C/pubDate>\u003Ccomments>https://news.ycombinator.com/item?id=37670938\u003C/comments>\u003Cdescription>\u003C![CDATA[\u003Ca href=\"https://news.ycombinator.com/item?id=37670938\">Comments\u003C/a>]]>\u003C/description>\u003C/item>\u003Citem>\n```\n\nLe blog de GitLab utilise le format de flux [Atom](https://datatracker.ietf.org/doc/html/rfc4287), similaire à RSS, mais nécessitant une logique d'analyse différente.\n```xml\n\u003C?xml version='1.0' encoding='utf-8' ?>\n\u003Cfeed xmlns='http://www.w3.org/2005/Atom'>\n\u003C!-- / Get release posts -->\n\u003C!-- / Get blog posts -->\n\u003Ctitle>GitLab\u003C/title>\n\u003Cid>https://about.gitlab.com/blog\u003C/id>\n\u003Clink href='https://about.gitlab.com/blog/' />\n\u003Cupdated>2023-09-26T00:00:00+00:00\u003C/updated>\n\u003Cauthor>\n\u003Cname>The GitLab Team\u003C/name>\n\u003C/author>\n\u003Centry>\n\u003Ctitle>Atlassian Server ending: Goodbye disjointed toolchain, hello DevSecOps platform\u003C/title>\n\u003Clink href='https://about.gitlab.com/blog/atlassian-server-ending-move-to-a-single-devsecops-platform/' rel='alternate' />\n\u003Cid>https://about.gitlab.com/blog/atlassian-server-ending-move-to-a-single-devsecops-platform/\u003C/id>\n\u003Cpublished>2023-09-26T00:00:00+00:00\u003C/published>\n\u003Cupdated>2023-09-26T00:00:00+00:00\u003C/updated>\n\u003Cauthor>\n\u003Cname>Dave Steer, Justin Farris\u003C/name>\n\u003C/author>\n```\n\n### Cartographie des types de données de flux génériques\nPour utiliser la fonction [`roxmltree::Document::parse`](https://docs.rs/roxmltree/latest/roxmltree/struct.Document.html) vous devez comprendre l'arborescence des nœuds XML et ses noms de balise. Heureusement, [feed_rs::model::Feed](https://docs.rs/feed-rs/latest/feed_rs/model/struct.Feed.html) gère à la fois les flux RSS et Atom. Nous pouvons donc continuer avec la crate `feed_rs`.\n\n1. Atom : Feed->Feed, Entry->Entry\n2. RSS : Channel->Feed, Item->Entry\n\nNous devons extraire les attributs requis et associer leurs types de données. Consultez la [documentation feed_rs::model](https://docs.rs/feed-rs/latest/feed_rs/model/index.html) pour comprendre les structures, leurs champs et implémentations. Cela évitera les erreurs de conversion et les échecs de compilation, spécifiques à l'implémentation de `feed_rs`.\n\nLa structure [`Feed`](https://docs.rs/feed-rs/latest/feed_rs/model/struct.Feed.html) fournit un `title` de type `Option\u003CText>` (avec une valeur ou vide). La structure [`Entry`](https://docs.rs/feed-rs/latest/feed_rs/model/struct.Entry.html) fournit les éléments suivants :\n\n1. `title` : `Option\u003CText>` avec [`Text`](https://docs.rs/feed-rs/latest/feed_rs/model/struct.Text.html) et le champ `content` comme la `String`.\n2. `updated` : `Option\u003CDateTime\u003CUtc>>` avec [`DateTime`](https://docs.rs/chrono/latest/chrono/struct.DateTime.html) avec la [méthode `format()`](https://docs.rs/chrono/latest/chrono/struct.DateTime.html#method.format).\n3. `summary` : `Option\u003CText>` [`Text`](https://docs.rs/feed-rs/latest/feed_rs/model/struct.Text.html) et le champ `content` comme la `String`.\n4. `links` : `Vec\u003CLink>`, vecteur avec les éléments [`Link`](https://docs.rs/feed-rs/latest/feed_rs/model/struct.Link.html). L'attribut `href` fournit la chaîne d'URL brute.\n\nUtilisez ces connaissances pour extraire les données des intrants de flux. Appelez `unwrap()` sur tous les types `Option` et ajoutez des instructions explicites aux suggestions de code.\n\n```rust\n                // https://docs.rs/feed-rs/latest/feed_rs/model/struct.Feed.html\n                // https://docs.rs/feed-rs/latest/feed_rs/model/struct.Entry.html\n                // Loop over all entries, and print\n                // title.unwrap().content\n                // published.unwrap().format\n                // summary.unwrap().content\n                // links href as joined string\n                for entry in feed.entries {\n                    println!(\"Title: {}\", entry.title.unwrap().content);\n                    println!(\"Published: {}\", entry.published.unwrap().format(\"%Y-%m-%d %H:%M:%S\"));\n                    println!(\"Summary: {}\", entry.summary.unwrap().content);\n                    println!(\"Links: {:?}\", entry.links.iter().map(|link| link.href.clone()).collect::\u003CVec\u003CString>>().join(\", \"));\n                    println!();\n                }\n```\n\n![Suggestions de code pour afficher les types d'éléments de flux, avec des exigences spécifiques](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_print_feed_entries_fields_with_rust_type_specifics.png){: .shadow}\n\n### Gestion des erreurs avec l'Option unwrap()\nCompilez, exécutez le programme, puis continuez avec des instructions multilignes. Remarque : `unwrap()` appelle la macro `panic!` et bloque le programme si des valeurs sont vides, comme un champ `summary` non défini dans les données du flux.\n\n```shell\nGitLab Blog is an Atom feed\nTitle: How the Colmena project uses GitLab to support citizen journalists\nPublished: 2023-09-27 00:00:00\nthread '\u003Cunnamed>' panicked at 'called `Option::unwrap()` on a `None` value', src/feed_reader.rs:40:59\n```\n\nUtilisez [`std::Option::unwrap_or_else`](https://doc.rust-lang.org/std/option/enum.Option.html#method.unwrap_or_else) pour définir une chaîne vide comme valeur par défaut. La syntaxe nécessite une fermeture qui renvoie une instanciation de structure `Text` vide.\n\nJ'ai dû m'y reprendre à plusieurs fois pour trouver l'initialisation correcte permettant de résoudre le problème, car le passage d'une chaîne vide ne fonctionne pas avec les types personnalisés. Je vais vous montrer mes tentatives et recherches.\n\n```rust\n// Problem: The `summary` attribute is not always initialized. unwrap() will panic! then.\n// Requires use mime; and use feed_rs::model::Text;\n/*\n// 1st attempt: Use unwrap() to extraxt Text from Option\u003CText> type.\nprintln!(\"Summary: {}\", entry.summary.unwrap().content);\n// 2nd attempt. Learned about unwrap_or_else, passing an empty string.\nprintln!(\"Summary: {}\", entry.summary.unwrap_or_else(|| \"\").content);\n// 3rd attempt. summary is of the Text type, pass a new struct instantiation.\nprintln!(\"Summary: {}\", entry.summary.unwrap_or_else(|| Text{}).content);\n// 4th attempt. Struct instantiation requires 3 field values.\nprintln!(\"Summary: {}\", entry.summary.unwrap_or_else(|| Text{\"\", \"\", \"\"}).content);\n// 5th attempt. Struct instantation with public fields requires key: value syntax\nprintln!(\"Summary: {}\", entry.summary.unwrap_or_else(|| Text{content_type: \"\", src: \"\", content: \"\"}).content);\n// 6th attempt. Reviewed expected Text types in https://docs.rs/feed-rs/latest/feed_rs/model/struct.Text.html and created Mime and String objects\nprintln!(\"Summary: {}\", entry.summary.unwrap_or_else(|| Text{content_type: mime::TEXT_PLAIN, src: String::new(), content: String::new()}).content);\n// 7th attempt: String and Option\u003CString> cannot be casted automagically. Compiler suggested using `Option::Some()`.\nprintln!(\"Summary: {}\", entry.summary.unwrap_or_else(|| Text{content_type: mime::TEXT_PLAIN, src: Option::Some(), content: String::new()}).content);\n*/\n\n// xth attempt: Solution. Option::Some() requires a new String object.\nprintln!(\"Summary: {}\", entry.summary.unwrap_or_else(|| Text{content_type: mime::TEXT_PLAIN, src: Option::Some(String::new()), content: String::new()}).content);\n```\n\nCette approche n'était pas satisfaisante, car la ligne de code était difficile à lire et nécessitait une retouche manuelle sans suggestions de code. Puis, j'ai trouvé où se nichait le problème : si `Option` a la valeur `none`, `unwrap()` génère une erreur. J'ai demandé aux suggestions de code s’il existe une méthode plus simple, avec ce nouveau commentaire :\n\n```\n                // xth attempt: Solution. Option::Some() requires a new String object.\n                println!(\"Summary: {}\", entry.summary.unwrap_or_else(|| Text{content_type: mime::TEXT_PLAIN, src: Option::Some(String::new()), content: String::new()}).content);\n\n                // Alternatively, use Option.is_none()\n```\n\n![Demande aux suggestions de code d'une alternative pour Options.is_none](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/code_suggestions_after_complex_unwrap_or_else_ask_for_alternative_option.png){: .shadow}\n\nCette méthode améliore la lisibilité, moins de cycles CPU sont gaspillés sur `unwrap()` et la courbe d'apprentissage est excellente, de la résolution d'un problème complexe à l'utilisation d'une solution standard. Gagnant-gagnant.\n\nAjoutez le stockage des données XML sur le disque pour finaliser l'application de lecteur de flux.\n\n```rust\n                // Dump the parsed body to a file, as name-current-iso-date.xml\n                let file_name = format!(\"{}-{}.xml\", thread_name, chrono::Local::now().format(\"%Y-%m-%d-%H-%M-%S\"));\n                let mut file = std::fs::File::create(file_name).unwrap();\n                file.write_all(body.as_ref()).unwrap();\n```\n\nCompilez et exécutez le programme pour vérifier les données de sortie.\n\n```shell\ncargo build\n\ntime cargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https://www.cncf.io/feed/\"\n```\n\n![Terminal VS Code, exécution de Cargo avec des données de sortie d'intrants au format requis](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/vs_code_terminal_cargo_run_formatted_output_final.png)\n\n## Benchmarks\n\n### Exécution séquentielle vs parallèle\nComparez les temps d'exécution du code en créant cinq échantillons pour chaque type d'exécution.\n\n1. Exécution séquentielle. [Exemple de code source de la MR](https://gitlab.com/gitlab-de/use-cases/ai/learn-with-ai/learn-rust-ai-app-reader/-/merge_requests/1)\n2. Exécution parallèle. [Exemple de code source de la MR](https://gitlab.com/gitlab-de/use-cases/ai/learn-with-ai/learn-rust-ai-app-reader/-/merge_requests/3)\n\n```shell\n# Sequential\ngit checkout sequential-exec\n\ntime cargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https://www.cncf.io/feed/\"\n\n0.21s user 0.08s system 10% cpu 2.898 total\n0.21s user 0.08s system 11% cpu 2.585 total\n0.21s user 0.09s system 10% cpu 2.946 total\n0.19s user 0.08s system 10% cpu 2.714 total\n0.20s user 0.10s system 10% cpu 2.808 total\n```\n\n```shell\n# Parallel\ngit checkout parallel-exec\n\ntime cargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https://www.cncf.io/feed/\"\n\n0.19s user 0.08s system 17% cpu 1.515 total\n0.18s user 0.08s system 16% cpu 1.561 total\n0.18s user 0.07s system 17% cpu 1.414 total\n0.19s user 0.08s system 18% cpu 1.447 total\n0.17s user 0.08s system 16% cpu 1.453 total\n```\nAvec quatre threads RSS en parallèle, le temps total est presque réduit de moitié, mais le CPU est plus sollicité. Optimisons le code et les fonctionnalités.\n\nActuellement, nous utilisons la version de débogage Cargo, mais pas encore les versions optimisées. L'exécution parallèle a ses limites : les points de terminaison HTTP peuvent atteindre leur débit maximum, et \n\nchaque thread nécessite un changement de contexte dans le noyau, consommant des ressources. Lorsqu'un thread reçoit des ressources de calcul, d'autres sont mis en veille. Un trop grand nombre de threads peut ralentir le système. Pour éviter cela, utilisez des design patterns comme les [files d'attente de travail](https://docs.rs/work-queue/latest/work_queue/). Un pool de threads récupère cette tâche pour une exécution asynchrone.\n\nRust garantir la synchronisation des données entre les threads à l'aide des [canaux](https://doc.rust-lang.org/rust-by-example/std_misc/channels.html). Pour garantir un accès simultané aux données, des [mutexes (exclusions mutuelles)](https://doc.rust-lang.org/std/sync/struct.Mutex.html) fournissent des verrous sûrs.\n\n### CI/CD avec mise en cache Rust\nAjoutez la configuration CI/CD suivante dans le fichier `.gitlab-ci.yml`. Le job `run-latest` appelle `cargo run` avec des exemples d'URL de flux RSS et mesure le temps d'exécution en continu.\n\n```\nstages:\n  - build\n  - test\n  - run\n\ndefault:\n  image: rust:latest\n  cache:\n    key: ${CI_COMMIT_REF_SLUG}\n    paths:\n      - .cargo/bin\n      - .cargo/registry/index\n      - .cargo/registry/cache\n      - target/debug/deps\n      - target/debug/build\n    policy: pull-push\n\n# Cargo data needs to be in the project directory for being cached.\nvariables:\n  CARGO_HOME: ${CI_PROJECT_DIR}/.cargo\n\nbuild-latest:\n  stage: build\n  script:\n    - cargo build --verbose\n\ntest-latest:\n  stage: build\n  script:\n    - cargo test --verbose\n\nrun-latest:\n  stage: run\n  script:\n    - time cargo run -- \"GitLab Blog,https://about.gitlab.com/atom.xml\" \"CNCF,https://www.cncf.io/feed/\"\n```\n\n![Pipelines GitLab CI/CD pour Rust, données de sortie de l'exécution Cargo](https://about.gitlab.com/images/blogimages/learn-rust-with-ai-code-suggestions-advanced-programming/gitlab_cicd_pipeline_rust_cargo_run_output.png){: .shadow}\n\n## Étapes suivantes\nRédiger cet article a été un défi pour maîtriser les techniques avancées de Rust et optimiser les suggestions de code. Ces dernières sont très utiles pour générer rapidement du code, avec le contexte local et pour ajuster l'algorithme à mesure que vous écrivez le code. Dans cet article, j'ai partagé les défis et les solutions. L'exemple de code pour l'application de lecture est disponible dans [le projet learn-rust-ai-app-reader](https://gitlab.com/gitlab-de/use-cases/ai/learn-with-ai/learn-rust-ai-app-reader).\n\nL'analyse des flux RSS étant complexe, elle nécessite des structures de données, des requêtes HTTP externes et des optimisations parallèles. Alors, `pourquoi ne pas utiliser la crate std::rss` -- pour une exécution asynchrone avancée. Cela ne démontre pas toutes les fonctionnalités de Rust abordées dans cet article, mais vous pouvez essayer de réécrire le code avec la [crate `rss`](https://docs.rs/rss/latest/rss/) pour pratiquer l'exécution asynchrone.\n\n### Exercices d'apprentissage de l'exécution asynchrone\nCet article pose les bases pour explorer le stockage persistant et la présentation des données. Pour vous perfectionner votre application en Rust, voici quelques idées :\n\n1. Stockage des données : utilisez une base de données comme sqlite et suivez les mises à jour des flux RSS.\n2. Notifications : déclenchez des notifications dans Telegram, ou autres.\n3. Fonctionnalités : étendez les types de lecteurs aux [API REST](https://about.gitlab.com/fr-fr/blog/what-is-rest-api/ \"API REST\")\n4. Configuration : intégrez des fichiers de configuration pour les flux RSS, les API, etc.\n5. Efficacité : ajoutez des filtres et des balises d'abonnement.\n6. Déploiement : utilisez un serveur Web, collectez les indicateurs avec Prometheus et déployez sur Kubernetes.\n\nNous aborderons certains de ces sujets dans un prochain article. En attendant, essayez d'implémenter des flux RSS existants et explorez d'autres bibliothèques Rust (`crates`).\n\n### Votre retour d'expérience\nLorsque vous utilisez les suggestions de code de [GitLab Duo](/gitlab-duo/), n'hésitez pas à [partager vos retours dans le ticket prévu à cet effet](https://gitlab.com/gitlab-org/gitlab/-/issues/405152).\n",[707,1314,748,936,675],"careers","2025-01-27",{"slug":1317,"featured":6,"template":686},"learn-advanced-rust-programming-with-a-little-help-from-ai-code-suggestions","content:fr-fr:blog:learn-advanced-rust-programming-with-a-little-help-from-ai-code-suggestions.yml","Learn Advanced Rust Programming With A Little Help From Ai Code Suggestions","fr-fr/blog/learn-advanced-rust-programming-with-a-little-help-from-ai-code-suggestions.yml","fr-fr/blog/learn-advanced-rust-programming-with-a-little-help-from-ai-code-suggestions",{"_path":1323,"_dir":249,"_draft":6,"_partial":6,"_locale":7,"seo":1324,"content":1330,"config":1336,"_id":1338,"_type":16,"title":1339,"_source":18,"_file":1340,"_stem":1341,"_extension":21},"/fr-fr/blog/gitlab-flow-duo",{"title":1325,"description":1326,"ogTitle":1325,"ogDescription":1326,"noIndex":6,"ogImage":1327,"ogUrl":1328,"ogSiteName":737,"ogType":738,"canonicalUrls":1328,"schema":1329},"GitLab Flow et GitLab Duo : le combo gagnant pour un workflow puissant","Tirez parti de workflows DevSecOps plus productifs et puissants en combinant GitLab Flow et GitLab Duo au sein de votre cycle de développement logiciel.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749662840/Blog/Hero%20Images/ai-experiment-stars.png","https://about.gitlab.com/blog/gitlab-flow-duo","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"GitLab Flow et GitLab Duo : le combo gagnant pour un workflow puissant\",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Cesar Saavedra\"}],\n        \"datePublished\": \"2023-07-27\",\n      }",{"title":1325,"description":1326,"authors":1331,"heroImage":1327,"date":1332,"body":1333,"category":14,"tags":1334,"updatedDate":1335},[702],"2023-07-27","Adopter une approche DevSecOps nécessite de bien réfléchir au workflow qui sera utilisé. Si cette étape peut parfois représenter un défi de taille, GitLab Flow et GitLab Duo sont là pour vous simplifier la tâche :\n\n__GitLab Flow__ est l'approche préconisée pour accompagner les entreprises dans la mise en œuvre réussie de leurs processus DevSecOps. __GitLab Duo__, quant à lui, offre un [ensemble de fonctionnalités alimentées par l'IA](https://about.gitlab.com/blog/supercharge-productivity-with-gitlab-duo/), intégré à la plateforme DevSecOps de GitLab. Il aide les équipes de développement à coder plus efficacement, optimise le cycle de développement logiciel et garantit une livraison de logiciels plus sécurisés. \n\nEn associant __GitLab Flow__ et __GitLab Duo__, les entreprises peuvent améliorer considérablement l'intégralité de leur workflow, augmenter davantage leur productivité, la fréquence de leurs déploiements, la qualité du code et la sécurité globale, ainsi que la résilience et la disponibilité de l'environnement de production.\n\nDans cet article, découvrez comment GitLab Flow et GitLab Duo peuvent être utilisés conjointement pour aider les entreprises à réussir leur approche [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que DevSecOps ?\").\n\n## Qu'est-ce que GitLab Flow ?\n\n[GitLab Flow](https://about.gitlab.com/fr-fr/topics/version-control/what-is-gitlab-flow/ \"Qu'est-ce que GitLab Flow ? \") est un workflow complet et précis destiné au développement d'applications avec GitLab, notre plateforme DevSecOps alimentée par l'IA offrant une interface utilisateur et un modèle de données uniques. \n\nGitLab Flow est basé sur les meilleures pratiques et leçons tirées des retours d'expérience de nos clients ainsi que de l'utilisation de nos propres fonctionnalités en interne. En outre, GitLab Flow couvre chacune des [étapes du cycle de vie DevSecOps](https://about.gitlab.com/fr-fr/stages-devops-lifecycle/) créant un workflow efficace comprenant deux boucles de rétroaction : \n\n- Une __boucle de rétroaction interne__ qui permet d'examiner et d'évaluer une mise à jour spécifique de l'application pour s'assurer qu'elle répond aux critères de qualité et de sécurité. \n- Une __boucle de rétroaction externe__ qui vise à améliorer l'application dans son ensemble, ainsi que le cycle de développement lui-même. \n\n![Boucles de rétroaction internes et externes de GitLab Flow](https://about.gitlab.com/images/blogimages/gitlab-flow-duo/The-GitLab-Flow-2023-feedback-loops.png)\n\u003Ccenter>Boucles de rétroaction internes et externes de GitLab Flow\u003C/center>\u003Cp>\u003C/p>\n\nGitLab Flow étant constitué de nombreuses étapes, le développement logiciel ne se limite pas à la simple écriture de code. Découvrez ci-dessous chaque étape du processus DevSecOps dans GitLab Flow ainsi que les avantages d'y ajouter l'utilisation de GitLab Duo. \n\n### L'étape de planification\n\nLa planification est la première étape de GitLab Flow et fait partie de la boucle de rétroaction externe. Elle inclut les tickets, les merge requests, les epics, les jalons, les itérations, les sorties de nouvelles versions, les preuves de déploiement et bien plus encore. Découvrez le rôle de ces composants dans GitLab Flow et les avantages de les utiliser en parallèle de GitLab Duo.\n\n![Planification : première étape de GitLab Flow](https://about.gitlab.com/images/blogimages/gitlab-flow-duo/The-GitLab-Flow-2023-planning-portion.png)\n\u003Ccenter>Planification : première étape de GitLab Flow\u003C/center>\u003Cp>\u003C/p>\n\n#### Les tickets \n\nLes tickets sont des espaces collaboratifs dans lesquels les problèmes relatifs au produit sont traités et les nouvelles fonctionnalités sont définies. Lorsque vous créez un ticket, vous commencez par renseigner son titre. Ensuite, vous pouvez utiliser la fonctionnalité de **génération de descriptions de tickets** de GitLab Duo pour automatiquement enrichir le champ de description. Cela vous permet ainsi de gagner un temps précieux et de réduire vos efforts. \n\nComme de nombreuses personnes peuvent être amenées à collaborer sur un même ticket, la fonctionnalité de **résumé des discussions** alimentée par l'IA de GitLab Duo peut résumer des centaines de commentaires laissés sur un ticket en un paragraphe concis. Ainsi, n'importe quelle partie prenante peut rapidement suivre la conversation, rejoindre la discussion et être immédiatement productive.\n\nLes tickets peuvent être organisés et visualisés dans des tableaux de tickets, qui sont des outils de gestion de projet pouvant être utilisés comme tableaux Kanban ou Scrum. Ces tableaux aident les équipes à planifier, à organiser et à visualiser un workflow relatif à un déploiement d'une fonctionnalité ou d'un produit. Différentes catégories de tableaux peuvent être créées et les tickets peuvent être déplacés d'un tableau à l'autre par simple glisser-déposer.\n\n#### Les merge requests\n\nC'est à l'aide des merge requests que les solutions logicielles sont développées. En tant que composants associés à la sortie de nouvelles versions, les tickets et les merge requests permettent d'auditer et de suivre les modifications apportées aux applications par les parties prenantes. Ils sont essentiels au travail des [ingénieurs DevOps](https://about.gitlab.com/fr-fr/topics/devops/what-is-a-devops-platform-engineer/ \"Qu’est-ce qu’un ingénieur de plateforme DevOps ?\") et des ingénieurs de plateforme, aux administrateurs système et aux administrateurs de base de données, tout comme aux ingénieurs sécurité et aux équipes de développement. En outre, les tickets et les merge requests sont des éléments clés du processus de planification pour la sortie des nouvelles versions.\n\nLes merge requests peuvent être créées individuellement ou à partir d'un ticket existant. La création d'une merge request à partir d'un ticket la relie automatiquement à ce dernier, de sorte que lorsqu'elle est fusionnée, le ticket associé est automatiquement fermé. Il est également possible de lier manuellement une merge request à un ticket.\n\n![Une merge request fusionnée ferme le ticket associé](https://about.gitlab.com/images/blogimages/gitlab-flow-duo/mr-with-its-issue.png)\n\u003Ccenter>Une merge request fusionnée ferme le ticket associé\u003C/center>\u003Cp>\u003C/p>\n\nTout comme les tickets, les merge requests peuvent regrouper une longue liste de mises à jour d'une branche de fonctionnalité réalisées par de nombreuses parties prenantes. Les collaborateurs souhaitant comprendre ou se familiariser avec les mises à jour d'une merge request peuvent utiliser la fonctionnalité de **résumé des merge requests** de GitLab Duo pour prendre rapidement connaissance des modifications qui ont été apportées. De plus, ils peuvent tirer parti de la fonctionnalité de **remplissage automatique d'un modèle de merge request** de GitLab Duo, qui s'appuie sur un template de merge request prédéfini, pour remplir automatiquement le contenu des différentes sections. Ces templates de description permettent de standardiser et d'optimiser la collaboration et la communication entre les parties prenantes tout au long du cycle de développement. Et ce processus est encore plus rapide avec GitLab Duo !\n\nLes tickets appartenant au même thème peuvent être regroupés dans des epics pour organiser les tâches à effectuer. Les epics peuvent inclure des tickets enfants et des sous-epics et/ou être liés aux autres epics de l'entreprise. Les itérations permettent de suivre les sprints de travail. Vous pouvez les planifier soit manuellement, soit automatiquement à l'aide des cadences d'itération de GitLab afin de rationaliser les workflows de planification. De plus, elles incluent des [graphiques d'avancement burndown et burnup](https://docs.gitlab.com/ee/user/project/milestones/burndown_and_burnup_charts.html). Les graphiques d'avancement burndown suivent la progression globale d'un projet, tandis que les graphiques d'avancement burnup suivent quotidiennement le nombre total et le poids des tickets ajoutés et terminés dans une timebox donnée.\n\n#### Les jalons\n\nLes jalons permettent aux équipes DevSecOps d'organiser les tickets et les merge requests dans un groupe cohérent, avec une date de début et une échéance facultatives. Ils sont généralement utilisés pour suivre les nouvelles versions et servent également à suivre les tickets et les merge requests au niveau d'un projet ou d'un groupe. Similaires aux itérations, les jalons fournissent des graphiques d'avancement burndown et burnup montrant l'avancement d'un projet.\n\nIls peuvent être associés à la sortie d'une nouvelle fonctionnalité, dont la création automatisée génère de nombreux artefacts, y compris des preuves de déploiement. La preuve de déploiement est un instantané automatisé des données liées à la sortie d'une nouvelle fonctionnalité. En complément des artefacts de test et des jalons associés, les artefacts de job peuvent éventuellement être inclus dans les preuves de déploiement. Cette démarche facilite la vérification par des audits externes des processus internes de développement et de déploiement des nouvelles versions.\n\nLes epics, jalons et itérations peuvent être visualisés depuis la page Roadmaps, qui permet de suivre la progression de la sortie d'une nouvelle fonctionnalité et de rationaliser ce processus. \n\nUne fois l'étape de planification terminée, le travail visant à résoudre un problème ou à développer une nouvelle fonctionnalité peut commencer. C'est là que les merge requests entrent en jeu. Examinons plus en détail ce processus dans GitLab Flow. \n\n### Les merge requests et le push du code\n\n![Merge requests et push du code : deuxième étape de GitLab Flow](https://about.gitlab.com/images/blogimages/gitlab-flow-duo/The-GitLab-Flow-2023-mr-pushing-code-portion.png)\n\u003Ccenter>Merge requests et push du code : deuxième étape de GitLab Flow\u003C/center>\u003Cp>\u003C/p>\n\nLa deuxième étape dans GitLab Flow concerne les merge requests et le push du code. Comme mentionné précédemment, c'est à l'aide des merge requests que les solutions sont développées de façon collaborative par les parties prenantes de l'entreprise. Cette collaboration peut se faire de manière distribuée et asynchrone.\n\nLes participants peuvent tirer parti des fonctionnalités de collaboration, telles que l'ajout de tags, l'intégration de suggestions et de commentaires à la ligne de code, l'ajout de commentaires au sein des merge requests, la revue des fils de discussion et des demandes. Toutes ces fonctionnalités permettent d'améliorer la qualité du code, sa disponibilité, sa fiabilité et ses performances. \n\nLa boucle de rétroaction interne de GitLab Flow intervient directement après la création de la merge request. Elle inclut le push du code et des corrections, l’exécution des scans et des tests, ainsi que la revue à des fins collaboratives et de mise à jour.\n\n#### Les pipelines\n\nLorsque des mises à jour sont appliquées à une branche de fonctionnalité via des merge requests, les pipelines (s'ils sont définis) sont automatiquement exécutés. Ils peuvent comporter plusieurs étapes et jobs servant à compiler, à tester puis à déployer l'application ou le [microservice](https://about.gitlab.com/fr-fr/blog/what-are-the-benefits-of-a-microservices-architecture/ \"Qu’est-ce qu’une architecture de microservices ? \") dans un environnement de revue. Cet environnement permet de vérifier les mises à jour dynamiquement avant qu'elles ne soient fusionnées dans la branche principale. Cette automatisation rationalise les processus de mise à jour et de revue lors du développement de l'application.\n\nPar ailleurs, lorsqu'elles apportent des mises à jour à l'application via des merge requests, les équipes DevSecOps ont accès à diverses fonctionnalités alimentées par l'IA. Lors de l'écriture ou de la mise à jour du code, la fonctionnalité de **[suggestions de code](https://about.gitlab.com/fr-fr/solutions/code-suggestions/ \"Suggestions de code\")** de GitLab Duo propose la prochaine portion de code à écrire en fonction du contexte. Le développeur est alors libre de l'accepter ou de l'ignorer. \n\nLes suggestions de code prennent en charge la génération de code via des prompts ainsi que la complétion de code en temps réel. Elles peuvent améliorer l'expérience de programmation en réduisant les erreurs et en aidant les équipes de développement à écrire du code plus rapidement, contribuant ainsi à améliorer la qualité du code de l'environnement de production. Elles peuvent également accroître la productivité des développeurs et développeuses, ainsi qu'accélérer les itérations et les déploiements.\n\nLorsque les différentes parties prenantes au sein du projet participent au développement ou à la revue d'applications, elles se heurtent parfois à un code peu documenté, complexe, difficile à interpréter ou écrit dans un langage de programmation qui ne leur est pas familier. Avec la fonctionnalité d'**explication du code** de GitLab Duo, le code est traduit en langage naturel permettant à quiconque au sein de l'équipe de le comprendre facilement et de devenir opérationnel rapidement.\n\nDe plus, lorsqu'un développeur ou une développeuse effectue une validation des modifications sur une branche de fonctionnalité, la fonctionnalité de **suggestion de relecteurs** de GitLab Duo utilise la merge request de ces modifications et le graphique de contributions pour suggérer une liste de relecteurs appropriés dans la liste déroulante des relecteurs située dans la barre latérale de la merge request. Cette liste inclut des utilisateurs qui connaissent un aspect spécifique de l'application et semblent les meilleurs candidats pour effectuer une revue des mises à jour. Ainsi, les développeurs n'ont plus besoin de rechercher ni d'identifier eux-mêmes les relecteurs appropriés, ce qui évite les retards et garantit la qualité des revues.\n\nLorsque les développeurs modifient le code, il arrive souvent qu'ils n'incluent pas dans la merge request un commentaire sur les modifications apportées. Fort de ce constat, la fonctionnalité de **résumé des merge requests** de GitLab Duo permet à l'auteur de la merge request d'utiliser l'IA pour générer un commentaire en langage naturel qui résume les modifications apportées au code. Les relecteurs peuvent ainsi mieux comprendre les changements apportés et rationaliser l'ensemble du processus de revue. \n\nLorsque les relecteurs vérifient les modifications apportées au code dans une merge request et qu'ils détectent des anomalies, ils peuvent créer un bloc de revue pouvant inclure de nombreux commentaires impliquant de nombreux fichiers source. Pour aider l'auteur de la merge request à comprendre l'afflux de commentaires fournis par le relecteur, la fonctionnalité de **résumé des revues de code** de GitLab Duo génère un résumé en langage naturel des retours du relecteur. Cela permet de meilleurs transferts entre les auteurs et les relecteurs, tout en simplifiant le processus de revue.\n\nEn outre, lorsque les développeurs ajoutent du nouveau code par le biais d'une merge request, ils peuvent tirer parti de la fonctionnalité de **génération de tests** de GitLab Duo qui utilise l'IA pour générer des tests unitaires afin de vérifier le nouveau code. Cela permet d'augmenter la productivité des équipes de développement, d'améliorer la couverture de test et de détecter les bogues en amont du cycle de développement. Elles peuvent également tirer parti de **[GitLab Duo Chat](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-a-roundup-of-recent-chat-enhancements/ \"GitLab Duo Chat\")**, qui est toujours accessible, afin de refactoriser le code et de générer de la documentation intégrée à la ligne de code (par exemple des docstrings) pour leur code source.\n\nBien que les pipelines s'exécutent sur les mises à jour de branches, ils peuvent inclure des tests et des scans automatisés, ce qui permet d'intégrer la [sécurité en amont](https://about.gitlab.com/fr-fr/topics/ci-cd/shift-left-devops/ \"Shift Left\").\n\n### L'intégration de la sécurité en amont\n\n![L'intégration de la sécurité en amont : troisième étape de GitLab Flow](https://about.gitlab.com/images/blogimages/gitlab-flow-duo/The-GitLab-Flow-2023-shift-sec-left-portion.png)\n\u003Ccenter>L'intégration de la sécurité en amont : troisième étape de GitLab Flow\u003C/center>\u003Cp>\u003C/p>\n\nL'intégration de la sécurité en amont est la troisième étape de GitLab Flow. Elle fait également partie de la boucle de rétroaction interne.\n\nLes ingénieurs DevOps et ingénieurs de plateforme, les administrateurs système et administrateurs de base de données, les développeurs ainsi que d'autres parties prenantes collaborant à une merge request peuvent avoir des inquiétudes concernant la sécurité et la conformité. C'est là que les scans de sécurité et les tests automatisés entrent en jeu. \n\nIl est possible d'inclure les scans de sécurité dans un pipeline via des templates prêts à l'emploi et/ou de les exécuter automatiquement dans un pipeline de merge requests. GitLab fournit un large éventail de scanners et d'analyseurs de sécurité intégrés qui peuvent être utilisés par GitLab Flow. Mais ce n'est pas tout, notre plateforme DevSecOps peut également accueillir des scanners tiers et personnalisés.\n\nGitLab Flow intègre la sécurité en amont dans le pipeline afin de détecter et de résoudre les failles de sécurité le plus tôt possible dans le cycle de développement logiciel. Il est beaucoup plus simple (et moins coûteux) de corriger les vulnérabilités au début du cycle de développement. En effet, une fois qu'une application est en production, une panne imprévue peut avoir des conséquences sur vos utilisateurs, mais aussi vos revenus. Alors, pourquoi ne pas la résoudre avant qu'elle ne se produise ? \n\nVoici une liste des scanners et analyseurs de sécurité intégrés fournis par GitLab : \n- les tests unitaires, \n- l'analyse de l'Infrastructure as Code (IaC), \n- les scanners SAST (test statique de sécurité des applications), \n- l'analyse des dépendances, \n- la détection de secrets, \n- l'analyse des conteneurs, \n- la sécurité des API, \n- les tests d'API web par injection de données aléatoires,\n- les tests à données aléatoires guidés par la couverture de code. \n\nGitLab fournit par ailleurs un grand nombre de tableaux de bord et de rapports de sécurité permettant de gérer et de visualiser les vulnérabilités (liste des dépendances, tableau de bord de sécurité, rapport sur les vulnérabilités et pages de vulnérabilité).\n\nPour aider les développeurs et les ingénieurs sécurité à mieux comprendre les vulnérabilités et à les corriger plus efficacement, la fonctionnalité d'**explication des vulnérabilités** de GitLab Duo fournit des détails sur une vulnérabilité spécifique, en décrivant comment elle peut être exploitée et, surtout, en proposant des recommandations pour la corriger. Les développeurs peuvent également tirer parti de la fonctionnalité de **résolution des vulnérabilités** de GitLab Duo, qui crée automatiquement une merge request incluant les modifications de code permettant de corriger la vulnérabilité. Ces fonctionnalités alimentées par l'IA rationalisent et optimisent le processus de sécurisation et de renforcement de l'application concernée afin de prévenir les vulnérabilités susceptibles d'être exploitées lors de cyberattaques dans l'environnement de production.\n\nOutre les scanners SAST, GitLab met à disposition de ses utilisateurs des scanners DAST (test dynamique de sécurité des applications) qui nécessitent une application en cours d'exécution pour effectuer les tests. Grâce à ces scanners, GitLab peut provisionner automatiquement un environnement DAST en vue de réaliser des scans DAST, puis effectuer un nettoyage complet de toutes les ressources après les tests DAST. Par ailleurs, pour les conteneurs en cours d'exécution, GitLab fournit une fonctionnalité OCS (Operational Container Scanning) qui analyse les images de conteneurs de votre cluster afin de detecter des failles de sécurité.\n\nIl est possible d'exécuter automatiquement les scans mentionnés ci-dessus dans un pipeline de merge requests ou, dans certains cas, de planifier leur exécution via des stratégies d'exécution de scan et d'approbation des merge requests. Ces stratégies peuvent être définies via l'interface utilisateur de GitLab ou des fichiers YAML. Elles sont configurées dans un projet distinct, ce qui permet de séparer les tâches et ainsi de faciliter la réutilisation, la maintenance et la gestion. Les stratégies d'exécution des scans exigent que les scans de sécurité soient exécutés selon un calendrier précis ou avec le pipeline de projets. Ensuite, les stratégies d'approbation des merge requests prennent des mesures basées sur les résultats des scans. Les équipes ou les ingénieurs sécurité peuvent définir ces stratégies pour appliquer les processus de sécurité dans l'ensemble de l'entreprise, et GitLab Flow peut les détecter ou les exploiter lors de son exécution.\n\nPour renforcer la sécurité et la conformité des projets menés au sein de votre entreprise, vous pouvez utiliser des pipelines et des labels de conformité. Ceux-ci peuvent être rendus obligatoires avant l’exécution du pipeline d’un projet. Ainsi, vous avez la certitude que l'ensemble de vos équipes respectent vos normes de sécurité et de conformité. Cela vous permet par ailleurs de protéger vos applications contre les cyberattaques, tout en respectant les normes de conformité gouvernementales et de toujours être préparé pour un éventuel audit.\n\nL'objectif principal de toutes ces recommandations de sécurité de GitLab Flow est de corriger les vulnérabilités dès le début du cycle de développement, plutôt qu'en production, car les corrections peuvent s'avérer lourdes de conséquences en termes de réputation et de chiffre d'affaires.\n\nÀ mesure que les vulnérabilités sont atténuées dans la boucle de rétroaction interne de GitLab Flow et que des mises à jour sont apportées à l'application dans la branche de fonctionnalité, les parties prenantes doivent effectuer une nouvelle revue des mises à jour pour s'assurer de leur application effective et qu'aucune régression n'a été introduite par inadvertance.\n\n### La revue continue\n\n![La revue : quatrième étape de GitLab Flow](https://about.gitlab.com/images/blogimages/gitlab-flow-duo/The-GitLab-Flow-2023-reviewing-features-portion.png)\n\u003Ccenter>La revue de code : quatrième étape de GitLab Flow\u003C/center>\u003Cp>\u003C/p>\n\nLa revue des fonctionnalités, quatrième étape de GitLab Flow, repose sur une revue continue des applications. Cette étape nécessite de déployer l'application provisoire (branche de fonctionnalité) dans un environnement de revue prévu à cet effet afin que les parties prenantes puissent la vérifier en temps réel et fournir des retours constructifs. L'application provisoire peut ensuite être ajustée en continu jusqu'à ce qu'elle soit prête à être fusionnée dans la branche principale. GitLab Flow recommande également le nettoyage de toutes les ressources de l'environnement de revue provisionnées au moment où la merge request est fusionnée dans la branche principale.\n\nCe processus de revue automatisé et itératif fait partie de la boucle de rétroaction interne de GitLab Flow. Comme mentionné ci-dessus, dans la boucle de rétroaction interne, il est recommandé d'utiliser les fonctionnalités de GitLab Duo suivantes : explication du code, suggestions de code, suggestion de relecteurs, résumé des merge requests, remplissage automatique d'un template de merge request, résumé des revues de code, explication des vulnérabilités, résolution des vulnérabilités et analyse des causes profondes. En effet, celles-ci facilitent le transfert entre les auteurs et les relecteurs tout en simplifiant l'ensemble du processus de revue.\n\nLa boucle de rétroaction interne de GitLab Flow prend fin lorsque tous les éléments de revue sont traités et que la merge request est approuvée et fusionnée dans la branche principale, ce qui déclenche le déploiement de l'application en production.\n\n### Le déploiement des applications et de l'infrastructure\n\n![Le déploiement : cinquième étape de GitLab Flow](https://about.gitlab.com/images/blogimages/gitlab-flow-duo/The-GitLab-Flow-2023-deploy-apps-portion.png)\n\u003Ccenter>Le déploiement : cinquième étape de GitLab Flow\u003C/center>\u003Cp>\u003C/p>\n\nEn fonction des besoins de l'entreprise, GitLab Flow recommande la livraison continue ou le déploiement continu. \n- La __livraison continue__ consiste à publier fréquemment du code en déclenchant les déploiements manuellement (par exemple, en production). \n- Le __déploiement continu__ désigne la publication automatisée de code (par exemple, en production) sans intervention humaine. \n\nIntéressons-nous d'abord à la livraison continue.\n\nLorsque vous publiez votre logiciel en utilisant la livraison continue, vous disposez de plusieurs options de déploiement. Vous pouvez établir une fenêtre de gel, puis déployer le logiciel à l'aide de techniques de déploiement avancées, telles que les déploiements canari, bleu/vert, programmés et incrémentiels. Les déploiements incrémentiels réduisent le risque de panne dans l'environnement de production et améliorent l'expérience utilisateur ainsi que la satisfaction client. Les techniques de déploiement avancées améliorent également l'efficacité du processus de développement et de livraison en simplifiant le processus de sortie de nouvelles versions.\n\nLorsque vous publiez votre logiciel en utilisant le déploiement continu, l'intégralité des changements/mises à jour est directement déployée en production. Les approches de livraison progressive telles que les feature flags, qui vous permettent de séparer la livraison de fonctionnalités spécifiques d'un lancement, sont un bon moyen de réduire les risques et de gérer les fonctionnalités à mettre à la disposition des utilisateurs finaux. Les feature flags prennent en charge plusieurs langages de programmation. Ils permettent aux équipes de développement d'expérimenter et d'effectuer des tests contrôlés. Vous pouvez même utiliser des feature flags pour déployer des fonctionnalités auprès d'utilisateurs spécifiques.\n\nBien que GitLab prenne en charge toutes ces approches de déploiement, GitLab Flow permet d'adopter l'approche qui convient le mieux aux équipes et/ou aux besoins spécifiques du projet.\n\n### La surveillance des applications et des processus DevSecOps\n\nUne fois que votre application a été déployée en production, elle doit être surveillée en permanence pour assurer sa stabilité, ses performances et sa disponibilité. En outre, les processus DevSecOps qui s'exécutent sont mesurés en parallèle, ce qui permet d'améliorer leurs performances et leur efficacité. Les fonctionnalités de surveillance sont fournies par GitLab et, en tant que telles, peuvent être exploitées par GitLab Flow.\n\nPour les conteneurs en cours d'exécution, GitLab fournit une fonctionnalité OCS (Operational Container Scanning) qui analyse les images de conteneurs de votre cluster afin de détecter des failles de sécurité. Il est possible d'automatiser ces scans en planifiant leur exécution. Les vulnérabilités détectées sont automatiquement affichées dans un tableau de bord de sécurité. La fonctionnalité OCS peut vous aider à sécuriser vos applications de cluster et à anticiper toute cyberattaque pouvant entraîner des fuites de données privées et même provoquer des pannes inattendues.\n\nLe suivi des erreurs permet aux équipes de développement de détecter et de visualiser les erreurs générées par leur application. Celles-ci sont affichées dans la liste de suivi des erreurs dans GitLab. Le suivi des erreurs permet d'améliorer la disponibilité et les performances de vos applications en détectant et en résolvant rapidement les conditions d'application inattendues.\n\nGitLab peut recevoir des alertes de n'importe quelle source de surveillance, y compris Prometheus, via un récepteur webhook. Dès qu'une alerte arrive, elle est affichée dans la section Alertes de GitLab, où vous pouvez la gérer manuellement. Les alertes peuvent également déclencher automatiquement la création d'incidents, de ChatOps et d'e-mails à des personnes ou des groupes spécifiques. Toutes ces fonctionnalités rationalisent le processus de résolution et de gestion des alertes.\n\nDès qu'un incident est créé suite à la détection de problèmes dans l'environnement de production, il apparaît dans la liste des incidents de GitLab, où vous pouvez le gérer facilement. Vous pouvez gérer un ou plusieurs incidents, les trier, les rechercher, les assigner, définir leurs statuts et même voir leur compte à rebours calculant l'échéance de l'accord de niveau de service (SLA). De plus, vous pouvez créer des équipes d'astreinte et des rotations, des politiques d'escalade, ainsi que configurer la remontée d'alertes et les notifications pour gérer les incidents. Vous pouvez également associer un incident à une alerte afin que celle-ci soit automatiquement résolue une fois que l'incident est clos. Les chronologies d'incident permettent également aux cadres dirigeants et aux utilisateurs externes de voir ce qui s'est passé lors d'un incident et quelles mesures ont été prises pour le résoudre. Toutes ces fonctionnalités rationalisent et accélèrent le processus de gestion et de résolution des incidents.\n\nLes événements d'audit suivent les événements importants, en permettant notamment d'identifier l'intervenant qui a effectué l'action correspondante et le moment de son intervention dans GitLab. Ces événements sont affichés dans la liste des événements d'audit de GitLab et fournissent, entre autres, l'action qui a été effectuée sur un objet, son auteur, ainsi que sa date et son heure d'occurrence.\n\nL'ensemble des listes et tableaux de bord mentionnés ci-dessus permettent d'anticiper les scénarios de non-conformité afin d'éviter les pénalités et de rationaliser les processus d'audit. Pour vos applications en cours d'exécution, ils génèrent des données et des indicateurs qui peuvent être utilisés dans la boucle de rétroaction externe de GitLab Flow afin de vous aider à améliorer et à optimiser vos applications et à réduire le risque de pannes imprévues dans l'environnement de production.\n\n### L'amélioration continue\nGitLab Flow permet de tirer parti des tableaux de bord et indicateurs de performance des processus à chaque étape du développement logiciel. Ces tableaux offrent des informations précieuses pour améliorer en continu votre application et vos performances dans ce domaine. Ils sont générés automatiquement par GitLab et sont toujours accessibles.\n\n### Le tableau de bord d'analyse des flux de valeur\n\nVous pouvez suivre et surveiller le cycle de développement de vos applications via le tableau de bord d'analyse des flux de valeur, où vous pouvez consulter les statistiques d'un projet ou d'un groupe au fil du temps. Ce tableau de bord est personnalisable, mais vous pouvez commencer rapidement en créant une chaîne de valeur à l'aide d'un template par défaut fourni par GitLab. Celui-ci affiche des indicateurs pour chacune des étapes prédéfinies de l'analyse du flux de valeur (ticket, planification, codage, test, revue et préproduction), ainsi qu'un graphique montrant le délai moyen d'achèvement de chaque étape. Il affiche également les indicateurs clés de l'analyse du flux de valeur : délai d'exécution, durée de cycle, nouveaux tickets, validations et déploiements. Vous pouvez utiliser ces indicateurs pour identifier des axes d'amélioration dans les étapes de votre chaîne de valeur.\n\n### Le tableau de bord des métriques DORA\n\nPour visualiser les indicateurs de performance qui mesurent l'efficacité des pratiques de développement et de livraison de votre entreprise, GitLab met à disposition de ses utilisateurs un tableau de bord des métriques [DORA](https://about.gitlab.com/fr-fr/solutions/value-stream-management/dora/) (DevOps Research and Assessment), qui affiche quatre métriques clés : la fréquence de déploiement, le délai d'exécution des modifications, le délai de rétablissement du service et le taux d'échec des modifications. \n\n- La fréquence de déploiement mesure la fréquence à laquelle votre entreprise déploie du code en production ou le publie à destination des utilisateurs finaux. \n- Le délai d'exécution des modifications mesure le temps nécessaire pour passer du code validé au code exécuté avec succès en production. \n- Le délai de rétablissement du service mesure le temps nécessaire pour rétablir les services au niveau où ils étaient auparavant, en cas d'incident. \n- Le taux d'échec des modifications correspond au pourcentage de modifications apportées à l'environnement de production ou aux versions destinées aux utilisateurs, qui ont entraîné une dégradation du service (par exemple, une défaillance ou une panne) et ont ensuite nécessité des mesures correctives (solution corrective d'urgence, restauration d'une version antérieure, correctif). \n\nCes quatre métriques clés mesurent l'efficacité de vos processus actuels et vous donnent la possibilité d'améliorer les facteurs et fonctionnalités permettant de soutenir le travail de vos équipes.\n\n### La personnalisation de votre tableau de bord\n\nLe tableau de bord des flux de valeur est un autre tableau de bord personnalisable qui permet aux décideurs d'identifier les tendances et les opportunités d'amélioration du développement logiciel. Il affiche les métriques DORA suivies des indicateurs d'efficacité du processus d'analyse des flux de valeur et du nombre de vulnérabilités critiques et élevées pour le mois en cours, les deux mois précédents et les six derniers mois.\n\nGitLab Duo peut également vous aider dans vos efforts d'amélioration continue. Par exemple, la fonctionnalité de **prédiction de la chaîne de valeur** prend l'historique des données et utilise les tendances de l'ensemble de votre cycle de développement pour prédire le comportement futur de vos indicateurs de chaîne de valeur. Vous pouvez utiliser ces analyses prédictives dans vos efforts d'optimisation.\n\nL'ensemble de ces tableaux de bord et les indicateurs dont ils rendent compte font partie de la boucle de rétroaction externe de GitLab Flow. Ils vous aident à réduire le risque de pannes imprévues dans l'environnement de production, ainsi qu'à améliorer et à optimiser vos applications et vos workflows DevSecOps.\n\n### La fonctionnalité d'analyse d'impact de l'IA\n\nPour mieux comprendre l'impact de l'utilisation de GitLab Duo (ou de l'IA) tout au long du cycle de développement, vous pouvez consulter le tableau de bord d'[analyse d'impact de l'IA](https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/). Ce tableau vous indique comment l'adoption de la fonctionnalité de suggestions de code de GitLab Duo impacte d'autres indicateurs de performance, de qualité et de sécurité, sur les six derniers mois, tels que la durée de cycle, le délai d'exécution, la fréquence de déploiement, le taux d'échec des modifications et les vulnérabilités critiques au fil du temps.\n\nL'analyse d'impact de l'IA mesure l'adoption, l'optimisation et les avantages que l'IA apporte aux équipes et à l'entreprise dans son ensemble, et permet également d'identifier des axes d'amélioration.\n\n## Pourquoi utiliser GitLab Flow ?\n\nGitLab Flow est une approche préconisée, suivie par nos clients et utilisateurs du monde entier, qui offre les avantages suivants : \n- Une productivité accrue grâce aux fonctionnalités d'automatisation fournies par GitLab, son interface utilisateur unique et son modèle de données unique, le tout exploité par GitLab Flow.\n- Des informations précises sur le cycle de vie DevSecOps complet pour soutenir l'amélioration continue. \n- Des tableaux de bord et indicateurs intégrés qui peuvent vous aider à optimiser vos applications et vos processus DevSecOps.\n- Une qualité accrue du code et l'amélioration de la fiabilité et de la disponibilité de vos applications.\n- Une meilleure sécurité des applications grâce à des scanners et des fonctionnalités de sécurité intégrés.\n- La conformité et la préparation aux audits via des fonctionnalités de conformité intégrées.\n- Des durées de cycle plus courtes qui peuvent vous aider à augmenter la fréquence de déploiement.\n- La revue en continu activée par la boucle de rétroaction interne de GitLab Flow.\n- La boucle de rétroaction interne de GitLab Flow peut vous aider à optimiser les mises à jour afin d'améliorer la qualité du code, ainsi que la fiabilité et la disponibilité de vos applications.\n- La boucle de rétroaction externe de GitLab Flow peut vous aider à améliorer vos applications ainsi que le cycle de développement lui-même.\n- Des niveaux élevés de collaboration entre les parties prenantes de votre entreprise.\n- L'intégration de la sécurité en amont pour identifier les vulnérabilités dans les applications avant qu'elles ne passent en production, et ainsi éviter les pannes coûteuses et imprévues.\n- La réduction des risques lors du déploiement en production grâce aux techniques de déploiement avancées et aux approches de livraisons échelonnées prises en charge par GitLab.\n- Des fonctionnalités alimentées par l'IA qui couvrent l'ensemble du cycle de développement et peuvent optimiser la productivité, la qualité du code, l'amélioration continue, la sécurité, la conformité et bien plus encore.\n- La prise en charge des applications cloud-native et autres types d'application.\n- La prise en charge multi-cloud pour les applications hybrides/multi-cloud.\n\nPour commencer avec GitLab Flow, tirer parti de la fonctionnalité Auto DevOps de GitLab ou de certains de ses composants est un bon point de départ pour appliquer les principes de GitLab Flow à votre cycle de développement logiciel.\n\n## GitLab Flow et Auto DevOps\n\n![Auto DevOps : une instanciation de GitLab Flow](https://about.gitlab.com/images/blogimages/gitlab-flow-duo/ado-pipeline.png)\n\u003Ccenter>Auto DevOps : une instanciation de GitLab Flow\u003C/center>\u003Cp>\u003C/p>\n\n[Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/) applique GitLab Flow à l'ensemble des étapes et jobs associés. Vous pouvez le considérer comme un bon exemple pour l'instanciation de GitLab Flow.\n\nAuto DevOps est une collection de templates CI/CD prédéfinis et prêts à l'emploi qui détectent automatiquement le code source dont vous disposez. Basés sur les bonnes pratiques, ces templates détectent, compilent, testent, déploient et surveillent automatiquement vos applications.\n\nLe pipeline Auto DevOps intègre la sécurité en amont pour détecter et prévenir les défauts le plus tôt possible dans le processus de livraison de logiciels. Il déploie ensuite l'application en préproduction pour vérification, puis en production de manière incrémentielle/planifiée.\n\nAuto DevOps vous permet de démarrer rapidement, en augmentant la productivité des équipes de développement. Vous pouvez le personnaliser facilement en fonction de vos besoins, grâce à la prise en charge des frameworks et des langages de programmation les plus courants. Auto DevOps étant modulaire, personnalisable et extensible, vous pouvez utiliser certains de ses composants dans vos pipelines ou l'appliquer intégralement à votre application.\n\n## Conclusion\n[Combinez GitLab Flow et GitLab Duo dès aujourd'hui](https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com%2Fblog%2F) pour améliorer considérablement l'efficacité de votre workflow, à chaque étape du cycle de développement logiciel. Ce duo améliore la productivité, la fréquence des déploiements, la qualité du code et la sécurité dans son ensemble, ainsi que la résilience et la disponibilité de l'environnement de production. \n\nPour voir un workflow en action qui combine GitLab Flow et GitLab Duo, et découvrir ses avantages, regardez la vidéo suivante :\n\n\u003C!-- blank line -->\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/CKrZ4_tKY4I?si=Kf6QsYFIzKkJZpJd\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\u003C!-- blank line -->\n",[111,675,707],"2025-04-03",{"slug":1337,"featured":6,"template":686},"gitlab-flow-duo","content:fr-fr:blog:gitlab-flow-duo.yml","Gitlab Flow Duo","fr-fr/blog/gitlab-flow-duo.yml","fr-fr/blog/gitlab-flow-duo",4,[693,714,731,755,778,799,819,840,860],1754424543440]