1. Avant de commencer
Cet atelier de programmation vous explique comment préparer Gemini Code Assist pour qu'il fournisse des suggestions de personnalisation du code adaptées à vos dépôts privés. Cela peut rendre les résultats de l'assistance au code beaucoup plus utiles, en particulier pour les équipes qui ont des conventions spécifiques pour les tâches similaires qui sont souvent répétées. Sachez que le fait d'autoriser Gemini à indexer vos bases de code privées pour cette fonctionnalité ne permet pas à Gemini de s'entraîner de manière générale sur votre code privé.
Nous verrons également comment exclure les fichiers sensibles ou non pertinents de la personnalisation du code à l'aide d'un fichier .aiexclude.
Prérequis
- Connaissances de base de Gemini Code Assist et accès à un projet dans lequel il est activé
- Connaissance d'un langage de programmation compatible pour la personnalisation du code
- Vous devez pouvoir créer des ressources dans
us-central1oueurope-west1, car la personnalisation du code nécessite des connexions Developer Connect dans ces emplacements. - Une interface de ligne de commande Google Cloud authentifiée et à jour
Objectifs
- Utiliser la personnalisation du code dans Gemini Code Assist Enterprise
- Un des nombreux cas d'utilisation où la personnalisation du code peut faire gagner du temps à vos équipes
Ce dont vous avez besoin
- Un projet Google Cloud avec Gemini Code Assist activé
- Dépôt privé à indexer pour les demandes de personnalisation
- Temps nécessaire pour indexer le code pour les demandes de personnalisation. Cette opération peut prendre jusqu'à 24 heures.
- Un IDE avec Gemini Code Assist installé
2. Contexte
Pour tester la personnalisation du code, vous devez effectuer deux opérations :
- Un accès à un projet Google Cloud avec Gemini activé
- et un dépôt privé pour informer les réponses de Gemini.

