Blog IA/ML GitLab Duo Chat : 10 bonnes pratiques à connaître
Mise à jour : March 12, 2025
Lecture : 18 min

GitLab Duo Chat : 10 bonnes pratiques à connaître

Découvrez nos conseils et astuces pour intégrer GitLab Duo Chat à vos workflows DevSecOps alimentés par l'IA.

duo chat cover image

Entamer une conversation avec l'IA peut s'avérer difficile. Par quelle question commencer ? Comment la formuler ? Quel degré de contexte est nécessaire ? La conversation fournira-t-elle des résultats optimaux et efficaces ?

Dans ce tutoriel, découvrez 10 conseils et bonnes pratiques pour intégrer GitLab Duo Chat dans vos workflows DevSecOps alimentés par l'IA et affiner vos prompts afin d'obtenir des résultats optimaux.

Première étape : ouvrez GitLab Duo Chat

GitLab Duo Chat est disponible dans l'interface utilisateur (UI) de GitLab, dans le Web IDE et dans les IDE de programmation pris en charge, comme VS Code.

Dans VS Code, vous pouvez ouvrir GitLab Duo Chat dans le volet de gauche par défaut. Vous pouvez également glisser-déposer l'icône dans le volet de droite. Ainsi, GitLab Duo Chat reste ouvert pendant que vous écrivez du code et que vous naviguez dans l'arborescence des fichiers, que vous effectuez des actions Git et plus encore. Pour réinitialiser l'emplacement de Chat, ouvrez la palette de commandes (en appuyant sur le raccourci clavier Command+Maj+P (sous macOS) ou Ctrl+Maj+P (sous Windows/Linux), puis saisissez View: Reset View Locations. La procédure à suivre est illustrée dans cette courte vidéo.

Le Web IDE et VS Code partagent le même framework : la même méthode fonctionne dans le Web IDE pour proposer des workflows plus efficaces.

Chat dans le Web IDE

10 bonnes pratiques à suivre pour une utilisation optimale de GitLab Duo Chat

1. Discutez

Les chats sont des conversations, pas des formulaires de recherche.

Pour lancer la conversation, commencez avec les termes de recherche que vous utiliseriez lors d'une recherche sur un navigateur et expérimentez en fonction de la réponse et des données de sortie. Dans cet exemple, commençons par un projet C# et les bonnes pratiques associées.

c# start project best practices

Prompt demandant les bonnes pratiques de démarrage d'un projet C# et réponse obtenue

La réponse est utile pour comprendre un large champ d'application du langage C#, mais ne propose pas immédiatement de bonnes pratiques. Poursuivons avec une question plus ciblée dans le même contexte.

Please show the project structure for the C# project.

Prompt demandant la structure du projet C# et réponse obtenue

Cette réponse est utile. Poursuivons avec une question relative à Git et utilisons la même structure : demandons directement à l'IA de nous montrer un exemple.

Show an example for a .gitignore for C#

Prompt demandant un exemple de fichier .gitignore en langage C# et réponse obtenue

Poursuivons avec GitLab CI/CD et demandons à l'IA comment créer le projet C#.

Show a GitLab CI/CD configuration for building the C# project

Prompt demandant un exemple de configuration de GitLab CI/CD pour la création du projet C# et réponse obtenue

Dans cet exemple, GitLab Duo Chat nous encourage à demander des modifications spécifiques. Demandons-lui d'utiliser le SDK .NET 8.0 au lieu du SDK .NET 6.0.

In the above example, please use the .NET SDK 8.0 image

Prompt demandant à GitLab Duo Chat d'utiliserl'image du SDK .NET 8.0 et réponse obtenue

La configuration CI/CD utilise l'interface de ligne de commande (CLI) .NET. Essayons de suivre cette bonne pratique pour générer des commandes plus efficaces afin de créer la structure des projets et des tests.

Explain how to create projects and test structure on the CLI

Prompt demandant d'expliquer comment créer des projets et tester la structure sur l'interface CLI et réponse obtenue

Nous pourrions exécuter ces commandes dans le terminal, mais, pour cet exemple, imaginons que nous souhaitions rester dans VS Code. Posons la question à Chat.

Explain how to open a new terminal in VS Code

Prompt demandant d'expliquer comment ouvrir un nouveau terminal dans VS Code et réponse obtenue

2. Affinez le prompt pour gagner en productivité

Considérez GitLab Duo Chat comme un être humain et employez des phrases complètes qui fournissent suffisamment de contexte à vos pensées et à vos questions.

