การปรับแต่งโค้ดด้วย 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
  • Use Case 1 ในหลายกรณีซึ่งการปรับแต่งโค้ดช่วยประหยัดเวลาให้กับทีมได้

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

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

2. บริบท

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

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

การเปิดใช้ Gemini

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

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: ชื่อของดัชนีที่คุณกำหนดในขั้นตอนก่อนหน้าเพื่อสร้างดัชนี
  • ภูมิภาค: ภูมิภาคที่รองรับจากรายการในเอกสารประกอบที่คุณได้กำหนดค่าใน 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 แล้ว ตอนนี้คุณสามารถปรับแต่งคำตอบให้เหมาะกับโค้ดเบสส่วนตัวของทีมได้ พรอมต์และการเติมโค้ดแต่ละรายการจึงมีคุณค่าต่อนักพัฒนาซอฟต์แวร์ในทีมมากขึ้น

โปรดอ่านเอกสารและเนื้อหาอื่นๆ เหล่านี้เพื่อดูข้อมูลเพิ่มเติมและรับการสนับสนุนเกี่ยวกับเรื่องต่างๆ เช่น การตั้งค่าบทบาท IAM