জেমিনি কোড সহায়তা কোড কাস্টমাইজেশন কনফিগার করুন

এই ডকুমেন্টটিতে বর্ণনা করা হয়েছে কীভাবে আপনার ব্যক্তিগত কোড রিপোজিটরিগুলোর সাথে Gemini Code Assist সংযোগ করে Google Cloud কনসোলে, Google Cloud CLI-এর মাধ্যমে, অথবা Terraform ব্যবহার করে Gemini Code Assist কোড কাস্টমাইজেশন সেট আপ করতে হয়। Gemini Code Assist-এর কোড কাস্টমাইজেশন ফিচারটি আপনাকে কোডের সুপারিশ গ্রহণ করতে দেয়, যা আপনার প্রতিষ্ঠানের অভ্যন্তরীণ লাইব্রেরি, ব্যক্তিগত API এবং কোডিং শৈলীর উপর ভিত্তি করে তৈরি হয়।

শুরু করার আগে

  1. এন্টারপ্রাইজ সাবস্ক্রিপশনের মাধ্যমে জেমিনি কোড অ্যাসিস্ট সেট আপ করুন

  2. সাবস্ক্রিপশনটির মালিকানাধীন প্রজেক্টটিতে আপনার নিম্নলিখিত আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট রোলগুলো আছে কিনা তা যাচাই করুন:

    • কোড রিপোজিটরি ইনডেক্স অ্যাডমিন ( roles/cloudaicompanion.codeRepositoryIndexesAdmin )
    • গুগল ক্লাউড ব্যবহারকারীর জন্য জেমিনি ( roles/cloudaicompanion.user )
  3. ব্যবহারকারী অ্যাকাউন্ট তৈরি বা কনফিগার করুন। আপনার প্রতিষ্ঠানের প্রত্যেক ডেভেলপার যিনি Gemini Code Assist ব্যবহার করছেন, তার Google Cloud-এ একটি ব্যবহারকারী পরিচয় থাকতে হবে, যেটির আপনার Google Cloud প্রজেক্ট অ্যাক্সেস করার অনুমতি আছে। আরও তথ্যের জন্য, Google Cloud কনসোলে ভূমিকা মঞ্জুর করুন (Grant roles) দেখুন। যাচাই করুন যে প্রত্যেক ব্যবহারকারীর নিম্নলিখিত ভূমিকাগুলো আছে:

  4. কোড কাস্টমাইজেশন ফিচারটি আপনার ব্যক্তিগত রিপোজিটরিগুলো অ্যাক্সেস ও ইন্ডেক্স করার জন্য ডেভেলপার কানেক্ট ব্যবহার করে। নিশ্চিত করুন যে, আপনার ডেভেলপার কানেক্ট রিপোজিটরি কানেকশনটি যে ডেভেলপার কানেক্ট রিজিয়নে অবস্থিত, সেটিও কোড কাস্টমাইজেশনের জন্য একটি সমর্থিত স্থান। যদি ডেভেলপার কানেক্ট কানেকশনটি কোনো অসমর্থিত রিজিয়নে থাকে, তবে কোড কাস্টমাইজেশন ফিচারটি ব্যবহার করা যাবে না। সমর্থিত রিজিয়নগুলোর তালিকার জন্য, কোড কাস্টমাইজেশন সীমাবদ্ধতা দেখুন।

কোন রিপোজিটরিগুলো ইনডেক্স করা হবে তা বেছে নিন

সর্বোত্তম অনুশীলন হিসেবে, আপনার এমন রিপোজিটরিগুলোকে ইনডেক্স করা উচিত যেগুলোর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • এমন কোড যা আপনি আপনার ডেভেলপারদের দিয়ে লেখাতে চান, তার অনুরূপ শৈলী বা কাঠামোর।
  • ব্যক্তিগত লাইব্রেরি বা এপিআই, যেগুলোকে আপনি আপনার বর্তমান কোডবেস থেকে কল করতে চান।