Si vous êtes un utilisateur expérimenté de la recherche par navigateur, vous connaissez peut-être l'approche qui consiste à concevoir la question, à ajouter plus de termes pour affiner sa portée et redémarrer la recherche après avoir ouvert de nombreux onglets.

Dans le cas d'une recherche par navigateur, vous obtiendriez probablement quatre à cinq fenêtres de recherche différentes.

c# start project best practices
c# .gitignore
c# gitlab cicd 
c# gitlab security scanning 
c# solutions and projects, application and tests

Vous pouvez également suivre cette stratégie lors d'une conversation avec GitLab Duo Chat. Cela nécessite d'ajouter plus de contexte afin de la transformer en une approche conversationnelle. GitLab Duo Chat vous permet de poser plusieurs questions dans une même conversation.

Exemple : vous devez commencer par un nouveau projet C#, appliquer les bonnes pratiques, ajouter un fichier .gitignore et configurer CI/CD ainsi qu'un scanning de sécurité, comme dans la recherche ci-dessus. Dans Chat, vous pouvez regrouper plusieurs questions dans une même demande.

How can I get started creating an empty C# console application in VS Code? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#, and add security scanning for GitLab. Explain how solutions and projects in C# work, and how to add a test project on the CLI.

Prompt demandant d'ajouter plus de contexte et réponse obtenue

Dans cette réponse, Chat suggère de demander des exemples de configuration spécifiques dans les questions de suivi de la conversation. Pratique asynchrone : créez des questions de suivi. Vous pouvez omettre C# comme contexte dans la même session de chat.

Please show an example for a .gitignore. Please show a CI/CD configuration. Include the SAST template.

3. Suivez des patterns de prompt

Suivez le pattern : Énoncer le problème, demander de l'aide, fournir des demandes supplémentaires. Vous ne pouvez pas penser à tout lorsque vous posez la première question. Commencez par énoncer le problème, demander de l'aide lors de la première itération.

I need to fulfill compliance requirements. How can I get started with Codeowners and approval rules ?

Prompt demandant de l'aide au sujet des Codeowners et des règles d'approbation et réponse obtenue

Même si la réponse est utile, elle reste générique. Il se peut que vous souhaitiez obtenir une aide spécifique pour la configuration de votre équipe.

Please show an example for Codeowners with different teams : backend, frontend, release managers.

Prompt demandant un exemple de fichier Codeowners pour différentes équipes (backend, frontend, managers de release) et réponse obtenue

Une alternative consiste à décrire la situation dans laquelle vous vous trouvez et à demander de l'aide. Suivez le modèle STAR (Situation, Tâche, Action et Résultat) pour construire votre conversation.

I have a Kubernetes cluster integrated in GitLab. Please generate a Yaml configuration for a Kubernetes service deployment. Explain how GitOps works as a second step. How to verify the results?

Prompt incluant plusieurs questions et réponse obtenue

4. Utilisez une communication à contexte faible

Fournissez autant de contexte que nécessaire pour obtenir une réponse. L'historique précédent ou le code source ouvert ne fournit parfois pas de contexte utile. Pour obtenir une réponse plus adaptée, appliquez un pattern de communication à contexte faible, qui est utilisé dans les communications 100 % à distance chez GitLab.

La question suivante ne fournit pas suffisamment de contexte dans le cadre d'un projet C++.

Should I use virtual override instead of just override?

Prompt demandant si les utilisateurs doivent utiliser le remplacement virtuel au lieu d'un simple remplacement et réponse obtenue

Essayez plutôt d'ajouter davantage de contexte :

When implementing a pure virtual function in an inherited class, should I use virtual function override, or just function override? Context is C++.

Prompt offrant plus de détails et réponse obtenue

Vous pouvez également consulter l'exemple dans la vidéo GitLab Duo Coffee Chat : Refactor C++ functions into OOP classes for abstract database handling.

5. Répétez la question

L'IA n'est pas prévisible. Sa réponse peut parfois différer des résultats attendus, ou elle ne produit pas d'exemples de code source ni d'extraits de code de configuration en raison du manque de contexte. Il est recommandé de répéter la question et de préciser les conditions requises.

Dans l'exemple suivant, nous voulons créer une application C#. Lors de la première tentative, nous n'avons pas spécifié le type d'application alors que le langage C# peut servir à créer une console/un terminal ou des applications d'interface utilisateur. Le résultat ne fournit pas non plus d'exemple de code source vide. Le second prompt répété ajoute deux mots supplémentaires : console et empty.

How can I get started creating an C# application in VS Code?

