১. শুরু করার আগে
এই কোডল্যাবটি দেখায় কিভাবে আপনার ব্যক্তিগত রিপোজিটরিগুলোর জন্য বিশেষভাবে তৈরি কোড কাস্টমাইজেশনের পরামর্শ দেওয়ার জন্য জেমিনি কোড অ্যাসিস্টকে প্রস্তুত করতে হয়। এটি কোড অ্যাসিস্টের ফলাফলকে উল্লেখযোগ্যভাবে আরও বেশি কার্যকর করে তুলতে পারে, বিশেষ করে সেইসব টিমের জন্য যাদের প্রায়শই পুনরাবৃত্ত একই ধরনের কাজের জন্য নির্দিষ্ট নিয়মকানুন রয়েছে। নিশ্চিন্ত থাকুন যে, এই ফিচারের জন্য জেমিনিকে আপনার ব্যক্তিগত কোডবেস ইনডেক্স করার অনুমতি দিলেও, এটি আপনার ব্যক্তিগত কোডের উপর ব্যাপকভাবে প্রশিক্ষণ নিতে সক্ষম হয় না।
কিভাবে একটি .aiexclude ফাইল ব্যবহার করে কোড কাস্টমাইজেশনের জন্য সংবেদনশীল বা অপ্রাসঙ্গিক ফাইল বাদ দেওয়া যায়, সে বিষয়েও আমরা আলোচনা করব।
পূর্বশর্ত
- জেমিনি কোড অ্যাসিস্ট সম্পর্কে প্রাথমিক ধারণা এবং এমন একটি প্রজেক্টে অ্যাক্সেস যেখানে এটি সক্রিয় করা আছে।
- কোড কাস্টমাইজেশনের জন্য সমর্থিত কোডিং ভাষার সাথে পরিচিতি
-
us-central1বাeurope-west1এ রিসোর্স তৈরি করার ক্ষমতা, কারণ কোড কাস্টমাইজেশনের জন্য ঐসব লোকেশনে ডেভেলপার কানেক্ট কানেকশন প্রয়োজন। - একটি হালনাগাদ, প্রমাণীকৃত গুগল ক্লাউড সিএলআই
আপনি যা শিখবেন
- জেমিনি কোড অ্যাসিস্ট এন্টারপ্রাইজে কোড কাস্টমাইজেশন কীভাবে ব্যবহার করবেন
- এমন অনেক ব্যবহারের ক্ষেত্রগুলির মধ্যে এটি একটি, যেখানে কোড কাস্টমাইজেশন আপনার টিমের সময় বাঁচাতে পারে।
আপনার যা প্রয়োজন
- একটি গুগল ক্লাউড প্রজেক্ট যা জেমিনি কোড অ্যাসিস্ট দ্বারা সক্ষম করা হয়েছে
- কাস্টমাইজেশন অনুরোধের জন্য সূচীকরণের একটি ব্যক্তিগত সংগ্রহস্থল
- কাস্টমাইজেশন অনুরোধের জন্য কোড ইন্ডেক্স করতে সময় লাগছে। এতে ২৪ ঘণ্টা পর্যন্ত সময় লাগতে পারে।
- Gemini Code Assist ইনস্টল করা একটি IDE
২. প্রেক্ষাপট
কোড কাস্টমাইজেশন পরীক্ষা করার জন্য দুটি জিনিস প্রয়োজন:
- জেমিনি সক্রিয় করা একটি গুগল ক্লাউড প্রকল্পে অ্যাক্সেস
- এবং জেমিনির প্রতিক্রিয়া জানানোর জন্য একটি ব্যক্তিগত সংগ্রহস্থল।

জেমিনির ইন্ডেক্স করার জন্য সেরা ক্যান্ডিডেট রিপোজিটরিগুলোতে এমন কোড থাকবে যা আপনার প্রতিষ্ঠান জুড়ে প্রায়শই পুনঃব্যবহৃত হয়। এই কোডল্যাবের জন্য প্রদত্ত নমুনা রিপোজিটরিটিতে একটি স্ট্যান্ডার্ড স্প্রিং বুট ওয়েব সার্ভিস রয়েছে, যার সাথে ডেটা ট্রান্সফার অবজেক্টস-এর একটি ফোল্ডার আছে যা এই মানদণ্ড পূরণ করে, কারণ একটি ডাটাবেসের প্রতিটি এনটিটিকে প্রেজেন্টেশন লেয়ারে স্থানান্তরিত করার সময় সেটির বর্ণনা দেওয়ার জন্য একটি অনুরূপ ক্লাস তৈরি করা হয়।
৩. (ঐচ্ছিক) রিপোজিটরি সেটআপ
আপনি যদি আপনার নিজস্ব ব্যক্তিগত রিপোজিটরির পরিবর্তে একটি উদাহরণ রিপোজিটরি ব্যবহার করতে চান, তাহলে আপনার পছন্দের টার্মিনাল এডিটর বা ক্লাউড শেল- এ নিম্নলিখিত ধাপগুলো অনুসরণ করতে পারেন। কোড কাস্টমাইজেশন বাস্তবে কেমন কাজ করে তা আমাদের দেখানোর জন্য, প্রথমে একটি ব্যক্তিগত রিপোজিটরি তৈরি করুন:
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
৪. ফাইল বাদ দেওয়া
আপনার ব্যক্তিগত রিপোজিটরিগুলোতে জেমিনিকে অ্যাক্সেস দেওয়ার আগে, অপ্রাসঙ্গিক বা সংবেদনশীল ফাইলগুলোকে কীভাবে বাদ দিতে হয় তা বোঝা জরুরি, যেগুলো আপনার টিম ইনডেক্স করতে চায় না। এই কাজটি করার জন্য একটি .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
৫. ডেভেলপার কানেক্ট কনফিগার করুন
ডেভেলপার কানেক্ট হলো এমন একটি পরিষেবা যা গিটহাব বা গিটল্যাবে থাকা আপনার ব্যক্তিগত কোড রিপোজিটরিগুলোর সাথে সংযোগ এবং লিঙ্ক স্থাপন সহজ করে। এই পদ্ধতির মাধ্যমেই জেমিনি কোড অ্যাসিস্ট আপনার ব্যক্তিগত রিপোজিটরিগুলোর সাথে নিরাপদে সংযোগ স্থাপন করে এমন একটি ইনডেক্স তৈরি করতে পারে, যা রেসপন্স উন্নত করার জন্য ব্যবহৃত হবে।
ডেভেলপার কানেক্ট কীভাবে নিরাপদে আপনার কোডে অ্যাক্সেস প্রদান করে, তা বুঝতে এই দুটি ধারণা সহায়ক:
সংযোগ
- এটি গুগল এবং তৃতীয় পক্ষের সোর্স কোড ম্যানেজমেন্ট প্ল্যাটফর্মের মধ্যে সংযোগ স্থাপনকারী হিসেবে কাজ করে।
লিঙ্ক
- এটি একটি সংযুক্ত সোর্স কোড ম্যানেজমেন্ট প্ল্যাটফর্মের মধ্যে আপনার নির্বাচিত একটি স্বতন্ত্র সোর্স কোড রিপোজিটরির সাথে সংযোগকে বোঝায়।
এই ধারণাগুলো মাথায় রেখে, আপনার প্রোজেক্টের জন্য API সক্রিয় করতে প্রথমে ডেভেলপার কানেক্ট পেজে যান।

এরপর, GitHub বা GitLab-এর জন্য একটি কানেকশন ও লিঙ্ক তৈরি করতে যথাযথ ধাপগুলো অনুসরণ করুন। উইজার্ড প্রক্রিয়ার সময় উভয় রিসোর্সই তৈরি হয়ে যাবে।