ঐচ্ছিক: কোন ফাইলগুলো সূচীবদ্ধ করা হবে না তা বেছে নিন।

ডিফল্টরূপে, কোড কাস্টমাইজেশন আপনার নির্দিষ্ট রিপোজিটরিগুলোতে থাকা সমস্ত সমর্থিত কোড ফাইলকে সূচীবদ্ধ করে।

যে কোড আপনি ইনডেক্স করতে চান না, তার প্রকাশ রোধ করতে আপনি ব্রাঞ্চ প্যাটার্ন ব্যবহার করে আপনার ইনডেক্সে অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন এবং main এর মতো একটি স্থিতিশীল ব্রাঞ্চ ব্যবহার করতে পারেন।

বিকল্পভাবে, আপনি একটি .aiexclude ফাইল তৈরি করেও ইনডেক্স থেকে ফাইল বাদ দিতে পারেন।

জেমিনি কোড অ্যাসিস্ট কোড কাস্টমাইজেশন কনফিগার করুন

নিম্নলিখিত বিকল্পগুলির মধ্যে একটি নির্বাচন করুন:

কনসোল

  1. গুগল ক্লাউড কনসোলে, কোড কাস্টমাইজেশন পৃষ্ঠায় যান।

    জেমিনি কোড অ্যাসিস্টের জন্য কোড কাস্টমাইজেশনে যান

    জেমিনি কোড অ্যাসিস্ট-এর জন্য কোড কাস্টমাইজেশন পেজটি লোড হয়।

  2. একটি ইনডেক্স তৈরি করুন। দ্রুত কোড তৈরির পরামর্শ ও অনুসন্ধানের জন্য আপনার রিপোজিটরি বিশ্লেষণ ও পার্স করতে কোড কাস্টমাইজেশন একটি ইনডেক্সের উপর নির্ভর করে।

    1. তৈরি করুন- এ ক্লিক করুন এবং সূচকের বিবরণ কনফিগার করুন:

      • আপনার ক্লাউড প্রজেক্টে ডেভেলপার কানেক্ট-এ কনফিগার করা অঞ্চলটি নির্বাচন করুন।
      • আপনার সূচিপত্রের জন্য একটি নাম লিখুন। আপনার সূচিপত্রের নামটি লিখে রাখুন। এই নথির বিভিন্ন ধাপে আপনার এটি প্রয়োজন হবে।
    2. তৈরি করুন- এ ক্লিক করুন।

    ইনডেক্স তৈরি হতে সাধারণত ৩০ মিনিট সময় লাগে, তবে এক ঘণ্টা পর্যন্তও লাগতে পারে। ইনডেক্সিং সম্পন্ন হলে, আপনি গুগল ক্লাউড কনসোলে একটি নোটিফিকেশন পাবেন।

    গুগল প্রতিটি প্রকল্প এবং সংস্থার জন্য কোড রিপোজিটরি ইনডেক্সের সংখ্যা একটিতে সীমাবদ্ধ করে।

  3. রিপোজিটরি গ্রুপ ব্যবহার করে আপনার ইনডেক্সে অ্যাক্সেস নিয়ন্ত্রণ করুন।

    একটি রিপোজিটরি গ্রুপ হলো ইনডেক্সিং কনফিগারেশনের একটি ধারক, যার মধ্যে রিপোজিটরি এবং তাদের ব্রাঞ্চ প্যাটার্ন অন্তর্ভুক্ত থাকে। রিপোজিটরি গ্রুপগুলো সূক্ষ্ম IAM নিয়ন্ত্রণের জন্য ডিজাইন করা হয়েছে, যা ডেভেলপারদের সেই গ্রুপগুলো থেকে ইনডেক্স করা ডেটাতে অ্যাক্সেস দেয়, যেখানে তাদের cloudaicompanion.repositoryGroups.use পারমিশন থাকে।

    রিপোজিটরি গ্রুপগুলিতে একই প্রজেক্ট ও লোকেশনের ডেভেলপার কানেক্ট রিপোজিটরি বা লিঙ্ক অন্তর্ভুক্ত থাকে।

  4. Gemini Code Assist-এর কোড কাস্টমাইজেশন পৃষ্ঠায়, 'Add repositories'-এ ক্লিক করুন এবং তারপরে 'Add source repositories' নির্বাচন করুন।

    পূর্ববর্তী ধাপে ইনডেক্স তৈরির জন্য আপনি যে অঞ্চলটি কনফিগার করেছিলেন, সেই অঞ্চলের জন্য ডেভেলপার কানেক্ট-এ বিদ্যমান রিপোজিটরিগুলোর একটি তালিকা প্রদর্শিত হয়।

    রিপোজিটরি গ্রুপে নতুন রিপোজিটরি যোগ করতে হলে, ‘লিঙ্ক রিপোজিটরি’ (Link repository) -তে ক্লিক করুন এবং গুগল ক্লাউড কনসোলের ধাপগুলো অনুসরণ করুন।

    এছাড়াও, নতুন ব্রাঞ্চ যোগ করার জন্য আপনি এক বা একাধিক রিপোজিটরি নির্বাচন করে সম্পাদনা করতে পারেন।

  5. যে রিপোজিটরি গ্রুপে আপনি নতুন রিপোজিটরি যোগ করতে চান, সেটি নির্বাচন করুন। বিকল্পভাবে, একটি নতুন রিপোজিটরি গ্রুপ তৈরি ও কনফিগার করতে ‘Create a new repository group’-এ ক্লিক করুন।

  6. নির্বাচিত রিপোজিটরিগুলোর ইন্ডেক্সিং শুরু করতে, ইন্ডেক্স-এ ক্লিক করুন।

    রিপোজিটরিগুলোর আকারের ওপর নির্ভর করে ইনডেক্সিং-এর সময় পরিবর্তিত হয়।

