[{"data":1,"prerenderedAt":769},["ShallowReactive",2],{"/fr-fr/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat":3,"navigation-fr-fr":41,"banner-fr-fr":447,"footer-fr-fr":457,"blog-post-authors-fr-fr-Michael Friedrich":667,"blog-related-posts-fr-fr-10-best-practices-for-using-ai-powered-gitlab-duo-chat":681,"assessment-promotions-fr-fr":721,"next-steps-fr-fr":760},{"id":4,"title":5,"authorSlugs":6,"body":8,"categorySlug":9,"config":10,"content":14,"description":8,"extension":28,"isFeatured":12,"meta":29,"navigation":12,"path":30,"publishedDate":20,"seo":31,"stem":36,"tagSlugs":37,"__hash__":40},"blogPosts/fr-fr/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat.yml","10 Best Practices For Using Ai Powered Gitlab Duo Chat",[7],"michael-friedrich",null,"ai-ml",{"slug":11,"featured":12,"template":13},"10-best-practices-for-using-ai-powered-gitlab-duo-chat",true,"BlogPost",{"title":15,"description":16,"authors":17,"heroImage":19,"date":20,"body":21,"category":9,"tags":22,"updatedDate":27},"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. ",[18],"Michael Friedrich","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","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[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.\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> c# start project best practices\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> Please show the project structure for the C# project.\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![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![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> In the above example, please use the .NET SDK 8.0 image\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> Explain how to create projects and test structure on the CLI\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![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.\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.\nDans le cas d'une recherche par navigateur, vous obtiendriez probablement quatre à cinq fenêtres de recherche différentes.\n```markdown\nc# start project best practices\nc# .gitignore\nc# gitlab cicd c# gitlab security scanning c# solutions and projects, application and tests\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.\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![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### 3. Suivez des patterns de prompt\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> 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> Please show an example for Codeowners with different teams : backend, frontend, release managers.\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> 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![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\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![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![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### 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> How can I get started creating an C# application in VS Code? > > How can I get started creating an empty C# console application in VS Code?\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![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\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> I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example.\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> 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> 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### 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![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![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![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#### 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![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![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?\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.\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.\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.\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> /refactor into a multi-line written string. Show different approaches for all C++ standards.\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> /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#### 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![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![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\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`. **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### 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> 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",[23,24,25,26],"AI/ML","tutorial","DevSecOps platform","features","2025-03-12","yml",{},"/fr-fr/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat",{"title":15,"description":16,"ogTitle":15,"ogDescription":16,"noIndex":32,"ogImage":19,"ogUrl":33,"ogSiteName":34,"ogType":35,"canonicalUrls":33},false,"https://about.gitlab.com/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat","https://about.gitlab.com","article","fr-fr/blog/10-best-practices-for-using-ai-powered-gitlab-duo-chat",[38,24,39,26],"aiml","devsecops-platform","xP4WAeUEd7I9oVigjZEwzYeO3mIAubBzf9uOtR8RrTs",{"data":42},{"logo":43,"freeTrial":48,"sales":53,"login":58,"items":63,"search":373,"minimal":408,"duo":427,"pricingDeployment":437},{"config":44},{"href":45,"dataGaName":46,"dataGaLocation":47},"/fr-fr/","gitlab logo","header",{"text":49,"config":50},"Commencer un essai gratuit",{"href":51,"dataGaName":52,"dataGaLocation":47},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":54,"config":55},"Contacter l'équipe commerciale",{"href":56,"dataGaName":57,"dataGaLocation":47},"/fr-fr/sales/","sales",{"text":59,"config":60},"Connexion",{"href":61,"dataGaName":62,"dataGaLocation":47},"https://gitlab.com/users/sign_in/","sign in",[64,91,188,193,294,354],{"text":65,"config":66,"cards":68},"Plateforme",{"dataNavLevelOne":67},"platform",[69,75,83],{"title":65,"description":70,"link":71},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":72,"config":73},"Découvrir notre plateforme",{"href":74,"dataGaName":67,"dataGaLocation":47},"/fr-fr/platform/",{"title":76,"description":77,"link":78},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":79,"config":80},"Découvrir GitLab Duo",{"href":81,"dataGaName":82,"dataGaLocation":47},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":84,"description":85,"link":86},"Choisir GitLab","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":87,"config":88},"En savoir plus",{"href":89,"dataGaName":90,"dataGaLocation":47},"/fr-fr/why-gitlab/","why gitlab",{"text":92,"left":12,"config":93,"link":95,"lists":99,"footer":170},"Produit",{"dataNavLevelOne":94},"solutions",{"text":96,"config":97},"Voir toutes les solutions",{"href":98,"dataGaName":94,"dataGaLocation":47},"/fr-fr/solutions/",[100,125,148],{"title":101,"description":102,"link":103,"items":108},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":104},{"icon":105,"href":106,"dataGaName":107,"dataGaLocation":47},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[109,113,116,121],{"text":110,"config":111},"CI/CD",{"href":112,"dataGaLocation":47,"dataGaName":110},"/fr-fr/solutions/continuous-integration/",{"text":76,"config":114},{"href":81,"dataGaLocation":47,"dataGaName":115},"gitlab duo agent platform - product menu",{"text":117,"config":118},"Gestion du code source",{"href":119,"dataGaLocation":47,"dataGaName":120},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":122,"config":123},"Livraison de logiciels automatisée",{"href":106,"dataGaLocation":47,"dataGaName":124},"Automated software delivery",{"title":126,"description":127,"link":128,"items":133},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":129},{"href":130,"dataGaName":131,"dataGaLocation":47,"icon":132},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[134,138,143],{"text":135,"config":136},"Tests de sécurité des applications",{"href":130,"dataGaName":137,"dataGaLocation":47},"Application security testing",{"text":139,"config":140},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":141,"dataGaLocation":47,"dataGaName":142},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":144,"config":145},"Conformité logicielle",{"href":146,"dataGaName":147,"dataGaLocation":47},"/fr-fr/solutions/software-compliance/","Software Compliance",{"title":149,"link":150,"items":155},"Mesures",{"config":151},{"icon":152,"href":153,"dataGaName":154,"dataGaLocation":47},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[156,160,165],{"text":157,"config":158},"Visibilité et mesures",{"href":153,"dataGaLocation":47,"dataGaName":159},"Visibility and Measurement",{"text":161,"config":162},"Gestion de la chaîne de valeur",{"href":163,"dataGaLocation":47,"dataGaName":164},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":166,"config":167},"Données d'analyse et informations clés",{"href":168,"dataGaLocation":47,"dataGaName":169},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":171,"items":172},"GitLab pour",[173,178,183],{"text":174,"config":175},"Entreprises",{"href":176,"dataGaLocation":47,"dataGaName":177},"/fr-fr/enterprise/","enterprise",{"text":179,"config":180},"PME",{"href":181,"dataGaLocation":47,"dataGaName":182},"/fr-fr/small-business/","small business",{"text":184,"config":185},"Secteur public",{"href":186,"dataGaLocation":47,"dataGaName":187},"/fr-fr/solutions/public-sector/","public sector",{"text":189,"config":190},"Tarifs",{"href":191,"dataGaName":192,"dataGaLocation":47,"dataNavLevelOne":192},"/fr-fr/pricing/","pricing",{"text":194,"config":195,"link":197,"lists":201,"feature":281},"Ressources",{"dataNavLevelOne":196},"resources",{"text":198,"config":199},"Afficher toutes les ressources",{"href":200,"dataGaName":196,"dataGaLocation":47},"/fr-fr/resources/",[202,235,253],{"title":203,"items":204},"Premiers pas",[205,210,215,220,225,230],{"text":206,"config":207},"Installation",{"href":208,"dataGaName":209,"dataGaLocation":47},"/fr-fr/install/","install",{"text":211,"config":212},"Guides de démarrage",{"href":213,"dataGaName":214,"dataGaLocation":47},"/fr-fr/get-started/","quick setup checklists",{"text":216,"config":217},"Apprentissage",{"href":218,"dataGaLocation":47,"dataGaName":219},"https://university.gitlab.com/","learn",{"text":221,"config":222},"Documentation sur le produit",{"href":223,"dataGaName":224,"dataGaLocation":47},"https://docs.gitlab.com/","product documentation",{"text":226,"config":227},"Vidéos sur les bonnes pratiques",{"href":228,"dataGaName":229,"dataGaLocation":47},"/fr-fr/getting-started-videos/","best practice videos",{"text":231,"config":232},"Intégrations",{"href":233,"dataGaName":234,"dataGaLocation":47},"/fr-fr/integrations/","integrations",{"title":236,"items":237},"Découvrir",[238,243,248],{"text":239,"config":240},"Témoignages clients",{"href":241,"dataGaName":242,"dataGaLocation":47},"/fr-fr/customers/","customer success stories",{"text":244,"config":245},"Blog",{"href":246,"dataGaName":247,"dataGaLocation":47},"/fr-fr/blog/","blog",{"text":249,"config":250},"Travail à distance",{"href":251,"dataGaName":252,"dataGaLocation":47},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":254,"items":255},"Connecter",[256,261,266,271,276],{"text":257,"config":258},"Services GitLab",{"href":259,"dataGaName":260,"dataGaLocation":47},"/fr-fr/services/","services",{"text":262,"config":263},"Communauté",{"href":264,"dataGaName":265,"dataGaLocation":47},"/community/","community",{"text":267,"config":268},"Forum",{"href":269,"dataGaName":270,"dataGaLocation":47},"https://forum.gitlab.com/","forum",{"text":272,"config":273},"Événements",{"href":274,"dataGaName":275,"dataGaLocation":47},"/events/","events",{"text":277,"config":278},"Partenaires",{"href":279,"dataGaName":280,"dataGaLocation":47},"/fr-fr/partners/","partners",{"backgroundColor":282,"textColor":283,"text":284,"image":285,"link":289},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":286,"config":287},"carte promo The Source",{"src":288},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":290,"config":291},"Lire les articles les plus récents",{"href":292,"dataGaName":293,"dataGaLocation":47},"/fr-fr/the-source/","the source",{"text":295,"config":296,"lists":298},"Société",{"dataNavLevelOne":297},"company",[299],{"items":300},[301,306,312,314,319,324,329,334,339,344,349],{"text":302,"config":303},"À propos",{"href":304,"dataGaName":305,"dataGaLocation":47},"/fr-fr/company/","about",{"text":307,"config":308,"footerGa":311},"Carrières",{"href":309,"dataGaName":310,"dataGaLocation":47},"/jobs/","jobs",{"dataGaName":310},{"text":272,"config":313},{"href":274,"dataGaName":275,"dataGaLocation":47},{"text":315,"config":316},"Leadership",{"href":317,"dataGaName":318,"dataGaLocation":47},"/company/team/e-group/","leadership",{"text":320,"config":321},"Équipe",{"href":322,"dataGaName":323,"dataGaLocation":47},"/company/team/","team",{"text":325,"config":326},"Manuel",{"href":327,"dataGaName":328,"dataGaLocation":47},"https://handbook.gitlab.com/","handbook",{"text":330,"config":331},"Relations avec les investisseurs",{"href":332,"dataGaName":333,"dataGaLocation":47},"https://ir.gitlab.com/","investor relations",{"text":335,"config":336},"Centre de confiance",{"href":337,"dataGaName":338,"dataGaLocation":47},"/fr-fr/security/","trust center",{"text":340,"config":341},"Centre pour la transparence de l'IA",{"href":342,"dataGaName":343,"dataGaLocation":47},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":345,"config":346},"Newsletter",{"href":347,"dataGaName":348,"dataGaLocation":47},"/company/contact/#contact-forms","newsletter",{"text":350,"config":351},"Presse",{"href":352,"dataGaName":353,"dataGaLocation":47},"/press/","press",{"text":355,"config":356,"lists":357},"Nous contacter",{"dataNavLevelOne":297},[358],{"items":359},[360,363,368],{"text":54,"config":361},{"href":56,"dataGaName":362,"dataGaLocation":47},"talk to sales",{"text":364,"config":365},"Portail d’assistance",{"href":366,"dataGaName":367,"dataGaLocation":47},"https://support.gitlab.com","support portal",{"text":369,"config":370},"Portail clients GitLab",{"href":371,"dataGaName":372,"dataGaLocation":47},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":374,"login":375,"suggestions":382},"Fermer",{"text":376,"link":377},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":378,"config":379},"gitlab.com",{"href":61,"dataGaName":380,"dataGaLocation":381},"search login","search",{"text":383,"default":384},"Suggestions",[385,387,392,394,399,404],{"text":76,"config":386},{"href":81,"dataGaName":76,"dataGaLocation":381},{"text":388,"config":389},"Suggestions de code (IA)",{"href":390,"dataGaName":391,"dataGaLocation":381},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":110,"config":393},{"href":112,"dataGaName":110,"dataGaLocation":381},{"text":395,"config":396},"GitLab sur AWS",{"href":397,"dataGaName":398,"dataGaLocation":381},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":400,"config":401},"GitLab sur Google Cloud ",{"href":402,"dataGaName":403,"dataGaLocation":381},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":405,"config":406},"Pourquoi utiliser GitLab ?",{"href":89,"dataGaName":407,"dataGaLocation":381},"Why GitLab?",{"freeTrial":409,"mobileIcon":414,"desktopIcon":419,"secondaryButton":422},{"text":410,"config":411},"Commencer votre essai gratuit",{"href":412,"dataGaName":52,"dataGaLocation":413},"https://gitlab.com/-/trials/new/","nav",{"altText":415,"config":416},"Icône GitLab",{"src":417,"dataGaName":418,"dataGaLocation":413},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":415,"config":420},{"src":421,"dataGaName":418,"dataGaLocation":413},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":423,"config":424},"Commencer",{"href":425,"dataGaName":426,"dataGaLocation":413},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/compare/gitlab-vs-github/","get started",{"freeTrial":428,"mobileIcon":433,"desktopIcon":435},{"text":429,"config":430},"En savoir plus sur GitLab Duo",{"href":431,"dataGaName":432,"dataGaLocation":413},"/fr-fr/gitlab-duo/","gitlab duo",{"altText":415,"config":434},{"src":417,"dataGaName":418,"dataGaLocation":413},{"altText":415,"config":436},{"src":421,"dataGaName":418,"dataGaLocation":413},{"freeTrial":438,"mobileIcon":443,"desktopIcon":445},{"text":439,"config":440},"Retour aux tarifs",{"href":191,"dataGaName":441,"dataGaLocation":413,"icon":442},"back to pricing","GoBack",{"altText":415,"config":444},{"src":417,"dataGaName":418,"dataGaLocation":413},{"altText":415,"config":446},{"src":421,"dataGaName":418,"dataGaLocation":413},{"title":448,"button":449,"config":454},"Découvrez comment l'IA agentique transforme la livraison logicielle",{"text":450,"config":451},"Regarder GitLab Transcend maintenant",{"href":452,"dataGaName":453,"dataGaLocation":47},"/fr-fr/events/transcend/virtual/","transcend event",{"layout":455,"icon":456},"release","AiStar",{"data":458},{"text":459,"source":460,"edit":466,"contribute":471,"config":476,"items":481,"minimal":658},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":461,"config":462},"Afficher le code source de la page",{"href":463,"dataGaName":464,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":467,"config":468},"Modifier cette page",{"href":469,"dataGaName":470,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":472,"config":473},"Veuillez contribuer",{"href":474,"dataGaName":475,"dataGaLocation":465},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":477,"facebook":478,"youtube":479,"linkedin":480},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[482,505,559,591,626],{"title":65,"links":483,"subMenu":488},[484],{"text":485,"config":486},"Plateforme DevSecOps",{"href":74,"dataGaName":487,"dataGaLocation":465},"devsecops platform",[489],{"title":189,"links":490},[491,495,500],{"text":492,"config":493},"Voir les forfaits",{"href":191,"dataGaName":494,"dataGaLocation":465},"view plans",{"text":496,"config":497},"Pourquoi choisir GitLab Premium ?",{"href":498,"dataGaName":499,"dataGaLocation":465},"/fr-fr/pricing/premium/","why premium",{"text":501,"config":502},"Pourquoi choisir GitLab Ultimate ?",{"href":503,"dataGaName":504,"dataGaLocation":465},"/fr-fr/pricing/ultimate/","why ultimate",{"title":506,"links":507},"Solutions",[508,513,516,518,523,528,532,535,538,543,545,547,549,554],{"text":509,"config":510},"Transformation digitale",{"href":511,"dataGaName":512,"dataGaLocation":465},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":514,"config":515},"Sécurité et conformité",{"href":130,"dataGaName":137,"dataGaLocation":465},{"text":122,"config":517},{"href":106,"dataGaName":107,"dataGaLocation":465},{"text":519,"config":520},"Développement agile",{"href":521,"dataGaName":522,"dataGaLocation":465},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":524,"config":525},"Transformation cloud",{"href":526,"dataGaName":527,"dataGaLocation":465},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":529,"config":530},"SCM",{"href":119,"dataGaName":531,"dataGaLocation":465},"source code management",{"text":110,"config":533},{"href":112,"dataGaName":534,"dataGaLocation":465},"continuous integration & delivery",{"text":161,"config":536},{"href":163,"dataGaName":537,"dataGaLocation":465},"value stream management",{"text":539,"config":540},"GitOps",{"href":541,"dataGaName":542,"dataGaLocation":465},"/fr-fr/solutions/gitops/","gitops",{"text":174,"config":544},{"href":176,"dataGaName":177,"dataGaLocation":465},{"text":179,"config":546},{"href":181,"dataGaName":182,"dataGaLocation":465},{"text":184,"config":548},{"href":186,"dataGaName":187,"dataGaLocation":465},{"text":550,"config":551},"Formation",{"href":552,"dataGaName":553,"dataGaLocation":465},"/fr-fr/solutions/education/","education",{"text":555,"config":556},"Services financiers",{"href":557,"dataGaName":558,"dataGaLocation":465},"/fr-fr/solutions/finance/","financial services",{"title":194,"links":560},[561,563,566,568,571,573,576,579,581,583,585,587,589],{"text":206,"config":562},{"href":208,"dataGaName":209,"dataGaLocation":465},{"text":564,"config":565},"Guides de démarrage rapide",{"href":213,"dataGaName":214,"dataGaLocation":465},{"text":216,"config":567},{"href":218,"dataGaName":219,"dataGaLocation":465},{"text":221,"config":569},{"href":223,"dataGaName":570,"dataGaLocation":465},"docs",{"text":244,"config":572},{"href":246,"dataGaName":247},{"text":574,"config":575},"Histoires de réussite client",{"href":241,"dataGaLocation":465},{"text":577,"config":578},"Histoires de succès client",{"href":241,"dataGaName":242,"dataGaLocation":465},{"text":249,"config":580},{"href":251,"dataGaName":252,"dataGaLocation":465},{"text":257,"config":582},{"href":259,"dataGaName":260,"dataGaLocation":465},{"text":262,"config":584},{"href":264,"dataGaName":265,"dataGaLocation":465},{"text":267,"config":586},{"href":269,"dataGaName":270,"dataGaLocation":465},{"text":272,"config":588},{"href":274,"dataGaName":275,"dataGaLocation":465},{"text":277,"config":590},{"href":279,"dataGaName":280,"dataGaLocation":465},{"title":295,"links":592},[593,595,598,600,602,604,606,610,615,617,619,621],{"text":302,"config":594},{"href":304,"dataGaName":297,"dataGaLocation":465},{"text":596,"config":597},"Emplois",{"href":309,"dataGaName":310,"dataGaLocation":465},{"text":315,"config":599},{"href":317,"dataGaName":318,"dataGaLocation":465},{"text":320,"config":601},{"href":322,"dataGaName":323,"dataGaLocation":465},{"text":325,"config":603},{"href":327,"dataGaName":328,"dataGaLocation":465},{"text":330,"config":605},{"href":332,"dataGaName":333,"dataGaLocation":465},{"text":607,"config":608},"Sustainability",{"href":609,"dataGaName":607,"dataGaLocation":465},"/sustainability/",{"text":611,"config":612},"Diversité, inclusion et appartenance (DIB)",{"href":613,"dataGaName":614,"dataGaLocation":465},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":335,"config":616},{"href":337,"dataGaName":338,"dataGaLocation":465},{"text":345,"config":618},{"href":347,"dataGaName":348,"dataGaLocation":465},{"text":350,"config":620},{"href":352,"dataGaName":353,"dataGaLocation":465},{"text":622,"config":623},"Déclaration de transparence sur l'esclavage moderne",{"href":624,"dataGaName":625,"dataGaLocation":465},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":355,"links":627},[628,631,636,638,643,648,653],{"text":629,"config":630},"Échanger avec un expert",{"href":56,"dataGaName":57,"dataGaLocation":465},{"text":632,"config":633},"Aide",{"href":634,"dataGaName":635,"dataGaLocation":465},"/support/","get help",{"text":369,"config":637},{"href":371,"dataGaName":372,"dataGaLocation":465},{"text":639,"config":640},"Statut",{"href":641,"dataGaName":642,"dataGaLocation":465},"https://status.gitlab.com/","status",{"text":644,"config":645},"Conditions d'utilisation",{"href":646,"dataGaName":647},"/terms/","terms of use",{"text":649,"config":650},"Déclaration de confidentialité",{"href":651,"dataGaName":652,"dataGaLocation":465},"/fr-fr/privacy/","privacy statement",{"text":654,"config":655},"Préférences en matière de cookies",{"dataGaName":656,"dataGaLocation":465,"id":657,"isOneTrustButton":12},"cookie preferences","ot-sdk-btn",{"items":659},[660,662,665],{"text":644,"config":661},{"href":646,"dataGaName":647,"dataGaLocation":465},{"text":663,"config":664},"Politique de confidentialité",{"href":651,"dataGaName":652,"dataGaLocation":465},{"text":654,"config":666},{"dataGaName":656,"dataGaLocation":465,"id":657,"isOneTrustButton":12},[668],{"id":669,"title":18,"body":8,"config":670,"content":672,"description":8,"extension":28,"meta":676,"navigation":12,"path":677,"seo":678,"stem":679,"__hash__":680},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":671},"BlogAuthor",{"name":18,"config":673},{"headshot":674,"ctfId":675},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",[682,694,707],{"content":683,"config":692},{"title":684,"description":685,"authors":686,"date":688,"body":689,"category":9,"tags":690,"heroImage":691},"GitLab Duo Agent Platform : comment réinventer le développement logiciel avec l’IA agentique","Découvrez comment GitLab Duo Agent Platform transforme la collaboration entre équipes de développement et les agents d’IA.\n",[687],"GitLab France Team","2026-02-24","> *Cet article de blog est un résumé de notre webinaire sur la Collaboration entre agents d’IA et développeurs animé par Lucas Rangeard (Solutions Architect) et Chloé Cartron (Senior Solutions Architect). Pour visionner le replay, [cliquez ici](https://learn.gitlab.com/fr-oct-agentic-ai/duo-ai-fr).* \n\nStructurer un besoin client en ticket, diviser un ticket en sous-tâches assignables, et implémenter la fonctionnalité : trois opérations qui, dans un cycle de développement traditionnel, s'enchaînent de manière séquentielle entraînant un goulot d'étranglement bien connu des [équipes DevOps](https://about.gitlab.com/fr-fr/topics/devops/build-a-devops-team/ \"équipes DevOps\").\n\nGrâce à GitLab Duo Agent Platform, ces trois tâches sont exécutées en parallèle, avec une merge request prête à être revue en quelques minutes. \n\nDécouvrez dans cet article les capacités de GitLab Duo Agent Platform conçue pour transformer la collaboration entre équipes de développement et agents intelligents et apprenez comment mettre en place des flows, de la création d’un ticket au développement d’une application à travers trois cas d’usage.\n\n## GitLab Duo Agent Platform : une orchestration agentique native\n\n[GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/ \"GitLab Duo Agent Platform\") représente une évolution majeure dans notre approche du DevSecOps. En disponibilité générale depuis janvier 2026 pour les clients GitLab Premium et GitLab Ultimate (GitLab.com et GitLab Self-Managed), GitLab Duo Agent Platform permet aux équipes de développement de collaborer avec des agents d’IA sur l'ensemble du cycle de développement logiciel ([SDLC](https://about.gitlab.com/fr-fr/blog/what-is-sdlc/ \"Qu'est-ce que le SDLC ?\")).\n\n> 🎯 Essayez [GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr) dès aujourd'hui !\n\n### L’orchestration agentique au coeur du SDLC\n\nNotre approche repose sur trois piliers interconnectés :\n\n* **Nous conservons ce qui fait notre force** : une plateforme unifiée avec un système de données centralisé et des APIs.\n* **Nous ajoutons une couche d'intelligence agentique** : des agents spécialisés travaillant ensemble et de manière autonome. \n* **Nous créons un graphe de connaissances reliant l'ensemble des données entre elles** : votre code, vos tickets, vos déploiements, vos scans de sécurité. Cette interconnexion permet aux agents de comprendre votre contexte complet et de prendre des décisions éclairées rapidement. \n\n### Des agents spécialisés tout au long du SDLC\n\nGitLab Duo Agent Platform ne vise pas à remplacer les équipes de développement, mais à leur fournir des partenaires capables d'exécuter des tâches en parallèle. \n\nLes utilisateurs ont accès à trois types d’agents différents : les [agents par défaut](https://docs.gitlab.com/user/duo_agent_platform/agents/foundational_agents/) comme [Planner](https://docs.gitlab.com/user/duo_agent_platform/agents/foundational_agents/planner/), [Security Analyst](https://docs.gitlab.com/user/duo_agent_platform/agents/foundational_agents/security_analyst_agent/) et [Data Analyst](https://docs.gitlab.com/user/duo_agent_platform/agents/foundational_agents/data_analyst/) pour les tâches courantes de développement, les [agents personnalisables](https://docs.gitlab.com/user/duo_agent_platform/agents/custom/) pour les workflows spécifiques à votre équipe, ainsi que les [agents externes](https://docs.gitlab.com/user/duo_agent_platform/agents/external/) comme Claude Code ou OpenAI Codex. Pour en savoir plus sur les agents, consultez notre article de blog [GitLab Duo Agent Platform : comprendre les agents](https://about.gitlab.com/fr-fr/blog/understanding-agents-foundational-custom-external/).\n\nCes agents partagent un contexte unifié. Ils peuvent accéder aux tickets, au code source, aux [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\"), aux merge requests et à l'historique de déploiement, selon les permissions données. \n\n> Chez NatWest, l'intégration des agents d’IA dans le cycle de développement logiciel a permis d'améliorer « la productivité, la vélocité et l'efficacité » des équipes, selon Bal Kang, Engineering Platform Lead. \n\n## Comment l'IA agentique réduit les temps d'attente entre chaque étape ?\n\nDans un cycle de développement traditionnel, les étapes s'enchaînent les unes après les autres. Rédaction des spécifications, découpage en tâches, implémentation, tests, revue de code : chaque phase attend la précédente. Ce modèle séquentiel génère des temps morts et limite la capacité des équipes à traiter plusieurs demandes simultanément.\n\nL'approche agentique change cette dynamique. En déléguant des tâches à des agents autonomes, les équipes de développement peuvent avancer sur plusieurs fronts en parallèle. Pendant qu'un agent implémente une fonctionnalité, un autre structure une nouvelle demande, et un troisième prépare une analyse de sécurité. Le cycle de développement global est raccourci.\n\nL'objectif : permettre aux équipes de développement de déléguer certaines tâches à des agents pendant qu'ils se concentrent sur d'autres tâches à plus forte valeur ajoutée, tout en gardant le contrôle sur les résultats.\n\n## 3 exemples de flows à tester\n\nDécouvrez comment GitLab Duo Agent Platform transforme le quotidien des équipes grâce à ces trois cas d'usage qui peuvent être exécutés simultanément. \n\n### Transformer une idée en ticket structuré\n\nAvec GitLab Duo Agentic Chat, les utilisateurs peuvent générer un ticket complet et personnalisable à partir d'une idée en formulant leur demande en langage naturel à l’aide du modèle IA de leur choix. \n\nCe ticket comprend le titre correspondant au besoin, la user story, les critères d'acceptance, les contraintes techniques, la « definition of done », ainsi que tout autre élément de gestion de projet propre aux équipes : personnes assignées, labels, date de début et date de fin de la tâche, confidentialité du ticket, etc.\n\nL'action proposée est soumise à validation. Une fois approuvé, le ticket apparaît dans le backlog en quelques secondes.\n\n### Diviser un ticket en sous-tâches\n\nUn ticket couvrant plusieurs fonctionnalités peut être divisé automatiquement en sous-tickets distincts. L'agent crée les sous tickets, maintient les références avec le ticket parent, et préserve la cohérence des critères d'acceptance. Ce mécanisme transforme un besoin business global en un ensemble de tâches assignables aux équipes. \n\n### Générer une merge request depuis un ticket\n\nÀ partir d’un ticket décrivant une fonctionnalité à implémenter, l'agent analyse le contexte du projet, comprend l'architecture existante, et génère le code correspondant. Il modifie les fichiers nécessaires, crée une merge request et le pipeline CI/CD se lance automatiquement.\n\nIl est également possible d'assigner GitLab Duo comme relecteur sur une merge request. L'agent analyse les changements, identifie les points d'attention et laisse des commentaires dans la merge request, offrant un premier niveau de revue avant la sollicitation des pairs.\n\n## Une collaboration entre humains et IA\n\nUn aspect distingue GitLab Duo Agent Platform des approches purement automatisées : chaque action proposée par un agent nécessite une validation explicite. L'utilisateur visualise ce que l'agent souhaite exécuter et approuve ou ajuste le travail effectué par l’agent avant d’effectuer une action.\nCette approche répond aux exigences des équipes en matière de gouvernance. L'agent accélère l'exécution, mais les décisions restent sous contrôle humain. Une approche indispensable dans un contexte où la qualité du code et la sécurité ne peuvent être compromises.\n\n## Le catalogue d’IA : un écosystème agentique\n\nAu-delà des agents natifs, GitLab développe un écosystème ouvert : le catalogue d’IA. Ce dernier permet de découvrir, utiliser et partager des agents et des flows développés par GitLab, ainsi que par toute la communauté.\n\nLes options de partage sont flexibles : ouverture à la communauté ou restriction à des usages internes selon les besoins de gouvernance.\n\nCette approche permet d'imaginer un agent expert en migration de bases de données, ou encore un flow d’optimisation de performance tous intégrés nativement dans GitLab. \n\nCes agents et flows s'intègrent à votre interface GitLab et identifient rapidement votre contexte et vos projets.\n\n## Prérequis\n\nPour utiliser GitLab Duo Agent Platform, plusieurs conditions sont requises :\n\n* Disposer de la version 18.8 ou ultérieure de GitLab ou d’un compte GitLab.com.\n* Être abonné à [GitLab Premium](https://about.gitlab.com/fr-fr/pricing/premium/) ou [GitLab Ultimate](https://about.gitlab.com/fr-fr/pricing/ultimate/)\n\nGitLab Duo Agent Platform utilise par défaut les modèles d'IA fournis par GitLab. Une configuration alternative utilisant les modèles des clients est disponible [pour les installations auto hébergées](https://docs.gitlab.com/administration/gitlab_duo_self_hosted/#gitlab-duo-agent-platform). Pour en savoir plus, consultez notre article [IA agentique avec contrôle d'entreprise : GitLab Duo Agent Platform Self-Hosted et BYOM](https://about.gitlab.com/fr-fr/blog/agentic-ai-enterprise-control-self-hosted-duo-agent-platform-and-byom/).\n\n## Perspectives : l'IA agentique au coeur du DevSecOps\n\nGitLab Duo Agent Platform marque une évolution dans l'intégration de l'IA dans le cycle de développement DevSecOps. Il ne s'agit plus uniquement de suggestions de code, mais d'une véritable orchestration agentique où des agents spécialisés prennent en charge des workflows complets.\n\nVous souhaitez en savoir plus sur les flows ? Consultez notre article [Comprendre les flows : workflows multi-agents](https://about.gitlab.com/fr-fr/blog/understanding-flows-multi-agent-workflows/) et découvrez comment utiliser les [flows par défaut](https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/) et les [flows personnalisables](https://docs.gitlab.com/user/duo_agent_platform/flows/custom/).\n\n> 🎯 Essayez [GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr) dès aujourd'hui !",[23],"https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png",{"featured":32,"template":13,"slug":693},"gitlab-duo-agent-platform-software-development-agentic-ai",{"content":695,"config":705},{"title":696,"description":697,"authors":698,"heroImage":700,"date":701,"body":702,"category":9,"tags":703},"IA agentique avec contrôle d'entreprise : GitLab Duo Agent Platform Self-Hosted et BYOM","Découvrez comment GitLab 18.9 offre aux entreprises des secteurs réglementés une IA agentique gouvernée grâce à GitLab Duo Agent Platform Self-Hosted et à la prise en charge Bring Your Own Model.",[699],"Rebecca Carter","https://res.cloudinary.com/about-gitlab-com/image/upload/v1771438388/t6sts5qw4z8561gtlxiq.png","2026-02-19","Pour les organisations qui opèrent dans des secteurs réglementés, la transition vers l'automatisation alimentée par l'IA s'accompagne de contraintes strictes. La résidence des données, le contrôle des fournisseurs et la gouvernance ne sont pas négociables. De nombreuses organisations ont déjà investi massivement dans leurs propres modèles, avec des processus d'approbation rigoureux qui régissent leur fonctionnement et leur déploiement.\n\nAvec [GitLab 18.9](https://about.gitlab.com/releases/2026/02/19/gitlab-18-9-released/), nous proposons deux fonctionnalités qui comblent une lacune stratégique critique pour ces organisations et transformons [GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/) en un plan de contrôle d'IA prêt à être déployé et gouvernable pour les environnements réglementaires les plus stricts.\n\n## GitLab Duo Agent Platform Self-Hosted pour les licences cloud en ligne\nAvec GitLab Duo Agent Platform, les équipes d'ingénierie créent des flows alimentés par l'IA qui automatisent des séquences de tâches, allant de la refactorisation des services au renforcement des pipelines CI/CD en passant par la hiérarchisation des vulnérabilités. Jusqu'à présent, l'utilisation de GitLab Duo Agent Platform en production avec des modèles auto-hébergés était principalement alignée sur des chemins de licence hors ligne ou complémentaires et n'était pas conçue pour les clients disposant de licences cloud en ligne qui opèrent dans des environnements avec des réglementations strictes.\n\nDésormais en disponibilité générale, [GitLab Duo Agent Platform Self-Hosted pour les licences cloud en ligne](https://docs.gitlab.com/subscriptions/subscription-add-ons/#gitlab-duo-agent-platform-self-hosted) introduit un modèle de facturation basé sur l'usage alimenté par les [GitLab Credits](https://about.gitlab.com/fr-fr/blog/introducing-gitlab-credits/). Cette approche offre la mesure transparente et prévisible dont les entreprises ont besoin pour instaurer la confiance et la refacturation interne.\n* **Résidence et contrôle des données** : vous pouvez désormais exécuter GitLab Duo Agent Platform en production sur des licences cloud en ligne tout en utilisant des modèles hébergés sur votre propre infrastructure ou dans des environnements cloud approuvés. Vous contrôlez ainsi le lieu d'exécution des modèles et la façon dont le trafic d'inférence est acheminé dans vos environnements approuvés.\n* **Transparence des coûts et refacturation** : bénéficiez d'une transparence granulaire des coûts grâce aux GitLab Credits et au décompte par requête, deux éléments essentiels pour une refacturation interne précise et le respect des normes réglementaires en matière de reporting.\n* **Accélération de l'adoption** : supprime un obstacle majeur au déploiement de l'IA agentique dans des secteurs comme les services financiers, les administrations publiques et les infrastructures critiques, où l'acheminement des données via des fournisseurs d'IA externes n'est tout simplement pas envisageable. Avec GitLab 18.9, GitLab Duo Agent Platform devient un environnement de déploiement de premier ordre pour les licences cloud en ligne.\n\n## Bring Your Own Model\nL'auto-hébergement de la couche d'orchestration n'est qu'une partie de la solution. De nombreux clients de secteurs réglementés ont déjà investi massivement dans leurs propres modèles : des LLM adaptés à leur domaine, des déploiements dans une région dédiée ou air-gapped pour la souveraineté des données, et des modèles fermés et internes conçus en fonction d'un profil de risque spécifique.\n\n**Bring Your Own Model (BYOM)** renforce la flexibilité de GitLab Duo Agent Platform. Les administrateurs peuvent connecter des modèles tiers ou auto-hébergés via la [passerelle d'IA (AI-Gateway) de GitLab](https://docs.gitlab.com/administration/gitlab_duo/gateway/), et les clients choisissent et contrôlent le modèle.\n* **Intégration et gouvernance** : les modèles BYOM apparaissent aux côtés des modèles gérés par GitLab dans le plan de contrôle d'IA de GitLab. GitLab Duo Agent Platform peut ainsi les traiter comme des options prêtes à l'emploi pour l'entreprise.\n* **Mappage granulaire** : une fois enregistrés via la passerelle d'IA, les modèles peuvent être mappés à des flows ou des fonctionnalités spécifiques de GitLab Duo Agent Platform. Vous pouvez ainsi exercer un contrôle étroit sur les agents et les flows, ainsi que sur les modèles utilisés. Les administrateurs restent toujours responsables de la validation des modèles, des performances et de l'évaluation des risques. Vous êtes responsable de la compatibilité, des performances et de l'évaluation des risques pour les modèles que vous apportez.\n\nEnsemble, ces fonctionnalités donnent aux responsables d'ingénierie un contrôle complet sur l'IA agentique. Ce plan de contrôle unique et gouverné pour l'IA agentique remplace l'ensemble fragmenté de solutions ponctuelles et d'outils d'IA non gérés sur lesquels de nombreuses organisations s'appuient aujourd'hui. Il s'agit d'une combinaison que les organisations réglementées réclamaient depuis longtemps : la liberté de choisir son modèle accompagnée d'une gouvernance forte, au sein de la même plateforme DevSecOps en laquelle elles ont déjà confiance.\n\n> Vous souhaitez essayer GitLab Duo Agent Platform ? [Contactez-nous ou commencez un essai gratuit dès aujourd'hui](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr).\n\n-----------\n\n_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 ces déclarations sont raisonnables, elles sont soumises à des risques, incertitudes, hypothèses et autres facteurs connus et inconnus qui peuvent entraîner des résultats ou des issues réels sensiblement différents. Des informations supplémentaires sur ces risques et autres facteurs sont incluses sous la rubrique « Facteurs de risque » dans nos dépôts auprès de la SEC. Nous ne nous engageons pas à mettre à jour ou à réviser ces déclarations après la date de cet article de blog, sauf si la loi l'exige._",[23,704,26],"product",{"featured":12,"template":13,"slug":706},"agentic-ai-enterprise-control-self-hosted-duo-agent-platform-and-byom",{"content":708,"config":719},{"description":709,"body":710,"title":711,"heroImage":712,"date":713,"authors":714,"category":9,"tags":716},"Ce guide explique comment déployer un agent d'IA basé sur l'Agent Development Kit vers Google Kubernetes Engine à l'aide de la plateforme DevSecOps de GitLab en toute simplicité et sécurité.","Créer des [agents d'IA](https://about.gitlab.com/fr-fr/gitlab-duo/agent-platform/) est passionnant, mais leur déploiement sécurisé en production est parfois compliqué. Dans ce tutoriel, vous découvrirez comment [l'intégration native de GitLab avec Google Cloud](https://cloud.google.com/blog/topics/partners/understand-the-google-cloud-gitlab-integration) facilite le déploiement d'agents d'IA vers Google Kubernetes Engine (GKE), avec scans de sécurité intégrés et sans clés de compte de service.\n\n\n\n## Pourquoi choisir GKE pour déployer vos agents d'IA ?\n\n\n\nGKE offre une orchestration d'entreprise qui s'intègre parfaitement aux pipelines [CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/) de GitLab grâce à l'authentification OpenID Connect (OIDC). Votre équipe de développement peut déployer des agents d'IA tout en conservant une visibilité, une conformité et un contrôle complets sur votre infrastructure cloud. Ce guide utilise l'Agent Development Kit ([ADK](https://developers.googleblog.com/en/agent-development-kit-easy-to-build-multi-agent-applications/)) de Google afin de créer l'application, ce qui garantit une intégration fluide lors du déploiement avec GitLab.\n\n\n\nVoici trois avantages clés de cette approche :\n\n\n\n**Contrôle total de l'infrastructure :** vos données, vos règles, votre environnement. Vous conservez un contrôle complet sur l'emplacement d'exécution de vos agents d'IA et de leur configuration.\n\n\n\n **Intégration native avec GitLab :** pas de solution de contournement complexe. Vos pipelines existants fonctionnent immédiatement grâce à l'intégration native de GitLab avec Google Cloud.\n\n\n\n **Mise à l'échelle de niveau production :** GKE gère automatiquement la mise à l'échelle et l'orchestration interne à mesure que vos charges de travail d'IA augmentent.\n\n\n\nAvec GKE, GitLab offre la fiabilité d'entreprise dont vos déploiements d'IA ont besoin sans sacrifier l'expérience développeur que vos équipes attendent.\n\n\n\n## Prérequis\n\n\n\nAvant de commencer, assurez-vous d'avoir activé ces API :\n\n\n\n- API GKE\n\n\n- API Artifact Registry\n\n\n- API Vertex AI\n\n\n\nAssurez-vous également de disposer des éléments suivant :\n\n\n- Un projet GitLab créé\n\n\n- Un cluster GKE provisionné\n\n\n- Un dépôt Artifact Registry créé\n\n\n\n## Le processus de déploiement\n\n\n\n### 1. Configurer IAM et les autorisations sur GitLab\n\n\n\nAccédez à vos intégrations GitLab afin de configurer l'authentification Google Cloud (IAM).\n\n\n\nAccédez à **Paramètres > Intégrations** et configurez l'intégration Google Cloud. Si vous utilisez une intégration au niveau du groupe, notez que les paramètres par défaut sont déjà hérités par les projets. Il vous suffit donc de configurer vos paramètres une fois au niveau du groupe pour que tous les projets en bénéficient et les héritent.\n\n\n\nPour configurer les paramètres, vous devez fournir les éléments suivants :\n\n\n- ID du projet\n\n\n- Numéro du projet \n\n\n- ID du pool d'identités de charge de travail\n\n- ID du fournisseur\n\n\n\nUne fois ces informations renseignées, GitLab fournit un script à exécuter dans Google Cloud Console via Cloud Shell. Le résultat de l'exécution de ce script est un pool de fédération d'identité de charge de travail avec l'identité de service de compte principal nécessaire pour permettre l'accès approprié.\n\n\n### 2. Configurer l'intégration à Artifact Registry\n\n\n\nToujours dans les paramètres d'intégration de GitLab, configurez la gestion des artefacts :\n\n\n\n1. Cliquez sur **Gestion des artefacts**.\n\n\n2. Sélectionnez **Google Artifact Registry**.\n\n\n3. Indiquez les éléments suivants :\n      - ID du projet\n      - Nom du dépôt (créé au préalable)\n      - Emplacement du dépôt\n\nGitLab fournit un autre script à exécuter dans Google Cloud Console.\n\n\n\n**Important :** avant de continuer, ajoutez ces rôles supplémentaires au pool de fédération d'identité de charge de travail :\n\n\n- Utilisateur de compte de service\n\n\n- Développeur Kubernetes\n\n\n- Observateur de cluster Kubernetes\n\n\n\nCes autorisations permettent à GitLab de déployer vers GKE dans les étapes suivantes.\n\n\n\n### 3. Créer le pipeline CI/CD\n\n\n\nVoici maintenant la partie essentielle : la création du [pipeline CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Pipeline CI/CD\") pour le déploiement.\n\n\n\nAccédez à **Compilation > Éditeur de pipeline** et définissez votre pipeline en quatre étapes :\n\n\n\n* **Build :** Docker crée l'image de conteneur.\n\n\n\n* **Test :** GitLab Auto DevOps fournit des scans de sécurité intégrés afin de garantir l'absence de vulnérabilités.\n\n\n\n* **Importation :** utilise le composant CI/CD intégré de GitLab pour effectuer un push vers Google Artifact Registry.\n\n\n\n* **Déploiement :** utilise la configuration [Kubernetes](https://about.gitlab.com/fr-fr/blog/kubernetes-the-container-orchestration-solution/ \"Kubernetes\") pour déployer vers GKE.\n\n\n\nVoici le fichier `.gitlab-ci.yml` complet :\n\n\n    ```yaml\n\n\n\n    default:\n      tags: [ saas-linux-2xlarge-amd64 ]\n\n    stages:\n      - build\n      - test\n      - upload\n      - deploy\n\n    variables:\n      GITLAB_IMAGE: $CI_REGISTRY_IMAGE/main:$CI_COMMIT_SHORT_SHA\n      AR_IMAGE: $GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_LOCATION-docker.pkg.dev/$GOOGLE_ARTIFACT_REGISTRY_PROJECT_ID/$GOOGLE_ARTIFACT_REGISTRY_REPOSITORY_NAME/main:$CI_COMMIT_SHORT_SHA\n      GCP_PROJECT_ID: \"your-project-id\"\n      GKE_CLUSTER: \"your-cluster\"\n      GKE_REGION: \"us-central1\"\n      KSA_NAME: \"ai-agent-ksa\"\n\n    build:\n      image: docker:24.0.5\n      stage: build\n      services:\n        - docker:24.0.5-dind\n      before_script:\n        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n      script:\n        - docker build -t $GITLAB_IMAGE .\n        - docker push $GITLAB_IMAGE\n\n    include:\n      - template: Jobs/Dependency-Scanning.gitlab-ci.yml\n      - template: Jobs/Container-Scanning.gitlab-ci.yml\n      - template: Jobs/Secret-Detection.gitlab-ci.yml\n      - component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@main\n        inputs:\n          stage: upload\n          source: $GITLAB_IMAGE\n          target: $AR_IMAGE\n\n    deploy:\n      stage: deploy\n      image: google/cloud-sdk:slim\n      identity: google_cloud\n      before_script:\n        - apt-get update && apt-get install -y kubectl google-cloud-sdk-gke-gcloud-auth-plugin\n        - gcloud container clusters get-credentials $GKE_CLUSTER --region $GKE_REGION --project $GCP_PROJECT_ID\n      script:\n        - |\n          kubectl apply -f - \u003C\u003CEOF\n          apiVersion: apps/v1\n          kind: Deployment\n          metadata:\n            name: ai-agent\n            namespace: default\n          spec:\n            replicas: 2\n            selector:\n              matchLabels:\n                app: ai-agent\n            template:\n              metadata:\n                labels:\n                  app: ai-agent\n              spec:\n                serviceAccountName: $KSA_NAME\n                containers:\n                - name: ai-agent\n                  image: $AR_IMAGE\n                  ports:\n                  - containerPort: 8080\n                  resources:\n                    requests: {cpu: 500m, memory: 1Gi}\n                    limits: {cpu: 2000m, memory: 4Gi}\n                  livenessProbe:\n                    httpGet: {path: /health, port: 8080}\n                    initialDelaySeconds: 60\n                  readinessProbe:\n                    httpGet: {path: /health, port: 8080}\n                    initialDelaySeconds: 30\n          ---\n          apiVersion: v1\n          kind: Service\n          metadata:\n            name: ai-agent-service\n            namespace: default\n          spec:\n            type: LoadBalancer\n            ports:\n            - port: 80\n              targetPort: 8080\n            selector:\n              app: ai-agent\n          ---\n          apiVersion: autoscaling/v2\n          kind: HorizontalPodAutoscaler\n          metadata:\n            name: ai-agent-hpa\n            namespace: default\n          spec:\n            scaleTargetRef:\n              apiVersion: apps/v1\n              kind: Deployment\n              name: ai-agent\n            minReplicas: 2\n            maxReplicas: 10\n            metrics:\n            - type: Resource\n              resource:\n                name: cpu\n                target: {type: Utilization, averageUtilization: 70}\n          EOF\n          \n          kubectl rollout status deployment/ai-agent -n default --timeout=5m\n          EXTERNAL_IP=$(kubectl get service ai-agent-service -n default -o jsonpath='{.status.loadBalancer.ingress[0].ip}')\n          echo \"Deployed at: http://$EXTERNAL_IP\"\n      only:\n        - main\n```\n\n\n#### Configuration essentielle pour GKE\n\n\n\nPour que tout fonctionne, et c'est la raison pour laquelle nous avons besoin de cette configuration supplémentaire pour GKE, nous devons disposer d'un compte de service Kubernetes dans le cluster qui peut fonctionner avec Vertex AI. Ce compte de service doit être autorisé à accéder aux capacités d'IA de Google Cloud.\n\n\n\nSans cela, nous pouvons déployer l'application, mais l'agent d'IA ne fonctionnera pas. Nous devons créer un compte de service Kubernetes capable d'accéder à Vertex AI.\n\n\n\nExécutez cette configuration ponctuelle :\n\n\n\n    ```bash\n\n\n\n    #!/bin/bash\n\n\n\n    PROJECT_ID=\"your-project-id\"\n\n\n\n    GSA_NAME=\"ai-agent-vertex\"\n\n\n\n    GSA_EMAIL=\"${GSA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com\"\n\n\n\n    KSA_NAME=\"ai-agent-ksa\"\n\n\n\n    CLUSTER_NAME=\"your-cluster\"\n\n\n\n    REGION=\"us-central1\"\n\n\n\n\n    # Create GCP Service Account\n\n\n\n    gcloud iam service-accounts create $GSA_NAME \\\n        --display-name=\"AI Agent Vertex AI\" \\\n        --project=$PROJECT_ID\n\n    # Grant Vertex AI permissions\n\n\n\n    gcloud projects add-iam-policy-binding $PROJECT_ID \\\n        --member=\"serviceAccount:${GSA_EMAIL}\" \\\n        --role=\"roles/aiplatform.user\"\n\n    # Get cluster credentials\n\n\n\n    gcloud container clusters get-credentials $CLUSTER_NAME \\\n        --region $REGION --project $PROJECT_ID\n\n    # Create Kubernetes Service Account\n\n\n\n    kubectl create serviceaccount $KSA_NAME -n default\n\n\n\n\n    # Link accounts\n\n\n\n    kubectl annotate serviceaccount $KSA_NAME -n default \\\n        iam.gke.io/gcp-service-account=${GSA_EMAIL}\n\n    gcloud iam service-accounts add-iam-policy-binding ${GSA_EMAIL} \\\n        --role=roles/iam.workloadIdentityUser \\\n        --member=\"serviceAccount:${PROJECT_ID}.svc.id.goog[default/${KSA_NAME}]\" \\\n        --project=$PROJECT_ID\n```\n\n\n### 4. Déployer vers GKE\n\n\n\nUne fois que vous avez terminé, effectuez un push vers le pipeline et le tour est joué.\n\n\n\nLe pipeline vient d'être déployé. Accédez à **CI/CD > Pipelines** pour voir les quatre étapes :\n\n\n- Build\n\n\n- Test (avec tous les scans de sécurité définis)\n\n\n- Importation vers Artifact Registry (réussie)\n\n\n- Déploiement vers Kubernetes dans GKE (réussi)\n\n\n\n## Résumé\n\n\n\nAvec GitLab et Google Cloud, vous êtes en mesure de déployer votre agent d'IA vers GKE en toute simplicité et sécurité en quelques étapes seulement grâce à l'intégration native de GitLab avec Google Cloud.\n\n\nRegardez cette démo :\n\n\n\u003C!-- blank line -->\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/mc2pCL5Qjus?si=QoH02lvz5KH5Ku9O\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n\u003C!-- blank line -->\n\n\n> Utilisez [l'exemple de code complet de ce tutoriel](https://gitlab.com/gitlab-partners-public/google-cloud/demos/gke-ai-agent) pour commencer dès maintenant. Vous n’utilisez pas encore GitLab ? Découvrez la plateforme DevSecOps et profitez d'[un essai gratuit](https://about.gitlab.com/fr-fr/free-trial/). Les startups hébergées sur Google Cloud disposent d'[une offre spéciale pour essayer et utiliser GitLab](https://about.gitlab.com/fr-fr/solutions/startups/google-cloud/).","Déploiement sécurisé d'agents d'IA sur GKE","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1749670563/Blog/Hero%20Images/cloudcomputing.jpg","2026-02-06",[715],"Regnard Raquedan",[23,717,718,24],"google","cloud native",{"featured":32,"template":13,"slug":720},"secure-ai-agent-deployment-to-gke",{"promotions":722},[723,736,748],{"id":724,"categories":725,"header":726,"text":727,"button":728,"image":733},"ai-modernization",[9],"Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":729,"config":730},"Get your AI maturity score",{"href":731,"dataGaName":732,"dataGaLocation":247},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":734},{"src":735},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":737,"categories":738,"header":740,"text":727,"button":741,"image":745},"devops-modernization",[704,739],"devsecops","Are you just managing tools or shipping innovation?",{"text":742,"config":743},"Get your DevOps maturity score",{"href":744,"dataGaName":732,"dataGaLocation":247},"/assessments/devops-modernization-assessment/",{"config":746},{"src":747},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":749,"categories":750,"header":752,"text":727,"button":753,"image":757},"security-modernization",[751],"security","Are you trading speed for security?",{"text":754,"config":755},"Get your security maturity score",{"href":756,"dataGaName":732,"dataGaLocation":247},"/assessments/security-modernization-assessment/",{"config":758},{"src":759},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"header":761,"blurb":762,"button":763,"secondaryButton":767},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":49,"config":764},{"href":765,"dataGaName":52,"dataGaLocation":766},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":54,"config":768},{"href":56,"dataGaName":57,"dataGaLocation":766},1772652094169]