জেমিনির কোড কাস্টমাইজেশন ফিচারটি তার প্রতিক্রিয়ায় যে প্রতিটি রিপোজিটরি বিবেচনা করবে বলে আপনি চান, সেগুলোর জন্য একটি লিঙ্ক তৈরি করতে এই ধাপগুলো পুনরাবৃত্তি করুন। একাধিক রিপোজিটরি একই প্ল্যাটফর্ম থেকে এলে আপনি বিদ্যমান সংযোগটি পুনরায় ব্যবহার করতে পারেন।
৬. সূচী তৈরি করুন এবং সংযুক্ত করুন
আপনার রিপোজিটরিগুলো দ্রুত পার্স ও বিশ্লেষণ করার জন্য, কোড কাস্টমাইজেশন একটি ইনডেক্স (Index) -এর উপর নির্ভর করে। আপনি যে 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: আপনার গুগল ক্লাউড প্রজেক্ট আইডি।
- INDEX_NAME: পূর্ববর্তী ধাপে ইনডেক্স তৈরির জন্য আপনি যে ইনডেক্সটি নির্ধারণ করেছিলেন তার নাম।
- অঞ্চল: ডকুমেন্টেশনে দেওয়া তালিকা থেকে একটি সমর্থিত অঞ্চল, যা আপনি আপনার গুগল ক্লাউড প্রজেক্টের ডেভেলপার কানেক্ট-এ কনফিগার করেছেন।
- INDEX_CONNECTION: ইনডেক্স তৈরির জন্য পূর্ববর্তী ধাপে আপনার তৈরি করা ইনডেক্সের সংযোগ।
- রিপোজিটরি: যে রিপোজিটরিটি আপনি ইনডেক্স করতে চান। আপনাকে অবশ্যই অন্তত একটি রিপোজিটরি নির্দিষ্ট করতে হবে এবং প্রয়োজন অনুযায়ী একাধিক রিপোজিটরিও নির্দিষ্ট করতে পারেন।
- BRANCH_NAMES: যে শাখাগুলোকে আপনি সূচীবদ্ধ করতে চান, সেগুলোর নাম, যেমন main বা dev।
আপনি কতগুলো রিপোজিটরি ইন্ডেক্স করতে চান এবং সেগুলোর আকারের উপর নির্ভর করে, কন্টেন্ট ইন্ডেক্স করতে ২৪ ঘন্টা পর্যন্ত সময় লাগতে পারে। প্রতি ২৪ ঘন্টায় একবার ইন্ডেক্সিং সম্পন্ন হয় এবং রিপোজিটরিতে করা সমস্ত পরিবর্তন এতে অন্তর্ভুক্ত থাকে। আপনার ইন্ডেক্স তৈরির অবস্থা পরীক্ষা করতে আপনি এই ধাপগুলো অনুসরণ করতে পারেন:

এবং অবশেষে, কাঙ্ক্ষিত প্রিন্সিপালকে গ্রুপে অ্যাক্সেস প্রদান করুন:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='PRINCIPAL' \
--role='roles/cloudaicompanion.repositoryGroupsUser'
৭. কাস্টমাইজড কোড তৈরি করুন
এখন যেহেতু জেমিনি আপনার ব্যক্তিগত রিপোজিটরির কোডে অ্যাক্সেস পেয়েছে, আমরা আশা করতে পারি যে আমাদের কোড কমপ্লিশন রিকোয়েস্টগুলোতে প্রাসঙ্গিক কোড স্নিপেটগুলো দেখা যাবে। আমাদের উদাহরণ রিপোজিটরিতে, আমরা আমাদের DTO ফোল্ডারে যেতে পারি, এবং যখন আমরা একটি নতুন অবজেক্টকে উপস্থাপন করার জন্য একটি নতুন ক্লাস তৈরি করব, তখন টাইপ করার সাথে সাথেই আপনি প্রত্যাশিত অ্যানোটেশনগুলো দেখতে পাবেন:

৮. উপসংহার
এই কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন! আপনি জেমিনি কোড অ্যাসিস্ট-এর কোড কাস্টমাইজেশন ফিচারটি ব্যবহার করতে শিখেছেন। এখন যেহেতু আপনার প্রতিক্রিয়াগুলো আপনার টিমের নির্দিষ্ট, ব্যক্তিগত কোডবেস অনুযায়ী সাজানো যাবে, তাই প্রতিটি প্রম্পট এবং কোড কমপ্লিশন আপনার টিমের ডেভেলপারদের কাছে আরও বেশি মূল্যবান হবে।
আরও পড়ার জন্য এবং IAM রোল সেট আপ করার মতো বিষয়গুলিতে সহায়তার জন্য এই অন্যান্য নথি ও উপকরণগুলি নির্দ্বিধায় পর্যালোচনা করুন: