[{"data":1,"prerenderedAt":783},["ShallowReactive",2],{"/fr-fr/blog/top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo":3,"navigation-fr-fr":38,"banner-fr-fr":443,"footer-fr-fr":453,"blog-post-authors-fr-fr-Michael Friedrich":663,"blog-related-posts-fr-fr-top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo":677,"blog-promotions-fr-fr":721,"next-steps-fr-fr":774},{"id":4,"title":5,"authorSlugs":6,"body":8,"categorySlug":9,"config":10,"content":14,"description":8,"extension":26,"isFeatured":12,"meta":27,"navigation":12,"path":28,"publishedDate":19,"seo":29,"stem":34,"tagSlugs":35,"__hash__":37},"blogPosts/fr-fr/blog/top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo.yml","Top Tips For Efficient Ai Powered Code Suggestions With Gitlab Duo",[7],"michael-friedrich",null,"ai-ml",{"slug":11,"featured":12,"template":13},"top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo",true,"BlogPost",{"heroImage":15,"body":16,"authors":17,"updatedDate":19,"date":19,"title":20,"tags":21,"description":25,"category":9},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749669095/Blog/Hero%20Images/gitlabduo.png","[GitLab Duo](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/), notre suite de fonctionnalités alimentées par l'IA, offre une occasion unique d'optimiser vos workflows DevSecOps. Pour en tirer pleinement parti, rien ne vaut la pratique et l'apprentissage collaboratif en situation réelle. Ce tutoriel se concentre sur les suggestions de code de GitLab Duo. Il fournit des conseils et des bonnes pratiques ainsi que quelques bonus (notamment comment combiner les suggestions de code avec nos autres fonctionnalités d'IA pour gagner encore en efficacité). Vous découvrirez également comment l'IA améliore considérablement l'expérience de développement.\n\nLes bonnes pratiques, conseils et exemples présentés dans cet article ont été conçus sur mesure par l'équipe Developer Relations de GitLab. Ils sont intégrés à la [documentation dédiée à GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo/index.html) ainsi qu'au [projet GitLab Duo Prompts](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts) associé. N'hésitez pas à ajouter cette page à vos favoris et revenez-y dès que vous en ressentirez le besoin.\n\n## Pourquoi utiliser les suggestions de code de GitLab Duo ?\n\nPrenons comme exemple deux scénarios :\n\n1. En tant que développeur senior, vous maîtrisez différents langages de programmation pour pouvoir écrire du nouveau code source, réviser celui de vos pairs, concevoir des architectures résilientes et lancer de nouveaux projets. Cependant, se former sur les nouvelles fonctionnalités des langages de programmation nécessite du temps, des recherches et un réel effort d'adaptation. Alors, comment apprendre rapidement celles qui pourraient rendre votre code encore plus performant ou utiliser les ressources de manière plus durable ?\n\n   * Personnellement, j'ai appris la norme C++03, puis adopté C++11 sans jamais vraiment m'approprier les versions C++14/17/20/23. Entre-temps, de nouveaux langages tels que [Rust](https://about.gitlab.com/blog/learning-rust-with-a-little-help-from-ai-code-suggestions-getting-started/) sont apparus, et ils offrent une expérience développeur bien plus moderne. Que faire dans ce contexte ?\n2. En tant qu'ingénieur junior, il peut être difficile d'appréhender de nouveaux projets, d'apprendre un nouveau langage de programmation, de comprendre certains algorithmes spécifiques et de trouver la documentation sur les structures, les interfaces et d'autres composants techniques. Le tout, souvent sous pression, ce qui augmente le risque d'erreurs et entraîne des blocages. Le temps manque pour se pencher sur les bonnes pratiques.\n\n   * Moi-même, je n'ai jamais réellement appris le développement frontend. J'ai quelques notions en HTML, CSS et JavaScript acquises en autodidacte. Et après dix ans, j'ai du mal à m'adapter à des frameworks frontend tels que VueJS. Et le temps pour apprendre se fait rare.\n\nCes scénarios illustrent à quel point il est difficile de suivre l'évolution constante des langages de programmation, bonnes pratiques et autres informations importantes. Mais les [suggestions de code de GitLab Duo](https://about.gitlab.com/fr-fr/solutions/code-suggestions/) peuvent vous aider : elles prédisent et complètent vos blocs de code, définissent la logique de vos fonctions, génèrent des tests automatisés et proposent du code courant, comme des motifs regex, le tout directement dans votre environnement de développement. Alimentée par l'IA, cette fonctionnalité vous aide à approfondir vos connaissances sans quitter votre workflow.\n\n## Commencer avec des prompts simples, puis les affiner\n\nJ'ai commencé mon parcours d'adoption de GitLab Duo par des prompts simples tenant sur une ligne, souvent avec des résultats peu convaincants.\n\n```shell\n# Generate a webserver\n\n// Create a database backend\n\n/* Use multi-threaded data access here */\n```\n\nAprès avoir testé différents contextes et styles de rédaction de prompts, j'ai rapidement constaté que la génération de code était beaucoup plus pertinente à partir de requêtes affinées.\n\n```text\n# Generate a webserver, using the Flask framework. Implement the / URL endpoint with example output.\n\n// Create a database backend. Abstract data handlers and SQL queries into function calls.\n\n/* Use multi-threaded data access here. Create a shared locked resource, and focus on supporting Linux pthreads. */\n```\n\nCependant, les prompts et commentaires seuls ne suffisent pas. Explorons d'autres bonnes pratiques.\n\n## Pratiquer continuellement\n\nDans vos workflows quotidiens, identifiez des cas d'utilisation et des défis spécifiques, et utilisez exclusivement GitLab Duo pour les traiter. Bien qu'il soit tentant d'ouvrir des onglets de recherche dans votre navigateur, vous pouvez souvent résoudre le problème directement dans votre IDE avec GitLab Duo. Voici quelques exemples :\n\n1. Corrigez des dépendances manquantes, souvent responsables d'échecs lors de la compilation ou de l'exécution.\n2. Laissez les suggestions de code compléter automatiquement les appels de fonction lorsque le contexte de journalisation est manquant, y compris les instructions `print`.\n3. Générez des méthodes et des attributs courants pour les design patterns orientés objet (par exemple, les accesseurs/mutateurs getter/setter, les méthodes `toString()`, les opérateurs de comparaison d'objets, l'héritage d'objets, et bien plus encore).\n4. Identifiez la fonction à l'origine de plantages aléatoires et implémentez-en une nouvelle avec un algorithme différent à l'aide des suggestions de code.\n5. En cas d'erreur cryptique empêchant la compilation ou l'exécution, demandez à GitLab Duo Chat de vous aider.\n6. Analysez le code (hérité) existant et les stratégies pour documenter et refactoriser le code vers des bibliothèques modernes. Lancez une version v2 de l'application avec un nouveau framework ou langage afin de réduire la dette technique.\n7. Prévenez les problèmes d'opérations et de sécurité dans l'historique Git en les détectant en amont (performances, plantages, failles de sécurité).\n\nEnfin, pensez à la tâche de codage la plus ennuyeuse (voire celle que vous détestez le plus) et ajoutez-la à cette liste. Personnellement, je redoute les tâches impliquant les accesseurs/mutateurs getter/setter d'attributs dans les classes C++ (comme le montre la vidéo ci-dessous), ainsi que les expressions régulières d'analyse du format des adresses e-mail.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/Z9EJh0J9358?si=QGvQ6mXxPPz4WpM0\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\nIl peut également être utile d'utiliser les suggestions de code dans différents langages de programmation, par exemple en alternant entre langages backend et frontend. Si vous maîtrisez plusieurs d'entre eux, réutilisez ceux que vous n'avez pas pratiqués depuis un certain temps, ou envisagez d'en apprendre un nouveau, tel que [Python](https://about.gitlab.com/blog/learning-python-with-a-little-help-from-ai-code-suggestions/) ou [Rust](https://about.gitlab.com/blog/learning-rust-with-a-little-help-from-ai-code-suggestions-getting-started/).\n\nUne fois intégrées dans un workflow d'auto-complétion rapide, les suggestions de code ne souffrent d'aucune interruption. Le code suggéré s'affiche en grisé et reste facultatif, selon l'interface utilisateur, par exemple VS Code, ce qui ne vous empêchera pas de continuer à écrire du code source sans distraction. Prenez le temps de vous familiariser avec la façon dont les suggestions de code s'affichent et la manière de les accepter entièrement ou partiellement. Vous verrez qu'elles deviendront très vite une aide discrète mais précieuse pour écrire du code de meilleure qualité.\n\n![Image avec suggestions de code grisées](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_java_springboot_class_methods_tostring.png)\n\n### Corriger les dépendances manquantes\n\nIl n'est pas rare que la compilation ou l'exécution du code source échoue à cause de dépendances non déclarées, qui peuvent être journalisées et empêcher toute exécution et tout test ultérieurs. Prenons l'exemple suivant en Go : une erreur générée par `go build` signale que le code source n'a pas encore importé les dépendances nécessaires. L'approche manuelle consisterait à collecter toutes les dépendances répertoriées, à les trier de manière unique et à les ajouter dans le fichier de code source, comme illustré ci-dessous.\n\n![Échec de la compilation Go – dépendances manquantes](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_go_build_failed_missing_deps.png)\n\nMais si GitLab Duo connaît déjà le contexte du fichier et peut identifier les dépendances manquantes, pourquoi ne pas en profiter ? Dans la section située tout en haut du fichier, il suffit d'ajouter un commentaire indiquant `// add missing imports`, puis de patienter un instant : les suggestions de code proposeront automatiquement les lignes à importer.\n\n![Suggestions de code de GitLab Duo – correction suggérée pour les dépendances manquantes ayant entraîné l'échec de la commande go build](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_go_build_failed_missing_deps_suggested_fix.png)\n\nEnsuite, relancez `go build`, et si tout se passe bien, le code source pourra être testé et s'exécutera correctement.\n\n![Échec de la commande go build – correction des dépendances manquantes](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_go_build_failed_missing_deps_fixed.png)\n\n### Générer du code standardisé avec une journalisation optimisée\n\n*Défi : mettre en place un système de journalisation, et d'autres mécanismes d'observabilité incluant des indicateurs et traces, peut s'avérer fastidieux et complexe. Quel est le moyen le plus efficace de les mettre en œuvre sans affecter les performances de l'application ni introduire de bogues ?*\n\n*Solution : utilisez les suggestions de code pour générer les appels de fonction de journalisation et refactorisez le code en vous appuyant sur des abstractions robustes via des bibliothèques d'instrumentation dédiées à l'observabilité. Cette approche peut par exemple vous aider à préparer le code pour une intégration ultérieure avec [OpenTelemetry](https://docs.gitlab.com/ee/development/stage_group_observability/gitlab_instrumentation_for_opentelemetry.html).*\n\nExemple d'une classe de journalisation en Ruby :\n\n```ruby\n# Create Logging utility class\n# Define default log level as attribute\n# Add method for logging, inputs: level, app, message\n# Print the data with formatted date and time in syslog format\n\n# Potential AI-generated code below\nclass Logging\n  attr_accessor :log_level\n\n  def log(level, app, message)\n    time = Time.now.strftime(\"%b %d %H:%M:%S\")\n    puts \"#{time} #{app}[#{Process.pid}]: #{level} - #{message}\"\n  end\nend\n\n# Instantiate class and test the log method\n\n# Potential AI-generated code below\nlogger = Logging.new\nlogger.log_level = :debug\n\nlogger.log(:info, 'MyApp', 'Application started - info')\nlogger.log(:debug, 'MyApp', 'Application started - debug')\nlogger.log(:error, 'MyApp', 'Application started - error')\nlogger.log(:fatal, 'MyApp', 'Application started - fatal')\nlogger.log(:warn, 'MyApp', 'Application started - warn')\n```\n\n### Créer des tests pour les fonctions d'assistance utilitaires\n\n*Défi : le langage de programmation utilisé ne fournit pas certaines fonctions de base dans sa bibliothèque standard. L'envie est grande d'ouvrir un onglet de recherche dans mon navigateur pour trouver et ajouter des fonctions de manipulation de chaînes et d'analyse via des expressions régulières.*\n\n*Solution : créez un fichier nommé `utility.{language-suffix}` et ajoutez un commentaire en tête de fichier. Demandez ensuite aux suggestions de code de générer la fonction de manipulation de chaîne ().*\n\nExemple de méthode de manipulation de chaîne en Python :\n\n```python\n# Create a function to search for a string in a string, return the index\n# Optionally remove search string, and return modified string\n# Test the function on the string \"Cool programming languages: C++, Rust, Python\" - Remove the string \"C++\"\n\n# Potential AI-generated code below\ndef search_and_remove(text, search):\n    index = text.find(search)\n    if index != -1:\n        return index, text[:index] + text[index+len(search):]\n    else:\n        return None, text\n\ntext = \"Cool programming languages: C++, Rust, Python\"\nindex, new_text = search_and_remove(text, \"C++\")\nprint(index, new_text)\n```\n\n**Exercice asynchrone :** demandez à GitLab Duo Chat comment ajouter des tests en Python, sélectionnez le code source concerné et utilisez la commande slash `/tests`.\n\nExemple similaire en Go : créez des fonctions utilitaires pour obtenir les valeurs entières uniques dans un tableau, ou pour calculer la somme de toutes les valeurs paires. Commencez par définir la structure du projet via `go mod init gitlab.com/group/project`, puis créez un fichier `array.go`. Définissez le `package` et ajoutez un premier commentaire pour générer des fonctions.\n\n```go\npackage array\n\n// Create a function that returns unique values from an integer array\n\n// Possible AI-generated code\nfunc unique(ints []int) []int {\n    occurred := map[int]bool{}\n    result := []int{}\n    for _, i := range ints {\n        if !occurred[i] {\n            occurred[i] = true\n            result = append(result, i)\n        }\n    }\n    return result\n}\n\n// Create a function that returns the sum of all even numbers in an integer array\n\n// Possible AI-generated code\nfunc sumEvens(ints []int) int {\n    var sum int\n    for _, i := range ints {\n        if i%2 == 0 {\n            sum += i\n        }\n    }\n    return sum\n}\n```\n\n**Exercice asynchrone** : créez plus de fonctions utilitaires dans des bibliothèques dédiées et utilisez GitLab Duo Chat pour sélectionner et générer les tests via la commande `/tests`. Pour l'exemple en Go, vous pouvez consulter les solutions potentielles disponibles dans le fichier `go/utility/array_test.go` du [projet Prompts de GitLab Duo](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts). Compilez et testez ensuite le code à l'aide de `go build && go test`.\n\n### Générer des expressions régulières sur mesure\n\nLes expressions régulières sont des lignes de code, souvent sur une seule ligne (ou « one liners » en anglais), que les développeurs aiment écrire à la va-vite, qui fonctionnent et donc, qu'ils ne mettent jamais à jour. Il est possible d'utiliser `git blame` pour savoir qui l'a écrite et quand, mais le contexte de ces lignes reste souvent obscur. GitLab Duo peut vous aider à les créer, les expliquer et les refactoriser, comme dans l'exemple suivant :\n\n*Défi : certaines expressions régulières pour analyser des adresses IPv6 et IPv4 ne fonctionnent pas. Quelle est la meilleure approche pour résoudre ce problème ?*\n\n*Solution : ajoutez les commentaires suggérés par les suggestions de code pour générer des exemples adaptés à ces types de regex. Utilisez également GitLab Duo Chat pour poser vos questions et demander des variantes dans d'autres langages. Vous pouvez également sélectionner un extrait de code source et soumettre un prompt affiné avec `/refactor using regular expressions` via Chat.*\n\n**Exercice asynchrone** : choisissez votre langage préféré, créez une fonction factice (stub) qui vérifie que format des chaînes d'adresses IPv6 et IPv4 est valide. Laissez les suggestions de code générer le code d'expression régulière de vérification à votre place. Vous pouvez également utiliser Chat pour affiner ou refactoriser cette regex pour bénéficier de meilleures performances.\n\nExemple pour ce tutoriel : j'ai choisi TypeScript, un langage qui figure sur ma liste d'apprentissage personnelle pour 2024. Voici mon prompt : '// Generate a TypeScript function which parses IPv6 and IPv4 address formats. Use regular expressions`.\n\n![Suggestions de code – utilitaire TypeScript pour les regex de vérification d'adresses IP](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_typescript_utility_parse_ip_address_regex.png)\n\n![Suggestions de code TypeScript – tests de l'utilitaire pour les regex de vérification d'adresses IP](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_typescript_utility_parse_ip_address_regex_tests.png)\n\n## Maîtriser les suggestions de code\n\nVous pouvez activer les suggestions de code en appuyant sur la touche `Entrée` ou `Espace`, selon le contexte. Dans VS Code comme dans le Web IDE de GitLab, l'icône GitLab Duo s'affiche sur la même ligne que la suggestion, ainsi qu'en bas de la fenêtre.\n\nSi vous avez accepté une suggestion, mais que vous souhaitez en fait en essayer une autre, sélectionnez la ligne de code concernée, supprimez-la et reprenez à zéro.\n\n> **Astuce :** cette vidéo présente des combinaisons de touches et des stratégies complémentaires pour mieux utiliser les suggestions de code :\n\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/ORpRqp-A9hQ?si=CmA7PBJ9ckWsvjO3\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n### Utiliser les raccourcis clavier pour relancer les suggestions de code\n\nEn particulier dans la phase d'adoption initiale des suggestions de code en particulier, vous devrez vous entraîner pour obtenir des résultats optimaux à partir des commentaires, du style de code existant, etc., mis en contexte.\n\nVoici quelques raccourcis clavier couramment utilisés pour déclencher des suggestions :\n\n1. Appuyez sur `Entrée` et attendez que la suggestion s'affiche.\n2. Appuyez sur `Espace`, puis sur `Retour arrière` pour supprimer immédiatement l'espace.\n3. Appuyez sur `Entrée` à nouveau pour déclencher une nouvelle suggestion, puis sur `Retour arrière` pour effacer les nouvelles lignes vides restantes.\n\nLorsqu'une suggestion semble pertinente, ou que vous souhaitez tester jusqu'où elle peut vous mener :\n\n1. Continuez à appuyer sur la touche `Tab` pour l'accepter.\n2. Ajoutez un espace ou appuyez sur `Entrée` pour ouvrir une nouvelle portée afin de déclencher une nouvelle suggestion.\n3. Continuez à accepter les suggestions avec `Tab`.\n\nNotez que l'IA générative finit parfois par suggérer en boucle des chemins de code similaires, encore et encore. Vous pouvez déclencher ce comportement en insérant des données de test dans un tableau (par exemple, des chaînes et des nombres de manière ordonnée) ou en générant plusieurs points de terminaison d'API, car l'IA essaie alors d'anticiper les autres points de terminaison qui pourraient être utiles. Dans ce cas, interrompez le flux d'acceptation et continuez à écrire du code normalement.\n\n### Gérer les suggestions de code incomplètes\n\nParfois, les suggestions de code s'arrêtent au milieu d'une définition de variable, de fonction, ou d'une structure incomplète. Si vous avez un doute quant à la syntaxe ou souhaitez relancer les suggestions de code, voici quelques options possibles :\n\n1. Supprimez le ou les derniers caractères, voire la ligne dans son intégralité, avec la touche `Retour arrière`.\n2. Vous pouvez également utiliser `Maj curseur gauche` (sélectionner les caractères) `cmd Maj curseur gauche` (sélectionner la ligne entière), puis appuyer sur `Retour arrière`.\n3. Une autre option consiste à placer le curseur sur la ligne du dessus, puis à appuyer sur `Entrée` pour forcer à nouveau le déclenchement des suggestions de code.\n\n### Gérer les suggestions de code qui s'interrompent\n\nSi les suggestions de code cessent de fonctionner, plusieurs raisons peuvent en être à l'origine :\n\n1. La portée du fichier actuel se termine, par exemple, une fonction `main()` a été entièrement générée et fermée.\n2. Il peut s'agit d'un problème de connexion à l'instance GitLab (édition Self-Managed) ou à GitLab.com (SaaS, [GitLab Dedicated](https://about.gitlab.com/fr-fr/dedicated/)). Dans ce cas, référez-vous à la [documentation de dépannage](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/troubleshooting.html).\n\n## Différencier suggestions et génération de code\n\nLes suggestions de code s'affichent à mesure que vous écrivez du code pour vous aider à compléter une ou plusieurs lignes. La génération de code, quant à elle, nécessite davantage de contexte pour créer des blocs entiers, comme des fonctions, des algorithmes, des classes, et bien plus encore.\n\nLes sections suivantes expliquent en détail les deux approches et comment commencer, avec un exemple pratique.\n\n### Intégrer les commentaires au flux de suggestions de code\n\nUtilisez votre flux de programmation naturel et insérez des commentaires de code lorsque vous avez besoin de contexte afin d'obtenir de meilleures suggestions. Pour accepter les suggestions de code, appuyez sur la touche `Tab`, ou acceptez-les mot par mot à l'aide du raccourci `cmd + flèche droite`.\n\nLe défi suivant consiste à implémenter un outil de statistiques Linux simple, en C, qui reproduit les fonctionnalités des commandes CLI `iostat`, `vmstat` et `du`. Parfois, ces indicateurs détaillés sont utiles pour présenter les statistiques de l'application ou faciliter le débogage, notamment lors de la collecte de données d'assistance auprès des utilisateurs.\n\nCréez un répertoire d'application nommé `linux_stat` ainsi qu'un fichier `main.c`, puis laissez les suggestions de code compléter le reste à partir d'un simple bloc de commentaires initial :\n\n```c\n// Create a Linux statistic tool\n// Collect IO, performance, disk usage, TCP latency\n// Print summaries\n```\n\nAppuyez ensuite sur `Entrée` pour déclencher la création de la méthode `main()`. Si elle n'est pas créée automatiquement, ajoutez un nouveau commentaire explicite pour forcer sa création.\n\n```c\n// Create main function to collect data\n```\n\nLors de mes tentatives, l'IA générative n'a pas immédiatement implémenté toutes les fonctionnalités. Au lieu de cela, elle a ajouté un commentaire `TODO` dans le bloc de code suivant.\n\n```c\nint main() {\n    struct stat statbuf;\n\n    if (stat(\"/etc\", &statbuf) != 0) {\n        perror(\"stat\");\n        return 1;\n    }\n\n    printf(\"IO Block Size: %ld\n\", statbuf.st_blksize);\n\n    // TODO: add CPU usage, disk usage, network latency measurements\n\n    return 0;\n}\n```\n\nPlacez le curseur après le commentaire `TODO`, puis ajoutez un nouveau commentaire pour collecter les données sur l'utilisation du CPU :\n\n```c\n    // Collect CPU usage\n\n    // Example for AI-generated code below\n    double cpu_usage;\n\n    FILE* stat_file = fopen(\"/proc/stat\", \"r\");\n    if (stat_file == NULL) {\n        perror(\"fopen\");\n        return 1;\n    }\n\n    // Parse /proc/stat to get CPU usage\n    fscanf(stat_file, \"cpu %lf\", &cpu_usage);\n\n    printf(\"CPU Usage: %.2f%%\n\", cpu_usage * 100);\n\n    fclose(stat_file);\n```\n\nLe code généré peut ne pas être précis à 100 %, car la mesure de l'utilisation du CPU sur Linux nécessite de prendre des échantillons sur une plage de temps définie. Il faudra donc calculer l'utilisation réelle du processeur à partir de toutes les valeurs dans `/proc/stat`, y compris [`system, nice, user, idle, iowait`, etc.](https://www.kernel.org/doc/Documentation/filesystems/proc.txt).\n\n**Exercice asynchrone :** optimisez le processus de collecte en ajoutant un calcul de moyenne.\n\nRépétez les étapes pour mesurer l'utilisation du disque et la latence du réseau. Vous rédigez le commentaire, et GitLab Duo génère le code C.\n\n```c\n    // Collect disk usage\n\n    // Collect network latency\n\n    // Example for AI-generated code below\n    int sockfd = socket(AF_INET, SOCK_STREAM, 0);\n\n    struct sockaddr_in servaddr;\n    servaddr.sin_family = AF_INET;\n    servaddr.sin_port = htons(80);\n    inet_pton(AF_INET, \"8.8.8.8\", &servaddr.sin_addr);\n```\n\nLe code généré peut utiliser une adresse IP publique pour tester la latence du réseau. Remplacez-la par l'adresse actuelle de GitLab.com.\n\n```c\n    inet_pton(AF_INET, \"172.65.251.78\", &servaddr.sin_addr);\n```\n\nLe code source généré a ajouté plus de dépendances d'en-tête. Accédez à la section supérieure du fichier et ajoutez un commentaire pour inclure tous les en-têtes nécessaires :\n\n```c\n// Import required headers\n```\n\nCompilez et exécutez l'application sur Linux, par exemple sur Ubuntu 22 LTS :\n\n```shell\n# Install compiler\napt install gcc\n\n# Build\ngcc main.c -o linux_stat\n\n# Build: If the math.h header is included, linking against the library is needed, too\ngcc linux_stat.c -o linux_stat -lm\n\n# Run the tool\n./linux_stat\n```\n\n**Bonus :** modifiez le code pour utiliser IPv6 et récupérez l'adresse IPv6 de GitLab.com (`dig gitlab.com AAAA +short`).\n\n```c\n    // Collect network latency\n\n    // Use IPv6\n\n    // Example for AI-generated code below\n    struct sockaddr_in6 servaddr;\n    servaddr.sin6_family = AF_INET6;\n    servaddr.sin6_port = htons(80);\n    //inet_pton(AF_INET6, \"2001:db8::1\", &servaddr.sin6_addr);\n    inet_pton(AF_INET6, \"2606:4700:90:0:f22e:fbec:5bed:a9b9\", &servaddr.sin6_addr);\n\n    int sockfd = socket(AF_INET6, SOCK_STREAM, 0);\n```\n\n![Tests Linux stat en C](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_c_linux_stat_tests.png)\n\nLe code source complet et fonctionnel est disponible dans le [projet GitLab Duo Prompts](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts), dans le répertoire dédié au code C.\n\n**Exercice asynchrone :** refactorisez le code C en code Rust avec GitLab Duo uniquement. Commencez par sélectionner le code source, puis saisissez le prompt `/refactor into Rust` dans GitLab Duo Chat.\n\n> **Astuce :** des commentaires de code bien rédigés améliorent la lisibilité du code source. Ils facilitent l'intégration de nouveaux membres dans l'équipe, aident les équipes dédiées à la fiabilité des sites à déboguer les incidents en production et guident les contributeurs open source dans leurs [premières merge requests](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#first-time-contributors).\n\n### Orienter la génération de code avec des commentaires explicites\n\nLe code source peut être structuré en plusieurs fichiers. Que vous conceviez une nouvelle architecture applicative ou refactorisiez un code existant, GitLab Duo vous aide à générer du code automatiquement.\n\nCommencez par ajouter une section de commentaires en haut du fichier détaillant chaque étape. N'hésitez pas à diviser les commentaires les plus longs en plusieurs lignes, en reprenant les exemples de cet article. Ce modèle vous aide à réfléchir aux exigences du projet et à affiner vos prompts.\n\n```diff\n# Generate a webserver, using the Flask framework.\n# Implement the / URL endpoint with example output.\n+# Add an endpoint for Promtheus metrics\n\n// Create a database backend.\n// Abstract data handlers and SQL queries into function calls.\n+// Use PostgreSQL as default backend, and SQLite for developers as fallback.\n\n/*\nUse multi-threaded data access here.\nCreate a shared locked resource, and focus on supporting Linux pthreads.\n+Abstract the thread creation/wait procedures into object-oriented classes and methods.\n*/\n```\n\nDécouvrez d'autres prompts de génération de code pour les [langages de programmation pris en charge](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/supported_extensions.html) dans la [documentation présentant les cas d'utilisation de GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo/use_cases.html#code-generation-prompts).\n\n### Définir l'intention de la requête\n\nEn fonction du Language Server de GitLab que vous utilisez dans votre IDE, les suggestions de code analysent l'intention de votre saisie et proposent des suggestions de complétion de code en ligne ou des blocs de code.\n\nLa technologie en arrière-plan s'appuie sur TreeSitter pour analyser le code dans un [arbre de syntaxe abstraite (AST)](https://fr.wikipedia.org/wiki/Arbre_de_la_syntaxe_abstraite) et déterminer si la portée se trouve dans une section de commentaires de code (génération) ou dans du code source (complétion). Cette détection doit être exécutée rapidement sur l'IDE client et s'avère être un excellent cas d'utilisation pour [WebAssembly](https://webassembly.org/). Pour en savoir plus, consultez [cet epic](https://gitlab.com/groups/gitlab-org/-/epics/11568) et la vidéo suivante, qui présente le Language Server de GitLab qui alimente les suggestions de code :\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/VQlWz6GZhrs\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n### Structurer la requête comme une histoire\n\nLa génération de code est un art. Formulez votre demande sous forme d'une histoire et GitLab Duo, alimenté par l'IA, pourra vous aider.\n\nL'exemple suivant vise à implémenter un magasin clé-valeur en mémoire en Go, à la manière de Redis. Commencez par rédiger un commentaire descriptif, puis passez à la ligne suivante et appuyez sur `Entrée` pour déclencher les suggestions de code.\n\n```go\n// Create an in-memory key value store, similar to Redis\n// Provide methods to\n// set/unset keys\n// update values\n// list/print with filters\n```\n\nSoyez explicite et précisez : quelles sont les méthodes nécessaires pour manipuler les données ? Demandez aux suggestions de code de générer des méthodes pour définir des clés, de mettre à jour des valeurs et de répertorier toutes les données stockées.\n\n```go\n// Create an in-memory key value store, similar to Redis\n// Provide methods to\n// set/unset keys\n// update values\n// list/print with filters\n```\n\nAcceptez les suggestions à l'aide de la touche `Tab`. Ensuite, demandez aux suggestions de code de créer une fonction `main` accompagnée de code de test.\n\n```go\n// Create a main function and show how the code works\n```\n\nSi les données de test ne suffisent pas, affinez le code généré en vous concentrant sur les scénarios de test extrêmes.\n\n> **Astuce :** vous pouvez utiliser la même méthode pour affiner les [prompts et générer des tests avec GitLab Duo Chat](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#write-tests-in-the-ide) via `/tests focus on extreme test cases`.\n\n```go\n// Add more random test data, focus on extreme test cases\n```\n\n![Suggestions de code - plus de données de test clé-valeur Go](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_go_kv_more_test_data.png)\n\nL'exemple complet, y compris les dépendances corrigées, se trouve dans le [projet gitlab-duo-prompts](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts) dans le répertoire `code-suggestions/go/key-value-store`. Mettez à jour le fichier `main.go`, puis compilez et exécutez le code à l'aide de la commande suivante :\n\n```shell\ngo build\n./key-value-store\n```\n\nCette première itération consiste à créer un binaire autonome et à tester différentes stratégies de mise en œuvre pour les magasins clé-valeur. Validez le code fonctionnel et passez à l'étape suivante de votre parcours d'adoption de GitLab Duo.\n\n> **Astuce :** les nouveaux projets tirent parti de la génération de code, mais requièrent de la pratique et des techniques avancées pour exploiter efficacement les commentaires de code en tant que prompts. Cette approche peut aussi optimiser les workflows des développeurs expérimentés. Les études de faisabilité, l'intégration de nouvelles bibliothèques ou les itérations ne sont pas toujours compatibles avec le framework ou le projet existant. Les développeurs expérimentés choisissent alors de créer des projets temporaires en isolant ou simplifiant la portée de certaines fonctionnalités, par exemple, pour tester une nouvelle couche backend de base de données en comparant ses performances à celles de l'environnement de production. Ou pour remplacer une bibliothèque qui présente des failles de sécurité ou des problèmes de licence par une alternative plus sûre ou une fonctionnalité intégrée au code.\n\n### Accélérer les itérations avec la génération de code\n\nComme le dirait un développeur expérimenté : « Il existe forcément déjà une bibliothèque clé-valeur en Go, alors inutile de réinventer la roue. » Heureusement, Go est un langage de programmation mature doté d'un écosystème riche. Des projets comme la collection awesome-go, par exemple [avelino/awesome-go,](https://github.com/avelino/awesome-go) recensent de nombreuses bibliothèques d'exemples, ce qui facilite grandement la recherche de solutions existantes. Remarque : cette option n'est pas forcément applicable à tous les langages de programmation et doit être évaluée au cas par cas.\n\nVous pouvez également poser la question à GitLab Duo Chat : `Quelles bibliothèques Go utiliser pour un stockage clé-valeur ?`:\n\n![GitLab Duo Chat - demande bibliothèques clé-valeur Golang](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_chat_ask_golang_libs_kv.png)\n\nEnsuite, affinez le prompt des suggestions de code pour utiliser spécifiquement les bibliothèques suggérées, par exemple BoltDB.\n\n```diff\n// Create an in-memory key value store, similar to Redis\n// Provide methods to\n// set/unset keys\n// update values\n// list/print with filters\n+// Use BoltDB as external library\n```\n\nRépétez le schéma ci-dessus : générez les fonctions du code, demandez à GitLab Duo de créer une fonction « main » avec des données de test, puis compilez le code. La principale différence réside dans les bibliothèques externes, qui doivent d'abord faire l'objet d'un pull à l'aide de la commande `go get`.\n\n```shell\ngo get\ngo build\n```\n\nEn cas d'échec de la compilation due à des dépendances manquantes, comme `fmt`, profitez-en pour vous entraîner à nouveau avec GitLab Duo : placez le curseur sur l'instruction `import` et attendez que la suggestion ajoute les dépendances nécessaires. Vous pouvez ajouter un commentaire tel que `Import all libraries`.\n\n![Suggestions de code - correction dépendances bibliothèque externe BoltDB clé-valeur Go](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_go_kv_external_lib_boltdb_fix_deps.png)\n\nVous pouvez également enrichir les tests avec de nouvelles données afin de vérifier le comportement des fonctions : `// Add more random test data, focus on extreme test cases`. Dans l'exemple suivant, une clé vide provoque un arrêt brutal du programme.\n\n![Suggestions de code - scénario de test d'arrêt brutal du programme bibliothèque externe BoltDB clé-valeur Golang](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_go_kv_external_lib_boltdb_test_extreme_cases_panic.png)\n\nCet exemple est une excellente préparation pour les scénarios de test ultérieurs.\n\n### Appliquer la génération de code à des cas concrets : observabilité cloud-native\n\nImaginez une application cliente en Go, chargée de répertorier l'état des conteneurs, pods et services dans un cluster Kubernetes, comme la ligne de commande `kubectl get pods`. Le projet Kubernetes fournit des [bibliothèques Go](https://pkg.go.dev/k8s.io/client-go/kubernetes) qui permettent d'interagir par programmation avec les API, les interfaces et les structures d'objets Kubernetes.\n\nOuvrez votre IDE et créez un nouveau projet Go.\n\n> **Astuce :** vous pouvez demander à GitLab Duo Chat de vous expliquer la procédure à suivre avec ce prompt : `How to start a Go project? Please show CLI command examples`.\n\nCommencez par rédiger un commentaire simple en haut du fichier `main.go` qui décrit l'objectif de l'application : observabilité dans Kubernetes.\n\n```go\n// Create a client for Kubernetes observability\n```\n\nRéfléchissez aux principales exigences : accéder à Kubernetes, définir un contexte et un espace de nommage, et inspecter l'état des ressources. En outre, demandez aux suggestions de code d'importer les paquets nécessaires et de créer un paquet « main » dans le fichier `main.go`.\n\nPremière itération :\n\n```go\n// Create a client for Kubernetes observability\n// Inspect container, pod, service status and print an overview\n```\n\nVous pourriez obtenir des résultats inattendus, comme le codage en dur des identifiants d'accès, des contextes manquants ou l'échec de la compilation.\n\nDeuxième itération :\n\n```go\n// Create a client for Kubernetes observability\n// Create a function that\n// Read the kubernetes configuration file from the KUBECONFIG env var\n// Inspect container, pod, service status and print an overview\n```\n\nL'absence de contextes ou d'espaces de nommage Kubernetes connus peut entraîner l'échec de la compilation ou des comportements inattendus.\n\nTroisième itération :\n\n```go\n// Create a client for Kubernetes observability\n// Create a function that\n// Read the kubernetes configuration file from the KUBECONFIG env var\n// Create kubernetes context, namespace default\n// Inspect container, pod, service status and print an overview\n```\n\nCet exemple code en dur le contexte Kubernetes et l'espace de nommage par défaut pour générer une base initiale. Les itérations ultérieures peuvent lire la valeur de l'espace de nommage à partir d'un paramètre de ligne de commande ou d'un fichier de configuration.\n\nLe dernier exemple peut ressembler à ce qui suit. En plus de la fonctionnalité de l'application, il demande également aux suggestions de code d'importer toutes les dépendances et de générer le paquet `main` dans `main.go`.\n\n```go\n// Create a client for Kubernetes observability\n// Create a function that\n// Read the kubernetes configuration file from the KUBECONFIG env var\n// Create kubernetes context, namespace default\n// Inspect container, pod, service status and print an overview\n// Import necessary packages\n// Create main package\n```\n\n\u003Cdetails> Solution\n\u003Csummary>\n\n```go\npackage main\n\nimport ( \"context\" \"fmt\" \"os\"\n\"k8s.io/client-go/kubernetes\" \"k8s.io/client-go/tools/clientcmd\" metav1 \"k8s.io/apimachinery/pkg/apis/meta/v1\" )\n\nfunc main() { kubeconfig := os.Getenv(\"KUBECONFIG\") config, err := clientcmd.BuildConfigFromFlags(\"\", kubeconfig) if err != nil {\n  panic(err)\n}\nclientset, err := kubernetes.NewForConfig(config) if err != nil {\n  panic(err)\n}\npods, err := clientset.CoreV1().Pods(\"\").List(context.TODO(), metav1.ListOptions{}) if err != nil {\n  panic(err)\n} fmt.Printf(\"There are %d pods in the cluster \", len(pods.Items))\n// Additional code to inspect services, containers, etc }\n```\n\n\u003C/summary>\n\u003C/details>\n\nExemple de données de sortie :\n\n![Suggestions de code GitLab Duo - données de sortie observabilité scénario k8s Go](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_go_k8s_o11y_output.png)\n\n**Exercice asynchrone :** complétez le projet avec du code pour vérifier les services, les conteneurs, etc., puis exportez les résultats vers [OpenTelemetry](https://opentelemetry.io/).\n\n> **Astuce :** entraînez-vous avec les [cas d'utilisation de GitLab Duo : utilisez les prompts de génération de code](https://docs.gitlab.com/ee/user/gitlab_duo/use_cases.html#code-generation-prompts) dans la documentation ou envoyez des merge requests contenant vos propres prompts fonctionnels.\n\nAlors que nous enregistrions une courte démonstration vidéo illustrant la génération de code, une variante plus aboutie du code a été générée. N'hésitez pas à comparer les différences dans [cette validation](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-prompts/-/commit/a1a46de9789d4791f04b4df9f1a35d05b8e67568) et tirer parti des deux versions.\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/ORpRqp-A9hQ\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Tirer parti de toutes les fonctionnalités de GitLab Duo\n\n### Combiner GitLab Duo Chat avec les suggestions de code\n\nUtilisées avec [GitLab Duo Chat](https://docs.gitlab.com/ee/user/gitlab_duo_chat/index.html), les suggestions de code deviennent encore plus efficaces. Le workflow suivant illustre l'efficacité de cette synergie entre IA et développement logiciel :\n\nÉcrivez et générez du code à l'aide des suggestions de code. Le code source sera ensuite vérifié par le biais de l'automatisation CI/CD, de tests de qualité du code et d'un scanning de sécurité. Mais qu'en est-il des connaissances du développeur ?\n\n1. Dans votre IDE, sélectionnez les portions de code générées et utilisez la [commande slash `/explain`](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#explain-code-in-the-ide) dans le prompt de GitLab Duo Chat. Vous pouvez même affiner le prompt en ajoutant `/explain with focus on algorithms` ou d'autres domaines utiles pour une explication centrée spécifiquement sur les problèmes de sécurité potentiels ou de performance.\n\n   * Continuez à écrire et à maintenir votre code, mais gardez à l'esprit qu'à un certain stade, la qualité peut se dégrader et rendre la refactorisation plus complexe. Demandez de l'aide à GitLab Duo Chat.\n2. Dans votre IDE, sélectionnez le code source concerné et utilisez la [commande slash `/refactor`](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#refactor-code-in-the-ide) dans le prompt de GitLab Duo Chat. Là encore, vous pouvez affiner le prompt pour cibler des design patterns spécifiques (fonctions, classes orientées objet, etc.), comme `/refactor into testable functions`.\n\n   * Après avoir rendu le code plus lisible, vous devez rédiger des tests. Quels sont les scénarios extrêmes ou les exemples de données aléatoires à utiliser pour les tests unitaires ? Ce type de recherche et la mise en œuvre dans différents frameworks peuvent prendre du temps.\n3. Dans votre IDE, sélectionnez le code source et utilisez la [commande slash `/tests`](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#write-tests-in-the-ide) dans le prompt de GitLab Duo Chat. Vous pouvez affiner le prompt pour vous concentrer sur des frameworks de test, des scénarios, des méthodes fondées sur les données d'entrée spécifiques, etc.\n\n   * Une fois la qualité du code et la couverture des tests assurées, vous pouvez à nouveau vous concentrer sur l'optimisation de vos workflows DevSecOps avec les suggestions de code.\n\nDécouvrez d'autres scénarios dans la [documentation présentant les cas d'utilisation de GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo/use_cases.html).\n\n### Générer des configurations de compilation avec GitLab Duo Chat\n\nLes recherches nécessaires au démarrage d'un nouveau projet sont souvent fastidieuses. Entre les multiples approches possibles et les frameworks alternatifs, il est facile de se retrouver avec une charge de travail bien plus importante que prévue. Certains langages modernes comme Rust imposent une approche unifiée avec un seul outil (Cargo), tandis que d'autres comme Java ou C++ proposent plusieurs méthodes avec des langages de configuration supplémentaires comme Kotlin DSL ou CMake DSL, etc.\n\nDemandez à GitLab Duo comment démarrer un projet, générer des configurations adaptées à vos outils de compilation (p. ex. `Please show a gradle.build example for Spring Boot`) et accélérer les premières étapes de développement, de compilation et de test du code source. Voici quelques exemples de prompts utiles :\n\n1. Java, Gradle, Spring Boot : `Please show a gradle.build example for Spring Boot`.\n2. C++, CMake, clang : `Please show a basic CMake configuration file for C++17, using clang as compiler`.\n3. Python : `Please show how to initialize and configure a Python project on the CLI`.\n4. Rust : `Please show how to initialize and configure a Rust project.`, suivi d'une question pour affiner le prompt telle que : `Explain the structure of Cargo.toml`.\n5. Golang : `Please show how to initialize and configure a Go project`.\n\n### Demander des explications sur les vulnérabilités à GitLab Duo Chat\n\nSupposons qu'un code PHP a été généré pour créer un formulaire web. Il peut présenter des failles de sécurité potentielles.\n\n```php\n\u003C?php\n// Create a feedback form for user name, email, and comments\n// Render a HTML form\n\n$name = $_POST['name'];\n$email = $_POST['email'];\n$comments = $_POST['comments'];\n\necho '\u003Cform method=\"post\">';\necho '\u003Clabel for=\"name\">Name:\u003C/label>';\necho '\u003Cinput type=\"text\" id=\"name\" name=\"name\">';\n\necho '\u003Clabel for=\"email\">Email:\u003C/label>';\necho '\u003Cinput type=\"email\" id=\"email\" name=\"email\">';\n\necho '\u003Clabel for=\"comments\">Comments:\u003C/label>';\necho '\u003Ctextarea id=\"comments\" name=\"comments\">\u003C/textarea>';\n\necho '\u003Cinput type=\"submit\" value=\"Submit\">';\necho '\u003C/form>';\n\n?>\n```\n\nSélectionnez-le dans votre IDE, puis [demandez à GitLab Duo Chat d'expliquer le problème](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#explain-code-in-the-ide), en utilisant un prompt affiné tel que `/explain why this code is vulnerable to bad security actors`.\n\n![Suggestions de code : GitLab Duo Chat explique la vulnérabilité potentielle](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_chat_explain_potential_vulnerability.png)\n\n> **Astuce** : les vérifications et l'apprentissage s'effectuent dans l'environnement de développement local, ce qui permet d'identifier et de corriger les vulnérabilités en amont, avant même que le code ne fasse l'objet d'un push et qu'une merge request ne déclenche un scanning de sécurité capable d'identifier et de suivre les failles. Une meilleure compréhension des failles de sécurité contribue à améliorer l'expérience développeur.\n\n### Combiner la résolution des vulnérabilités avec les suggestions de code\n\nPrenons un nouvel exemple avec une [vulnérabilité simulée](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/vulnerability-resolution/challenge-resolve-vulnerabilities), et voyons si les suggestions de code peuvent nous aider à la corriger efficacement. Le projet associé a été préconfiguré avec un test statique de sécurité des applications (SAST). Vous pouvez suivre ces étapes pour configurer le SAST GitLab à l'aide du [composant SAST CI/CD](https://gitlab.com/explore/catalog/components/sast) du fichier de configuration CI/CD `.gitlab-ci.yml`.\n\n```yaml\ninclude:\n  # Security: SAST (for vulnerability resolution)\n  - component: gitlab.com/components/sast/sast@1.1.0\n```\n\nAprès avoir examiné le tableau de bord et les détails de la vulnérabilité, vous pouvez utiliser la fonctionnalité d'[explication des vulnérabilités](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#vulnerability-explanation) pour mieux comprendre le contexte et les risques potentiels. La fonctionnalité de [résolution des vulnérabilités](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/index.html#vulnerability-resolution), quant à elle, génère une merge request contenant une proposition de correction du code source pour la faille de sécurité détectée.\n\nParfois, il peut être nécessaire d'affiner le code suggéré. Accédez alors à la [MR générée](https://gitlab.com/gitlab-da/use-cases/ai/ai-workflows/gitlab-duo-challenges/vulnerability-resolution/challenge-resolve-vulnerabilities/-/merge_requests/1), puis copiez le chemin d'accès de la branche Git pour exécuter la commande git fetch en local, ou ouvrez directement le Web IDE à partir du bouton `Edit` pour continuer dans le navigateur. Accédez aux sections du code source contenant les correctifs et modifiez-les si besoin en ajoutant un commentaire :\n\n```shell\n// refactor using safe buffers, null byte termination\n```\n\n![Suggestions de code de GitLab Duo - avec proposition de résolution des vulnérabilités](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_with_vulnerability_resolution_proposal.png)\n\nVous pouvez également ouvrir GitLab Duo Chat, sélectionner le code source et utiliser la commande slash `/refactor`.\n\n![Suggestions de code de GitLab Duo - avec résolution des vulnérabilités en ajoutant la commande refactor de GitLab Chat Duo](https://res.cloudinary.com/about-gitlab-com/image/upload/v1749677063/Blog/Content%20Images/duo_code_suggestions_with_vulnerability_resolution_add_duo_chat_refactor.png)\n\nDécouvrez un exemple complet dans la [documentation présentant les cas d'utilisation de GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo/use_cases.html#explain-and-resolve-vulnerabilities).\n\nVoici un enregistrement de cet exemple :\n\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/Ypwx4lFnHP0\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Conseils supplémentaires\n\n### Vérifier la qualité et la sécurité du code\n\nLa génération accrue de code implique davantage d'efforts en matière de qualité, de tests et de sécurité. Profitez de toutes les fonctionnalités qu'offre une plateforme DevSecOps complète :\n\n1. [Composants CI/CD](https://docs.gitlab.com/ee/ci/components/) et [efficacité des pipelines](https://docs.gitlab.com/ee/ci/pipelines/pipeline_efficiency.html)\n2. [Qualité du code](https://docs.gitlab.com/ee/ci/testing/code_quality.html)\n3. [Couverture des tests](https://docs.gitlab.com/ee/ci/testing/code_coverage.html)\n4. [Sécurité applicative](https://docs.gitlab.com/ee/user/application_security/)\n5. [Observabilité](https://docs.gitlab.com/ee/operations/tracing.html)\n\n### Apprendre en équipe et comprendre l'impact de l'IA\n\nOrganisez des sessions collaboratives ciblées pour tester et itérer et enregistrez-les afin que d'autres équipes puissent s'en inspirer par la suite. Vous pouvez également suivre la [playlist GitLab Duo Coffee Chat sur YouTube](https://www.youtube.com/playlist?list=PL05JrBw4t0Kp5uj_JgQiSvHw1jQu0mSVZ).\n\nDécouvrez les indicateurs d'impact de l'IA dans nos articles, notamment celui intitulé [Utiliser l'IA générative dans votre environnement DevSecOps](https://about.gitlab.com/the-source/ai/how-to-put-generative-ai-to-work-in-your-devsecops-environment/) et [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/). Consultez notre page dédiée au [Centre pour la transparence de l'IA](https://about.gitlab.com/fr-fr/ai-transparency-center/) pour en savoir plus sur l'utilisation des données, la transparence et l'éthique de l'IA chez GitLab.\n\n### Adopter une vision à long terme du développement\n\nLes suggestions de code peuvent parfois prendre plus de temps à charger que les fonctionnalités d'auto-complétion locales. Mettez à profit ce temps pour réfléchir à l'algorithme ou au problème que vous essayez de résoudre. Prendre un moment de recul permet de faire émerger des idées plus claires. Ou bien profitez-en pour savourer une gorgée de votre boisson préférée, puis reprenez le travail avec un regard neuf.\n\nCertains algorithmes sont particulièrement complexes ou nécessitent des dépendances de code qui ne peuvent pas être résolues par auto-complétion. Le code propriétaire ou confidentiel offre souvent moins de contexte que les grands modèles de langage peuvent exploiter. Il peut donc être utile d'enrichir les commentaires pour améliorer la qualité des suggestions de code. Avancez à votre propre rythme et selon votre propre stratégie, et utilisez les suggestions de code là où elles apportent le plus de valeur, notamment pour générer des modèles standards ou des fonctions d'assistance.\n\n> **Astuce :** découvrez [Repository X-Ray](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/repository_xray.html) pour obtenir davantage de contexte sur les suggestions de code et tester des fonctionnalités expérimentales, par exemple, [la prise en charge élargie à d'autres langages dans VS Code](https://docs.gitlab.com/ee/user/project/repository/code_suggestions/supported_extensions.html#add-support-for-more-languages-for-code-suggestions-in-vs-code). Vous trouverez plus d'informations dans l'epic dédié à l'[amélioration du taux d'acceptation des suggestions de code](https://gitlab.com/groups/gitlab-org/-/epics/13085).\n\n### Comment contribuer à GitLab Duo\n\nUtilisez GitLab Duo pour contribuer à des projets open source en tirant parti des suggestions de code, de la refactorisation du code, de la génération de tests et de la documentation automatisée avec des explications claires sur le fonctionnement du code.\n\nLes clients de GitLab peuvent également [co-créer la plateforme GitLab à l'aide de GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo/use_cases.html#use-gitlab-duo-to-contribute-to-gitlab). Suivez les directives récentes concernant les [contributions générées par l'IA](https://about.gitlab.com/community/contribute/dco-cla/#ai-generated-contributions) et regardez cet exemple issu des sessions GitLab Duo Coffee Chat : Contribuer à GitLab à l'aide des suggestions de code et de GitLab Duo Chat :\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/TauP7soXj-E\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n## Comment partager vos retours\n\nGitLab Duo optimise les workflows de développement grâce à ses suggestions de code, mais une adoption efficace passe par des exercices concrets : tutoriels, ateliers en équipe et sessions de formation guidée. L'automatisation des workflows, l'amélioration de la qualité du code, l'ajout de scanning de sécurité et la mesure de l'observabilité permettent de relever les défis posés par l'introduction fréquente de nouveau code. Tirer pleinement parti de toutes les fonctionnalités de GitLab Duo, y compris GitLab Duo Chat, renforce considérablement l'expérience développeur sur la plateforme DevSecOps la plus complète alimentée par l'IA.\n\nPour bien commencer, suivez les bonnes pratiques de ce tutoriel, consultez la [documentation de GitLab Duo](https://docs.gitlab.com/ee/user/gitlab_duo/index.html) et [sollicitez nos équipes pour organiser des ateliers GitLab Duo dédiés à l'IA](https://about.gitlab.com/fr-fr/sales/) (j'ai déjà assisté à des ateliers clients, et je vous les recommande vivement !). N'hésitez pas à partager vos retours sur les suggestions de code dans [ce ticket](https://gitlab.com/gitlab-org/gitlab/-/issues/435783), en incluant des captures d'écran et des vidéos (si possible).\n\n> [Inscrivez-vous à un essai gratuit de GitLab Duo dès aujourd'hui !](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/)",[18],"Michael Friedrich","2025-09-22","GitLab Duo : optimiser les suggestions de code de l'IA",[22,23,24],"AI/ML","tutorial","features","Découvrez comment utiliser les suggestions de code et les combiner avec nos autres fonctionnalités IA pour optimiser l'expérience de développement (avec exercices).","yml",{},"/fr-fr/blog/top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo",{"ogTitle":20,"ogImage":15,"ogDescription":25,"ogSiteName":30,"noIndex":31,"ogType":32,"ogUrl":33,"title":20,"canonicalUrls":33,"description":25},"https://about.gitlab.com",false,"article","https://about.gitlab.com/blog/top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo","fr-fr/blog/top-tips-for-efficient-ai-powered-code-suggestions-with-gitlab-duo",[36,23,24],"aiml","8Xw0KPXKP2T5qsGtQMBTKykf7os_9-ocV7OMwyucNNE",{"data":39},{"logo":40,"freeTrial":45,"sales":50,"login":55,"items":60,"search":370,"minimal":405,"duo":424,"pricingDeployment":433},{"config":41},{"href":42,"dataGaName":43,"dataGaLocation":44},"/fr-fr/","gitlab logo","header",{"text":46,"config":47},"Commencer un essai gratuit",{"href":48,"dataGaName":49,"dataGaLocation":44},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":51,"config":52},"Contacter l'équipe commerciale",{"href":53,"dataGaName":54,"dataGaLocation":44},"/fr-fr/sales/","sales",{"text":56,"config":57},"Connexion",{"href":58,"dataGaName":59,"dataGaLocation":44},"https://gitlab.com/users/sign_in/","sign in",[61,88,185,190,291,351],{"text":62,"config":63,"cards":65},"Plateforme",{"dataNavLevelOne":64},"platform",[66,72,80],{"title":62,"description":67,"link":68},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":69,"config":70},"Découvrir notre plateforme",{"href":71,"dataGaName":64,"dataGaLocation":44},"/fr-fr/platform/",{"title":73,"description":74,"link":75},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":76,"config":77},"Découvrir GitLab Duo",{"href":78,"dataGaName":79,"dataGaLocation":44},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":81,"description":82,"link":83},"Choisir GitLab","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":84,"config":85},"En savoir plus",{"href":86,"dataGaName":87,"dataGaLocation":44},"/fr-fr/why-gitlab/","why gitlab",{"text":89,"left":12,"config":90,"link":92,"lists":96,"footer":167},"Produit",{"dataNavLevelOne":91},"solutions",{"text":93,"config":94},"Voir toutes les solutions",{"href":95,"dataGaName":91,"dataGaLocation":44},"/fr-fr/solutions/",[97,122,145],{"title":98,"description":99,"link":100,"items":105},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":101},{"icon":102,"href":103,"dataGaName":104,"dataGaLocation":44},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[106,110,113,118],{"text":107,"config":108},"CI/CD",{"href":109,"dataGaLocation":44,"dataGaName":107},"/fr-fr/solutions/continuous-integration/",{"text":73,"config":111},{"href":78,"dataGaLocation":44,"dataGaName":112},"gitlab duo agent platform - product menu",{"text":114,"config":115},"Gestion du code source",{"href":116,"dataGaLocation":44,"dataGaName":117},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":119,"config":120},"Livraison de logiciels automatisée",{"href":103,"dataGaLocation":44,"dataGaName":121},"Automated software delivery",{"title":123,"description":124,"link":125,"items":130},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":126},{"href":127,"dataGaName":128,"dataGaLocation":44,"icon":129},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[131,135,140],{"text":132,"config":133},"Tests de sécurité des applications",{"href":127,"dataGaName":134,"dataGaLocation":44},"Application security testing",{"text":136,"config":137},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":138,"dataGaLocation":44,"dataGaName":139},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":141,"config":142},"Conformité logicielle",{"href":143,"dataGaName":144,"dataGaLocation":44},"/fr-fr/solutions/software-compliance/","Software Compliance",{"title":146,"link":147,"items":152},"Mesures",{"config":148},{"icon":149,"href":150,"dataGaName":151,"dataGaLocation":44},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[153,157,162],{"text":154,"config":155},"Visibilité et mesures",{"href":150,"dataGaLocation":44,"dataGaName":156},"Visibility and Measurement",{"text":158,"config":159},"Gestion de la chaîne de valeur",{"href":160,"dataGaLocation":44,"dataGaName":161},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":163,"config":164},"Données d'analyse et informations clés",{"href":165,"dataGaLocation":44,"dataGaName":166},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":168,"items":169},"GitLab pour",[170,175,180],{"text":171,"config":172},"Entreprises",{"href":173,"dataGaLocation":44,"dataGaName":174},"/fr-fr/enterprise/","enterprise",{"text":176,"config":177},"PME",{"href":178,"dataGaLocation":44,"dataGaName":179},"/fr-fr/small-business/","small business",{"text":181,"config":182},"Secteur public",{"href":183,"dataGaLocation":44,"dataGaName":184},"/fr-fr/solutions/public-sector/","public sector",{"text":186,"config":187},"Tarifs",{"href":188,"dataGaName":189,"dataGaLocation":44,"dataNavLevelOne":189},"/fr-fr/pricing/","pricing",{"text":191,"config":192,"link":194,"lists":198,"feature":278},"Ressources",{"dataNavLevelOne":193},"resources",{"text":195,"config":196},"Afficher toutes les ressources",{"href":197,"dataGaName":193,"dataGaLocation":44},"/fr-fr/resources/",[199,232,250],{"title":200,"items":201},"Premiers pas",[202,207,212,217,222,227],{"text":203,"config":204},"Installation",{"href":205,"dataGaName":206,"dataGaLocation":44},"/fr-fr/install/","install",{"text":208,"config":209},"Guides de démarrage",{"href":210,"dataGaName":211,"dataGaLocation":44},"/fr-fr/get-started/","quick setup checklists",{"text":213,"config":214},"Apprentissage",{"href":215,"dataGaLocation":44,"dataGaName":216},"https://university.gitlab.com/","learn",{"text":218,"config":219},"Documentation sur le produit",{"href":220,"dataGaName":221,"dataGaLocation":44},"https://docs.gitlab.com/","product documentation",{"text":223,"config":224},"Vidéos sur les bonnes pratiques",{"href":225,"dataGaName":226,"dataGaLocation":44},"/fr-fr/getting-started-videos/","best practice videos",{"text":228,"config":229},"Intégrations",{"href":230,"dataGaName":231,"dataGaLocation":44},"/fr-fr/integrations/","integrations",{"title":233,"items":234},"Découvrir",[235,240,245],{"text":236,"config":237},"Témoignages clients",{"href":238,"dataGaName":239,"dataGaLocation":44},"/fr-fr/customers/","customer success stories",{"text":241,"config":242},"Blog",{"href":243,"dataGaName":244,"dataGaLocation":44},"/fr-fr/blog/","blog",{"text":246,"config":247},"Travail à distance",{"href":248,"dataGaName":249,"dataGaLocation":44},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":251,"items":252},"Connecter",[253,258,263,268,273],{"text":254,"config":255},"Services GitLab",{"href":256,"dataGaName":257,"dataGaLocation":44},"/fr-fr/services/","services",{"text":259,"config":260},"Communauté",{"href":261,"dataGaName":262,"dataGaLocation":44},"/community/","community",{"text":264,"config":265},"Forum",{"href":266,"dataGaName":267,"dataGaLocation":44},"https://forum.gitlab.com/","forum",{"text":269,"config":270},"Événements",{"href":271,"dataGaName":272,"dataGaLocation":44},"/events/","events",{"text":274,"config":275},"Partenaires",{"href":276,"dataGaName":277,"dataGaLocation":44},"/fr-fr/partners/","partners",{"backgroundColor":279,"textColor":280,"text":281,"image":282,"link":286},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":283,"config":284},"carte promo The Source",{"src":285},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":287,"config":288},"Lire les articles les plus récents",{"href":289,"dataGaName":290,"dataGaLocation":44},"/fr-fr/the-source/","the source",{"text":292,"config":293,"lists":295},"Société",{"dataNavLevelOne":294},"company",[296],{"items":297},[298,303,309,311,316,321,326,331,336,341,346],{"text":299,"config":300},"À propos",{"href":301,"dataGaName":302,"dataGaLocation":44},"/fr-fr/company/","about",{"text":304,"config":305,"footerGa":308},"Carrières",{"href":306,"dataGaName":307,"dataGaLocation":44},"/jobs/","jobs",{"dataGaName":307},{"text":269,"config":310},{"href":271,"dataGaName":272,"dataGaLocation":44},{"text":312,"config":313},"Leadership",{"href":314,"dataGaName":315,"dataGaLocation":44},"/company/team/e-group/","leadership",{"text":317,"config":318},"Équipe",{"href":319,"dataGaName":320,"dataGaLocation":44},"/company/team/","team",{"text":322,"config":323},"Manuel",{"href":324,"dataGaName":325,"dataGaLocation":44},"https://handbook.gitlab.com/","handbook",{"text":327,"config":328},"Relations avec les investisseurs",{"href":329,"dataGaName":330,"dataGaLocation":44},"https://ir.gitlab.com/","investor relations",{"text":332,"config":333},"Centre de confiance",{"href":334,"dataGaName":335,"dataGaLocation":44},"/fr-fr/security/","trust center",{"text":337,"config":338},"Centre pour la transparence de l'IA",{"href":339,"dataGaName":340,"dataGaLocation":44},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":342,"config":343},"Newsletter",{"href":344,"dataGaName":345,"dataGaLocation":44},"/company/contact/#contact-forms","newsletter",{"text":347,"config":348},"Presse",{"href":349,"dataGaName":350,"dataGaLocation":44},"/press/","press",{"text":352,"config":353,"lists":354},"Nous contacter",{"dataNavLevelOne":294},[355],{"items":356},[357,360,365],{"text":51,"config":358},{"href":53,"dataGaName":359,"dataGaLocation":44},"talk to sales",{"text":361,"config":362},"Portail d’assistance",{"href":363,"dataGaName":364,"dataGaLocation":44},"https://support.gitlab.com","support portal",{"text":366,"config":367},"Portail clients GitLab",{"href":368,"dataGaName":369,"dataGaLocation":44},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":371,"login":372,"suggestions":379},"Fermer",{"text":373,"link":374},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":375,"config":376},"gitlab.com",{"href":58,"dataGaName":377,"dataGaLocation":378},"search login","search",{"text":380,"default":381},"Suggestions",[382,384,389,391,396,401],{"text":73,"config":383},{"href":78,"dataGaName":73,"dataGaLocation":378},{"text":385,"config":386},"Suggestions de code (IA)",{"href":387,"dataGaName":388,"dataGaLocation":378},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":107,"config":390},{"href":109,"dataGaName":107,"dataGaLocation":378},{"text":392,"config":393},"GitLab sur AWS",{"href":394,"dataGaName":395,"dataGaLocation":378},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":397,"config":398},"GitLab sur Google Cloud ",{"href":399,"dataGaName":400,"dataGaLocation":378},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":402,"config":403},"Pourquoi utiliser GitLab ?",{"href":86,"dataGaName":404,"dataGaLocation":378},"Why GitLab?",{"freeTrial":406,"mobileIcon":411,"desktopIcon":416,"secondaryButton":419},{"text":407,"config":408},"Commencer votre essai gratuit",{"href":409,"dataGaName":49,"dataGaLocation":410},"https://gitlab.com/-/trials/new/","nav",{"altText":412,"config":413},"Icône GitLab",{"src":414,"dataGaName":415,"dataGaLocation":410},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":412,"config":417},{"src":418,"dataGaName":415,"dataGaLocation":410},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":420,"config":421},"Commencer",{"href":422,"dataGaName":423,"dataGaLocation":410},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":425,"mobileIcon":429,"desktopIcon":431},{"text":426,"config":427},"En savoir plus sur GitLab Duo",{"href":78,"dataGaName":428,"dataGaLocation":410},"gitlab duo",{"altText":412,"config":430},{"src":414,"dataGaName":415,"dataGaLocation":410},{"altText":412,"config":432},{"src":418,"dataGaName":415,"dataGaLocation":410},{"freeTrial":434,"mobileIcon":439,"desktopIcon":441},{"text":435,"config":436},"Retour aux tarifs",{"href":188,"dataGaName":437,"dataGaLocation":410,"icon":438},"back to pricing","GoBack",{"altText":412,"config":440},{"src":414,"dataGaName":415,"dataGaLocation":410},{"altText":412,"config":442},{"src":418,"dataGaName":415,"dataGaLocation":410},{"title":444,"button":445,"config":450},"Découvrez comment l'IA agentique transforme la livraison logicielle",{"text":446,"config":447},"Regarder GitLab Transcend maintenant",{"href":448,"dataGaName":449,"dataGaLocation":44},"/fr-fr/events/transcend/virtual/","transcend event",{"layout":451,"icon":452,"disabled":12},"release","AiStar",{"data":454},{"text":455,"source":456,"edit":462,"contribute":467,"config":472,"items":477,"minimal":654},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":457,"config":458},"Afficher le code source de la page",{"href":459,"dataGaName":460,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":463,"config":464},"Modifier cette page",{"href":465,"dataGaName":466,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":468,"config":469},"Veuillez contribuer",{"href":470,"dataGaName":471,"dataGaLocation":461},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":473,"facebook":474,"youtube":475,"linkedin":476},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[478,501,555,587,622],{"title":62,"links":479,"subMenu":484},[480],{"text":481,"config":482},"Plateforme DevSecOps",{"href":71,"dataGaName":483,"dataGaLocation":461},"devsecops platform",[485],{"title":186,"links":486},[487,491,496],{"text":488,"config":489},"Voir les forfaits",{"href":188,"dataGaName":490,"dataGaLocation":461},"view plans",{"text":492,"config":493},"Pourquoi choisir GitLab Premium ?",{"href":494,"dataGaName":495,"dataGaLocation":461},"/fr-fr/pricing/premium/","why premium",{"text":497,"config":498},"Pourquoi choisir GitLab Ultimate ?",{"href":499,"dataGaName":500,"dataGaLocation":461},"/fr-fr/pricing/ultimate/","why ultimate",{"title":502,"links":503},"Solutions",[504,509,512,514,519,524,528,531,534,539,541,543,545,550],{"text":505,"config":506},"Transformation digitale",{"href":507,"dataGaName":508,"dataGaLocation":461},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":510,"config":511},"Sécurité et conformité",{"href":127,"dataGaName":134,"dataGaLocation":461},{"text":119,"config":513},{"href":103,"dataGaName":104,"dataGaLocation":461},{"text":515,"config":516},"Développement agile",{"href":517,"dataGaName":518,"dataGaLocation":461},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":520,"config":521},"Transformation cloud",{"href":522,"dataGaName":523,"dataGaLocation":461},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":525,"config":526},"SCM",{"href":116,"dataGaName":527,"dataGaLocation":461},"source code management",{"text":107,"config":529},{"href":109,"dataGaName":530,"dataGaLocation":461},"continuous integration & delivery",{"text":158,"config":532},{"href":160,"dataGaName":533,"dataGaLocation":461},"value stream management",{"text":535,"config":536},"GitOps",{"href":537,"dataGaName":538,"dataGaLocation":461},"/fr-fr/solutions/gitops/","gitops",{"text":171,"config":540},{"href":173,"dataGaName":174,"dataGaLocation":461},{"text":176,"config":542},{"href":178,"dataGaName":179,"dataGaLocation":461},{"text":181,"config":544},{"href":183,"dataGaName":184,"dataGaLocation":461},{"text":546,"config":547},"Formation",{"href":548,"dataGaName":549,"dataGaLocation":461},"/fr-fr/solutions/education/","education",{"text":551,"config":552},"Services financiers",{"href":553,"dataGaName":554,"dataGaLocation":461},"/fr-fr/solutions/finance/","financial services",{"title":191,"links":556},[557,559,562,564,567,569,572,575,577,579,581,583,585],{"text":203,"config":558},{"href":205,"dataGaName":206,"dataGaLocation":461},{"text":560,"config":561},"Guides de démarrage rapide",{"href":210,"dataGaName":211,"dataGaLocation":461},{"text":213,"config":563},{"href":215,"dataGaName":216,"dataGaLocation":461},{"text":218,"config":565},{"href":220,"dataGaName":566,"dataGaLocation":461},"docs",{"text":241,"config":568},{"href":243,"dataGaName":244},{"text":570,"config":571},"Histoires de réussite client",{"href":238,"dataGaLocation":461},{"text":573,"config":574},"Histoires de succès client",{"href":238,"dataGaName":239,"dataGaLocation":461},{"text":246,"config":576},{"href":248,"dataGaName":249,"dataGaLocation":461},{"text":254,"config":578},{"href":256,"dataGaName":257,"dataGaLocation":461},{"text":259,"config":580},{"href":261,"dataGaName":262,"dataGaLocation":461},{"text":264,"config":582},{"href":266,"dataGaName":267,"dataGaLocation":461},{"text":269,"config":584},{"href":271,"dataGaName":272,"dataGaLocation":461},{"text":274,"config":586},{"href":276,"dataGaName":277,"dataGaLocation":461},{"title":292,"links":588},[589,591,594,596,598,600,602,606,611,613,615,617],{"text":299,"config":590},{"href":301,"dataGaName":294,"dataGaLocation":461},{"text":592,"config":593},"Emplois",{"href":306,"dataGaName":307,"dataGaLocation":461},{"text":312,"config":595},{"href":314,"dataGaName":315,"dataGaLocation":461},{"text":317,"config":597},{"href":319,"dataGaName":320,"dataGaLocation":461},{"text":322,"config":599},{"href":324,"dataGaName":325,"dataGaLocation":461},{"text":327,"config":601},{"href":329,"dataGaName":330,"dataGaLocation":461},{"text":603,"config":604},"Sustainability",{"href":605,"dataGaName":603,"dataGaLocation":461},"/sustainability/",{"text":607,"config":608},"Diversité, inclusion et appartenance (DIB)",{"href":609,"dataGaName":610,"dataGaLocation":461},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":332,"config":612},{"href":334,"dataGaName":335,"dataGaLocation":461},{"text":342,"config":614},{"href":344,"dataGaName":345,"dataGaLocation":461},{"text":347,"config":616},{"href":349,"dataGaName":350,"dataGaLocation":461},{"text":618,"config":619},"Déclaration de transparence sur l'esclavage moderne",{"href":620,"dataGaName":621,"dataGaLocation":461},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":352,"links":623},[624,627,632,634,639,644,649],{"text":625,"config":626},"Échanger avec un expert",{"href":53,"dataGaName":54,"dataGaLocation":461},{"text":628,"config":629},"Aide",{"href":630,"dataGaName":631,"dataGaLocation":461},"https://support.gitlab.com/hc/en-us/articles/11626483177756-GitLab-Support","get help",{"text":366,"config":633},{"href":368,"dataGaName":369,"dataGaLocation":461},{"text":635,"config":636},"Statut",{"href":637,"dataGaName":638,"dataGaLocation":461},"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":461},"/fr-fr/privacy/","privacy statement",{"text":650,"config":651},"Préférences en matière de cookies",{"dataGaName":652,"dataGaLocation":461,"id":653,"isOneTrustButton":12},"cookie preferences","ot-sdk-btn",{"items":655},[656,658,661],{"text":640,"config":657},{"href":642,"dataGaName":643,"dataGaLocation":461},{"text":659,"config":660},"Politique de confidentialité",{"href":647,"dataGaName":648,"dataGaLocation":461},{"text":650,"config":662},{"dataGaName":652,"dataGaLocation":461,"id":653,"isOneTrustButton":12},[664],{"id":665,"title":18,"body":8,"config":666,"content":668,"description":8,"extension":26,"meta":672,"navigation":12,"path":673,"seo":674,"stem":675,"__hash__":676},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":667},"BlogAuthor",{"name":18,"config":669},{"headshot":670,"ctfId":671},"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",[678,694,706],{"content":679,"config":692},{"title":680,"description":681,"authors":682,"body":685,"heroImage":686,"date":687,"category":9,"tags":688},"GitLab et Vertex AI sur Google Cloud : vers un développement logiciel agentique","Découvrez comment les clients Google Cloud adoptent GitLab et Vertex AI pour les modèles de base, les contrôles d'entreprise et la richesse de Model Garden.\n",[683,684],"Regnard Raquedan","Rajesh Agadi","GitLab Duo Agent Platform redéfinit la façon dont les organisations conçoivent, sécurisent et livrent leurs logiciels. Depuis sa disponibilité générale en janvier 2026, la plateforme intègre l'IA agentique à chaque phase du cycle de développement logiciel. GitLab Duo Agent Platform constitue une couche d'orchestration intelligente au sein de laquelle les équipes de développement et leurs agents spécialisés planifient, codent, révisent et corrigent ensemble les vulnérabilités de sécurité.\n\nGrâce à ce partenariat, [GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/) automatise l'orchestration du développement logiciel et la gestion du contexte du cycle de vie via son intégration à Vertex AI sur Google Cloud, qui alimente la couche de modèles pour les appels d'agents. Les équipes continuent de travailler sur les tickets, les merge requests, les pipelines et les workflows de sécurité, tandis que l'inférence suit la posture Google Cloud qu'elles ont déjà définie.\n\nLes avancées des modèles Vertex AI de Google Cloud élargissent les possibilités d'utilisation de GitLab Duo Agent Platform pour les clients Google Cloud. Ces derniers bénéficient d'un plan de contrôle [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ?\") alimenté par l'IA dans GitLab, soutenu par une infrastructure d'IA en constante évolution dans Vertex AI, ainsi que par les options de déploiement et d'intégration flexibles de GitLab Duo Agent Platform. Cette combinaison permet des workflows agentiques plus performants et mieux gouvernés à l'échelle de l'entreprise.\n\n![Illustration conceptuelle de GitLab Duo Agent Platform intégré à Vertex AI de Google Cloud pour alimenter le développement logiciel agentique et les workflows d'IA gouvernés](https://res.cloudinary.com/about-gitlab-com/image/upload/v1776165990/b7jlux9kydafncwy8spc.png)\n\n## Des agents qui interviennent tout au long du cycle de vie\n\nDe nombreux outils d'IA se concentrent sur une seule tâche : accélérer la [génération de code](https://about.gitlab.com/fr-fr/topics/devops/ai-code-generation-guide/ \"Génération de code\"). GitLab Duo Agent Platform va plus loin. La plateforme orchestre des agents d'IA sur l'ensemble du cycle de vie du développement logiciel (SDLC), de la planification à la livraison en passant par les contrôles de sécurité, et ce pour de nombreuses équipes travaillant sur de multiples projets et releases. À cette échelle, les assistants d'IA pour le code sont indispensables à l'innovation continue, mais ne suffisent pas à eux seuls.\n\nLes assistants de codage à usage unique ont rarement une vision complète de l'état d'un projet. Le backlog, les merge requests en attente, les jobs en échec et les résultats de sécurité sont disponibles dans GitLab, mais une fenêtre de chat distincte dans un assistant de codage n'hérite pas de cette vue d'ensemble du [SDLC](https://about.gitlab.com/fr-fr/blog/what-is-sdlc/ \"Qu'est-ce que le SDLC ?\"). Ce manque se traduit par des transferts manuels, des explications répétées à une IA dépourvue de contexte, et des équipes de gouvernance qui tentent de cartographier les flux de données entre des outils qui n'ont jamais été conçus comme un système unifié.\n\nGitLab Duo Agent Platform contribue à combler ce fossé en exécutant des agents et des flows sur les mêmes objets que ceux utilisés quotidiennement par les équipes d'ingénierie. Vertex AI fournit ensuite les modèles et services que ces agents sollicitent lorsque Google Cloud est votre environnement d'inférence de référence, la passerelle d'IA (AI-Gateway) de GitLab gérant les accès afin que les administrateurs disposent d'une cartographie claire des connexions. Par exemple, l'agent Planner analyse les backlogs, décompose les epics en tâches structurées et applique des frameworks de priorisation pour aider les équipes à décider de ce qu'elles doivent développer ensuite. L'agent Security Analyst trie les vulnérabilités, détaille les risques en langage clair et recommande des mesures correctives par ordre de priorité. Des flows intégrés connectent ces agents au sein de processus de bout en bout, sans que les équipes de développement aient à gérer chaque transfert manuellement.\n\nAgentic Chat dans GitLab Duo Agent Platform offre une expérience unifiée pour les équipes de développement. Elles formulent des requêtes en langage naturel pour obtenir des réponses contextuelles basées sur un raisonnement multi-étapes qui s'appuie sur l'état complet d'un projet : ses tickets, ses merge requests, ses pipelines, ses résultats de sécurité et son code source. GitLab servant de système d'enregistrement pour le SDLC avec un modèle de données unifié, les agents GitLab Duo opèrent dans un contexte de cycle de vie qui échappe aux assistants d'IA autonomes et spécifiques à un outil.\n\n### Amplifiés par Vertex AI\n\nGitLab Duo Agent Platform est conçue pour offrir une flexibilité en matière de modèles, car elle attribue différentes capacités à différents modèles en fonction de ceux qui offrent les meilleures performances pour une tâche donnée. Ce choix architectural porte ses fruits sur Google Cloud, où Vertex AI joue le rôle d'environnement géré pour les modèles de base et les services associés, et offre un vaste écosystème de modèles et une infrastructure gérée qui contribuent à repousser encore plus loin les capacités de la plateforme.\n\nLes dernières générations de modèles d'IA disponibles via Vertex AI apportent des améliorations significatives en matière de raisonnement, d'utilisation des outils et de compréhension des contextes longs par rapport aux versions précédentes. Des propriétés sur lesquelles s'appuient les agents de GitLab sur de nombreux projets et équipes qui disposent de codes sources volumineux et complexes. Des fenêtres de contexte plus longues et une intégration plus riche des outils dans les modèles sous-jacents élargissent ce que les agents peuvent accomplir en une seule action, ce qui est particulièrement important pour des charges de travail telles que l'analyse approfondie du backlog ou le contrôle de sécurité d'un monorepo.\n\n[Vertex AI Model Garden](https://cloud.google.com/model-garden), avec son accès à un large éventail de modèles de base, offre aux clients la flexibilité nécessaire pour effectuer ces choix en fonction des performances, des coûts et des exigences réglementaires, sans la contrainte d'un fournisseur unique.\n\nPar ailleurs, les clients de GitLab peuvent utiliser la fonctionnalité Bring Your Own Model (BYOM) pour GitLab Duo Agent Platform, afin que les fournisseurs et les passerelles approuvés s'intègrent là où votre modèle de sécurité l'exige. L'article [consacré à 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/) décrit le fonctionnement de cette configuration. Grâce à cette option de déploiement, les clients accèdent à un plus large éventail d'options de modèles qu'ils peuvent adapter à leur processus de développement logiciel : le bon modèle pour le bon workflow, avec les bonnes mesures de protection.\n\nPour GitLab, la décision de s'appuyer sur Vertex AI a été motivée par le besoin d'une fiabilité de niveau entreprise et d'une gamme de modèles inégalée. Vertex AI et Model Garden prennent entièrement en charge les aspects les plus complexes de l'hébergement des [grands modèles de langage (LLM)](https://about.gitlab.com/fr-fr/blog/large-language-model/ \"Qu'est-ce qu'un LLM ?\"), ce qui signifie que la livraison rapide de versions, la robustesse de la sécurité et la rigueur de la gouvernance sont intégrées de façon transparente dans l'intégration. Au-delà de l'offre de modèles Gemini, Vertex AI offre un accès mondial à faible latence à un vaste catalogue de modèles tiers et [open source](https://about.gitlab.com/fr-fr/blog/what-is-open-source/ \"Qu'est-ce que l'open source ?\").\n\nCombiné à l'approche de pointe de Google Cloud en matière de confidentialité des données et de protection des modèles, Vertex AI s'est imposé comme le choix évident pour alimenter l'[expérience développeur](https://about.gitlab.com/fr-fr/topics/devops/what-is-developer-experience/ \"Expérience développeur\") nouvelle génération de GitLab.\n\nEn intégrant Vertex AI Model Garden à son backend, GitLab renforce considérablement sa plateforme [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que le DevSecOps ?\") sans en répercuter la complexité sur les utilisateurs. Les équipes de développement n'ont pas à évaluer ni à gérer les LLM sous-jacents ; elles bénéficient au contraire d'un workflow simplifié et assisté par l'IA pour construire leurs applications.\n\nGitLab gère entièrement l'orchestration cloud et permet aux équipes de développement de se concentrer pleinement sur l'écriture d'un code de qualité, tandis que Vertex AI alimente les fonctionnalités qui les accompagnent.\n\n## Ce que cela signifie pour les clients Google Cloud\n\nGitLab Duo Agent Platform fournit déjà des agents d'IA qui opèrent sur l'ensemble du cycle de vie logiciel au sein d'un système d'enregistrement unique et gouverné. Sur Google Cloud, la plateforme favorise une innovation rapide à mesure que Vertex AI continue de faire évoluer les couches de modèles et d'infrastructure.\n\nPour les clients Google Cloud, cette intégration se traduit par une livraison logicielle rationalisée avec une gouvernance d'entreprise stricte. Pour les équipes d'ingénierie de plateforme, cela signifie normaliser les modèles Vertex qui alimentent les suggestions, les analyses et les corrections dans GitLab, plutôt que de répertorier des dizaines d'outils côté client. Les programmes de sécurité en bénéficient lorsque les agents proposent et valident des correctifs au même endroit où les équipes trient déjà les résultats, ce qui réduit les changements de contexte et les tâches qui s'échapperaient autrement vers des canaux non gérés.\n\nDu point de vue de l'économie et des politiques cloud, orienter l'inférence des agents vers Vertex depuis GitLab maintient l'utilisation à proximité des accords et contrôles déjà en place sur Google Cloud, ce qui contribue à éviter les dépenses redondantes et les chemins parallèles qui contournent les processus d'approvisionnement.\n\nVertex AI étant un fournisseur d'infrastructure sous-jacente de GitLab Duo Agent Platform, les organisations peuvent considérablement accroître la productivité de leurs équipes de développement sans les contraintes et les risques liés à la gestion de chaînes d'outils d'IA fragmentées. Les équipes restent alignées au sein d'un système d'enregistrement unique et sécurisé, ce qui leur permet de construire des applications plus rapidement et de livrer en toute confiance.\n\nLa collaboration entre GitLab et Google Cloud se construit depuis 2018. Aujourd'hui, elle représente l'une des collaborations les plus complètes pour les organisations qui souhaitent passer d'expérimentations en matière d'IA à un développement logiciel agentique entièrement gouverné sur Google Cloud. À mesure que les deux plateformes continuent d'évoluer, GitLab en élargissant son orchestration d'agents et son contexte développeur, et Vertex AI en repoussant les limites des capacités des modèles et de l'infrastructure des agents, la valeur ajoutée pour les clients communs ne cessera de croître.\n\n> [Commencez un essai gratuit de GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/free-trial/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr) pour découvrir la puissance de GitLab et Vertex AI sur Google Cloud.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663121/Blog/Hero%20Images/LogoLockupPlusLight.png","2026-04-15",[22,277,689,690,691],"google","news","product",{"featured":12,"template":13,"slug":693},"gitlab-and-vertex-ai-on-google-cloud",{"content":695,"config":704},{"title":696,"description":697,"authors":698,"heroImage":700,"date":701,"body":702,"category":9,"tags":703},"Accélérez votre développement avec GitLab Duo Agent Platform et Claude","Découvrez comment tirer parti des modèles d'IA externes comme Claude d'Anthropic pour automatiser la génération de code et la création de pipelines directement dans GitLab.",[699],"Cesar Saavedra","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058602/epl3sinfezlzxnppxak6.png","2026-04-09","Les équipes de développement logiciel modernes sont confrontées à un défi majeur : comment maintenir la cadence de développement tout en garantissant la qualité du code, la sécurité et la cohérence dans le cadre de projets complexes ?\n\nBien que les assistants IA pour le code aient accéléré la productivité individuelle des équipes, ils fonctionnent souvent en marge du workflow de développement global. Ce manque d'intégration oblige les développeurs à basculer constamment entre différents outils, à traduire manuellement les suggestions de l'IA en code exploitable et à consacrer un temps précieux à des tâches répétitives qui pourraient être automatisées.\n\n[GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/) résout ce problème en offrant une intégration transparente avec des modèles d'IA externes comme Claude d'Anthropic, Codex d'OpenAI et bien d'autres encore.\n\nEn créant des agents externes au sein de GitLab Duo Agent Platform, les organisations peuvent personnaliser les capacités de l'IA selon leurs besoins, workflows et normes spécifiques, directement dans l'environnement GitLab qu'elles connaissent. Les agents comprennent le contexte de votre projet, respectent vos normes de code et peuvent accomplir de manière autonome des tâches complexes en plusieurs étapes, de l'idée initiale au code prêt pour la production.\n\nRegardez cette démonstration vidéo et suivez les étapes ci-dessous pour vous lancer :\n\n\n\u003Cfigure class=\"video_container\">\n  \u003Ciframe src=\"https://www.youtube.com/embed/BPmoVCeyWJA?si=50ktjKxPUNpicXve\" frameborder=\"0\" allowfullscreen=\"true\"> \u003C/iframe>\n\u003C/figure>\n\n\n## Cas d'utilisation concrets\n\nVoici trois cas d'utilisation qui illustrent comment les agents externes transforment le cycle de vie du développement :\n\n### 1. De l'idée au code\n\nEn partant d'un projet vide et d'une description détaillée du ticket, l'agent externe (dans ce cas, Claude) prend en charge l'intégralité du développement de l'application. Le titre du ticket correspond à l'application souhaitée et la description énumère ses spécifications.\n\nL'agent lit le contexte (informations du projet, ressources associées, etc.), analyse les exigences détaillées dans le ticket, génère une application web Java full stack avec les composants d'interface utilisateur appropriés, implémente la logique métier avec les taux d'intérêt indiqués et crée une merge request comprenant l'ensemble du code prêt à être révisé.\n\nL'application générée inclut des classes Java backend, des fichiers HTML/CSS/JavaScript frontend et la configuration du build en fonction des spécifications du ticket d'origine. Les équipes peuvent ensuite tester l'application localement, vérifier les fonctionnalités et continuer à itérer avec l'agent par le biais d'une conversation en langage naturel.\n\n![Ticket détaillant les exigences de l'application](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058387/irzlmm0gukanjt7ryq9b.png \"Ticket détaillant les exigences de l'application\")\n\n\n\n![Prompt pour que l'agent externe crée une merge request avec implémentation de l'application](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058392/ajr6nquefob7lefdcxng.png \"Prompt pour que l'agent externe crée une merge request avec implémentation  de l'application\")\n\n\n\n\n![Implémentation terminée par l'agent externe](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058387/gbwwawybg9u4jzibuurw.png \"Implémentation terminée par l'agent externe\")\n\n\n\n![Nouvelle application créée par l'agent externe](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058387/rijlwchqo1zytp842bld.png \"Nouvelle application créée par l'agent externe\")\n\n\n\n![Build et exécution locale de l'application](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058386/aycpfxa0mdbfbxf2ydu3.png \"Build et exécution locale de l'application\")\n\n\n\n![Test local de l'application](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058388/rxlvwmzlx8vor92qhotl.png \"Test local de l'application\")\n\n### 2. Revue de code\n\nL'assurance qualité ne se limite pas à la génération de code. Dans le deuxième cas d'utilisation, le même agent externe effectue une revue de code complète de l'application qu'il a créée. En mentionnant l'agent dans un commentaire de la merge request, les équipes reçoivent une analyse détaillée comprenant les points forts du code, les problèmes critiques, les préoccupations de priorité moyenne, les améliorations mineures, les évaluations de sécurité, les notes de test, les métriques du code et les recommandations accompagnées d'un statut d'approbation. Ce processus de revue automatisée garantit la cohérence et détecte les problèmes potentiels avant qu'ils n'atteignent la production. Il permet aussi de libérer les développeurs expérimentés pour qu'ils se concentrent sur les décisions architecturales plutôt que sur les inspections routinières du code.\n\n\n![Demande de revue de code à l'agent externe](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058387/ri7x5qkx9bfnidfn8gx1.png \"Demande de revue de code à l'agent externe\")\n\n\n\n![Résultats de la revue de code par l'agent externe](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058392/trdamdekrnvkbnfz0twg.png \"Résultats de la revue de code par l'agent externe\")\n\n\n\n### 3. Création d'un pipeline pour construire une image de conteneur\n\nLe dernier cas d'utilisation se concentre sur une lacune courante : l'automatisation du déploiement. Lorsque la merge request ne dispose pas de [pipeline CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\"), les équipes peuvent simplement demander à l'agent externe d'en créer un. L'agent génère une configuration de pipeline complète qui construit l'application, crée un Dockerfile au moyen d'images de base adaptées à la version Java du projet, construit une image [Docker](https://about.gitlab.com/fr-fr/blog/what-is-docker-comprehensive-guide/ \"Qu'est-ce que Docker ?\") et la déploie dans le registre de conteneurs intégré de GitLab. Le pipeline s'exécute automatiquement et suit les étapes de build, de création d'image Docker et de déploiement dans le registre sans configuration ni intervention manuelle.\n\n\n![Prompt pour que l'agent externe crée un pipeline et une image de conteneur](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058392/bwqipksewm1hejuycwqh.png \"Prompt pour que l'agent externe crée un pipeline et une image de conteneur\")\n\n\n\n![Nouveau pipeline et fichiers Dockerfile créés par l'agent externe](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058395/agyr8hhc1vax7aarsxoj.png \"Nouveau pipeline et fichiers Dockerfile créés par l'agent externe\")\n\n\n\n![Exécution réussie du pipeline venant d'être créé](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058395/cdm4mye5edkpemedpxts.png \"Exécution réussie du pipeline venant d'être créé\")\n\n\n\n![Image de conteneur créée suite à l'exécution du pipeline](https://res.cloudinary.com/about-gitlab-com/image/upload/v1772058395/bifx71xz9k7vedbo9xl3.png \"Image de conteneur créée suite à l'exécution du pipeline\")\n\n## Résumé\n\nAvec ses agents externes, GitLab Duo Agent Platform représente un changement fondamental dans la manière dont les organisations abordent le développement logiciel. En remédiant à l'isolation des outils d'IA et à la fragmentation des workflows, les agents externes offrent une automatisation intelligente directement dans les plateformes que les équipes utilisent déjà. Plutôt que de traiter l'IA comme un assistant de codage séparé, GitLab Duo Agent Platform intègre de manière transparente des modèles externes comme Claude dans votre workflow GitLab, pour que les agents puissent comprendre le contexte complet du projet, respecter les normes de l'organisation et gérer en toute autonomie des tâches complexes à chaque étape du [SDLC](https://about.gitlab.com/fr-fr/blog/what-is-sdlc/ \"Qu'est-ce que le SDLC ?\").\n\nLa proposition de valeur est claire : les équipes de développement accélèrent les délais de livraison, maintiennent une qualité de code cohérente, réduisent le travail répétitif et libèrent les ingénieurs expérimentés afin qu'ils se concentrent sur l'innovation plutôt que sur les tâches routinières. De la génération de code prêt pour la production basée sur des descriptions de tickets à la réalisation de revues de code approfondies et à l'automatisation des pipelines de déploiement, les agents externes deviennent des collaborateurs de confiance qui comprennent les besoins et normes spécifiques de votre organisation.\n\nDécouvrez comment votre équipe peut livrer plus rapidement et maintenir une qualité de code supérieure sans changer de contexte tout au long du cycle de vie du développement logiciel. 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. Ensuite, consultez notre article [« Démarrer avec GitLab Duo Agent Platform : le guide complet »](https://about.gitlab.com/fr-fr/blog/gitlab-duo-agent-platform-complete-getting-started-guide/).\n\n",[691,22,24],{"featured":31,"template":13,"slug":705},"gitlab-duo-agent-platform-with-claude-accelerates-development",{"content":707,"config":719},{"date":708,"title":709,"description":710,"authors":711,"heroImage":714,"body":715,"category":9,"tags":716},"2026-04-01","Accélérer l'innovation dans la chaîne de développement logiciel avec GitLab Duo Agent Platform et AWS Bedrock","Enjeux actuels, vision de GitLab et cas d'usage concrets : découvrez comment une orchestration intelligente des agents d'IA peut transformer votre organisation.",[712,713],"Olivier Dupré","Charlotte Delbosc","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1751464636/htrk5th3q0tq1rcfntkp.png","Accélérer le développement logiciel grâce à l'intelligence artificielle, c'est la promesse que beaucoup d'entreprises cherchent à tenir. Mais entre la multiplication des outils, la multiplication des modèles et la pression croissante en matière de [sécurité et de conformité](https://about.gitlab.com/fr-fr/blog/meet-regulatory-standards-with-gitlab/ \"Sécurité et conformité\"), la réalité est souvent plus complexe qu'un simple gain de productivité sur l'écriture de code.\n\nComment passer d'une IA expérimentale et fragmentée à une IA véritablement industrialisée, gouvernée et intégrée à l'ensemble du cycle de développement logiciel ? C'est la question centrale à laquelle GitLab répond avec GitLab Duo Agent Platform, en offrant à ses clients toute la flexibilité dont ils ont besoin en termes d’hébergement des modèles, pour répondre à leurs contraintes opérationnelles.\n\nDécouvrez dans cet article comment l'orchestration intelligente des agents d'IA peut transformer l’ensemble du cycle de développement logiciel, à travers deux cas d’usage concrets avec AWS Bedrock comme backend LLM.\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'IA en entreprise : de l'expérimentation à la gouvernance à grande échelle\n\nEn 2025, **près de 88 % des organisations utilisaient déjà l'IA dans au moins une fonction métier**, selon une enquête de McKinsey. Un chiffre qui illustre un basculement majeur : l'IA n'est plus un sujet d'expérimentation isolée. Elle est devenue un enjeu de production, de gouvernance et de gestion des risques à l'échelle de l'entreprise.\n\n![Enquête de McKinsey 2025](https://res.cloudinary.com/about-gitlab-com/image/upload/v1774026444/orfmpn658y49717y3n8f.png)\n\nSur les deux dernières années, l'utilisation de l'IA générative s’est intensifiée, entraînant dans son sillage une multiplication d'outils, de modèles et de preuves de concept. Une complexité croissante qui soulève une question de fond : qui utilise quel modèle, avec quelles données, et sous quel niveau de sécurité et de conformité ? Face à ce manque de visibilité, les entreprises réclament désormais davantage de traçabilité, de contrôle et de gouvernance sur leur utilisation de l’IA. \n\n## Le paradoxe de l'IA dans le développement logiciel\n\nDans la chaîne de développement logiciel, un paradoxe s'est installé : l'IA a certes accéléré la phase de codage, mais toutes les autres étapes du cycle de développement logiciel restent des goulots d'étranglement. Spécifications, revues de code, tests, sécurité, déploiements, surveillance… autant d'étapes qui n'ont pas encore pleinement profité des avantages de l’intelligence artificielle.\n\nC’est dans ce contexte que s'inscrit la stratégie de GitLab : passer d’une approche fragmentée de l’IA à une plateforme unifiée où le code, la sécurité et la conformité ainsi que l’IA coexistent au même endroit. \n\n## GitLab : de l’approche DevSecOps  à l’orchestration intelligente\n\nGitLab a transformé sa plateforme, d’une simple plateforme [CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/ \"Qu'est-ce que le CI/CD ?\") pour gérer étape par étape le cycle de vie logiciel à une **plateforme d'orchestration intelligente** qui unifie à la fois le DevSecOps et l'IA.\n\nL'objectif n'est plus seulement d'automatiser chaque étape individuellement, mais de **permettre aux équipes d'orchestrer leurs agents d’IA** pour livrer des logiciels plus vite, de manière plus sécurisée, et avec une gouvernance renforcée depuis une plateforme unique.\n\n### Une intégration adaptée à vos besoins\n\nL'approche de GitLab s’adapte à vos contraintes existantes : \n\n* **Intégration à vos workflows existants** : projets, pipelines, outils.\n* **Exploitation de votre contexte métier** : les agents GitLab s'appuient sur votre code et votre contexte pour être immédiatement opérationnels sur vos applications.\n* **Respect de vos règles de sécurité et de conformité** : politiques d'accès, localisation des données.\n* **Maîtrise totale de votre infrastructure** : avec des modèles auto-gérés ou hébergés sur AWS, vous avez la possibilité d'utiliser les modèles de votre choix, tout en conservant vos données et votre contrôle. Et si vos contraintes l'exigent, vous pouvez également basculer sur AWS European Sovereign Cloud, voire fonctionner en environnement totalement isolé d'Internet.\n\nPour illustrer concrètement ces capacités, intéressons-nous aux deux cas d'usage suivants.\n\n## GitLab Duo Agent Platform et AWS Bedrock en pratique\n\nLes deux cas d'usage présentés ci-dessous s'appuient sur une instance GitLab déployée sur AWS, avec AWS Bedrock comme backend LLM. Les modèles ont été préalablement configurés dans GitLab pour alimenter les différentes fonctionnalités de GitLab Duo Agent Platform : suggestion de code, GitLab Duo Agentic Chat, explication de code, etc. \n\n### Cas d'usage 1 : utilisation de l’agent Security Analyst\n\nLes scans SAST et SCA sont essentiels, mais ils génèrent souvent un volume important de vulnérabilités, difficiles à classer, prioriser et traiter efficacement. C'est là qu'intervient l'agent Security Analyst de GitLab. Cet agent d’IA spécialisé joue le rôle d'un analyste sécurité augmenté : \n\n* Il se connecte aux résultats des scans de sécurité.\n* Il analyse les vulnérabilités et estime leurs niveaux de risque.\n* Il priorise les éléments critiques et propose des plans de remédiation.\n\nLes bénéfices sont mesurables : moins de bruit pour les développeurs, un gain de temps pour les équipes AppSec, et une réduction observable du volume de vulnérabilités en production.\n\nLa sécurité n'est pas le seul domaine où les agents d’IA font la différence. Le cas d'usage suivant montre comment cette même logique d'orchestration peut transformer le quotidien des équipes de développement avec l’aide de plusieurs agents spécialisés. \n\n### Cas d'usage 2 : de la user story à la merge request avec des agents d’IA\n\nTransformer une user story en code fonctionnel, accompagné de tests et d’une documentation, est un processus long et variable d'un développeur à l'autre. \n\nPour faciliter le travail des équipes, GitLab propose un **flow “Développeur” qui orchestre simultanément plusieurs agents d’IA** à partir d’un simple ticket :\n\n1. Un agent propose le **plan de développement** et **génère le code**.\n2. Un agent **effectue les tests**.\n3. Un agent **rédige et met à jour la documentation**.\n\nCe flow de bout en bout permet de gagner un temps précieux entre l’idée et le développement, tout en standardisant les pratiques et en garantissant la conformité avec les contraintes de l'entreprise.\n\n## L'IA comme levier industriel\n\nL'enjeu n'est pas d'avoir plus d'IA, mais de faire en sorte que **les équipes et les agents d’IA collaborent ensemble à l'échelle de l'entreprise**. Avec GitLab et son approche d’orchestration intelligente, les équipes DevSecOps alignent leurs workflows, leurs règles de sécurité et leurs modèles pour faire de l’IA un véritable avantage compétitif. \n\n> 🎯 Prêt à accélérer votre développement logiciel ? 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### Ressources complémentaires\n\n* [GitLab Duo Agent Platform : le guide complet](https://about.gitlab.com/fr-fr/blog/gitlab-duo-agent-platform-complete-getting-started-guide/)\n* [Démarrer avec GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/blog/introduction-to-gitlab-duo-agent-platform/)\n* [Démarrer avec GitLab Duo Agentic Chat](https://about.gitlab.com/fr-fr/blog/getting-started-with-gitlab-duo-agentic-chat/)\n* [GitLab Duo Agent Platform : comprendre les agents](https://about.gitlab.com/fr-fr/blog/understanding-agents-foundational-custom-external/)\n* [Comprendre les flows : workflows multi-agents](https://about.gitlab.com/fr-fr/blog/understanding-flows-multi-agent-workflows/)\n* [Découvrir le catalogue d'IA : créer et partager des agents et des flows](https://about.gitlab.com/fr-fr/blog/ai-catalog-discover-and-share-agents/)\n* [Surveiller, gérer et automatiser les workflows d'IA](https://about.gitlab.com/fr-fr/blog/monitor-manage-automate-ai-workflows/) \n* [Intégrer le Model Context Protocol](https://about.gitlab.com/fr-fr/blog/duo-agent-platform-with-mcp/)\n* [Personnaliser GitLab Duo Agent Platform : règles, prompts et workflows](https://about.gitlab.com/fr-fr/blog/customizing-gitlab-duo-chat-rules-prompts-workflows/)",[717,22,718],"AWS","DevSecOps platform",{"featured":12,"template":13,"slug":720},"gitlab-duo-agent-platform-and-aws-bedrock",{"promotions":722},[723,736,748,760],{"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":244},"/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",[691,739],"devsecops","Are you just managing tools or shipping innovation?",{"text":742,"config":743},"Get your DevOps maturity score",{"href":744,"dataGaName":732,"dataGaLocation":244},"/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":244},"/assessments/security-modernization-assessment/",{"config":758},{"src":759},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":761,"paths":762,"header":765,"text":766,"button":767,"image":772},"github-azure-migration",[763,764],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":768,"config":769},"See how GitLab compares to GitHub",{"href":770,"dataGaName":771,"dataGaLocation":244},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":773},{"src":747},{"header":775,"blurb":776,"button":777,"secondaryButton":781},"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":46,"config":778},{"href":779,"dataGaName":49,"dataGaLocation":780},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":51,"config":782},{"href":53,"dataGaName":54,"dataGaLocation":780},1776450038174]