กำหนดค่าและใช้การปรับแต่งโค้ดของ Gemini Code Assist

เอกสารนี้อธิบายวิธีตั้งค่าการปรับแต่งโค้ดของ Gemini Code Assist โดยเชื่อมต่อ Gemini Code Assist กับที่เก็บโค้ดส่วนตัว ฟีเจอร์นี้ช่วยให้คุณได้รับคําแนะนําโค้ดซึ่งดึงมาจากไลบรารีภายใน, API ส่วนตัว และสไตล์การเขียนโค้ดขององค์กร

ก่อนเริ่มต้น

เลือกที่เก็บส่วนตัวที่จะเชื่อมต่อ

แนวทางปฏิบัติแนะนำคือให้เชื่อมต่อที่เก็บข้อมูลต่อไปนี้

  • มีโค้ดที่มีสไตล์หรือโครงสร้างคล้ายกับสิ่งที่ต้องการให้นักพัฒนาซอฟต์แวร์เขียน
  • มีไลบรารีหรือ API ส่วนตัวที่คุณต้องการเรียกใช้จากฐานโค้ดปัจจุบัน

(ไม่บังคับ) เลือกไฟล์ที่จะไม่จัดทำดัชนี

โดยค่าเริ่มต้น การปรับแต่งโค้ดจะจัดทำดัชนีไฟล์โค้ดที่รองรับทั้งหมดในที่เก็บข้อมูลที่ระบุ

ในหลายกรณี คุณอาจมีไฟล์หรือซับต้นไม้ที่เฉพาะเจาะจงซึ่งไม่ต้องการให้จัดทำดัชนี เช่น

  • ข้อมูลที่ละเอียดอ่อนสูงที่มีการเข้าถึงแบบจำกัดภายในองค์กร
  • โค้ดเก่าหรือเลิกใช้งานแล้ว
  • รหัสชั่วคราวหรือรหัสที่สร้างขึ้นโดยอัตโนมัติ

หากต้องการป้องกันไม่ให้โค้ดที่คุณไม่ต้องการให้จัดทําดัชนีแสดง ให้ใช้รูปแบบสาขาเพื่อควบคุมการเข้าถึงดัชนีและใช้สาขาที่เสถียร เช่น main

หรือจะยกเว้นไฟล์จากดัชนีโดยสร้างไฟล์ .aiexclude ก็ได้

สร้างดัชนี

การปรับแต่งโค้ดอาศัยดัชนีเพื่อวิเคราะห์และแยกวิเคราะห์ที่เก็บข้อมูลเพื่อดูคำแนะนำและค้นหาการสร้างโค้ดได้เร็วขึ้น

gcloud Terraform

หากต้องการสร้างดัชนี ให้ใช้คำสั่ง gemini code-repository-indexes create ในสภาพแวดล้อมเชลล์

gcloud gemini code-repository-indexes create INDEX_NAME \
    --project=PROJECT_ID \
    --location=REGION
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 Terraform

หากต้องการสร้างกลุ่มที่เก็บข้อมูล ให้ใช้คำสั่ง 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"}]'
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 Cloud
  • INDEX_NAME: ชื่อดัชนีที่คุณสร้างในขั้นตอนก่อนหน้าเพื่อสร้างดัชนี
  • REPOSITORY_RESOURCE_NAME: ชื่อที่เก็บข้อมูลภายในการเชื่อมต่อ Developer Connect หากต้องการดูชื่อที่เก็บ ให้ไปที่หน้า Developer Connect ในคอนโซล Google Cloud และในแท็บที่เก็บ ให้มองหารหัสการเชื่อมต่อในคอลัมน์การเชื่อมต่อในตาราง หากต้องการคัดลอกชื่อทรัพยากร ให้คลิกเมนู more_vert เพื่อดูตัวเลือกเพิ่มเติม แล้วเลือกคัดลอกเส้นทางทรัพยากร
  • BRANCH_NAMES: ชื่อสาขาที่ต้องการจัดทำดัชนี เช่น main|dev

คุณยังสร้างกลุ่มที่เก็บซึ่งมีที่เก็บที่กําหนดไว้ในไฟล์ JSON (หรือ YAML) ในรูปแบบต่อไปนี้ได้ด้วย

