เอกสารนี้อธิบายวิธีตั้งค่าการปรับแต่งโค้ดของ Gemini Code Assist โดยการเชื่อมต่อ Gemini Code Assist กับที่เก็บโค้ดส่วนตัว ฟีเจอร์นี้ช่วยให้คุณรับคำแนะนำโค้ดที่ดึงมาจากไลบรารีภายใน, API ส่วนตัว และรูปแบบการเขียนโค้ดขององค์กร
ก่อนเริ่มต้น
- ตั้งค่า Gemini Code Assist ด้วยการสมัครใช้บริการ Enterprise
- สร้างหรือกำหนดค่าบัญชีผู้ใช้ปลายทาง นักพัฒนาแอปทุกคนในองค์กร ที่ใช้ Gemini Code Assist ต้องมีข้อมูลประจำตัวผู้ใช้ใน Google Cloud ที่มีสิทธิ์เข้าถึงโปรเจ็กต์ Google Cloud ของคุณ ดูข้อมูลเพิ่มเติมได้ที่ให้สิทธิ์บทบาทใน Google Cloud Console ตรวจสอบว่าผู้ใช้แต่ละคนมีบทบาทต่อไปนี้
กำหนดค่า Developer Connect จากนั้นเชื่อมต่อกับที่เก็บ GitHub.com, GitLab.com หรือ Bitbucket.org โดยทำดังนี้
GitHub
GitLab
Bitbucket
นอกจากนี้ โปรดทราบว่าการปรับแต่งโค้ดรองรับเฉพาะการเชื่อมต่อ Developer Connect ในสถานที่ (ภูมิภาค) ต่อไปนี้
us-central1
europe-west1
asia-southeast1
ในสภาพแวดล้อมเชลล์ ให้เรียกใช้คำสั่ง
gcloud components update
เพื่อให้แน่ใจว่าคุณได้อัปเดตคอมโพเนนต์ทั้งหมดที่ติดตั้งของ gcloud เป็นเวอร์ชันล่าสุดแล้ว สำหรับขั้นตอนนี้ คุณสามารถติดตั้งและเริ่มต้นใช้งาน gcloud หรือจะใช้Cloud Shell Editor ก็ได้gcloud components update
เลือกที่เก็บส่วนตัวที่จะเชื่อมต่อ
แนวทางปฏิบัติแนะนำคือตรวจสอบว่าคุณเชื่อมต่อที่เก็บซึ่งมีลักษณะต่อไปนี้
- มีโค้ดที่มีสไตล์หรือโครงสร้างคล้ายกับโค้ดที่คุณต้องการให้ นักพัฒนาแอปเขียน
- มีไลบรารีหรือ API ส่วนตัวที่ต้องการเรียกใช้จากโค้ดเบสปัจจุบัน
(ไม่บังคับ) เลือกไฟล์ที่จะไม่จัดทำดัชนี
โดยค่าเริ่มต้น การปรับแต่งโค้ดจะจัดทำดัชนีไฟล์โค้ดที่รองรับ ทั้งหมดในที่เก็บที่ระบุ
หากไม่ต้องการให้โค้ดที่คุณไม่ต้องการจัดทำดัชนีปรากฏ คุณสามารถใช้รูปแบบสาขาเพื่อควบคุมการเข้าถึงดัชนีและใช้สาขาที่เสถียร เช่น main
หรือคุณจะยกเว้นไฟล์จากดัชนีโดย
สร้างไฟล์ .aiexclude
ก็ได้
สร้างดัชนี
การปรับแต่งโค้ดอาศัยดัชนีในการวิเคราะห์และแยกวิเคราะห์ที่เก็บของคุณเพื่อ คำแนะนำและการค้นหาการสร้างโค้ดที่เร็วขึ้น
gcloud
หากต้องการสร้างดัชนี ให้ใช้gemini code-repository-indexes create
คำสั่งในสภาพแวดล้อมเชลล์
gcloud gemini code-repository-indexes create INDEX_NAME \
--project=PROJECT_ID \
--location=REGION
Terraform
resource "google_gemini_code_repository_index" "example" {
location = "REGION"
code_repository_index_id = "INDEX_NAME"
}
แทนที่ค่าต่อไปนี้
INDEX_NAME
: ชื่อดัชนี สำคัญ: บันทึก ชื่อดัชนี เนื่องจากคุณจะต้องใช้ในหลายขั้นตอนในเอกสารนี้PROJECT_ID
: รหัสโปรเจ็กต์ Google CloudREGION
: ภูมิภาคที่รองรับตามที่ระบุไว้ในส่วนก่อนเริ่มต้นของหน้านี้ ซึ่งคุณได้ กำหนดค่าใน Developer Connect ในโปรเจ็กต์ Google Cloud
โดยทั่วไปการสร้างดัชนีจะใช้เวลา 30 นาที แต่บางครั้งอาจใช้เวลาถึง 1 ชั่วโมง
Google จำกัดจำนวนดัชนีที่เก็บโค้ดไว้ที่ 1 รายการต่อโปรเจ็กต์และ องค์กร
ควบคุมการเข้าถึงดัชนีโดยใช้กลุ่มที่เก็บ
กลุ่มที่เก็บคือคอนเทนเนอร์สำหรับการกำหนดค่าการจัดทำดัชนี ซึ่งรวมถึง
ที่เก็บและรูปแบบสาขาของที่เก็บ กลุ่มที่เก็บได้รับการออกแบบมาเพื่อ
การควบคุม IAM แบบละเอียด ซึ่งช่วยให้นักพัฒนาแอปเข้าถึงข้อมูลที่จัดทำดัชนี
จากกลุ่มเหล่านั้นได้ โดยนักพัฒนาแอปต้องมีสิทธิ์ cloudaicompanion.repositoryGroups.use
กลุ่มที่เก็บมีที่เก็บ Developer Connect หรือลิงก์จากโปรเจ็กต์และตำแหน่งเดียวกัน
ผู้ดูแลระบบจะดำเนินการต่อไปนี้
- สร้างทรัพยากรดัชนีที่เก็บโค้ด
- กำหนดค่าการเชื่อมต่อ Developer Connect ใหม่ในโปรเจ็กต์และตำแหน่งเดียวกัน
- ลิงก์ที่เก็บ Git ในการเชื่อมต่อ
รับชื่อทรัพยากรของลิงก์ เลือกรูปแบบสาขาที่จะจัดทำดัชนีสำหรับแต่ละลิงก์ และวางไว้ในกลุ่มที่เก็บอย่างน้อย 1 กลุ่ม
gcloud
หากต้องการสร้างกลุ่มที่เก็บ ให้ใช้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"}]'
Terraform
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
PROJECT_ID
: รหัสโปรเจ็กต์ Google CloudREGION
: ภูมิภาคที่รองรับตามที่ระบุไว้ในส่วนก่อนเริ่มต้นของหน้านี้ ซึ่งคุณได้ กำหนดค่าไว้ใน Developer Connect ในโปรเจ็กต์ Google CloudINDEX_NAME
: ชื่อดัชนีที่คุณสร้างในขั้นตอนก่อนหน้าเพื่อสร้างดัชนีREPOSITORY_RESOURCE_NAME
: ชื่อของที่เก็บ ในการเชื่อมต่อ Developer Connect หากต้องการค้นหาชื่อที่เก็บ ให้ไปที่หน้า Developer Connect ใน Google Cloud Console แล้วมองหารหัสการเชื่อมต่อในแท็บที่เก็บใต้คอลัมน์การเชื่อมต่อในตาราง หากต้องการคัดลอกชื่อทรัพยากร ให้คลิกเมนู more_vert เพื่อดูตัวเลือกเพิ่มเติม แล้ว เลือกคัดลอกเส้นทางทรัพยากรBRANCH_NAMES
: ชื่อสาขาที่คุณต้องการจัดทำดัชนี เช่นmain|dev
นอกจากนี้ คุณยังสร้างกลุ่มที่เก็บด้วยที่เก็บที่กำหนดไว้ในไฟล์ JSON (หรือ YAML) ซึ่งจัดรูปแบบดังนี้ได้ด้วย
JSON
[
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
},
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
}
]
YAML
- 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
YAML
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.yaml
หากต้องการ คุณสามารถเข้ารหัสและควบคุมข้อมูลด้วยคีย์การเข้ารหัสที่จัดการโดยลูกค้า (CMEK) ผ่าน Cloud Key Management Service ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ CMEK ได้ที่เข้ารหัสข้อมูลด้วยคีย์การเข้ารหัสที่จัดการโดยลูกค้า
มอบบทบาท IAM ให้กับกลุ่มที่เก็บในโปรเจ็กต์
คุณจะได้รับคำแนะนำจากที่เก็บในดัชนีเท่านั้น แต่ละที่เก็บ
เป็นของกลุ่มที่เก็บอย่างน้อย 1 กลุ่ม หากต้องการเข้าถึงคำแนะนำ คุณต้อง
ให้บทบาท 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'
แทนที่ค่าต่อไปนี้
PROJECT_ID
: รหัสโปรเจ็กต์ที่กลุ่มที่เก็บอยู่PRINCIPAL
: อีเมลของหลักการ ที่ต้องมีสิทธิ์เข้าถึง เช่นuser:test-user@gmail.com
สำหรับ บุคคล หรือgroup:admins@example.com
สำหรับกลุ่ม
ดูข้อมูลเพิ่มเติมได้ที่
gcloud projects set-iam-policy
เมื่อได้รับข้อความแจ้งให้ระบุเงื่อนไข ให้ป้อน
None
ให้สิทธิ์เข้าถึงส่วนย่อยของดัชนีแก่ผู้ใช้หลัก
คุณสร้างกลุ่มที่เก็บได้หลายกลุ่มและมอบหมายบทบาท IAM ให้กับผู้ใช้ IAM ที่แตกต่างกันได้
gcloud
หากต้องการตั้งค่านโยบาย 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
: นโยบาย IAMREGION
: ภูมิภาคที่รองรับตามที่ระบุไว้ในส่วนก่อนเริ่มต้นของหน้านี้ ซึ่งคุณได้กำหนดค่าไว้ใน Developer Connect ในโปรเจ็กต์ Google CloudINDEX_NAME
: ชื่อของดัชนีที่คุณสร้างใน ขั้นตอนก่อนหน้าเพื่อสร้างดัชนีดูข้อมูลเพิ่มเติมได้ที่
gcloud gemini code-repository-indexes repository-groups set-iam-policy
Terraform
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
: ชื่อกลุ่มที่เก็บที่คุณสร้างในขั้นตอนก่อนหน้าเพื่อควบคุมการเข้าถึงดัชนีโดยใช้กลุ่มที่เก็บREGION
: ภูมิภาคที่รองรับตามที่ระบุไว้ในส่วนก่อนเริ่มต้นของหน้านี้ ซึ่งคุณได้กำหนดค่าไว้ใน Developer Connect ในโปรเจ็กต์ Google CloudINDEX_NAME
: ชื่อของดัชนีที่คุณสร้างใน ขั้นตอนก่อนหน้าเพื่อสร้างดัชนีดูข้อมูลเพิ่มเติมได้ที่
gcloud gemini code-repository-indexes repository-groups set-iam-policy
ตรวจสอบสถานะการจัดทำดัชนี
การจัดทำดัชนีเนื้อหาอาจใช้เวลานานถึง 24 ชั่วโมง ทั้งนี้ขึ้นอยู่กับจำนวนที่เก็บที่ต้องการจัดทำดัชนีและขนาดของที่เก็บ สำหรับที่เก็บข้อมูลขนาดใหญ่ การจัดทำดัชนี อาจใช้เวลานานกว่า การจัดทำดัชนีจะเกิดขึ้นทุก 24 ชั่วโมง โดยจะเลือกการเปลี่ยนแปลง ที่ทำในที่เก็บ
ค้นหา
indexing
บันทึก ดูข้อมูลเพิ่มเติมได้ที่ ภาษาในการค้นหาการบันทึกคอนโซล
ไปที่Logs Explorer ในคอนโซล Google API
ใช้ตัวกรองชื่อบันทึกเพื่อดูบันทึก
indexing
gcloud
หากต้องการค้นหาบันทึกการจัดทำดัชนี ให้ใช้คำสั่ง
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
คือที่เก็บ ที่คุณต้องการตรวจสอบ- จุดเริ่มต้นของการจัดทำดัชนีที่เก็บ เช่น
ตรวจสอบข้อผิดพลาดในการจัดทำดัชนีที่เกี่ยวข้อง เช่น ข้อผิดพลาดต่อไปนี้
- ดึงข้อมูลที่เก็บไม่สำเร็จ
- แสดงรายการไฟล์ที่เก็บไม่สำเร็จ
- เรียกข้อมูลที่เก็บจากดัชนีไม่สำเร็จ
- เรียกไฟล์จากดัชนีไม่สำเร็จ
- ข้อผิดพลาดภายใน
ใช้การปรับแต่งโค้ด
เมื่อตั้งค่าการปรับแต่งโค้ดแล้ว คุณจะเริ่มเห็นคำแนะนำในการเติมโค้ดให้สมบูรณ์ และคำแนะนำในการสร้างโค้ด ซึ่งอาจอิงตามโค้ดส่วนตัวที่คุณ จัดทำดัชนีไว้ นอกเหนือจากผลลัพธ์ที่ได้จากการรับรู้ฐานโค้ดทั้งหมด
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้การปรับแต่งโค้ดและแนวทางปฏิบัติแนะนำได้ที่ ใช้การปรับแต่งโค้ด
ปิดการปรับแต่งโค้ด
หากต้องการแสดงรายการกลุ่มที่เก็บทั้งหมดสำหรับดัชนีปัจจุบันในสภาพแวดล้อมเชลล์ ให้ใช้
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 ในโปรเจ็กต์ Google CloudPROJECT_ID
: รหัสโปรเจ็กต์ Google CloudINDEX_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
ทำขั้นตอนที่ 3 ซ้ำสำหรับกลุ่มที่เก็บแต่ละกลุ่มจนกว่าจะลบกลุ่มที่เก็บทั้งหมดออกจากดัชนี
ไม่บังคับ: หากต้องการลบดัชนี ให้ใช้
gemini code-repository-indexes delete
คำสั่งในสภาพแวดล้อมเชลล์gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
ขั้นตอนถัดไป
- วิธีเริ่มใช้ Gemini Code Assist
- VS Code, IntelliJ และ IDE อื่นๆ ของ JetBrains ที่รองรับ: เขียนโค้ดด้วย Gemini Code Assist
- Cloud Shell: เขียนโค้ดด้วย Gemini Code Assist
- Cloud Workstations: เขียนโค้ดด้วย Gemini Code Assist
- ดูวิธีใช้การปรับแต่งโค้ด และแนวทางปฏิบัติแนะนำ
- ดูวิธีเข้ารหัสข้อมูลด้วยคีย์การเข้ารหัสที่จัดการโดยลูกค้า (CMEK)
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Developer Connect
- ดูวิธีและเวลาที่ Gemini สำหรับ Google Cloud ใช้ข้อมูลของคุณ