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

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

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

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

แนวทางปฏิบัติแนะนำคือตรวจสอบว่าคุณเชื่อมต่อที่เก็บซึ่งมีลักษณะต่อไปนี้

  • มีโค้ดที่มีสไตล์หรือโครงสร้างคล้ายกับโค้ดที่คุณต้องการให้ นักพัฒนาแอปเขียน
  • มีไลบรารีหรือ 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 Cloud
  • INDEX_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 แก่กลุ่มที่เก็บโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้

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

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

  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

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

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

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

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

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

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

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

    คอนโซล

    1. ไปที่Logs Explorer ในคอนโซล Google API

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

    2. ใช้ตัวกรองชื่อบันทึกเพื่อดูบันทึก 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"
    
  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
    

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