সিএলআই

  1. যাচাই করুন যে আপনি ডেভেলপার কানেক্ট কনফিগার করেছেন এবং আপনার রিপোজিটরিতে সংযুক্ত হয়েছেন:
  2. শেল পরিবেশে, gcloud- এর ইনস্টল করা সমস্ত উপাদান সর্বশেষ সংস্করণে আপডেট হয়েছে কিনা তা যাচাই করতে gcloud components update কমান্ডটি চালান। এই ধাপের জন্য, আপনি gcloud ইনস্টল ও ইনিশিয়ালাইজ করতে পারেন, অথবা ক্লাউড শেল এডিটর (Cloud Shell Editor ) ব্যবহার করতে পারেন।

    gcloud components update
    
  3. একটি ইনডেক্স তৈরি করুন। দ্রুত কোড তৈরির পরামর্শ ও অনুসন্ধানের জন্য আপনার রিপোজিটরি বিশ্লেষণ ও পার্স করতে কোড কাস্টমাইজেশন একটি ইনডেক্সের উপর নির্ভর করে।

    1. শেল পরিবেশে ইনডেক্স তৈরি করতে, gemini code-repository-indexes create কমান্ডটি ব্যবহার করুন:

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

      নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

      • INDEX_NAME : আপনার ইনডেক্সের নাম। গুরুত্বপূর্ণ : আপনার ইনডেক্সের নামটি লিখে রাখুন। এই ডকুমেন্টের বিভিন্ন ধাপে আপনার এটি প্রয়োজন হবে।
      • PROJECT_ID : আপনার গুগল ক্লাউড প্রজেক্ট আইডি।
      • REGION : আপনার ক্লাউড প্রজেক্টের ডেভেলপার কানেক্ট-এ যে অঞ্চলটি কনফিগার করা আছে। কমান্ডগুলো সফলভাবে কাজ করার জন্য, আপনাকে অবশ্যই একটি সমর্থিত অঞ্চল নির্দিষ্ট করতে হবে।

      ইনডেক্স তৈরি হতে সাধারণত ৩০ মিনিট সময় লাগে, তবে এক ঘণ্টা পর্যন্তও লাগতে পারে।

      গুগল প্রতিটি প্রকল্প এবং সংস্থার জন্য কোড রিপোজিটরি ইনডেক্সের সংখ্যা একটিতে সীমাবদ্ধ করে।

  4. রিপোজিটরি গ্রুপ ব্যবহার করে আপনার ইনডেক্সে অ্যাক্সেস নিয়ন্ত্রণ করুন। একটি রিপোজিটরি গ্রুপ হলো ইনডেক্সিং কনফিগারেশনের জন্য একটি কন্টেইনার, যার মধ্যে রিপোজিটরি এবং তাদের ব্রাঞ্চ প্যাটার্ন অন্তর্ভুক্ত থাকে। রিপোজিটরি গ্রুপগুলো সূক্ষ্ম IAM নিয়ন্ত্রণের জন্য ডিজাইন করা হয়েছে, যা ডেভেলপারদের সেই গ্রুপগুলো থেকে ইনডেক্স করা ডেটাতে অ্যাক্সেস দেয়, যেখানে তাদের cloudaicompanion.repositoryGroups.use পারমিশন থাকে।

    রিপোজিটরি গ্রুপগুলিতে একই প্রজেক্ট ও লোকেশনের ডেভেলপার কানেক্ট রিপোজিটরি বা লিঙ্ক অন্তর্ভুক্ত থাকে।

    প্রশাসকগণ নিম্নলিখিত কাজগুলো সম্পাদন করেন:

    • কোড রিপোজিটরি ইনডেক্স রিসোর্সটি তৈরি করুন।
    • একই প্রজেক্ট ও লোকেশনে একটি নতুন ডেভেলপার কানেক্ট কানেকশন কনফিগার করুন।
    • সংযোগে গিট রিপোজিটরিগুলো লিঙ্ক করুন।
    • লিঙ্কগুলোর রিসোর্স নাম নিন, প্রতিটি লিঙ্কের জন্য ইনডেক্স করার জন্য ব্রাঞ্চ প্যাটার্ন বেছে নিন এবং সেটিকে এক বা একাধিক রিপোজিটরি গ্রুপে রাখুন।

    শেল পরিবেশে একটি রিপোজিটরি গ্রুপ তৈরি করতে, 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"}]'
    

    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

    • REPOSITORY_GROUP : রিপোজিটরি গ্রুপের নাম, যেমন default
    • REPOSITORY_RESOURCE_NAME : ডেভেলপার কানেক্ট কানেকশনের ভেতরের রিপোজিটরির নাম। রিপোজিটরির নামটি খুঁজে পেতে, গুগল ক্লাউড কনসোলে গিট রিপোজিটরি পেজে যান এবং রিপোজিটরি ট্যাবে টেবিলের কানেকশন কলামের নিচে কানেকশন আইডিটি খুঁজুন। রিসোর্স নামটি কপি করতে, আরও অপশনের জন্য 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) ব্যবহার করে আপনার ডেটা এনক্রিপ্ট ও নিয়ন্ত্রণ করতে পারেন। CMEK ব্যবহার সম্পর্কে আরও জানতে, “কাস্টমার-ম্যানেজড এনক্রিপশন কী দিয়ে ডেটা এনক্রিপ্ট করুন” দেখুন।

  5. একটি প্রোজেক্টে রিপোজিটরি গ্রুপকে IAM রোল প্রদান করুন।

    আপনি শুধুমাত্র ইনডেক্সে থাকা রিপোজিটরিগুলো থেকেই সাজেশন পাবেন। প্রতিটি রিপোজিটরি এক বা একাধিক রিপোজিটরি গ্রুপের অন্তর্ভুক্ত। সাজেশনগুলো অ্যাক্সেস করার জন্য, আপনাকে অবশ্যই নিম্নলিখিত উপায়গুলোর মধ্যে যেকোনো একটির মাধ্যমে রিপোজিটরি গ্রুপটিকে ক্লাউড এআই কম্প্যানিয়ন রিপোজিটরি গ্রুপস ইউজার আইএএম রোল ( roles/cloudaicompanion.repositoryGroupsUser ) প্রদান করতে হবে—যেটিতে প্রয়োজনীয় cloudaicompanion.repositoryGroups.user আইএএম পারমিশনটি থাকে।

    • অধ্যক্ষদের সম্পূর্ণ সূচিপত্রটি দেখার অনুমতি দিন।
    • প্রধানদেরকে সূচিপত্রের একটি উপসেটে প্রবেশাধিকার প্রদান করুন।

    সম্পূর্ণ সূচী

    1. শেল পরিবেশে, কোনো প্রজেক্টের জন্য একটি IAM পলিসি বাইন্ড করতে, projects add-iam-policy-binding কমান্ডটি ব্যবহার করুন:

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

      নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

      • PRINCIPAL : যে প্রিন্সিপালের অ্যাক্সেস প্রয়োজন তার ইমেল ঠিকানা—উদাহরণস্বরূপ, কোনো ব্যক্তির জন্য user:test-user@gmail.com , অথবা কোনো গ্রুপের জন্য group:admins@example.com

      আরও তথ্যের জন্য, gcloud projects set-iam-policy দেখুন।

    2. শর্ত উল্লেখ করতে বলা হলে, None লিখুন।

    সূচকের উপসেট

    আপনি একাধিক রিপোজিটরি গ্রুপ তৈরি করতে পারেন এবং বিভিন্ন IAM প্রিন্সিপালকে IAM রোল বরাদ্দ করতে পারেন।

    একটি IAM পলিসি সেট আপ করার জন্য, আপনাকে অবশ্যই IAM পলিসি JSON বা YAML ফাইল প্রস্তুত করতে হবে, যেটিতে 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
    

    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

    • GROUP_NAME : রিপোজিটরি গ্রুপের নাম যা আপনি পূর্ববর্তী ধাপে রিপোজিটরি গ্রুপ ব্যবহার করে আপনার ইনডেক্সে অ্যাক্সেস নিয়ন্ত্রণ করার জন্য তৈরি করেছেন।
    • POLICY_FILE : IAM পলিসি।

      আরও তথ্যের জন্য, gcloud gemini code-repository-indexes repository-groups set-iam-policy দেখুন।

টেরাফর্ম

  1. যাচাই করুন যে আপনি ডেভেলপার কানেক্ট কনফিগার করেছেন এবং আপনার রিপোজিটরিতে সংযুক্ত হয়েছেন:

  2. একটি ইনডেক্স তৈরি করুন। দ্রুত কোড তৈরির পরামর্শ ও অনুসন্ধানের জন্য আপনার রিপোজিটরি বিশ্লেষণ ও পার্স করতে কোড কাস্টমাইজেশন একটি ইনডেক্সের উপর নির্ভর করে।

    resource "google_gemini_code_repository_index" "example" {
      location = "REGION"
      code_repository_index_id = "INDEX_NAME"
    }
    

    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

    • INDEX_NAME : আপনার ইনডেক্সের নাম। গুরুত্বপূর্ণ : আপনার ইনডেক্সের নামটি লিখে রাখুন। এই ডকুমেন্টের বিভিন্ন ধাপে আপনার এটি প্রয়োজন হবে।
    • PROJECT_ID : আপনার গুগল ক্লাউড প্রজেক্ট আইডি।
    • REGION : আপনার ক্লাউড প্রজেক্টের ডেভেলপার কানেক্ট-এ যে অঞ্চলটি কনফিগার করা আছে। কমান্ডগুলো সফলভাবে কাজ করার জন্য, আপনাকে অবশ্যই একটি সমর্থিত অঞ্চল নির্দিষ্ট করতে হবে।

    ইনডেক্স তৈরি হতে সাধারণত ৩০ মিনিট সময় লাগে, তবে এক ঘণ্টা পর্যন্তও লাগতে পারে।

    গুগল প্রতিটি প্রকল্প এবং সংস্থার জন্য কোড রিপোজিটরি ইনডেক্সের সংখ্যা একটিতে সীমাবদ্ধ করে।

  3. রিপোজিটরি গ্রুপ ব্যবহার করে আপনার ইনডেক্সে অ্যাক্সেস নিয়ন্ত্রণ করুন। একটি রিপোজিটরি গ্রুপ হলো ইনডেক্সিং কনফিগারেশনের জন্য একটি কন্টেইনার, যার মধ্যে রিপোজিটরি এবং তাদের ব্রাঞ্চ প্যাটার্ন অন্তর্ভুক্ত থাকে। রিপোজিটরি গ্রুপগুলো সূক্ষ্ম IAM নিয়ন্ত্রণের জন্য ডিজাইন করা হয়েছে, যা ডেভেলপারদের সেই গ্রুপগুলো থেকে ইনডেক্স করা ডেটাতে অ্যাক্সেস দেয়, যেখানে তাদের cloudaicompanion.repositoryGroups.use পারমিশন থাকে।

    রিপোজিটরি গ্রুপগুলিতে একই প্রজেক্ট ও লোকেশনের ডেভেলপার কানেক্ট রিপোজিটরি বা লিঙ্ক অন্তর্ভুক্ত থাকে।

    প্রশাসকগণ নিম্নলিখিত কাজগুলো সম্পাদন করেন:

    • কোড রিপোজিটরি ইনডেক্স রিসোর্স তৈরি করুন।
    • একই প্রজেক্ট ও লোকেশনে একটি নতুন ডেভেলপার কানেক্ট কানেকশন কনফিগার করুন।
    • সংযোগে গিট রিপোজিটরিগুলো লিঙ্ক করুন।
    • লিঙ্কগুলোর রিসোর্স নাম নিন, প্রতিটি লিঙ্কের জন্য ইনডেক্স করার জন্য ব্রাঞ্চ প্যাটার্ন বেছে নিন এবং সেটিকে এক বা একাধিক রিপোজিটরি গ্রুপে রাখুন।
    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
    • REPOSITORY_RESOURCE_NAME : ডেভেলপার কানেক্ট কানেকশনের ভেতরের রিপোজিটরির নাম। রিপোজিটরির নামটি খুঁজে পেতে, গুগল ক্লাউড কনসোলে গিট রিপোজিটরি পেজে যান এবং রিপোজিটরি ট্যাবে টেবিলের কানেকশন কলামের নিচে কানেকশন আইডিটি খুঁজুন। রিসোর্স নামটি কপি করতে, আরও অপশনের জন্য 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) ব্যবহার করে আপনার ডেটা এনক্রিপ্ট ও নিয়ন্ত্রণ করতে পারেন। CMEK ব্যবহার সম্পর্কে আরও জানতে, “কাস্টমার-ম্যানেজড এনক্রিপশন কী দিয়ে ডেটা এনক্রিপ্ট করুন” দেখুন।

  4. একটি প্রোজেক্টে রিপোজিটরি গ্রুপকে IAM রোল প্রদান করুন।

    আপনি শুধুমাত্র ইনডেক্সে থাকা রিপোজিটরিগুলো থেকেই সাজেশন পাবেন। প্রতিটি রিপোজিটরি এক বা একাধিক রিপোজিটরি গ্রুপের অন্তর্ভুক্ত। সাজেশনগুলো অ্যাক্সেস করার জন্য, আপনাকে অবশ্যই নিম্নলিখিত উপায়গুলোর মধ্যে যেকোনো একটির মাধ্যমে রিপোজিটরি গ্রুপটিকে ক্লাউড এআই কম্প্যানিয়ন রিপোজিটরি গ্রুপস ইউজার আইএএম রোল ( roles/cloudaicompanion.repositoryGroupsUser ) প্রদান করতে হবে—যেটিতে প্রয়োজনীয় cloudaicompanion.repositoryGroups.user আইএএম পারমিশনটি থাকে।

    • অধ্যক্ষদের সম্পূর্ণ সূচিপত্রটি দেখার অনুমতি দিন।
    • প্রধানদেরকে সূচিপত্রের একটি উপসেটে প্রবেশাধিকার প্রদান করুন।

    সম্পূর্ণ সূচী

    1. শেল পরিবেশে, কোনো প্রজেক্টের জন্য একটি IAM পলিসি বাইন্ড করতে, projects add-iam-policy-binding কমান্ডটি ব্যবহার করুন:

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

      নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

      • PRINCIPAL : যে প্রিন্সিপালের অ্যাক্সেস প্রয়োজন তার ইমেল ঠিকানা—উদাহরণস্বরূপ, কোনো ব্যক্তির জন্য user:test-user@gmail.com , অথবা কোনো গ্রুপের জন্য group:admins@example.com

        আরও তথ্যের জন্য, gcloud projects set-iam-policy দেখুন।

    2. শর্ত উল্লেখ করতে বলা হলে, None লিখুন।

    সূচকের উপসেট

    আপনি একাধিক রিপোজিটরি গ্রুপ তৈরি করতে পারেন এবং বিভিন্ন IAM প্রিন্সিপালকে IAM রোল বরাদ্দ করতে পারেন।

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

    নিম্নলিখিতগুলি প্রতিস্থাপন করুন:

    • GROUP_NAME : রিপোজিটরি গ্রুপের নাম যা আপনি পূর্ববর্তী ধাপে রিপোজিটরি গ্রুপ ব্যবহার করে আপনার ইনডেক্সে অ্যাক্সেস নিয়ন্ত্রণ করার জন্য তৈরি করেছেন।

