১. সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি GenAI ব্যবহার করে JIRA ইউজার স্টোরি বাস্তবায়ন স্বয়ংক্রিয় করার জন্য একটি সমাধান তৈরি করবেন।

আপনি যা শিখবেন
ল্যাবের কয়েকটি প্রধান অংশ রয়েছে:
- জেমিনি এপিআই-এর সাথে ইন্টিগ্রেট করতে ক্লাউড রান অ্যাপ্লিকেশনটি ডিপ্লয় করুন।
- JIRA-এর জন্য Atlassian Forge অ্যাপ তৈরি ও স্থাপন করুন
- গিটল্যাব টাস্ক অটোমেশনের জন্য ল্যাংচেইন রিঅ্যাক্ট এজেন্ট ব্যবহার করুন
পূর্বশর্ত
- এই ল্যাবটি করার জন্য ক্লাউড কনসোল এবং ক্লাউড শেল পরিবেশ সম্পর্কে পূর্বপরিচিতি আছে বলে ধরে নেওয়া হচ্ছে।
২. সেটআপ এবং প্রয়োজনীয়তা
ক্লাউড প্রজেক্ট সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে। - আপনার অবগতির জন্য জানানো যাচ্ছে যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
- এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
পরিবেশ সেটআপ
জেমিনি চ্যাট খুলুন।

অথবা সার্চ বারে 'Ask Gemini' টাইপ করুন।

Google Cloud API-এর জন্য Gemini সক্রিয় করুন:

" Start chatting "-এ ক্লিক করুন এবং এটি পরখ করে দেখার জন্য নমুনা প্রশ্নগুলোর মধ্যে একটি অনুসরণ করুন অথবা আপনার নিজের প্রশ্ন টাইপ করুন।

চেষ্টা করার মতো কিছু প্রম্পট:
- ৫টি মূল পয়েন্টে ক্লাউড রান ব্যাখ্যা করুন।
- আপনি গুগল ক্লাউড রান-এর প্রোডাক্ট ম্যানেজার, একজন শিক্ষার্থীকে ৫টি সংক্ষিপ্ত ও গুরুত্বপূর্ণ পয়েন্টে ক্লাউড রান ব্যাখ্যা করুন।
- আপনি গুগল ক্লাউড রান প্রোডাক্ট ম্যানেজার, একজন সার্টিফায়েড কুবারনেটিস ডেভেলপারকে ৫টি সংক্ষিপ্ত ও মূল পয়েন্টে ক্লাউড রান ব্যাখ্যা করুন।
- আপনি গুগল ক্লাউড রান-এর প্রোডাক্ট ম্যানেজার। একজন সিনিয়র ডেভেলপারকে ৫টি সংক্ষিপ্ত ও গুরুত্বপূর্ণ পয়েন্টে ব্যাখ্যা করুন, কখন আপনি GKE-এর পরিবর্তে ক্লাউড রান ব্যবহার করবেন।
আরও ভালো প্রম্পট লেখার বিষয়ে জানতে প্রম্পট গাইডটি দেখুন।
গুগল ক্লাউডের জন্য জেমিনি কীভাবে আপনার ডেটা ব্যবহার করে
গুগলের গোপনীয়তার প্রতিশ্রুতি
এআই/এমএল গোপনীয়তার প্রতিশ্রুতি প্রকাশকারী শিল্পখাতে গুগল অন্যতম প্রথম প্রতিষ্ঠান, যেখানে আমাদের এই বিশ্বাসটি তুলে ধরা হয়েছে যে, ক্লাউডে সংরক্ষিত গ্রাহকদের ডেটার ওপর সর্বোচ্চ স্তরের নিরাপত্তা এবং নিয়ন্ত্রণ থাকা উচিত।
আপনার জমা দেওয়া এবং প্রাপ্ত ডেটা
আপনি জেমিনিকে যে প্রশ্নগুলো করেন, যার মধ্যে বিশ্লেষণ বা সম্পূর্ণ করার জন্য আপনার জমা দেওয়া যেকোনো ইনপুট তথ্য বা কোডও অন্তর্ভুক্ত, সেগুলোকে প্রম্পট বলা হয়। জেমিনি থেকে আপনি যে উত্তর বা কোড সম্পূর্ণকরণ পান, সেগুলোকে রেসপন্স বলা হয়। জেমিনি তার মডেলগুলোকে প্রশিক্ষণ দেওয়ার জন্য আপনার প্রম্পট বা তার রেসপন্সগুলোকে ডেটা হিসেবে ব্যবহার করে না ।
প্রম্পটের এনক্রিপশন
আপনি যখন জেমিনিতে প্রম্পট জমা দেন, তখন আপনার ডেটা জেমিনির অন্তর্নিহিত মডেলে ইনপুট হিসেবে স্থানান্তরের সময় এনক্রিপ্ট করা হয় ।
জেমিনি থেকে তৈরি প্রোগ্রাম ডেটা
জেমিনি গুগল ক্লাউডের নিজস্ব কোডের পাশাপাশি নির্বাচিত তৃতীয় পক্ষের কোডের উপরও প্রশিক্ষিত। আপনার কোডের নিরাপত্তা, পরীক্ষা এবং কার্যকারিতার জন্য আপনিই দায়ী থাকবেন , যার মধ্যে জেমিনির দেওয়া যেকোনো কোড কমপ্লিশন, জেনারেশন বা অ্যানালাইসিসও অন্তর্ভুক্ত।
গুগল আপনার অনুরোধগুলো কীভাবে পরিচালনা করে, সে সম্পর্কে আরও জানুন ।
৩. প্রম্পট পরীক্ষা করার বিকল্পসমূহ
প্রম্পটগুলো পরীক্ষা করার জন্য আপনার কাছে বেশ কয়েকটি বিকল্প রয়েছে।
ভার্টেক্স এআই স্টুডিও হলো গুগল ক্লাউডের ভার্টেক্স এআই প্ল্যাটফর্মের একটি অংশ, যা বিশেষভাবে জেনারেটিভ এআই মডেলের উন্নয়ন ও ব্যবহারকে সহজ এবং দ্রুততর করার জন্য ডিজাইন করা হয়েছে।
গুগল এআই স্টুডিও হলো প্রম্পট ইঞ্জিনিয়ারিং এবং জেমিনি এপিআই নিয়ে প্রোটোটাইপিং ও পরীক্ষা-নিরীক্ষার জন্য একটি ওয়েব-ভিত্তিক টুল।
- জেমিনি ওয়েব অ্যাপ (gemini.google.com)
গুগল জেমিনি ওয়েব অ্যাপ (gemini.google.com) হলো একটি ওয়েব-ভিত্তিক টুল, যা আপনাকে গুগলের জেমিনি এআই মডেলগুলোর শক্তি অন্বেষণ ও ব্যবহার করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে।
- অ্যান্ড্রয়েডের জন্য গুগল জেমিনি মোবাইল অ্যাপ এবং আইওএস-এ গুগল অ্যাপ
৪. আবেদনপত্র পর্যালোচনা করুন
পরিষেবা অ্যাকাউন্ট তৈরি করুন
Google Cloud Console-এ ফিরে যান এবং সার্চ বারের ডানদিকে থাকা আইকনটিতে ক্লিক করে Cloud Shell সক্রিয় করুন।

খোলা টার্মিনালে, একটি নতুন সার্ভিস অ্যাকাউন্ট এবং কী তৈরি করতে নিম্নলিখিত কমান্ডগুলো চালান।
আপনি ক্লাউড রান অ্যাপ্লিকেশন থেকে ভার্টেক্স এআই জেমিনি এপিআই-তে এপিআই কল করার জন্য এই সার্ভিস অ্যাকাউন্টটি ব্যবহার করবেন।
আপনার কুইকল্যাবস প্রজেক্টের বিবরণ ব্যবহার করে প্রজেক্টের বিস্তারিত তথ্য কনফিগার করুন।
উদাহরণ: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন।
PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID --display-name "$DISPLAY_NAME"
ভূমিকা মঞ্জুর করুন।
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/storage.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/run.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor"
অনুমতি দিতে বলা হলে, চালিয়ে যাওয়ার জন্য 'Authorize'-এ ক্লিক করুন।

Vertex AI API এবং Gemini চ্যাট ব্যবহার করার জন্য প্রয়োজনীয় পরিষেবাগুলি সক্রিয় করুন।
gcloud services enable \
generativelanguage.googleapis.com \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
Vertex AI API এবং Gemini চ্যাট ব্যবহার করার জন্য প্রয়োজনীয় পরিষেবাগুলি সক্রিয় করুন।
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
runapps.googleapis.com \
workstations.googleapis.com \
servicemanagement.googleapis.com \
secretmanager.googleapis.com \
containerscanning.googleapis.com
গিটহাব রিপোজিটরি ক্লোন করুন
গিটহাব রিপোজিটরিটি ক্লোন করুন।
git clone https://github.com/GoogleCloudPlatform/genai-for-developers.git
ওপেন ক্লাউড শেল এডিটর

" File / Open Folder " মেনু আইটেমটি ব্যবহার করে " genai-for-developers " ফোল্ডারটি খুলুন।
' devai-api/app/routes.py ' ফাইলটি খুলুন এবং তারপর ফাইলটির যেকোনো জায়গায় রাইট-ক্লিক করে কনটেক্সট মেনু থেকে ' Gemini > Explain this" নির্বাচন করুন।

নির্বাচিত ফাইলটির জন্য জেমিনির ব্যাখ্যা পর্যালোচনা করুন।

৫. গিটল্যাব রিপোজিটরি এবং টুলকিট কনফিগারেশন
এই ল্যাবে, আপনি GitLab মার্জ রিকোয়েস্ট তৈরি স্বয়ংক্রিয় করতে GitLabToolkit ব্যবহার করবেন।
ল্যাংচেইন টুলকিটের সংক্ষিপ্ত বিবরণ
ল্যাংচেইন টুলকিট হলো বিভিন্ন টুলের সমষ্টি, যা ল্যাংচেইন ব্যবহার করে অ্যাপ্লিকেশন তৈরির প্রক্রিয়াকে সহজ ও উন্নত করার জন্য ডিজাইন করা হয়েছে। নির্দিষ্ট টুলকিটের উপর নির্ভর করে এগুলি বিভিন্ন কার্যকারিতা প্রদান করে, তবে সাধারণত এগুলি নিম্নলিখিত বিষয়গুলিতে সাহায্য করে:
- বাহ্যিক ডেটা উৎসের সাথে সংযোগ স্থাপন : এপিআই (API), ডেটাবেস এবং অন্যান্য বাহ্যিক উৎস থেকে তথ্য অ্যাক্সেস করুন এবং আপনার ল্যাংচেইন (LangChain) অ্যাপ্লিকেশনগুলিতে অন্তর্ভুক্ত করুন।
- উন্নত প্রম্পটিং কৌশল : ল্যাঙ্গুয়েজ মডেলের সাথে মিথস্ক্রিয়া অপ্টিমাইজ করতে আগে থেকে তৈরি প্রম্পট ব্যবহার করুন অথবা নিজস্ব প্রম্পট তৈরি করুন।
- চেইন তৈরি ও ব্যবস্থাপনা : সহজে জটিল চেইন তৈরি করুন এবং দক্ষতার সাথে তা পরিচালনা করুন।
- মূল্যায়ন ও পর্যবেক্ষণ : আপনার LangChain অ্যাপ্লিকেশন ও চেইনগুলোর পারফরম্যান্স বিশ্লেষণ করুন।
কিছু জনপ্রিয় ল্যাংচেইন টুলকিট হলো:
- এজেন্ট এক্সিকিউটর টুলকিট : এমন এজেন্ট তৈরির টুল যা ওয়েব ব্রাউজিং বা কোড এক্সিকিউশনের মতো কাজের মাধ্যমে বাস্তব জগতের সাথে যোগাযোগ করতে পারে।
- প্রম্পট ইঞ্জিনিয়ারিং টুলকিট : কার্যকর প্রম্পট তৈরির জন্য প্রয়োজনীয় উপকরণের একটি সংগ্রহ।
গিটল্যাব টুলকিটের সংক্ষিপ্ত বিবরণ
গিটল্যাব টুলকিটে এমন সব টুল রয়েছে যা একজন এলএলএম এজেন্টকে একটি গিটল্যাব রিপোজিটরির সাথে ইন্টারঅ্যাক্ট করতে সক্ষম করে। এই টুলটি হলো python-gitlab লাইব্রেরির একটি র্যাপার।
গিটল্যাব টুলকিট নিম্নলিখিত কাজগুলো সম্পাদন করতে পারে:
- ফাইল তৈরি করুন - রিপোজিটরিতে একটি নতুন ফাইল তৈরি করে।
- ফাইল পড়ুন - রিপোজিটরি থেকে একটি ফাইল পড়ে।
- ফাইল আপডেট করুন - রিপোজিটরিতে থাকা একটি ফাইল আপডেট করে।
- পুল রিকোয়েস্ট তৈরি করুন - এটি বটের ওয়ার্কিং ব্রাঞ্চ থেকে বেস ব্রাঞ্চে একটি পুল রিকোয়েস্ট তৈরি করে।
- Get Issues - রিপোজিটরি থেকে ইস্যুগুলো সংগ্রহ করে।
- ইস্যু জানুন - একটি নির্দিষ্ট ইস্যু সম্পর্কে বিস্তারিত তথ্য সংগ্রহ করে।
- কোনো নির্দিষ্ট বিষয়ে মন্তব্য - কোনো একটি নির্দিষ্ট বিষয়ে মন্তব্য পোস্ট করে।
- ফাইল মুছুন - রিপোজিটরি থেকে একটি ফাইল মুছে ফেলে।
গিটল্যাব প্রজেক্ট সেটআপ
GitLab খুলুন, একটি নতুন প্রজেক্ট তৈরি করুন এবং ' Settings / Access Tokens এর অধীনে প্রজেক্ট অ্যাক্সেস টোকেন সেট আপ করুন।
নিম্নলিখিত বিবরণ ব্যবহার করুন:
- টোকেন নাম:
devai-api-qwiklabs - ভূমিকা:
Maintainer - স্কোপ নির্বাচন করুন:
api

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

আপনার কুইকল্যাবস প্রজেক্টের বিবরণ ব্যবহার করে প্রজেক্টের বিস্তারিত তথ্য কনফিগার করুন।
উদাহরণ: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR-QWIKLABS-PROJECT-ID
বাকি এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন:
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
export REPO_NAME=devai-api
export SERVICE_NAME=devai-api
গিটল্যাব ইন্টিগ্রেশনের জন্য প্রয়োজনীয় এনভায়রনমেন্ট ভেরিয়েবল সেট করুন।
export GITLAB_PERSONAL_ACCESS_TOKEN=gitlab-token
টার্মিনালে সংবেদনশীল তথ্য প্রকাশ হওয়া এড়ানোর জন্য, সবচেয়ে ভালো উপায় হলো read -s GITLAB_PERSONAL_ACCESS_TOKEN ব্যবহার করা। এটি এনভায়রনমেন্ট ভেরিয়েবল সেট করার একটি নিরাপদ উপায়, যার মান কনসোলের কমান্ড হিস্ট্রিতে দেখা যায় না। এটি চালানোর পর, আপনাকে মানটি পেস্ট করে এন্টার চাপতে হবে। আপনাকে এনভায়রনমেন্ট ভেরিয়েবলটি এক্সপোর্টও করতে হবে: export GITLAB_PERSONAL_ACCESS_TOKEN
এই কমান্ডটির জন্য আপনাকে আপনার GitLab ইউজার আইডি এবং রিপোজিটরি নাম আপডেট করতে হবে।
উদাহরণ: export GITLAB_REPOSITORY="gitrey/qwiklabs-test"