JSONYAML
[
  {
      "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 ดังนี้

JSONYAML
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) ผ่าน Cloud Key Management Service ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ CMEK ได้ที่หัวข้อเข้ารหัสข้อมูลด้วยคีย์การเข้ารหัสที่จัดการโดยลูกค้า

มอบบทบาท IAM ให้กับกลุ่มที่เก็บในโปรเจ็กต์

คุณจะได้รับการแนะนำจากที่เก็บในดัชนีเท่านั้น ที่เก็บข้อมูลแต่ละแห่งจะอยู่ในกลุ่มที่เก็บข้อมูลอย่างน้อย 1 กลุ่ม หากต้องการเข้าถึงคำแนะนำ คุณต้องมอบหมายบทบาท IAM ของผู้ใช้กลุ่มที่เก็บข้อมูล Companion ของ Cloud AI (roles/cloudaicompanion.repositoryGroupsUser) ซึ่งมีสิทธิ์ IAM cloudaicompanion.repositoryGroups.user ที่จำเป็นให้กับกลุ่มที่เก็บข้อมูลด้วยวิธีใดวิธีหนึ่งต่อไปนี้

  • ให้สิทธิ์ผู้ใช้หลักในการเข้าถึงทั้งดัชนี
  • ให้สิทธิ์ผู้ใช้หลักเข้าถึงชุดย่อยของดัชนี

ให้สิทธิ์ผู้ใช้หลักในการเข้าถึงทั้งดัชนี

  1. หากต้องการเชื่อมโยงนโยบาย 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

  2. เมื่อได้รับข้อความแจ้งให้ระบุเงื่อนไข ให้ป้อน None

ให้สิทธิ์ผู้ใช้หลักเข้าถึงชุดย่อยของดัชนี

คุณสามารถสร้างกลุ่มที่เก็บได้หลายกลุ่มและมอบหมายบทบาท IAM ให้กับผู้ใช้หลัก IAM คนต่างๆ ได้

gcloud Terraform

หากต้องการตั้งค่านโยบาย 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

แทนที่ค่าต่อไปนี้

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

แทนที่ค่าต่อไปนี้

ตรวจสอบสถานะการจัดทําดัชนี

การจัดทําดัชนีเนื้อหาอาจใช้เวลาถึง 24 ชั่วโมง ทั้งนี้ขึ้นอยู่กับจํานวนพื้นที่เก็บข้อมูลที่คุณต้องการจัดทําดัชนีและขนาดของพื้นที่เก็บข้อมูล สำหรับที่เก็บขนาดใหญ่ การจัดทำดัชนีอาจใช้เวลานานกว่า การจัดทำดัชนีจะเกิดขึ้นทุก 24 ชั่วโมง โดยจะบันทึกการเปลี่ยนแปลงทั้งหมดที่ทำในที่เก็บ

  1. ค้นหาบันทึก indexing ดูข้อมูลเพิ่มเติมได้ที่ภาษาในการค้นหาการบันทึก

    คอนโซล gcloud
    1. ในคอนโซล Google Cloud ให้ไปที่Logs Explorer

      ไปที่เครื่องมือสำรวจบันทึก

    2. ใช้ตัวกรองชื่อบันทึกเพื่อดูบันทึก indexing

    หากต้องการค้นหาบันทึกการจัดทําดัชนี ให้ใช้คําสั่ง 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"
    
  2. ตรวจสอบสถานะการจัดทำดัชนีที่เกี่ยวข้อง เช่น สถานะต่อไปนี้

    • เริ่มต้นการจัดทำดัชนีที่เก็บ เช่น 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 คือที่เก็บข้อมูลที่คุณต้องการตรวจสอบ

  3. ตรวจสอบข้อผิดพลาดในการจัดทำดัชนีที่เกี่ยวข้อง เช่น ข้อผิดพลาดต่อไปนี้

    • ดึงข้อมูลที่เก็บไม่สำเร็จ
    • แสดงรายการไฟล์ที่เก็บไม่สำเร็จ
    • เรียกข้อมูลพื้นที่เก็บข้อมูลจากดัชนีไม่สำเร็จ
    • เรียกข้อมูลไฟล์จากดัชนีไม่สำเร็จ
    • ข้อผิดพลาดภายใน

ใช้การปรับแต่งโค้ด

เมื่อตั้งค่าการปรับแต่งโค้ดแล้ว ผู้ใช้จะเริ่มเห็นการเติมโค้ดให้สมบูรณ์และคำแนะนำในการสร้างโค้ด ซึ่งอาจอิงตามโค้ดส่วนตัวที่คุณได้จัดทำดัชนีไว้ นอกเหนือจากผลลัพธ์จากการรับรู้โค้ดทั้งหมด

ปิดการปรับแต่งโค้ด

  1. หากต้องการแสดงรายการกลุ่มที่เก็บข้อมูลทั้งหมดสำหรับดัชนีปัจจุบันในสภาพแวดล้อมเชลล์ ให้ใช้คำสั่ง 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 Cloud
    • PROJECT_ID: รหัสโปรเจ็กต์ Google Cloud ของคุณ
    • INDEX_NAME: ชื่อดัชนีที่คุณสร้างในขั้นตอนก่อนหน้าเพื่อสร้างดัชนี
  2. หากต้องการลบกลุ่มที่เก็บจากดัชนีปัจจุบัน ให้ใช้คำสั่ง 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. ทำขั้นตอนที่ 3 ซ้ำสำหรับกลุ่มที่เก็บข้อมูลแต่ละกลุ่มจนกว่าจะลบกลุ่มที่เก็บข้อมูลทั้งหมดออกจากดัชนี

  4. ไม่บังคับ: หากต้องการลบดัชนี ให้ใช้คำสั่ง gemini code-repository-indexes delete ในสภาพแวดล้อมเชลล์ ดังนี้

    gcloud gemini code-repository-indexes delete INDEX_NAME \
        --location=REGION \
        --project=PROJECT_ID
    

ขั้นตอนถัดไป