1. Прежде чем начать
В этом практическом занятии показано, как настроить Gemini Code Assist для предоставления рекомендаций по настройке кода, адаптированных под ваши частные репозитории. Это может значительно повысить полезность результатов работы Code Assist, особенно для команд, использующих специфические соглашения для часто повторяющейся работы. Будьте уверены, что разрешение Gemini индексировать ваши частные кодовые базы для этой функции не позволяет Gemini проводить широкое обучение на вашем частном коде.
Мы также обсудим, как исключить конфиденциальные или нерелевантные файлы из рассмотрения для настройки кода с помощью файла .aiexclude .
Предварительные требования
- Базовое понимание Gemini Code Assist и доступ к проекту, где эта функция включена.
- Знание поддерживаемого языка программирования для настройки кода.
- Возможность создавать ресурсы в регионах
us-central1илиeurope-west1, поскольку для настройки кода требуются подключения Developer Connect в этих регионах. - Актуальный, авторизованный интерфейс командной строки Google Cloud.
Чему вы научитесь
- Как использовать возможности настройки кода в Gemini Code Assist Enterprise
- Один из многих примеров того, как кастомизация кода может сэкономить время вашей команды.
Что вам нужно
- Проект Google Cloud с поддержкой Gemini Code Assist
- Закрытый репозиторий для индексации запросов на настройку.
- Время на индексацию кода для обработки запросов на индивидуальную настройку. Это может занять до 24 часов.
- IDE с установленной программой Gemini Code Assist.
2. Контекст
Для того чтобы опробовать возможности кастомизации кода, необходимы две вещи:
- Доступ к проекту Google Cloud с включенной функцией Gemini.
- а также закрытое хранилище для подготовки ответов 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 для вашего проекта.

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

Повторите эти шаги, чтобы создать ссылку для каждого репозитория, который вы хотите, чтобы функция настройки кода Gemini учитывала в своих ответах. Вы можете повторно использовать существующее соединение, если несколько репозиториев относятся к одной и той же платформе.
6. Создайте индекс и подключитесь к нему.
Для быстрого анализа и обработки ваших репозиториев настройка кода основана на использовании индекса . Запишите используемое вами имя индекса (INDEX_NAME), поскольку оно понадобится вам на следующем этапе.
Для создания индекса выполните следующую команду:
gcloud gemini code-repository-indexes create <INDEX_NAME> \
--project=<YOUR_PROJECT_ID> \
--location=<REGION>
Если вы столкнулись с ошибкой Invalid choice: ... , убедитесь, что ваш Google Cloud CLI обновлен, выполнив следующую команду:
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. Заключение
Поздравляем с завершением этого практического занятия! Вы научились использовать функцию настройки кода в Gemini Code Assist. Теперь, когда ваши ответы могут быть адаптированы к конкретным, закрытым кодовым базам вашей команды, каждый запрос и автозавершение кода станут более ценными для разработчиков в ваших командах.
Для получения дополнительной информации и поддержки по таким вопросам, как настройка ролей IAM, вы можете ознакомиться с другими документами и материалами: