การปรับแต่งโค้ดด้วย Gemini Code Assist Enterprise

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

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

นอกจากนี้ เราจะพูดถึงวิธียกเว้นไฟล์ที่มีความละเอียดอ่อนหรือไม่เกี่ยวข้องจากการพิจารณาการปรับแต่งโค้ดด้วยไฟล์ .aiexclude

ข้อกำหนดเบื้องต้น

  • ความเข้าใจพื้นฐานเกี่ยวกับ Gemini Code Assist และสิทธิ์เข้าถึงโปรเจ็กต์ที่เปิดใช้
  • มีความรู้เกี่ยวกับภาษาการเขียนโค้ดที่รองรับสำหรับการปรับแต่งโค้ด
  • ความสามารถในการสร้างทรัพยากรใน us-central1 หรือ europe-west1 เนื่องจากต้องมีการเชื่อมต่อ Developer Connect ในสถานที่ตั้งเหล่านั้นเพื่อปรับแต่งโค้ด
  • Google Cloud CLI ที่ได้รับการตรวจสอบสิทธิ์และเป็นเวอร์ชันล่าสุด

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้การปรับแต่งโค้ดใน Gemini Code Assist Enterprise
  • กรณีการใช้งานหนึ่งในหลายๆ กรณีที่การปรับแต่งโค้ดช่วยให้ทีมของคุณประหยัดเวลาได้

สิ่งที่ต้องมี

  • โปรเจ็กต์ Google Cloud ที่เปิดใช้ Gemini Code Assist
  • ที่เก็บส่วนตัวเพื่อจัดทำดัชนีสำหรับคำขอปรับแต่ง
  • เวลาในการจัดทำดัชนีโค้ดสำหรับคำขอปรับแต่ง ขั้นตอนนี้อาจใช้เวลาถึง 24 ชั่วโมง
  • IDE ที่ติดตั้ง Gemini Code Assist

2. บริบท

หากต้องการลองปรับแต่งโค้ด คุณจะต้องมี 2 สิ่งต่อไปนี้

  1. สิทธิ์เข้าถึงโปรเจ็กต์ Google Cloud ที่เปิดใช้ Gemini
  2. และที่เก็บข้อมูลส่วนตัวเพื่อแจ้งคำตอบของ Gemini

การเปิดใช้ Gemini

ที่เก็บข้อมูลที่เหมาะสมที่สุดสำหรับ Gemini ในการจัดทำดัชนีควรมีโค้ดที่มักจะนำกลับมาใช้ซ้ำทั่วทั้งองค์กร ที่เก็บตัวอย่างที่ระบุไว้สำหรับโค้ดแล็บนี้มีเว็บเซอร์วิส Spring Boot มาตรฐาน พร้อมโฟลเดอร์ของออบเจ็กต์การโอนข้อมูล (DTO) ที่ตรงตามเกณฑ์นี้ เนื่องจากระบบจะสร้างคลาสที่คล้ายกันเพื่ออธิบายแต่ละเอนทิตีในฐานข้อมูลขณะที่ส่งไปยังเลเยอร์การนำเสนอ

3. (ไม่บังคับ) การตั้งค่าที่เก็บ

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

mkdir customization-starter
cd customization-starter
curl https://start.spring.io/starter.zip -d dependencies=web,lombok \
           -d javaVersion=21 \
           -d type=maven-project \
           -d bootVersion=3.3.4 -o cc-starter.zip
unzip cc-starter.zip
rm cc-starter.zip
pushd src/main/java/com/example/demo
mkdir dtos
touch dtos/LedgerDTO.java

เพิ่มโค้ดต่อไปนี้ลงในไฟล์ LedgerDTO

package com.example.demo.dtos;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

@Getter
@Setter
@Accessors(chain = true)
public class LedgerEntryDto {
    private Long id;
    private String accountName;
    private double amount;
    private String transactionType; 
    private String description;
    private java.util.Date transactionDate;
}

ซึ่งจะเพียงพอที่จะแสดงให้เห็นว่าระบบจะสร้างตัวช่วยเข้าถึงและฟังก์ชันอื่นๆ ที่ผู้ร่วมให้ข้อมูลในฐานโค้ดนี้คาดหวังว่าจะใช้ได้อย่างถูกต้องเมื่อเปิดใช้การปรับแต่งโค้ด

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

popd
gh auth login
git init
git add .
git commit -m "code customization starter"
git remote add origin git@github.com:<YOUR_GITHUB_ID>/customization-starter.git
git branch -M main
git push -u origin main

4. การยกเว้นไฟล์

ก่อนให้สิทธิ์เข้าถึงที่เก็บส่วนตัวแก่ Gemini คุณควรทำความเข้าใจวิธียกเว้นไฟล์ที่ไม่เกี่ยวข้องหรือไฟล์ที่มีความละเอียดอ่อนซึ่งทีมของคุณไม่ต้องการให้มีการจัดทำดัชนี ระบบจะใช้.aiexcludeไฟล์เพื่อดำเนินการนี้ ซึ่งคล้ายกับ.gitignore แต่มีข้อแตกต่างที่สำคัญบางประการ ดังนี้

  • ไฟล์ .aiexclude ที่ว่างเปล่าจะบล็อกไฟล์ทั้งหมดในไดเรกทอรีและไดเรกทอรีย่อยทั้งหมด
    • ซึ่งจะเหมือนกับไฟล์ที่มี **/*
  • ไฟล์ .aiexclude ไม่รองรับการปฏิเสธ (การนำหน้าด้วยรูปแบบ !)

ด้วยเหตุนี้ ให้ลองพิจารณาประเภทไฟล์หรือไดเรกทอรีที่ทีมของคุณต้องการยกเว้น และแสดงรายการแต่ละรายการในบรรทัดแยกกัน

#Block all files with .key extensions
*.key

#Block all files under sensitive/dir
my/sensitive/dir/

#Block all .key files under sensitive/dir
my/sensitive/dir/ /.key

5. กำหนดค่า Developer Connect

Developer Connect เป็นบริการที่ช่วยให้การเชื่อมต่อและลิงก์ไปยังที่เก็บโค้ดส่วนตัวใน GitHub หรือ GitLab เป็นไปได้ นี่คือกลไกที่ช่วยให้ Gemini Code Assist เชื่อมต่อกับที่เก็บข้อมูลส่วนตัวได้อย่างปลอดภัย เพื่อสร้างดัชนีที่จะใช้ปรับปรุงคำตอบ

แนวคิดทั้ง 2 นี้มีประโยชน์ในการทำความเข้าใจวิธีที่ Developer Connect ให้สิทธิ์เข้าถึงโค้ดของคุณอย่างปลอดภัย

การเชื่อมต่อ

  • แสดงถึงการเชื่อมต่อระหว่าง Google กับแพลตฟอร์มการจัดการซอร์สโค้ดของบุคคลที่สาม

ลิงก์

  • แสดงถึงการเชื่อมโยงกับที่เก็บซอร์สโค้ดแต่ละรายการที่คุณเลือกภายในแพลตฟอร์มการจัดการซอร์สโค้ดที่เชื่อมต่อ

เมื่อทราบแนวคิดดังกล่าวแล้ว ให้เริ่มต้นด้วยการไปที่หน้าDeveloper Connect เพื่อเปิดใช้ API สำหรับโปรเจ็กต์

การเปิดใช้ Developer Connect

จากนั้นทำตามขั้นตอนที่เหมาะสมเพื่อสร้างการเชื่อมต่อและลิงก์สำหรับ GitHub หรือ GitLab ระบบจะสร้างทั้ง 2 แหล่งข้อมูลในระหว่างกระบวนการของวิซาร์ด

สร้างการเชื่อมต่อและลิงก์

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

6. สร้างและเชื่อมต่อกับดัชนี

การปรับแต่งโค้ดจะขึ้นอยู่กับดัชนีเพื่อให้แยกวิเคราะห์และวิเคราะห์ที่เก็บได้อย่างรวดเร็ว จดชื่อดัชนี (INDEX_NAME) ที่คุณใช้ เนื่องจากคุณจะต้องใช้ในขั้นตอนถัดไป

หากต้องการสร้างดัชนี ให้เรียกใช้คำสั่งต่อไปนี้

gcloud gemini code-repository-indexes create <INDEX_NAME> \
    --project=<YOUR_PROJECT_ID> \
    --location=<REGION>

หากพบInvalid choice: ...ข้อผิดพลาด โปรดตรวจสอบว่า Google Cloud CLI เป็นเวอร์ชันล่าสุดโดยเรียกใช้คำสั่งต่อไปนี้

gcloud components update

จากนั้นอนุญาตให้เข้าถึงดัชนีโดยสร้างกลุ่มที่เก็บข้อมูล

gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
    --project=PROJECT_ID \
    --location=REGION \
    --code-repository-index=INDEX_NAME \
    --repositories='[{"resource": "projects/PROJECT_ID/locations/REGION/connections/INDEX_CONNECTION/gitRepositoryLinks/REPOSITORY", "branch_pattern": "BRANCH_NAMES"}]'

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

  • REPOSITORY_GROUP: ชื่อของกลุ่มที่เก็บที่คุณกำลังจะสร้าง
  • PROJECT_ID: รหัสโปรเจ็กต์ Google Cloud
  • INDEX_NAME: ชื่อดัชนีที่คุณกําหนดในขั้นตอนก่อนหน้าเพื่อสร้างดัชนี
  • REGION: ภูมิภาคที่รองรับจากรายการในเอกสารประกอบที่คุณกําหนดค่าใน Developer Connect ในโปรเจ็กต์ Google Cloud
  • INDEX_CONNECTION: การเชื่อมต่อของดัชนีที่คุณสร้างในขั้นตอนก่อนหน้าเพื่อสร้างดัชนี
  • REPOSITORY: ที่เก็บที่คุณต้องการจัดทำดัชนี คุณต้องระบุที่เก็บอย่างน้อย 1 รายการ และระบุที่เก็บหลายรายการได้ตามต้องการ
  • BRANCH_NAMES: ชื่อของสาขาที่คุณต้องการจัดทำดัชนี เช่น main หรือ dev

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

สถานะการจัดทำดัชนีที่ค้นหาได้

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

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='PRINCIPAL' \
    --role='roles/cloudaicompanion.repositoryGroupsUser'

7. สร้างโค้ดที่ปรับแต่งเอง

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

ตัวอย่างที่สร้างขึ้น

8. บทสรุป

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

คุณสามารถดูเอกสารและสื่ออื่นๆ เหล่านี้เพื่ออ่านเพิ่มเติม รวมถึงรับการสนับสนุนในเรื่องต่างๆ เช่น การตั้งค่าบทบาท IAM