Настройка кода с помощью Gemini Code Assist Enterprise

1. Прежде чем начать

В этой лаборатории кода показано, как подготовить Gemini Code Assist к предоставлению предложений по настройке кода, адаптированных к вашим частным репозиториям. Это может сделать результаты Code Assist значительно более полезными, особенно для команд, у которых есть определенные соглашения для аналогичной работы, которые часто повторяются. Будьте уверены, что разрешение Gemini индексировать ваши частные кодовые базы для этой функции не позволит Gemini широко обучаться на вашем личном коде.

Мы также обсудим, как исключить конфиденциальные или ненужные файлы из рассмотрения при настройке кода с помощью файла .aiexclude .

Предварительные условия

Что вы узнаете

  • Как использовать настройку кода в Gemini Code Assist Enterprise
  • Один из многих случаев использования, когда настройка кода может сэкономить время вашей команды.

Что вам нужно

  • Включен Gemini Code Assist в проекте Google Cloud
  • Частный репозиторий для индексации запросов на настройку.
  • Пришло время индексировать код для запросов на настройку. Это может занять до 24 часов.
  • Установленная среда IDE с Gemini Code Assist.

2. Контекст

Чтобы попробовать настройку кода, необходимы две вещи:

  1. Доступ к проекту Google Cloud с включенным Gemini
  2. и Частный репозиторий для информирования ответов Gemini.

Включение Близнецов

Лучшие репозитории-кандидаты для индексации Gemini будут содержать код, который часто повторно используется в вашей организации. Пример репозитория, предоставленный для этой лаборатории кода, содержит стандартный веб-сервис Spring Boot с папкой объектов передачи данных, которые соответствуют этому критерию, поскольку аналогичный класс будет создан для описания каждого объекта в базе данных при его транспортировке на уровень представления.

3. (Необязательно) Настройка репозитория

Если вы предпочитаете использовать пример репозитория, а не один из ваших собственных частных, можно выполнить следующие шаги в редакторе терминала по вашему выбору или в Cloud Shell . Начните с создания частного репозитория , который поможет нам увидеть настройку кода в действии:

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

Добавьте в файл 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;
}

Этого будет достаточно, чтобы продемонстрировать, что методы доступа, которые другие участники этой базы кода ожидают использовать, будут точно сгенерированы с включенной настройкой кода.

Создайте новый репозиторий , оставив его приватным. Выполните следующие шаги, чтобы отправить стартер в новый репозиторий:

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. Исключение файлов