সূচীকরণের অবস্থা পরীক্ষা করুন

আপনি কতগুলো রিপোজিটরি ইন্ডেক্স করতে চান এবং সেগুলোর আকারের ওপর নির্ভর করে, কন্টেন্ট ইন্ডেক্স করতে ২৪ ঘণ্টা পর্যন্ত সময় লাগতে পারে। বড় রিপোজিটরিগুলোর ক্ষেত্রে ইন্ডেক্স করতে আরও বেশি সময় লাগতে পারে। প্রতি ২৪ ঘণ্টায় একবার ইন্ডেক্সিং সম্পন্ন হয় এবং রিপোজিটরিতে করা সমস্ত পরিবর্তন এতে অন্তর্ভুক্ত করা হয়।

  1. indexing লগগুলো অনুসন্ধান করুন। আরও তথ্যের জন্য, লগিং কোয়েরি ল্যাঙ্গুয়েজ দেখুন।

    কনসোল

    1. গুগল ক্লাউড কনসোলে, লগস এক্সপ্লোরার- এ যান।

      লগ এক্সপ্লোরারে যান

    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. নিম্নলিখিতগুলির মতো সংশ্লিষ্ট ইনডেক্সিং ত্রুটিগুলি পর্যালোচনা করুন:

    • রিপোজিটরি আনতে ব্যর্থ হয়েছে।
    • রিপোজিটরি ফাইলগুলি তালিকাভুক্ত করতে ব্যর্থ হয়েছে।
    • ইনডেক্স থেকে রিপোজিটরি তথ্য পুনরুদ্ধার করা সম্ভব হয়নি।
    • ইনডেক্স থেকে ফাইলগুলো পুনরুদ্ধার করা সম্ভব হয়নি।
    • অভ্যন্তরীণ ত্রুটি।

কোড কাস্টমাইজেশন ব্যবহার করুন

একবার আপনি কোড কাস্টমাইজেশন সেট আপ করে নিলে, আপনি কোড কমপ্লিশন এবং কোড জেনারেশনের সাজেশন দেখতে শুরু করবেন, যা সম্পূর্ণ কোডবেস অ্যাওয়ারনেস থেকে প্রাপ্ত ফলাফলের পাশাপাশি আপনার ইনডেক্স করা ব্যক্তিগত কোডের উপরও ভিত্তি করে হতে পারে।

যে রিপোজিটরি গ্রুপে অন্তত একটি রিসোর্স ইনডেক্স করা আছে, সেই গ্রুপে যুক্ত হওয়া ডেভেলপাররা তাদের IDE-তে একটি নোটিশ পাবেন যে কোড কাস্টমাইজেশন চালু করা হয়েছে। কোড কাস্টমাইজেশনের স্ট্যাটাস দেখতে, ডেভেলপাররা নিচের ডান কোণায় থাকা spark জেমিনি সিম্বলে ক্লিক করতে পারেন এবং সার্চ বারে নিম্নলিখিত কোড কাস্টমাইজেশন স্ট্যাটাসগুলোর মধ্যে একটি খুঁজতে পারেন:

  • সবকিছু প্রস্তুত । কোড কাস্টমাইজেশন সক্রিয় এবং কনফিগার করা হয়েছে।
  • অনুপলব্ধ । ডেভেলপারের রিপোজিটরি গ্রুপে অ্যাক্সেস নেই অথবা ব্যবহারকারীর অ্যাক্সেস থাকা রিপোজিটরি গ্রুপটি খালি।
  • সেট করা নেই । কোড কাস্টমাইজেশন হয় সক্রিয় করা নেই অথবা প্রশাসক কর্তৃক কনফিগার করা হয়নি।

কোড কাস্টমাইজেশন ব্যবহার এবং এর সর্বোত্তম অনুশীলন সম্পর্কে আরও জানতে, “কোড কাস্টমাইজেশন ব্যবহার করুন” দেখুন।

কোড কাস্টমাইজেশন বন্ধ করুন

নিম্নলিখিত বিকল্পগুলির মধ্যে একটি নির্বাচন করুন:

কনসোল

  1. Google Cloud কনসোলে, Gemini Products পৃষ্ঠায় যান।

    জেমিনি প্রোডাক্টস-এ যান

    জেমিনি প্রোডাক্টস পেজটি লোড হয়।

  2. ন্যাভিগেশন মেনুতে, কোড কাস্টমাইজেশন- এ ক্লিক করুন।

    কোড কাস্টমাইজেশন পেজটি লোড হয়।

  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 : আপনার ক্লাউড প্রজেক্টের ডেভেলপার কানেক্ট-এ যে অঞ্চলটি কনফিগার করা আছে। কমান্ডগুলো সফলভাবে কাজ করার জন্য, আপনাকে অবশ্যই একটি সমর্থিত অঞ্চল নির্দিষ্ট করতে হবে।
    • PROJECT_ID : আপনার গুগল ক্লাউড প্রজেক্ট আইডি।
    • 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. ইনডেক্স থেকে সমস্ত রিপোজিটরি গ্রুপ মুছে না ফেলা পর্যন্ত প্রতিটি রিপোজিটরি গ্রুপের জন্য পূর্ববর্তী ধাপগুলো পুনরাবৃত্তি করুন।

  4. ঐচ্ছিক: শেল পরিবেশে ইনডেক্সটি ডিলিট করতে, gemini code-repository-indexes delete কমান্ডটি ব্যবহার করুন:

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

এরপর কী?