export GITLAB_REPOSITORY="USERID/REPOSITORY"
বাকি এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন:
export GITLAB_URL="https://gitlab.com"
export GITLAB_BRANCH="devai"
export GITLAB_BASE_BRANCH="main"
ল্যাংস্মিথ এলএলএম ট্রেসিং কনফিগারেশন
LangSmith-এ এজেন্ট ট্রেসিং তথ্য দেখতে চাইলে অ্যাকাউন্টটি সেটআপ করুন, অন্যথায় কমান্ডগুলো যেমন আছে তেমনই চালান।
একটি LangSmith অ্যাকাউন্ট তৈরি করুন এবং সেটিংস বিভাগে একটি সার্ভিস এপিআই কী (Service API key) তৈরি করুন। https://smith.langchain.com/settings
LangSmith ইন্টিগ্রেশনের জন্য প্রয়োজনীয় এনভায়রনমেন্ট ভেরিয়েবল সেট করুন।
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY=langchain-service-api-key
জিরা কনফিগারেশন
এই মানগুলো এই ল্যাবে ব্যবহৃত হয় না, তাই কমান্ডগুলো চালানোর আগে আপনার নির্দিষ্ট JIRA প্রজেক্টের মান অনুযায়ী এটি আপডেট করার প্রয়োজন নেই।
ক্লাউড রান পরিষেবা স্থাপনের জন্য প্রয়োজনীয় পরিবেশ ভেরিয়েবল সেট করুন।
export JIRA_API_TOKEN=jira-token
export JIRA_USERNAME="YOUR-EMAIL"
export JIRA_INSTANCE_URL="https://YOUR-JIRA-PROJECT.atlassian.net"
export JIRA_PROJECT_KEY="YOUR-JIRA-PROJECT-KEY"
export JIRA_CLOUD=true
এপিআই কী তৈরি করুন
ক্লাউড কনসোল / এপিআই ও পরিষেবা / ক্রেডেনশিয়ালস বিভাগে একটি নতুন এপিআই কী তৈরি করুন।
এই কী-টি ক্লাউড রান অ্যাপ্লিকেশনে জিরা এপিআই কল প্রমাণীকরণের জন্য ব্যবহৃত হবে।
প্রোডাকশন এনভায়রনমেন্টের জন্য, আপনাকে তৈরি করা এপিআই কী-এর জন্য অ্যাপ্লিকেশন এবং এপিআই সীমাবদ্ধতা কনফিগার করতে হবে। অ্যাপ্লিকেশন সীমাবদ্ধতা একটি এপিআই কী-এর ব্যবহারকে নির্দিষ্ট ওয়েবসাইটে (যেমন আপনার জিরা ইনস্ট্যান্স) সীমাবদ্ধ করে।
ক্লাউড রান পরিষেবা স্থাপনের জন্য প্রয়োজনীয় পরিবেশ ভেরিয়েবল সেট করুন।
export DEVAI_API_KEY=your-api-key
সিক্রেট ম্যানেজারে সিক্রেট তৈরি করুন
এই ল্যাবের জন্য, আমরা সর্বোত্তম পদ্ধতি অনুসরণ করি এবং ক্লাউড রানে অ্যাক্সেস টোকেন, এপিআই কী এবং ল্যাংচেইন এপিআই কী-এর মান সংরক্ষণ ও উল্লেখ করার জন্য সিক্রেট ম্যানেজার ব্যবহার করি।
সিক্রেট ম্যানেজারে প্রয়োজনীয় সিক্রেটগুলো তৈরি ও সংরক্ষণ করুন।
echo -n $DEVAI_API_KEY | \
gcloud secrets create DEVAI_API_KEY \
--data-file=-
echo -n $JIRA_API_TOKEN | \
gcloud secrets create JIRA_API_TOKEN \
--data-file=-
echo -n $GITLAB_PERSONAL_ACCESS_TOKEN | \
gcloud secrets create GITLAB_PERSONAL_ACCESS_TOKEN \
--data-file=-
echo -n $LANGCHAIN_API_KEY | \
gcloud secrets create LANGCHAIN_API_KEY \
--data-file=-
৭. ক্লাউড রানে দেবাই-এপিআই স্থাপন করুন
আপনি সঠিক ফোল্ডারে আছেন কিনা তা যাচাই করুন।
cd ~/genai-for-developers/devai-api
অ্যাপ্লিকেশনটি ক্লাউড রান-এ স্থাপন করুন।
gcloud run deploy "$SERVICE_NAME" \
--source=. \
--region="$LOCATION" \
--allow-unauthenticated \
--service-account vertex-client \
--set-env-vars PROJECT_ID="$PROJECT_ID" \
--set-env-vars LOCATION="$LOCATION" \
--set-env-vars GITLAB_URL="$GITLAB_URL" \
--set-env-vars GITLAB_REPOSITORY="$GITLAB_REPOSITORY" \
--set-env-vars GITLAB_BRANCH="$GITLAB_BRANCH" \
--set-env-vars GITLAB_BASE_BRANCH="$GITLAB_BASE_BRANCH" \
--set-env-vars JIRA_USERNAME="$JIRA_USERNAME" \
--set-env-vars JIRA_INSTANCE_URL="$JIRA_INSTANCE_URL" \
--set-env-vars JIRA_PROJECT_KEY="$JIRA_PROJECT_KEY" \
--set-env-vars JIRA_CLOUD="$JIRA_CLOUD" \
--set-env-vars LANGCHAIN_TRACING_V2="$LANGCHAIN_TRACING_V2" \
--update-secrets="LANGCHAIN_API_KEY=LANGCHAIN_API_KEY:latest" \
--update-secrets="GITLAB_PERSONAL_ACCESS_TOKEN=GITLAB_PERSONAL_ACCESS_TOKEN:latest" \
--update-secrets="JIRA_API_TOKEN=JIRA_API_TOKEN:latest" \
--update-secrets="DEVAI_API_KEY=DEVAI_API_KEY:latest" \
--min-instances=1 \
--max-instances=3
আর্টিফ্যাক্ট রেজিস্ট্রি ডকার রিপোজিটরি তৈরি করতে Y উত্তর দিন।
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in
region [us-central1] will be created.
Do you want to continue (Y/n)? y
নিচে দেওয়া gcloud run deploy SERVICE_NAME --source=. ফ্লোটি পর্যালোচনা করুন। আরও জানুন ।

নেপথ্যে, এই কমান্ডটি গুগল ক্লাউডের buildpacks এবং Cloud Build ব্যবহার করে আপনার মেশিনে ডকার ইনস্টল করা বা বিল্ডপ্যাক বা ক্লাউড বিল্ড সেট আপ করা ছাড়াই আপনার সোর্স কোড থেকে স্বয়ংক্রিয়ভাবে কন্টেইনার ইমেজ তৈরি করে। অর্থাৎ, উপরে বর্ণিত এই একটিমাত্র কমান্ডই সেই কাজটি করে, যা করতে অন্যথায় gcloud builds submit এবং gcloud run deploy কমান্ডগুলোর প্রয়োজন হতো।
আপনি যদি ডকারফাইল দিয়ে থাকেন (যা আমরা এই রিপোজিটরিতে করেছি), তাহলে ক্লাউড বিল্ড স্বয়ংক্রিয়ভাবে কন্টেইনার ইমেজ শনাক্ত ও তৈরি করার জন্য বিল্ডপ্যাকের উপর নির্ভর না করে, সেটি ব্যবহার করে কন্টেইনার ইমেজ তৈরি করবে। বিল্ডপ্যাক সম্পর্কে আরও জানতে ডকুমেন্টেশন দেখুন।
কনসোলে ক্লাউড বিল্ড লগগুলো পর্যালোচনা করুন।
আর্টিফ্যাক্ট রেজিস্ট্রি -তে তৈরি করা ডকার ইমেজটি পর্যালোচনা করুন।
ক্লাউড কনসোলে ক্লাউড রান ইনস্ট্যান্সের বিবরণ পর্যালোচনা করুন।
পরীক্ষার অ্যাপ্লিকেশন
curl কমান্ড চালিয়ে এন্ডপয়েন্টটি পরীক্ষা করুন।
কমান্ডটি চালানোর আগে আপনার ক্লাউড রান সার্ভিস ইউআরএল দিয়ে আপডেট করুন।
উদাহরণ:
curl -H "X-devai-api-key: $DEVAI_API_KEY" https://devai-api-1110000001.us-central1.run.app/test
৮. স্টোরি বাস্তবায়ন স্বয়ংক্রিয় করুন
ফোর্জ এমন একটি প্ল্যাটফর্ম যা ডেভেলপারদের অ্যাটলাসিয়ান পণ্য, যেমন জিরা, কনফ্লুয়েন্স, কম্পাস এবং বিটবাকেটের সাথে সমন্বিত অ্যাপ তৈরি করতে সাহায্য করে।

Forge CLI ইনস্টল করুন
নিম্নলিখিত কমান্ডটি চালিয়ে Forge CLI বিশ্বব্যাপী ইনস্টল করুন:
npm install -g @forge/cli
এই ল্যাবে আমরা লগইন করার জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করব।

জিরা প্রজেক্ট সেটআপ করুন
জিরা প্রজেক্ট তৈরি ও দেখার জন্য আপনার ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করুন।
আপনার বিদ্যমান JIRA প্রজেক্টগুলো পর্যালোচনা করুন: https://admin.atlassian.com/
আপনার ব্যক্তিগত অ্যাকাউন্ট ব্যবহার করে একটি নতুন জিরা (JIRA) প্রজেক্ট তৈরি করুন।
https://team.atlassian.com/your-work- এ যান এবং ক্লিক করুন
এবং তারপর নির্বাচন করুন
এরপরে, "JIRA Software" নির্বাচন করে "Try it now" বিকল্পটি বেছে নিন। প্রজেক্ট/সাইট তৈরি সম্পন্ন করতে নির্দেশাবলী অনুসরণ করুন।

জিরা সফটওয়্যার নির্বাচন করুন।

একটি নতুন প্রকল্প তৈরি করুন।

অ্যাটলাসিয়ান এপিআই টোকেন তৈরি করুন
CLI-তে লগ ইন করতে একটি অ্যাটলাসিয়ান এপিআই টোকেন তৈরি করুন বা বিদ্যমান টোকেন ব্যবহার করুন।
কমান্ড চালানোর সময় CLI আপনার টোকেন ব্যবহার করে।
- https://id.atlassian.com/manage/api-tokens -এ যান।
- এপিআই টোকেন তৈরি করুন -এ ক্লিক করুন।
- আপনার এপিআই টোকেনটির বর্ণনা দিতে একটি লেবেল লিখুন। উদাহরণস্বরূপ, forge-api-token।
- তৈরি করুন- এ ক্লিক করুন।
- ক্লিপবোর্ডে কপি করতে ক্লিক করুন এবং ডায়ালগটি বন্ধ করুন।
ফোর্জ পরিবেশ সেটিংস কনফিগার করুন
ক্লাউড কনসোলে ফিরে যান এবং টার্মিনালে নিচের কমান্ডগুলো চালান।
Forge কমান্ড ব্যবহার শুরু করতে Forge CLI-তে লগ ইন করুন।
আপনার JIRA/FORGE ইমেল ঠিকানা সেট করুন। আপনার ইমেল ঠিকানা দিয়ে প্রতিস্থাপন করুন।
export FORGE_EMAIL=your-email
Forge API টোকেন সেট করুন। আপনার JIRA API টোকেন দিয়ে এটি প্রতিস্থাপন করুন।
export FORGE_API_TOKEN=your-jira-api-token
নিচের কমান্ডটি চালিয়ে ফোর্জ সিএলআই (forge cli) পরীক্ষা করুন। অ্যানালিটিক্স সংগ্রহ করতে বলা হলে " No " উত্তর দিন।
forge settings set usage-analytics false
আপনি লগ ইন করেছেন কিনা তা পরীক্ষা করুন।
forge whoami
নমুনা আউটপুট।
Logged in as John Green (johngreen@email.com) Account ID: 123090:aaabbcc-076a-455c-99d0-d1aavvccdd
ফোর্জ অ্যাপ্লিকেশন তৈরি করুন
নিশ্চিত করুন যে আপনি " ~/genai-for-developers " ফোল্ডারে আছেন।
একটি ফোর্জ অ্যাপ্লিকেশন তৈরি করতে কমান্ডটি চালান।
forge create
অনুরোধ করা হলে নিম্নলিখিত মানগুলি ব্যবহার করুন:
- অ্যাপের নাম:
devai-jira-ui-qwiklabs - একটি বিভাগ নির্বাচন করুন:
UI Kit - একটি পণ্য নির্বাচন করুন:
Jira - একটি টেমপ্লেট নির্বাচন করুন:
jira-issue-panel

অ্যাপ্লিকেশন ফোল্ডারে প্রবেশ করুন।
cd devai-jira-ui-qwiklabs/
নির্ভরতাগুলো ইনস্টল করতে কমান্ডটি চালান।
npm install
ডিপ্লয়মেন্ট কমান্ড চালান।
forge deploy
নমুনা আউটপুট:
Deploying your app to the development environment. Press Ctrl+C to cancel. Running forge lint... No issues found. ✔ Deploying devai-jira-ui-qwiklabs to development... ℹ Packaging app files ℹ Uploading app ℹ Validating manifest ℹ Snapshotting functions ℹ Deploying to environment ✔ Deployed Deployed devai-jira-ui-qwiklabs to the development environment.
অ্যাপ্লিকেশনটি ইনস্টল করুন।
forge install
অনুরোধ করা হলে নিম্নলিখিত মানগুলি ব্যবহার করুন:
- একটি পণ্য নির্বাচন করুন:
Jira - সাইটের URL লিখুন:
your-domain.atlassian.net
নমুনা আউটপুট:
Select the product your app uses. ? Select a product: Jira Enter your site. For example, your-domain.atlassian.net ? Enter the site URL: genai-for-developers.atlassian.net Installing your app onto an Atlassian site. Press Ctrl+C to cancel. ? Do you want to continue? Yes ✔ Install complete! Your app in the development environment is now installed in Jira on genai-for-developers.atlassian.net
আপনার জিরা সাইটটি খুলুন এবং নিম্নলিখিত বিবরণ সহ একটি নতুন জিরা টাস্ক তৈরি করুন:
Create HTML, CSS and JavaScript using React.js framework to implement Login page with username and password fields, validation and documentation. Provide complete implementation, do not omit anything.
যখন আপনি টাস্কটি খুলবেন, তখন আপনি " devai-jira-ui-qwiklabs " বাটনটি দেখতে পাবেন।
বাটনটিতে ক্লিক করুন এবং UI-তে পরিবর্তনগুলো পর্যালোচনা করুন।

ফোর্জ ব্যাকএন্ড লগগুলো দেখুন।
forge logs
অ্যাটলাসিয়ান ডেভেলপার কনসোল
এছাড়াও আপনি অ্যাটলাসিয়ান ডেভেলপার কনসোলে ডেপ্লয় করা অ্যাপগুলো দেখতে ও পরিচালনা করতে পারেন।

লগ পর্যালোচনা করুন - Development এনভায়রনমেন্টে যান,

ফোর্জ অ্যাপ্লিকেশন ম্যানিফেস্ট এবং সোর্স কোড পর্যালোচনা করুন
" devai-jira-ui-qwiklabs/manifest.yml " ফাইলটি খুলুন এবং কনফিগারেশনটি ব্যাখ্যা করতে Gemini Code Assist ব্যবহার করুন।

ব্যাখ্যা পর্যালোচনা করুন।

নিম্নলিখিত ফাইলগুলি খুলুন এবং জেমিনি কোড অ্যাসিস্টকে সেগুলি ব্যাখ্যা করতে বলুন:
-
devai-jira-ui-qwiklabs/src/frontend/index.jsx -
devai-jira-ui-qwiklabs/src/resolvers/index.js

DevAI API ক্লাউড রান এন্ডপয়েন্ট দিয়ে Forge অ্যাপ আপডেট করুন
GCP প্রজেক্ট আইডি সেট করা আছে কিনা তা পরীক্ষা করুন:
gcloud config get project
অন্যথায়, Qwiklabs ল্যাব পৃষ্ঠা থেকে প্রজেক্ট আইডি ব্যবহার করে আপনার GCP প্রজেক্ট সেট করুন:
উদাহরণ: qwiklabs-gcp-00-2c10937585bb
gcloud config set project YOUR_QWIKLABS_PROJECT_ID
ক্লাউড রান পরিষেবার ইউআরএল সেট করুন:
export DEVAI_API_URL=$(gcloud run services list --filter="(devai-api)" --format="value(URL)")
forge variables set DEVAI_API_URL $DEVAI_API_URL
DEVAI API কী সেট করুন:
export DEVAI_API_KEY=api-key-that-you-created
forge variables set --encrypt DEVAI_API_KEY $DEVAI_API_KEY
নিচের কমান্ডটি চালিয়ে নিশ্চিত করুন:
forge variables list
নমুনা আউটপুট