Прежде чем предоставлять Gemini доступ к вашим частным репозиториям, важно понять, как исключить ненужные или конфиденциальные файлы, индексирование которых ваша команда не хочет. Для этого используется файл .aiexclude , который похож на .gitignore с некоторыми ключевыми отличиями:

  • Пустой файл .aiexclude блокирует все файлы в своем каталоге и во всех подкаталогах.
    • Это то же самое, что файл, содержащий **/* .
  • Файлы .aiexclude не поддерживают отрицание (префикс шаблонов с ! ).

Имея это в виду, попробуйте рассмотреть типы файлов или каталогов, которые ваша команда хотела бы исключить из рассмотрения, и перечислите их каждый в отдельных строках:

#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. Настройте Developer Connect

Developer Connect — это сервис, который упрощает подключение и ссылки на ваши частные репозитории кода в GitHub или GitLab. Это механизм, который позволяет Gemini Code Assist безопасно подключаться к вашим частным репозиториям и создавать индекс, который будет использоваться для улучшения ответов.

Эти две концепции помогают понять, как Developer Connect обеспечивает безопасный доступ к вашему коду:

Связь

  • Представляет собой мост между Google и сторонней платформой управления исходным кодом.

Связь

  • Представляет связь с отдельным репозиторием исходного кода, который вы выбираете на подключенной платформе управления исходным кодом.

Помня об этих концепциях, начните с перехода на страницу Developer Connect, чтобы включить API для вашего проекта.

Включение Developer Connect

Затем выполните соответствующие шаги, чтобы создать соединение и ссылку для GitHub или GitLab . Оба ресурса будут созданы в процессе работы мастера.

Создание соединения и ссылки

Повторите эти шаги, чтобы создать ссылку для каждого репозитория, который вы хотите, чтобы функция настройки кода Gemini учитывала в своих ответах. Вы можете повторно использовать существующее соединение, если несколько репозиториев находятся на одной платформе.

6. Создайте и подключитесь к индексу

Чтобы быстро анализировать ваши репозитории, настройка кода зависит от Index . Запишите используемый вами INDEX_NAME, поскольку он понадобится вам на следующем этапе.

Чтобы создать индекс, выполните следующую команду:

gcloud gemini code-repository-indexes create <INDEX_NAME> \
    --project=<YOUR_PROJECT_ID> \
    --location=<REGION>

Если вы столкнулись с какой-либо ошибкой Invalid choice: ... , убедитесь, что ваш интерфейс командной строки Google Cloud обновлен, выполнив следующую команду:

gcloud components update

Затем разрешите доступ к вашему индексу, создав группу репозитория:

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"}]'

Замена следующих значений:

  • REPOSITORY_GROUP: имя группы репозитория, которую вы собираетесь создать.
  • PROJECT_ID: идентификатор вашего проекта Google Cloud.
  • INDEX_NAME: имя индекса, определенное вами на предыдущем шаге для создания индекса.
  • РЕГИОН: поддерживаемый регион из списка в документации , который вы настроили в Developer Connect в своем проекте Google Cloud.
  • INDEX_CONNECTION: подключение индекса, созданного на предыдущем шаге, для создания индекса.
  • РЕПОЗИТОРИЙ: репозиторий, который вы хотите проиндексировать. Вы должны указать хотя бы один репозиторий, при необходимости вы можете указать несколько репозиториев.
  • BRANCH_NAMES: название ветвей, которые вы хотите проиндексировать, например main или dev.

В зависимости от количества репозиториев, которые вы хотите проиндексировать, и их размера, индексирование контента может занять до 24 часов. Индексирование происходит раз в 24 часа, фиксируя любые изменения, внесенные в репозиторий. Вы можете обратиться к этим шагам , чтобы проверить статус создания индекса:

Поиск статуса индексации

И, наконец, предоставьте желаемому участнику доступ к группе:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='PRINCIPAL' \
    --role='roles/cloudaicompanion.repositoryGroupsUser'

7. Создайте индивидуальный код

Теперь, когда Gemini имеет доступ к коду в вашем личном репозитории, мы можем ожидать появления соответствующих фрагментов в наших запросах на завершение кода. В нашем примере репозитория мы можем перейти к папке DTO, и когда мы создадим новый класс для представления нового объекта, вы увидите ожидаемые аннотации, появляющиеся по мере ввода:

Сгенерированный образец

8. Заключение

Поздравляем с завершением этой Codelab! Вы узнали, как использовать функцию настройки кода Gemini Code Assist. Теперь, когда ваши ответы могут быть адаптированы к конкретным частным базам кода вашей команды, каждое приглашение и завершение кода будут более ценными для разработчиков в ваших командах.

Не стесняйтесь просматривать эти другие документы и материалы для дальнейшего чтения и поддержки таких вещей, как настройка ролей IAM:

,

1. Прежде чем начать

В этой лаборатории кода показано, как подготовить Gemini Code Assist к предоставлению предложений по настройке кода, адаптированных к вашим частным репозиториям. Это может сделать результаты Code Assist значительно более полезными, особенно для команд, у которых есть определенные соглашения для аналогичной работы, которые часто повторяются. Будьте уверены: разрешение Gemini индексировать ваши частные кодовые базы для этой функции не позволит Gemini широко обучаться на вашем личном коде.

Мы также обсудим, как исключить конфиденциальные или ненужные файлы из рассмотрения при настройке кода с помощью файла .aiexclude .

Предварительные условия

Что вы узнаете

  • Как использовать настройку кода в Gemini Code Assist Enterprise
  • Один из многих случаев использования, когда настройка кода может сэкономить время вашей команды.

Что вам нужно

  • Включен Gemini Code Assist в проекте Google Cloud
  • Частный репозиторий для индексации запросов на настройку.
  • Пришло время индексировать код для запросов на настройку. Это может занять до 24 часов.
  • Установленная среда IDE с Gemini Code Assist.

2. Контекст

Чтобы попробовать настройку кода, необходимы две вещи:

  1. Доступ к проекту Google Cloud с включенным Gemini
  2. и Частный репозиторий для информирования ответов Gemini.

Включение Близнецов

Лучшие репозитории-кандидаты для индексации Gemini будут содержать код, который часто повторно используется в вашей организации. Пример репозитория, предоставленный для этой лаборатории кода, содержит стандартный веб-сервис Spring Boot с папкой объектов передачи данных, которые соответствуют этому критерию, поскольку аналогичный класс будет создан для описания каждого объекта в базе данных при его транспортировке на уровень представления.

3. (Необязательно) Настройка репозитория

Если вы предпочитаете использовать пример репозитория, а не один из ваших собственных частных, можно выполнить следующие шаги в редакторе терминала по вашему выбору или в Cloud Shell . Начните с создания частного репозитория , который поможет нам увидеть настройку кода в действии:

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

Добавьте следующее в файл 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;
}

Этого будет достаточно, чтобы продемонстрировать, что средства доступа, которые другие участники этой базы кода ожидают использовать, будут точно сгенерированы с включенной настройкой кода.

Создайте новый репозиторий , оставив его приватным. Выполните следующие шаги, чтобы отправить стартер в новый репозиторий:

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. Исключение файлов

Прежде чем предоставлять Gemini доступ к вашим частным репозиториям, важно понять, как исключить ненужные или конфиденциальные файлы, индексирование которых ваша команда не хочет. Для этого используется файл .aiexclude , который похож на .gitignore с некоторыми ключевыми отличиями:

  • Пустой файл .aiexclude блокирует все файлы в своем каталоге и во всех подкаталогах.
    • Это то же самое, что файл, содержащий **/* .
  • Файлы .aiexclude не поддерживают отрицание (префикс шаблонов с ! ).

Имея это в виду, попробуйте рассмотреть типы файлов или каталогов, которые ваша команда хотела бы исключить из рассмотрения, и перечислите их каждый в отдельных строках:

#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. Настройте Developer Connect

Developer Connect — это сервис, который упрощает подключения и ссылки на ваши частные репозитории кода в GitHub или GitLab. Это механизм, который позволяет Gemini Code Assist безопасно подключаться к вашим частным репозиториям и создавать индекс, который будет использоваться для улучшения ответов.

Эти две концепции помогают понять, как Developer Connect обеспечивает безопасный доступ к вашему коду:

Связь

  • Представляет собой мост между Google и сторонней платформой управления исходным кодом.

Связь

  • Представляет связь с отдельным репозиторием исходного кода, который вы выбираете на подключенной платформе управления исходным кодом.

Помня об этих концепциях, начните с перехода на страницу Developer Connect, чтобы включить API для вашего проекта.

Включение Developer Connect

Затем выполните соответствующие шаги, чтобы создать соединение и ссылку для GitHub или GitLab . Оба ресурса будут созданы в процессе работы мастера.

Создание соединения и ссылки

Повторите эти шаги, чтобы создать ссылку для каждого репозитория, который вы хотите, чтобы функция настройки кода Gemini учитывала в своих ответах. Вы можете повторно использовать существующее соединение, если несколько репозиториев находятся на одной платформе.

6. Создайте и подключитесь к индексу

Чтобы быстро анализировать ваши репозитории, настройка кода зависит от Index . Запишите используемый вами INDEX_NAME, поскольку он понадобится вам на следующем этапе.

Чтобы создать индекс, выполните следующую команду:

gcloud gemini code-repository-indexes create <INDEX_NAME> \
    --project=<YOUR_PROJECT_ID> \
    --location=<REGION>

Если вы столкнулись с какой-либо ошибкой Invalid choice: ... , убедитесь, что ваш интерфейс командной строки Google Cloud обновлен, выполнив следующую команду:

gcloud components update

Затем разрешите доступ к вашему индексу, создав группу репозитория:

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"}]'

Замена следующих значений:

  • REPOSITORY_GROUP: имя группы репозитория, которую вы собираетесь создать.
  • PROJECT_ID: идентификатор вашего проекта Google Cloud.
  • INDEX_NAME: имя индекса, определенное вами на предыдущем шаге для создания индекса.
  • РЕГИОН: поддерживаемый регион из списка в документации , который вы настроили в Developer Connect в своем проекте Google Cloud.
  • INDEX_CONNECTION: подключение индекса, созданного на предыдущем шаге, для создания индекса.
  • РЕПОЗИТАРИЙ: репозиторий, который вы хотите проиндексировать. Вы должны указать хотя бы один репозиторий, при необходимости вы можете указать несколько репозиториев.
  • BRANCH_NAMES: название ветвей, которые вы хотите проиндексировать, например main или dev.

В зависимости от количества репозиториев, которые вы хотите проиндексировать, и их размера, индексирование контента может занять до 24 часов. Индексирование происходит раз в 24 часа, фиксируя любые изменения, внесенные в репозиторий. Вы можете обратиться к этим шагам , чтобы проверить статус создания индекса:

Поиск статуса индексации

И, наконец, предоставьте желаемому участнику доступ к группе:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='PRINCIPAL' \
    --role='roles/cloudaicompanion.repositoryGroupsUser'

7. Создайте индивидуальный код

Теперь, когда Gemini имеет доступ к коду в вашем личном репозитории, мы можем ожидать появления соответствующих фрагментов в наших запросах на завершение кода. В нашем примере репозитория мы можем перейти в папку DTO, и когда мы создадим новый класс для представления нового объекта, вы увидите ожидаемые аннотации, появляющиеся по мере ввода:

Сгенерированный образец

8. Заключение

Поздравляем с завершением этой Codelab! Вы узнали, как использовать функцию настройки кода Gemini Code Assist. Теперь, когда ваши ответы могут быть адаптированы к конкретным частным базам кода вашей команды, каждое приглашение и завершение кода будут более ценными для разработчиков в ваших командах.

Не стесняйтесь просматривать эти другие документы и материалы для дальнейшего чтения и поддержки таких вещей, как настройка ролей IAM: