В этом документе описывается, как настроить настройку кода Gemini Code Assist в консоли Google Cloud, с помощью интерфейса командной строки Google Cloud или с помощью Terraform, подключив Gemini Code Assist к вашим личным репозиториям кода. Функция настройки кода Gemini Code Assist позволяет получать рекомендации по коду, основанные на внутренних библиотеках, личных API и стиле кодирования вашей организации.
Прежде чем начать
- Настройте Gemini Code Assist с подпиской Enterprise .
- Убедитесь, что у вас есть следующие роли управления идентификацией и доступом в проекте, которому принадлежит подписка: -  Администратор индексов репозитория кода ( roles/cloudaicompanion.codeRepositoryIndexesAdmin)
-  Gemini для пользователя Google Cloud ( roles/cloudaicompanion.user)
 
-  Администратор индексов репозитория кода ( 
- Создайте или настройте учётные записи пользователей. Каждый разработчик в вашей организации, использующий Gemini Code Assist, должен иметь идентификацию пользователя в Google Cloud с разрешением на доступ к вашему проекту Google Cloud. Подробнее см. в статье «Предоставление ролей в консоли Google Cloud» . Убедитесь, что у каждого пользователя есть следующие роли: 
- Функция настройки кода использует Developer Connect для доступа к вашим приватным репозиториям и их индексации. Убедитесь, что регион Developer Connect, в котором находится ваше подключение к репозиторию Developer Connect, также поддерживается для настройки кода. Функция настройки кода не может быть использована, если подключение Developer Connect находится в неподдерживаемом регионе. Список поддерживаемых регионов см. в разделе «Ограничения настройки кода» . 
Выберите, какие репозитории индексировать
Рекомендуется индексировать репозитории, обладающие следующими характеристиками:
- Код, имеющий схожий стиль или структуру с тем, который вы хотите, чтобы написали ваши разработчики.
- Частные библиотеки или API, которые вы хотели бы вызывать из текущей кодовой базы.
Необязательно: выберите, какие файлы не индексируются.
По умолчанию настройка кода индексирует все поддерживаемые файлы кода в указанных вами репозиториях.
 Чтобы предотвратить раскрытие кода, который вы не хотите индексировать, вы можете использовать шаблоны ветвления для управления доступом к вашему индексу и использовать стабильную ветку, например main .
 Кроме того, вы также можете исключить файлы из индекса, создав файл .aiexclude .
Настройка кода Gemini Code Assist
Выберите один из следующих вариантов:
Консоль
- В консоли Google Cloud перейдите на страницу настройки кода . - Перейти к настройке кода для Gemini Code Assist - Загрузится страница настройки кода для Gemini Code Assist . 
- Создайте индекс. Настройка кода основана на индексе для анализа и разбора вашего репозитория, что позволяет быстрее генерировать предложения и искать код. - Нажмите «Создать» и настройте данные индекса: - Выберите регион, настроенный в Developer Connect в вашем облачном проекте.
- Введите имя для вашего индекса. Запишите его. Оно понадобится вам для выполнения нескольких шагов в этом документе.
 
- Нажмите «Создать» . 
 - Создание индекса обычно занимает 30 минут, но может занять до часа. После завершения индексации вы получите уведомление в консоли Google Cloud. - Google ограничивает количество индексов репозитория кода одним для каждого проекта и организации. 
- Управляйте доступом к вашему индексу с помощью групп репозитория. - Группа репозиториев — это контейнер для конфигурации индексации, которая включает репозитории и их шаблоны ветвления. Группы репозиториев предназначены для детального управления IAM, предоставляя разработчикам доступ к индексированным данным из этих групп, где у них есть разрешение - cloudaicompanion.repositoryGroups.use.- Группы репозиториев содержат репозитории Developer Connect или ссылки из одного проекта и местоположения. 
- На странице «Настройка кода для Gemini Code Assist» нажмите «Добавить репозитории» , а затем выберите «Добавить исходные репозитории» . - Отобразится список существующих репозиториев в Developer Connect для региона, который вы настроили на предыдущем шаге для создания индекса. - Если вам необходимо добавить новые репозитории в группу репозиториев, нажмите «Подключить репозиторий» и следуйте инструкциям в консоли Google Cloud. - Кроме того, вы можете выбрать и отредактировать один или несколько репозиториев, чтобы добавить новую ветку. 
- Выберите группу репозиториев, в которую вы хотите добавить новые репозитории. Также можно нажать «Создать новую группу репозиториев» , чтобы создать и настроить новую группу репозиториев. 
- Чтобы начать индексацию выбранных репозиториев, нажмите кнопку Индексировать . - Время индексации варьируется в зависимости от размера репозиториев. 
CLI
- Убедитесь, что вы настроили Developer Connect и подключились к своему репозиторию:
- В среде оболочки выполните команду - gcloud components update, чтобы убедиться, что все установленные компоненты gcloud обновлены до последней версии. Для этого вы можете установить и инициализировать gcloud или использовать Cloud Shell Editor .- gcloud components update
- Создайте индекс. Настройка кода основана на индексе для анализа и разбора вашего репозитория, что позволяет быстрее генерировать предложения и искать код. - Чтобы создать индекс, в среде оболочки используйте команду - gemini code-repository-indexes create:- gcloud gemini code-repository-indexes create INDEX_NAME \ --project=PROJECT_ID \ --location=REGION- Заменить следующее: -  INDEX_NAME: имя вашего индекса. Важно : запишите имя вашего индекса. Оно понадобится вам для выполнения нескольких шагов в этом документе.
-  PROJECT_ID: идентификатор вашего проекта Google Cloud.
-  REGION: регион, настроенный в Developer Connect в вашем облачном проекте. Для успешного выполнения команд необходимо указать поддерживаемый регион .
 - Создание индекса обычно занимает 30 минут, но может занять и час. - Google ограничивает количество индексов репозитория кода одним для каждого проекта и организации. 
-  
 
- Управляйте доступом к индексу с помощью групп репозиториев. Группа репозиториев — это контейнер для конфигурации индексирования, которая включает репозитории и их шаблоны ветвления. Группы репозиториев предназначены для детального управления IAM, предоставляя разработчикам доступ к индексированным данным из этих групп, где у них есть разрешение - cloudaicompanion.repositoryGroups.use.- Группы репозиториев содержат репозитории Developer Connect или ссылки из одного проекта и местоположения. - Администраторы выполняют следующие действия: - Создайте ресурс индекса репозитория кода.
- В том же проекте и месте настройте новое подключение Developer Connect.
- Связать репозитории Git с подключением.
- Получите имена ресурсов ссылок, выберите шаблон ветвления для индексации каждой ссылки и поместите ее в одну или несколько групп репозиториев.
 - Чтобы создать группу репозиториев, в среде оболочки используйте команду - gemini code-repository-indexes repository-groups create:- gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \ --project=PROJECT_ID \ --location=REGION \ --code-repository-index=INDEX_NAME \ --repositories='[{"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "BRANCH_NAMES"}]'- Заменить следующее: -  REPOSITORY_GROUP: имя группы репозитория, например,default.
-  REPOSITORY_RESOURCE_NAME: имя репозитория в подключении Developer Connect. Чтобы узнать имя репозитория, перейдите на страницу репозиториев Git в консоли Google Cloud и на вкладке «Репозитории » найдите идентификатор подключения в столбце «Подключение » таблицы. Чтобы скопировать имя ресурса, откройте меню more_vert для просмотра дополнительных параметров и выберите «Копировать путь к ресурсу» .
-  BRANCH_NAMES: имена ветвей, которые вы хотите индексировать, напримерmain|dev.
 - Вы также можете создать группу репозиториев с репозиториями, определенными в файле JSON (или YAML), отформатированном следующим образом: - JSON- [ { "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev" }, { "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev" } ]- ЯМЛ- - resource: REPOSITORY_RESOURCE_NAME branchPattern: main|dev - resource: REPOSITORY_RESOURCE_NAME branchPattern: dev- Чтобы создать группу репозиториев на основе файла JSON или YAML, в среде оболочки используйте команду - gemini code-repository-indexes repository-groups create:- JSON- gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \ --project=PROJECT_ID \ --location=REGION \ --code-repository-index=INDEX_NAME \ --repositories=FILEPATH.json- ЯМЛ- gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \ --project=PROJECT_ID \ --location=REGION \ --code-repository-index=INDEX_NAME \ --repositories=FILEPATH.yaml- При желании вы можете шифровать и контролировать свои данные с помощью ключа шифрования, управляемого клиентом (CMEK), через службу управления облачными ключами . Подробнее об использовании CMEK см. в статье Шифрование данных с помощью ключей шифрования, управляемых клиентом . 
- Предоставьте роли IAM группе репозитория в проекте. - Вы получаете предложения только из репозиториев, указанных в индексе. Каждый репозиторий принадлежит одной или нескольким группам репозиториев. Для доступа к предложениям необходимо предоставить группе репозиториев IAM-роль пользователя групп репозиториев Cloud AI Companion ( - roles/cloudaicompanion.repositoryGroupsUser), которая содержит необходимое разрешение IAM- cloudaicompanion.repositoryGroups.user, одним из следующих способов:- Предоставить принципалам разрешение на доступ ко всему индексу.
- Предоставить принципалам доступ к подмножеству индекса. 
 - Весь индекс- Чтобы привязать политику IAM к проекту, в среде оболочки используйте команду - projects add-iam-policy-binding:- gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'- Заменить следующее: -  PRINCIPAL: адрес электронной почты принципала, которому необходим доступ, например,user:test-user@gmail.comдля отдельного лица илиgroup:admins@example.comдля группы.
 - Для получения дополнительной информации см. - gcloud projects set-iam-policy.
-  
- При появлении запроса на указание условия введите - None.
 - Подмножество индекса- Вы можете создать несколько групп репозиториев и назначить роли IAM разным субъектам IAM. - Чтобы настроить IAM-политику, необходимо подготовить JSON- или YAML-файл IAM-политики, содержащий список IAM-групп и назначенных ролей. Например: - bindings: - members: - group:my-group@example.com - user:test-user@example.com role: roles/cloudaicompanion.repositoryGroupsUser- Дополнительные сведения и синтаксис см. в разделе Общие сведения о политиках разрешения . - Чтобы установить политику IAM, в среде оболочки используйте команду - gemini code-repository-indexes repository-groups set-iam-policy:- gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \ --project=PROJECT_ID \ --location=REGION \ --code-repository-index=INDEX_NAME- Заменить следующее: -  GROUP_NAME: имя группы репозитория, созданной вами на предыдущем шаге, для управления доступом к индексу с помощью групп репозитория.
- POLICY_FILE: политика IAM.- Для получения дополнительной информации см. - gcloud gemini code-repository-indexes repository-groups set-iam-policy.
 
Терраформировать
- Убедитесь, что вы настроили Developer Connect и подключились к своему репозиторию: 
- Создайте индекс. Настройка кода основана на индексе для анализа и разбора вашего репозитория, что позволяет быстрее генерировать предложения и искать код. - resource "google_gemini_code_repository_index" "example" { location = "REGION" code_repository_index_id = "INDEX_NAME" }- Заменить следующее: -  INDEX_NAME: имя вашего индекса. Важно : запишите имя вашего индекса. Оно понадобится вам для выполнения нескольких шагов в этом документе.
-  PROJECT_ID: идентификатор вашего проекта Google Cloud.
-  REGION: регион, настроенный в Developer Connect в вашем облачном проекте. Для успешного выполнения команд необходимо указать поддерживаемый регион .
 - Создание индекса обычно занимает 30 минут, но может занять и час. - Google ограничивает количество индексов репозитория кода одним для каждого проекта и организации. 
-  
- Управляйте доступом к индексу с помощью групп репозиториев. Группа репозиториев — это контейнер для конфигурации индексирования, которая включает репозитории и их шаблоны ветвления. Группы репозиториев предназначены для детального управления IAM, предоставляя разработчикам доступ к индексированным данным из этих групп, где у них есть разрешение - cloudaicompanion.repositoryGroups.use.- Группы репозиториев содержат репозитории Developer Connect или ссылки из одного проекта и местоположения. - Администраторы выполняют следующие действия: - Создайте код ресурса индекса репозитория.
- В том же проекте и месте настройте новое подключение Developer Connect.
- Связать репозитории Git с подключением.
- Получите имена ресурсов ссылок, выберите шаблон ветвления для индексации каждой ссылки и поместите ее в одну или несколько групп репозиториев.
 - resource "google_gemini_repository_group" "example" { location = "REGION" code_repository_index = "INDEX_NAME" repository_group_id = "REPOSITORY_GROUP" repositories { resource = "REPOSITORY_RESOURCE_NAME" branch_pattern = "BRANCH_NAMES" } }- Заменить следующее: -  REPOSITORY_GROUP: имя группы репозитория, например,default.
-  REPOSITORY_RESOURCE_NAME: имя репозитория в подключении Developer Connect. Чтобы узнать имя репозитория, перейдите на страницу репозиториев Git в консоли Google Cloud и на вкладке «Репозитории » найдите идентификатор подключения в столбце «Подключение » таблицы. Чтобы скопировать имя ресурса, откройте меню more_vert для просмотра дополнительных параметров и выберите «Копировать путь к ресурсу» .
-  BRANCH_NAMES: имена ветвей, которые вы хотите индексировать, напримерmain|dev.
 - Вы также можете создать группу репозиториев с репозиториями, определенными в файле JSON (или YAML), отформатированном следующим образом: - JSON- [ { "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev" }, { "resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev" } ]- ЯМЛ- - resource: REPOSITORY_RESOURCE_NAME branchPattern: main|dev - resource: REPOSITORY_RESOURCE_NAME branchPattern: dev- Чтобы создать группу репозиториев на основе файла JSON или YAML, в среде оболочки используйте команду - gemini code-repository-indexes repository-groups create:- JSON- gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \ --project=PROJECT_ID \ --location=REGION \ --code-repository-index=INDEX_NAME \ --repositories=FILEPATH.json- ЯМЛ- gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \ --project=PROJECT_ID \ --location=REGION \ --code-repository-index=INDEX_NAME \ --repositories=FILEPATH.yaml- При желании вы можете шифровать и контролировать свои данные с помощью ключа шифрования, управляемого клиентом (CMEK), через службу управления облачными ключами . Подробнее об использовании CMEK см. в статье Шифрование данных с помощью ключей шифрования, управляемых клиентом . 
- Предоставьте роли IAM группе репозитория в проекте. - Вы получаете предложения только из репозиториев, указанных в индексе. Каждый репозиторий принадлежит одной или нескольким группам репозиториев. Для доступа к предложениям необходимо предоставить группе репозиториев IAM-роль пользователя групп репозиториев Cloud AI Companion ( - roles/cloudaicompanion.repositoryGroupsUser), которая содержит необходимое разрешение IAM- cloudaicompanion.repositoryGroups.user, одним из следующих способов:- Предоставить принципалам разрешение на доступ ко всему индексу.
- Предоставить принципалам доступ к подмножеству индекса. 
 - Весь индекс- Чтобы привязать политику IAM к проекту, в среде оболочки используйте команду - projects add-iam-policy-binding:- gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'- Заменить следующее: - PRINCIPAL: адрес электронной почты принципала, которому необходим доступ, например,- user:test-user@gmail.comдля отдельного лица или- group:admins@example.comдля группы.- Для получения дополнительной информации см. - gcloud projects set-iam-policy.
 
- При появлении запроса на указание условия введите - None.
 - Подмножество индекса- Вы можете создать несколько групп репозиториев и назначить роли IAM разным субъектам IAM. - data "google_iam_policy" "foo" { binding { role = "roles/cloudaicompanion.repositoryGroupsUser" members = ["test-user@example.com"] } } resource "google_gemini_repository_group_iam_policy" "foo" { project = "PROJECT_ID" location = "REGION" code_repository_index_id = "INDEX_NAME" repository_group_id = "GROUP_NAME" policy_data = data.google_iam_policy.foo.policy_data } data "google_gemini_repository_group_iam_policy" "foo" { project = "PROJECT_ID" location = "REGION" code_repository_index_id = "INDEX_NAME" repository_group_id = "GROUP_NAME" depends_on = [ google_gemini_repository_group_iam_policy.foo ] }- Вы также можете создать привязку: - resource "google_gemini_repository_group_iam_binding" "foo" { project = "PROJECT_ID" location = "REGION" code_repository_index_id = "INDEX_NAME" repository_group_id = "GROUP_NAME" role = "roles/cloudaicompanion.repositoryGroupsUser" members = ["test-user@example.com"] }- Заменить следующее: -  GROUP_NAME: имя группы репозитория, созданной вами на предыдущем шаге, для управления доступом к индексу с помощью групп репозитория.
 
Проверить статус индексации
В зависимости от количества и размера репозиториев, которые вы хотите индексировать, индексация контента может занять до 24 часов. Для больших репозиториев индексация может занять больше времени. Индексация происходит каждые 24 часа, отслеживая все изменения, внесённые в репозиторий.
- Найдите журналы - indexing. Подробнее см. в разделе «Язык запросов для журналирования» .- Консоль- В консоли Google Cloud перейдите в Logs Explorer . 
- Для просмотра журналов - indexingиспользуйте фильтр имен журналов.
 - CLI- Для поиска журналов индексации в среде оболочки используйте команду - logging read:- gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""- Замените - PROJECT_IDна идентификатор проекта, в котором расположена группа репозитория.- Например, чтобы просмотреть ошибки в журналах - indexing, выполните следующую команду:- gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
- Проверьте соответствующие статусы индексации, например следующие: -  Начало индексации репозитория, например, Indexing repository REPOSITORY_NAME . Total number of repositories: 10, succeeded: 6, failed: 0.
-  Конец индексации индивидуального репозитория — например:-  Успех: Successfully finished indexing repository REPOSITORY_NAME . Total number of repositories: 10, succeeded: 7, failed: 0.
-  Ошибка: Failed to index repository REPOSITORY_NAME . Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
 
-  Успех: 
-  Конец индексации репозитория — например:-  Успех: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
-  Ошибка: Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 1. Repositories that were not successfully fetched will be retried in the next run.
 
-  Успех: 
 - В статусах индекса - REPOSITORY_NAME— это репозиторий, который вы хотите просмотреть.
-  Начало индексации репозитория, например, 
- Просмотрите сопутствующие ошибки индексации, например следующие: - Не удалось загрузить репозиторий.
- Не удалось составить список файлов репозитория.
- Не удалось получить информацию о репозитории из индекса.
- Не удалось извлечь файлы из индекса.
- Внутренняя ошибка.
 
Использовать настройку кода
После настройки настройки кода вы начнете видеть предложения по дополнению и генерации кода, которые могут быть основаны на проиндексированном вами частном коде, а также на результатах полной осведомленности о кодовой базе.
Разработчики, добавленные в группу репозитория, где проиндексирован хотя бы один ресурс, получат уведомление в своей IDE о включении настройки кода. Чтобы увидеть статус настройки кода, разработчики могут нажать на значок « spark » в правом нижнем углу и найти один из следующих статусов настройки кода в строке поиска:
- Всё готово . Настройка кода включена и настроена.
- Недоступно . У разработчика отсутствует доступ к группе репозитория, или группа репозитория, к которой у пользователя есть доступ, пуста.
- Не задано . Настройка кода либо не включена, либо не настроена администратором.
Дополнительную информацию об использовании настройки кода и передовых методах см. в разделе Использование настройки кода .
Отключить настройку кода
Выберите один из следующих вариантов:
Консоль
- В консоли Google Cloud перейдите на страницу продуктов Gemini . - Загрузится страница продукции Gemini . 
- В меню навигации нажмите Настройка кода . - Загрузится страница настройки кода . 
- Чтобы удалить индекс, нажмите Удалить . - Появится предупреждающее сообщение. Если вы хотите продолжить и удалить индекс, введите его имя и нажмите «Удалить» . 
CLI
- Чтобы вывести список всех групп репозиториев для текущего индекса, в среде оболочки используйте команду - gemini code-repository-indexes repository-groups list:- gcloud gemini code-repository-indexes repository-groups list --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME --uri- Заменить следующее: -  REGION: регион, настроенный в Developer Connect в вашем облачном проекте. Для успешного выполнения команд необходимо указать поддерживаемый регион .
-  PROJECT_ID: идентификатор вашего проекта Google Cloud.
-  INDEX_NAME: имя индекса, созданного на предыдущем шаге создания индекса.
 
-  
- Чтобы удалить группу репозиториев из текущего индекса, используйте команду - gemini code-repository-indexes repository-groups delete:- gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \ --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME
- Повторяйте предыдущие шаги для каждой группы репозиториев, пока не удалите все группы репозиториев из индекса. 
- Необязательно: чтобы удалить индекс, в среде оболочки используйте команду - gemini code-repository-indexes delete:- gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
Что дальше?
-  Начните использовать Gemini Code Assist:- VS Code, IntelliJ и другие поддерживаемые JetBrains IDE: программируйте с помощью Gemini Code Assist
- Cloud Shell: программирование с помощью Gemini Code Assist
- Облачные рабочие станции: программируйте с Gemini Code Assist
 
- Узнайте, как использовать настройку кода и передовые практики.
- Узнайте, как шифровать данные с помощью ключей шифрования, управляемых клиентом (CMEK) .
- Узнайте больше о Developer Connect .
- Узнайте , как и когда Gemini для Google Cloud использует ваши данные .