Les meilleurs dépôts candidats pour l'indexation par Gemini contiendraient du code souvent réutilisé dans votre organisation. L'exemple de dépôt fourni pour cet atelier de programmation contient un service Web Spring Boot standard, avec un dossier d'objets de transfert de données qui répondent à ce critère, car une classe similaire serait créée pour décrire chaque entité d'une base de données lors de son transfert vers la couche de présentation.
3. (Facultatif) Configuration du dépôt
Si vous préférez utiliser un exemple de dépôt plutôt qu'un de vos dépôts privés, vous pouvez suivre les étapes ci-dessous dans l'éditeur de terminal de votre choix ou dans Cloud Shell. Commencez par créer un dépôt privé pour nous aider à voir la personnalisation du code en action :
mkdir customization-starter
cd customization-starter
curl https://start.spring.io/starter.zip -d dependencies=web,lombok \
-d javaVersion=21 \
-d type=maven-project \
-d bootVersion=3.3.4 -o cc-starter.zip
unzip cc-starter.zip
rm cc-starter.zip
pushd src/main/java/com/example/demo
mkdir dtos
touch dtos/LedgerDTO.java
Ajoutez ce qui suit au fichier LedgerDTO :
package com.example.demo.dtos;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
@Getter
@Setter
@Accessors(chain = true)
public class LedgerEntryDto {
private Long id;
private String accountName;
private double amount;
private String transactionType;
private String description;
private java.util.Date transactionDate;
}
Cela suffira à démontrer que les accesseurs que les autres contributeurs à ce codebase s'attendent à utiliser seront générés avec précision lorsque la personnalisation du code sera activée.
Créez un dépôt et assurez-vous qu'il reste privé. Suivez les étapes ci-dessous pour transférer le starter vers votre nouveau dépôt :
popd
gh auth login
git init
git add .
git commit -m "code customization starter"
git remote add origin git@github.com:<YOUR_GITHUB_ID>/customization-starter.git
git branch -M main
git push -u origin main
4. Exclure des fichiers
Avant d'accorder à Gemini l'accès à vos dépôts privés, il est important de comprendre comment exclure les fichiers non pertinents ou sensibles que votre équipe ne souhaite pas indexer. Pour ce faire, un fichier .aiexclude est utilisé. Il est semblable à un fichier .gitignore, mais présente quelques différences importantes :
- Un fichier
.aiexcludevide bloque tous les fichiers de son répertoire et de tous ses sous-répertoires.- Cela revient à utiliser un fichier contenant
**/*.
- Cela revient à utiliser un fichier contenant
- Les fichiers
.aiexcludene sont pas compatibles avec la négation (préfixe!).
Dans cette optique, essayez de réfléchir aux types de fichiers ou aux répertoires que votre équipe souhaite exclure, et listez-les chacun sur une ligne distincte :
#Block all files with .key extensions
*.key
#Block all files under sensitive/dir
my/sensitive/dir/
#Block all .key files under sensitive/dir
my/sensitive/dir/ /.key
5. Configurer Developer Connect
Developer Connect est le service qui facilite les connexions et les liens vers vos dépôts de code privés dans GitHub ou GitLab. Il s'agit du mécanisme qui permet à Gemini Code Assist de se connecter de manière sécurisée à vos dépôts privés pour créer l'index qui sera utilisé pour améliorer les réponses.
Ces deux concepts vous aideront à comprendre comment Developer Connect fournit un accès sécurisé à votre code :
Connexion
- Représente le pont entre Google et la plate-forme tierce de gestion du code source.
Lien
- Représente l'association avec un dépôt de code source individuel que vous sélectionnez dans une plate-forme de gestion du code source connectée.
Maintenant que vous avez ces concepts en tête, commencez par accéder à la page Developer Connect pour activer l'API pour votre projet.

Ensuite, suivez les étapes appropriées pour créer une connexion et un lien pour GitHub ou GitLab. Les deux ressources seront créées lors de l'assistant.

Répétez ces étapes pour créer un lien pour chaque dépôt que vous souhaitez que la fonctionnalité de personnalisation du code de Gemini prenne en compte dans ses réponses. Vous pouvez réutiliser la connexion existante si plusieurs dépôts proviennent de la même plate-forme.
6. Créer un index et s'y connecter
Pour analyser rapidement vos dépôts, la personnalisation du code s'appuie sur un index. Notez le nom de l'index que vous utilisez, car vous en aurez besoin lors d'une étape ultérieure.
Pour créer un index, exécutez la commande suivante :
gcloud gemini code-repository-indexes create <INDEX_NAME> \
--project=<YOUR_PROJECT_ID> \
--location=<REGION>
Si vous rencontrez des erreurs Invalid choice: ..., assurez-vous que votre Google Cloud CLI est à jour en exécutant la commande suivante :
gcloud components update
Ensuite, autorisez l'accès à votre index en créant un groupe de dépôts :
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories='[{"resource": "projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY", "branch_pattern": "BRANCH_NAMES"}]'
Remplacez les valeurs suivantes :
- REPOSITORY_GROUP : nom du groupe de dépôts que vous allez créer
- PROJECT_ID : ID de votre projet Google Cloud.
- INDEX_NAME : nom de l'index que vous avez défini à une étape précédente pour créer un index.
- REGION : région acceptée de la liste de la documentation que vous avez configurée dans Developer Connect dans votre projet Google Cloud.
- INDEX_CONNECTION : connexion de l'index que vous avez créé à l'étape précédente.
- REPOSITORY : dépôt que vous souhaitez indexer. Vous devez spécifier au moins un dépôt, mais vous pouvez en spécifier plusieurs si nécessaire.
- BRANCH_NAMES : nom des branches que vous souhaitez indexer, par exemple "main" ou "dev".
Selon le nombre de dépôts que vous souhaitez indexer et leur taille, l'indexation du contenu peut prendre jusqu'à 24 heures. L'indexation a lieu une fois toutes les 24 heures et prend en compte toutes les modifications apportées au dépôt. Vous pouvez consulter l'état de la génération de votre index en suivant ces étapes :

Enfin, accordez au compte principal souhaité l'accès au groupe :
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/cloudaicompanion.repositoryGroupsUser'
7. Générer du code personnalisé
Maintenant que Gemini a accès au code de votre dépôt privé, nous pouvons nous attendre à voir des extraits pertinents apparaître dans nos demandes de complétion de code. Dans notre dépôt d'exemple, nous pouvons accéder à notre dossier DTO. Lorsque nous créons une classe pour représenter un nouvel objet, les annotations attendues s'affichent au fur et à mesure de la saisie :

8. Conclusion
Félicitations ! Vous avez terminé cet atelier de programmation. Vous avez appris à utiliser la fonctionnalité Personnalisation du code de Gemini Code Assist. Vos réponses pouvant désormais être adaptées aux codebases privées spécifiques de vos équipes, chaque requête et complétion de code sera plus utile aux développeurs de vos équipes.
N'hésitez pas à consulter ces autres documents et ressources pour en savoir plus, et obtenir de l'aide pour configurer des rôles IAM, par exemple :