ফোর্জ অ্যাপ্লিকেশন ম্যানিফেস্ট এবং কোড আপডেট করুন
এই কোড স্নিপেটগুলো রিপোটির sample-devai-jira-ui ফোল্ডারের মধ্যে পাওয়া যাবে।
এডিটরে ম্যানিফেস্ট ফাইলটি খুলুন: devai-jira-ui-qwiklabs/manifest.yml
ফাইলের শেষে নিচের লাইনগুলো যোগ করুন - Cloud Run এন্ডপয়েন্টের জায়গায় আপনার ডিপ্লয় করা এন্ডপয়েন্টটি বসান।
permissions:
scopes:
- read:jira-work
- write:jira-work
external:
fetch:
client:
- devai-api-gjerpi6qqq-uc.a.run.app/create-gitlab-mr # replace with YOUR CLOUD RUN URL
এডিটরে resolvers/index ফাইলটি খুলুন: devai-jira-ui-qwiklabs/src/resolvers/index.js
বিদ্যমান getText ফাংশনের পরে নিচের লাইনগুলো যোগ করুন।
resolver.define('getApiKey', (req) => {
return process.env.DEVAI_API_KEY;
});
resolver.define('getDevAIApiUrl', (req) => {
return process.env.DEVAI_API_URL;
});
এডিটরে frontend/index ফাইলটি খুলুন: devai-jira-ui-qwiklabs/src/frontend/index.jsx
index.jsx ফাইলটি নিচের কন্টেন্ট দিয়ে প্রতিস্থাপন করুন। লিঙ্কটি আপনার GitLab ইউজার আইডি/রিপোজিটরি দিয়ে আপডেট করুন।
দুটি জায়গা আছে যেখানে আপনাকে YOUR-GIT-USERID এবং YOUR-GIT-REPO আপডেট করতে হবে।
ফাইলটিতে এই লাইনটি খুঁজুন এবং পরিবর্তনগুলো করুন:
https://gitlab.com/ YOUR-GIT-USERID/YOUR-GIT-REPO /-/merge_requests
import React from 'react';
import ForgeReconciler, { Text, Link, useProductContext } from '@forge/react';
import { requestJira } from '@forge/bridge';
import { invoke } from '@forge/bridge';
import api, { route, assumeTrustedRoute } from '@forge/api';
const devAIApiKey = await invoke("getApiKey")
const devAIApiUrl = await invoke("getDevAIApiUrl")
const App = () => {
const context = useProductContext();
const [description, setDescription] = React.useState();
const fetchDescriptionForIssue = async () => {
const issueId = context?.extension.issue.id;
const res = await requestJira(`/rest/api/2/issue/${issueId}`);
const data = await res.json();
const bodyGenerateData = `{"prompt": ${JSON.stringify(data.fields.description)}}`;
const generateRes = await api.fetch(devAIApiUrl+'/create-gitlab-mr,
{
body: bodyGenerateData,
method: 'post',
headers: {
'Content-Type': 'application/json',
'x-devai-api-key': devAIApiKey,
},
}
)
const resData = await generateRes.text();
// Add link to the GitLab merge request page as a comment
await requestJira(`/rest/api/2/issue/${issueId}/comment`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: `{"body": "[GitLab Merge Request|https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests]"}`
});
return "Response will be added as a comment. Please refresh in a few moments.";
};
React.useEffect(() => {
if (context) {
fetchDescriptionForIssue().then(setDescription);
}
}, [context]);
return (
<>
<Text>{description}</Text>
<Link href='https://gitlab.com/YOUR-GIT-USERID/YOUR-GIT-REPO/-/merge_requests' openNewTab={true}>GitLab Merge Request</Link>
</>
);
};
ForgeReconciler.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
ফোর্জ অ্যাপ্লিকেশন পুনরায় স্থাপন করুন
package.json ফাইলে নির্ভরতা যোগ করুন:
"@forge/api": "4.0.0",
নির্ভরতা ইনস্টল করতে কমান্ডটি চালান:
npm install
আপডেট করা অ্যাপ্লিকেশনটি স্থাপন করুন:
forge deploy
নমুনা আউটপুট:
ℹ Uploading app ℹ Validating manifest ℹ Snapshotting functions ℹ Deploying to environment ✔ Deployed Deployed devai-jira-ui-qwiklabs to the development environment. We've detected new scopes or egress URLs in your app. Run forge install --upgrade and restart your tunnel to put them into effect.
আপডেট করা অ্যাপ্লিকেশনটি ইনস্টল করুন:
forge install --upgrade

নমুনা আউটপুট:
Upgrading your app on the Atlassian site. Your app will be upgraded with the following additional scopes: - read:jira-work - write:jira-work Your app will exchange data with the following urls: - devai-api-7su2ctuqpq-uc.a.run.app ? Do you want to continue? Yes ✔ Upgrade complete! Your app in the development environment is now the latest in Jira on genai-for-developers.atlassian.net.
টেস্ট ফোর্জ অ্যাপ্লিকেশন
আপনার জিরা প্রজেক্টে বিদ্যমান কোনো জিরা টাস্ক খুলুন অথবা একটি নতুন জিরা টাস্ক তৈরি করুন।
আগের প্যানেলটি যদি আগে থেকেই যোগ করা হয়ে থাকে, তবে আপনাকে সেটি সরিয়ে ফেলতে হবে।
" ... " এ ক্লিক করুন এবং মেনু থেকে রিমুভ (remove) নির্বাচন করুন। এরপর আপনি আবার বাটনটিতে ক্লিক করতে পারবেন।

জিরা মন্তব্যগুলি দেখুন
DEVAI API থেকে প্রতিক্রিয়া পাওয়ার পর, JIRA ইস্যুটিতে একটি মন্তব্য যোগ করা হবে।
- গিটল্যাব মার্জ অনুরোধ লিঙ্ক
দৃশ্যটি রিফ্রেশ করতে ' History ' এবং ' Comments ' ট্যাবের মধ্যে টগল করুন।

গিটল্যাব মার্জ অনুরোধ যাচাই করুন
GitLab খুলুন এবং আপনার প্রোজেক্টে নতুন কোনো মার্জ রিকোয়েস্ট এসেছে কিনা তা দেখুন।


ল্যাংস্মিথ এলএলএম ট্রেস
আপনি যদি এলএলএম ট্রেসিং কনফিগার করে থাকেন, তাহলে ল্যাংস্মিথ পোর্টাল খুলুন এবং গিটল্যাব মার্জ রিকোয়েস্ট তৈরির কলের জন্য এলএলএম ট্রেস পর্যালোচনা করুন।
ল্যাংস্মিথ এলএলএম ট্রেসের নমুনা।

৯. আপনার পরিবর্তনগুলো গিটহাব রিপোজিটরিতে পুশ করুন।
(ঐচ্ছিক অংশ)
এই ল্যাবের পরিবর্তনগুলো আপনার ব্যক্তিগত রিপোজিটরিতে পুশ করার জন্য গিটহাব ওয়েবসাইটে গিয়ে একটি নতুন রিপোজিটরি তৈরি করুন।
ক্লাউড কনসোলে ফিরে যান এবং টার্মিনালে গিট ইউজার নেম ও ইমেল সেট করুন।
কমান্ডগুলো চালানোর আগে মানগুলো আপডেট করুন।
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
SSH কী তৈরি করুন এবং এটি গিটহাব রিপোজিটরিতে যুক্ত করুন।
কমান্ডগুলো চালানোর আগে আপনার ইমেল আপডেট করুন।
কী তৈরি সম্পন্ন করতে পাসফ্রেজ প্রবেশ না করে একাধিকবার এন্টার চাপুন।
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
আপনার গিটহাব অ্যাকাউন্টে তৈরি করা পাবলিক কী যোগ করুন।
https://github.com/settings/keys খুলুন এবং " New SSH key "-এ ক্লিক করুন।
কী-নেম হিসেবে ' qwiklabs-key ' ব্যবহার করুন এবং শেষ কমান্ডের আউটপুটটি কপি/পেস্ট করুন।
টার্মিনালে ফিরে যান, পরিবর্তনগুলো কমিট ও পুশ করুন।
cd ~/genai-for-developers
git remote rm origin
উপরে তৈরি করা রিপোজিটরিটি ব্যবহার করে রিমোট অরিজিন সেট করুন।
আপনার রিপোজিটরি ইউআরএল দিয়ে প্রতিস্থাপন করুন।
git remote add origin git@github.com:YOUR-GITHUB-USERID/YOUR-GITHUB-REPO.git
পরিবর্তনগুলো যোগ করুন, কমিট করুন এবং পুশ করুন।
git add .
git commit -m "lab changes"
git push -u origin main
১০. অভিনন্দন!
অভিনন্দন, আপনি ল্যাবটি শেষ করেছেন!
আমরা যা আলোচনা করেছি:
- জেমিনি এপিআই-এর সাথে ইন্টিগ্রেট করার জন্য ক্লাউড রান অ্যাপ্লিকেশন কীভাবে ডেপ্লয় করবেন।
- জিরা-র জন্য অ্যাটলাসিয়ান ফোর্জ অ্যাপ কীভাবে তৈরি এবং স্থাপন করবেন।
- গিটল্যাব টাস্ক অটোমেশনের জন্য কীভাবে ল্যাংচেইন রিঅ্যাক্ট এজেন্ট ব্যবহার করবেন
- LangSmith-এ LLM ট্রেস কীভাবে পর্যালোচনা করবেন
এরপর কী:
- আরও হাতে-কলমে শেখার সেশন আসছে!
পরিষ্কার করা
এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, হয় রিসোর্সগুলো যে প্রজেক্টে রয়েছে সেটি ডিলিট করে দিন, অথবা প্রজেক্টটি রেখে দিয়ে আলাদা আলাদা রিসোর্সগুলো ডিলিট করে দিন।
প্রকল্পটি মুছে ফেলা হচ্ছে
বিলিং বন্ধ করার সবচেয়ে সহজ উপায় হলো টিউটোরিয়ালের জন্য তৈরি করা প্রজেক্টটি ডিলিট করে দেওয়া।
©২০২৪ গুগল এলএলসি। সর্বস্বত্ব সংরক্ষিত। গুগল এবং গুগল লোগো হলো গুগল এলএলসি-এর ট্রেডমার্ক। অন্য সকল কোম্পানি ও পণ্যের নাম তাদের সংশ্লিষ্ট কোম্পানিগুলোর ট্রেডমার্ক হতে পারে।