How can I get started creating an empty C# console application in VS Code?

Les résultats du prompt diffèrent. La première réponse est utile pour commencer en suivant les instructions dans la fenêtre VS Code, mais elle ne nous indique pas où se trouve le code source et comment le modifier. La réponse obtenue suite à la répétition et à l'amélioration du prompt fournit des instructions sur la façon de remplacer le template par défaut par un code de type « hello world ».

Répétition/modification du prompt et réponse obtenue

Vous pouvez également combiner des stratégies de répétition et d'affinement, et demander à Chat de montrer un exemple de code d'application et de tests.

How can I get started creating an empty C# console application in VSCode? Please show an example for application and tests.

Prompt demandant un exemple d'application et de tests et réponse obtenue

Répétez la question après avoir posé des questions génériques

Lorsque vous posez des questions génériques sur la technologie, GitLab Duo Chat peut ne pas être en mesure de vous aider. Dans le scénario suivant, nous n'avons pas pu obtenir de suggestion de framework et d'outils de compilation Java. Les possibilités de réponse sont trop nombreuses : elles peuvent concerner des outils de compilation tels que Maven et Gradle et plus de 100 frameworks Java, selon la pile technologique et les conditions requises.

Prompt demandant un framework et des outils de compilation Java et réponse obtenue

Nous souhaitons maintenant nous concentrer sur un environnement client avec Java Spring Boot.

I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example.

Prompt demandant des informations supplémentaires (notamment un exemple hello world) et réponse obtenue

Ce prompt donne déjà d'excellents résultats. Effectuez l'exercice asynchrone suivant : répétez le prompt et demandez comment déployer l'application, en ajoutant plus de détails à chaque étape. Vous pouvez également transformer le prompt en conversation de suivi.

I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD.

I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD, using container images.

I want to create a Java Spring Boot application. Please explain the project structure and show a hello world example. Show how to build and deploy the application in CI/CD, using container images. Use Kubernetes and GitOps in GitLab.

6. Faites preuve de patience

Les mots simples ou les phrases courtes peuvent ne pas générer les résultats souhaités, comme le montre cet exemple vidéo. GitLab Duo Chat peut parfois deviner correctement à partir des données disponibles, mais peut également demander plus de contexte.

Exemple : le terme labels qui apparaît dans la documentation GitLab.

Prompt portant sur les labels et réponse obtenue

Limitez la question aux énoncés de problèmes et ciblez l'utilisation du tableau des tickets.

Explain labels in GitLab. Provide an example for efficient usage with issue boards.

Prompt demandant d'inclure un exemple et réponse obtenue

Vous pouvez également formuler un énoncé de problème suivi d'une question et demander des exemples supplémentaires.

I don't know how to use labels in GitLab. Please provide examples, and how to use them for filters in different views. Explain these views with examples.

Prompt énonçant un problème et réponse obtenue

De plus, évitez les questions fermées et précisez le contexte.

Can you help me fix performance regressions?

Prompt demandant de l'aide pour corriger les régressions affectant les performances et réponse obtenue

Fournissez plutôt davantage de contexte sur la régression affectant les performances, y compris les langages de programmation, les frameworks, la pile technologique et les environnements. L'exemple suivant utilise un environnement datant d'il y a plusieurs années, qui peut encore être utile aujourd'hui.

My PHP application encounters performance regressions using PHP 5.6 and MySQL 5.5. Please explain potential root causes, and how to address them. The app is deployed on Linux VMs.

Prompt plus détaillé et réponse obtenue

7. Réinitialisez la conversation et lancez-en une nouvelle

Il peut arriver que l'historique du chat montre une courbe d'apprentissage différente et ne fasse pas appel au contexte adéquat pour les questions de suivi. Il est également possible que GitLab Duo Chat ne puisse pas répondre aux questions spécifiques que vous avez posées. L'IA générative n'est pas prévisible et peut donc parfois ne pas être en mesure de fournir certains exemples à l'instant précis. Cependant, elle peut les fournir dans sa réponse à une future question (ce comportement a été observé dans la version bêta de GitLab Duo Chat). Les grands modèles de langage (LLM) sous-jacents peuvent parfois insister pour donner une réponse spécifique, créant une boucle sans fin.

How can I get started creating an empty C# console application in VSCode? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#, and add security scanning for GitLab. Explain how solutions and projects in C# work, and how to add a test project on the CLI.

Après avoir posé la question ci-dessus et demandé un exemple de configuration, nous avons tenté de réduire la portée de la question afin d'obtenir une réponse plus adaptée. Nous n'avons pas obtenu le résultat escompté, car Chat prend en compte le contexte de l'historique du chat et fait référence aux réponses précédentes.

How can I get started creating an empty C# console application in VSCode? Please show a .gitignore and .gitlab-ci.yml configuration with steps for C#.

Prompt demandant des exemples de configuration et réponse obtenue

Pour forcer GitLab Duo Chat à utiliser un nouveau contexte, utilisez la commande slash /reset pour remettre la session à zéro. Répétez ensuite la question pour obtenir de meilleurs résultats. Vous pouvez également utiliser /clean ou /clear pour supprimer tous les messages de la conversation.

8. Gagnez en productivité en utilisant les commandes slash dans l'IDE

Explication du code

  • Q : Code généré ? Code existant ? Code hérité ?
  • R : Utilisez la commande slash /explain dans l'IDE.
  • R2 : Affinez le prompt pour obtenir des réponses plus ciblées, par exemple : /explain focus on potential shortcomings or bugs.

Prompt utilisant la commande slash /explain

Prompt affiné

Refactorisation du code

  • Q : Code illisible ? Code spaghetti trop long ? Aucune couverture de test ?
  • R : Utilisez la commande slash /refactor dans l'IDE.
  • R2 : Affinez le prompt pour effectuer des actions plus ciblées, par exemple refactoriser du code pour obtenir des patterns orientés objet : /refactor into object-oriented classes with methods and attributes.

Prompt utilisant la commande slash /refactor

Prompt affiné

Génération de tests

  • Q : Le code peut être testé, mais créer les tests prend trop de temps ?

  • R : Utilisez la commande slash /tests dans l'IDE.

  • R2 : Affinez le prompt pour utiliser des frameworks de test spécifiques ou des cibles de test. Vous pouvez également demander à GitLab Duo Chat de se concentrer sur la refactorisation du code, puis de générer des tests : /tests focus on refactoring the code into functions, and generate tests.

Prompt utilisant la commande slash /tests

Prompt affiné

Découvrez d'autres cas pratiques de workflows de développement complets dans notre documentation.

9. Affinez le prompt pour les commandes slash

Vous trouverez dans cet article de nombreux conseils pour rendre vos prompts plus spécifiques. Cette approche contribue à améliorer la productivité d'un workflow alimenté par l'IA. De la même manière, les commandes slash permettent d'obtenir de meilleurs résultats dans GitLab Duo Chat.

Récemment, un client a posé la question suivante : « L'explication de code utilisant /explain peut-elle générer des commentaires intégrés au code ? ». La réponse est non. Vous pouvez cependant poser des questions de suivi à l'aide de prompts dans Chat et demander un résumé sous la forme d'un commentaire de code. Le langage de programmation doit être indiqué.

Dans l'exemple suivant, un code client HTTP C++ utilisant la bibliothèque cURL nécessite plus de documentation. Vous pouvez affiner le prompt /explain en fournissant des instructions plus précises en demandant à GitLab Duo Chat d'expliquer le code en ajoutant des commentaires au code, puis copier-coller le prompt ainsi obtenu dans l'éditeur.

/explain add documentation, rewrite the code snippet

Prompt demandant d'ajouter de la documentation/de réécrire l'extrait de code et réponse obtenue

Vous pouvez également demander à GitLab Duo Chat de refactoriser le code source (via la commande /refactor) et de générer des commentaires au code via un prompt personnalisé.

/refactor add code comments and documentation

Prompt demandant de réusiner le code source et de générer des commentaires de code

10. Utilisez les commandes slash de manière créative

Lorsque l'IA ne connaît pas la réponse à une question sur le code source ou le langage de programmation, réfléchissez à la manière dont les commandes slash /explain, /refactor et /tests peuvent vous aider.

Dans l'exemple suivant, une chaîne de requête SQL en C++ est créée sur une seule ligne. Pour améliorer la lisibilité et avoir la possibilité d'ajouter plus de colonnes de base de données à l'avenir, il peut être utile de choisir une chaîne multiligne.

std::string sql = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL)";

Vous pouvez demander à GitLab Duo Chat des précisions à ce sujet, par exemple en posant la question suivante :

How to create a string in C++ using multiple lines?

Chat peut répondre avec une explication et éventuellement un exemple de code source. Dans ce contexte, il peut proposer de créer une valeur de chaîne C++ sur plusieurs lignes, par exemple en utilisant le caractère \n, affectée à une variable.

La condition requise est plutôt de formater uniquement le code écrit et d'affecter des valeurs de variable dans plusieurs lignes. Il n'est pas nécessaire que la valeur de chaîne elle-même contienne une représentation de chaîne multiligne.

Vous disposez d'une alternative pour fournir un contexte supplémentaire dans VS Code et le Web IDE : sélectionnez le code source en question, effectuez un clic droit et accédez au menu GitLab Duo Chat > Refactor. Cela permet d'ouvrir la fenêtre de prompt de GitLab  Duo Chat et de déclencher immédiatement la tâche de code /refactor.

Cette dernière peut toutefois ne pas produire les résultats attendus. La refactorisation d'une chaîne SQL sur une seule ligne peut signifier beaucoup de choses : utiliser plusieurs lignes pour plus de lisibilité, créer des constantes et plus encore.

Les tâches de code fournissent une option pour rendre le prompt plus spécifique. Vous pouvez ajouter plus de texte après la commande /refactor et demander à GitLab Duo Chat d'utiliser un type de code, un algorithme ou un design pattern spécifique.

Réessayons en sélectionnant le code source, en affichant la fenêtre du chat, en saisissant le prompt suivant et en appuyant sur Entrée.

/refactor into a multi-line written string. Show different approaches for all C++ standards.

Prompt demandant de réusiner le code en une chaîne écrite multiligne et réponse obtenue

Astuce : vous pouvez utiliser la fonctionnalité de suggestions de code de GitLab Duo pour affiner encore plus le code source après la refactorisation, ou utiliser d'autres affinements de prompt /refactor.

/refactor into a multi-line written string, show different approaches

/refactor into multi-line string, not using raw string literals

/refactor into a multi-line written string. (/refactor en une chaîne écrite multiligne.) Faites en sorte que le nom de la table soit paramétrable

Découvrez une autre approche avec le type stringstream dans la vidéo « GitLab Duo Coffee Chat : Refactor C++ functions into OOP classes for abstract database handling ».

Explication des vulnérabilités

Le résultat peut être aléatoire, mais vous pouvez également exécuter la commande slash /explain pour obtenir des explications sur les failles de sécurité. Dans cet exemple, le code C contient plusieurs vulnérabilités liées notamment à des dépassements de mémoire tampon strcpy(), à des fichiers modifiables par tout le monde et à des attaques de type « race condition ».

/explain why this code has multiple vulnerabilities

Prompt demandant des explications sur les multiples vulnérabilités du code

Refactorisation du code C  en langage Rust

Le langage Rust garantit la sécurité de la mémoire. Vous pouvez demander à GitLab Duo Chat de refactoriser le code C vulnérable en Rust, en utilisant la commande /refactor. Entraînez-vous avec des prompts plus précis afin d'obtenir de meilleurs résultats.

/refactor into Rust and use high level libraries

Prompt dans Chat

Raccourcis

Essayez ces raccourcis dans votre environnement et entraînez-vous de manière asynchrone avec GitLab Duo Chat.

  1. Inspectez le code vulnérable des CVE et demandez le problème rencontré et comment y remédier, en utilisant le prompt /explain why is this code vulnerable. Astuce : importez des projets open source dans GitLab pour tirer parti des explications de code de GitLab Duo Chat.
  2. Essayez de refactoriser le code dans de nouveaux langages de programmation pour faciliter la migration du code hérité.
  3. Vous pouvez également essayer de réusiner le code d'une configuration Jenkins dans GitLab CI/CD, en utilisant le prompt /refactor into GitLab CI/CD configuration.

En savoir plus

Il existe de nombreux environnements et défis différents à relever. Consultez notre documentation sur GitLab Duo Chat pour découvrir plus d'exemples pratiques, ainsi qu'une section contenant des exemples de cas d'utilisation de GitLab Duo contenant des informations sur les workflows DevSecOps alimentés par l'IA, notamment à l'aide de GitLab Duo Chat.

Vous souhaitez utiliser GitLab Duo Chat ? Commencez votre essai gratuit dès aujourd'hui.

Votre avis nous intéresse

Cet article de blog vous a plu ou vous avez des questions ou des commentaires ? Partagez vos réflexions en créant un nouveau sujet dans le forum de la communauté GitLab. Partager votre expérience

Lancez-vous dès maintenant

Découvrez comment la plateforme DevSecOps unifiée de GitLab peut aider votre équipe.

Commencer un essai gratuit

Découvrez le forfait qui convient le mieux à votre équipe

En savoir plus sur la tarification

Découvrez ce que GitLab peut offrir à votre équipe

Échanger avec un expert