เอกสารนี้อธิบายวิธีตั้งค่าการปรับแต่งโค้ด 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 ก็ได้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 Cloud ของคุณREGION
: ภูมิภาคที่รองรับตามที่ระบุไว้ในส่วนก่อนเริ่มต้นของหน้านี้ ซึ่งคุณกำหนดค่าไว้ใน 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 Cloud ของคุณREGION
: ภูมิภาคที่รองรับตามที่ระบุไว้ในส่วนก่อนเริ่มต้นของหน้านี้ ซึ่งคุณได้กำหนดค่าไว้ใน Developer Connect ในโปรเจ็กต์ Google CloudINDEX_NAME
: ชื่อดัชนีที่คุณสร้างในขั้นตอนก่อนหน้าเพื่อสร้างดัชนีREPOSITORY_RESOURCE_NAME
: ชื่อที่เก็บข้อมูลภายในการเชื่อมต่อ Developer Connect หากต้องการดูชื่อที่เก็บ ให้ไปที่หน้า Developer Connect ในคอนโซล Google Cloud และในแท็บที่เก็บ ให้มองหารหัสการเชื่อมต่อในคอลัมน์การเชื่อมต่อในตาราง หากต้องการคัดลอกชื่อแหล่งข้อมูล ให้คลิกเมนู 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 ของผู้ใช้กลุ่มที่เก็บข้อมูล Companion ของ Cloud AI (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
ดูข้อมูลเพิ่มเติมได้ที่ภาษาในการค้นหาการบันทึกคอนโซล
ในคอนโซล Google API ให้ไปที่Logs Explorer
ใช้ตัวกรองชื่อบันทึกเพื่อดูบันทึก
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 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
ทำขั้นตอนที่ 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 ใช้ข้อมูลของคุณและกรณีที่ใช้