১. সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি জেমিনি ক্লাউড অ্যাসিস্ট-এর সাহায্যে গুগল ক্লাউডে পরিকাঠামো তৈরি করতে, ডেটা ক্যানভাসের SQL ফিচার ব্যবহার করে স্বাভাবিক ভাষার মাধ্যমে বিগকোয়েরি ডেটা কোয়েরি করতে, জেমিনি কোড অ্যাসিস্ট-এর সাহায্যে কোলাব এন্টারপ্রাইজ জুপিটার নোটবুক এবং এক্লিপ্স থেইয়া (ভিজ্যুয়াল স্টুডিও কোড)-তে কোড লিখতে এবং ভার্টেক্স এআই এজেন্ট বিল্ডারে ক্লাউড স্টোরেজ ও বিগকোয়েরি গ্রাউন্ডিং সোর্সের উপর নির্মিত এআই সার্চ ও চ্যাট ফিচার ইন্টিগ্রেট করতে গুগলের জেনারেটিভ এআই প্রোডাক্টগুলো ব্যবহার করবেন।
আমাদের লক্ষ্য হলো ‘এআই রেসিপি হ্যাভেন’ নামে একটি রেসিপি ও রান্নার ওয়েবসাইট তৈরি করা। সাইটটি পাইথন এবং স্ট্রিমলিট ব্যবহার করে তৈরি করা হবে এবং এতে দুটি প্রধান পেজ থাকবে। ‘কুকিং অ্যাডভাইস’ পেজে একটি চ্যাটবট থাকবে, যা আমরা জেমিনি এবং একগুচ্ছ রান্নার বইয়ের সাথে যুক্ত একটি ভার্টেক্স এআই এজেন্ট বিল্ডার-ভিত্তিক সোর্স ব্যবহার করে তৈরি করব। এটি রান্নার পরামর্শ দেবে এবং রান্না-সম্পর্কিত প্রশ্নের উত্তর দেবে। ‘রেসিপি সার্চ’ পেজটি হবে জেমিনি দ্বারা চালিত একটি সার্চ ইঞ্জিন, যা এবার একটি বিগকোয়েরি রেসিপি ডেটাবেসের উপর ভিত্তি করে তৈরি হবে।
এই অনুশীলনীর কোনো কোড নিয়ে যদি আপনি আটকে যান, তবে সমস্ত কোড ফাইলের সমাধান অনুশীলনীর গিটহাব রিপোজিটরির সলিউশন ব্রাঞ্চে দেওয়া আছে।
উদ্দেশ্য
এই ল্যাবে, আপনি নিম্নলিখিত কাজগুলো কীভাবে সম্পাদন করতে হয় তা শিখবেন:
- জেমিনি ক্লাউড অ্যাসিস্ট সক্রিয় করুন এবং ব্যবহার করুন
- রান্নার পরামর্শ দেওয়ার চ্যাটবটটির জন্য ভার্টেক্স এআই এজেন্ট বিল্ডারে একটি সার্চ অ্যাপ তৈরি করুন।
- Gemini Code Assist-এর সাহায্যে একটি Colab Enterprise নোটবুকে ডেটা লোড এবং পরিষ্কার করুন।
- রেসিপি জেনারেটরের জন্য ভার্টেক্স এআই এজেন্ট বিল্ডারে একটি সার্চ অ্যাপ তৈরি করুন।
- জেমিনির সামান্য সাহায্যে মূল পাইথন এবং স্ট্রিমলিট ওয়েব অ্যাপ্লিকেশনটির কাঠামো তৈরি করুন।
- ওয়েব অ্যাপ্লিকেশনটি ক্লাউড রানে স্থাপন করুন
- রান্নার পরামর্শ পৃষ্ঠাটিকে আমাদের রান্নার বই খোঁজার এজেন্ট বিল্ডার অ্যাপের সাথে সংযুক্ত করুন।
- (ঐচ্ছিক) রেসিপি সার্চ পেজটিকে রেসিপি-সার্চ এজেন্ট বিল্ডার অ্যাপের সাথে সংযুক্ত করুন।
- (ঐচ্ছিক) চূড়ান্ত অ্যাপ্লিকেশনটি অন্বেষণ করুন
২. সেটআপ এবং প্রয়োজনীয়তা
স্টার্ট ল্যাব বোতামে ক্লিক করার আগে
এই নির্দেশাবলী পড়ুন। ল্যাবগুলো সময়-সীমাবদ্ধ এবং আপনি এগুলো থামাতে পারবেন না। আপনি 'স্টার্ট ল্যাব' ক্লিক করলে যে টাইমারটি চালু হয়, সেটি দেখায় যে কতক্ষণের জন্য গুগল ক্লাউড রিসোর্স আপনার জন্য উপলব্ধ থাকবে।
এই কুইকল্যাবস হ্যান্ডস-অন ল্যাবটি আপনাকে কোনো সিমুলেশন বা ডেমো পরিবেশে নয়, বরং একটি বাস্তব ক্লাউড পরিবেশে নিজেই ল্যাবের কার্যক্রমগুলো করার সুযোগ দেয়। এটি আপনাকে নতুন, অস্থায়ী ক্রেডেনশিয়াল প্রদান করে, যা ব্যবহার করে আপনি ল্যাব চলাকালীন গুগল ক্লাউডে সাইন ইন ও অ্যাক্সেস করতে পারেন।
আপনার যা প্রয়োজন
এই ল্যাবটি সম্পন্ন করতে আপনার প্রয়োজন:
- একটি সাধারণ ইন্টারনেট ব্রাউজারের অ্যাক্সেস (ক্রোম ব্রাউজার সুপারিশ করা হয়)।
- ল্যাবটি শেষ করার সময় হয়েছে।
দ্রষ্টব্য: আপনার যদি আগে থেকেই নিজস্ব ব্যক্তিগত গুগল ক্লাউড অ্যাকাউন্ট বা প্রজেক্ট থাকে, তবে এই ল্যাবের জন্য সেটি ব্যবহার করবেন না।
দ্রষ্টব্য: আপনি যদি পিক্সেলবুক ব্যবহার করেন, তাহলে এই ল্যাবটি চালানোর জন্য একটি ইনকগনিটো উইন্ডো খুলুন।
আপনার ল্যাব কীভাবে শুরু করবেন এবং গুগল ক্লাউড কনসোলে কীভাবে সাইন ইন করবেন
- স্টার্ট ল্যাব বোতামে ক্লিক করুন। ল্যাবের জন্য অর্থ প্রদান করতে হলে, আপনার অর্থপ্রদানের পদ্ধতি বেছে নেওয়ার জন্য একটি পপ-আপ খুলবে। বাম দিকে একটি প্যানেল রয়েছে যেখানে অস্থায়ী ক্রেডেনশিয়ালগুলো দেওয়া আছে, যা আপনাকে এই ল্যাবের জন্য অবশ্যই ব্যবহার করতে হবে।

- ইউজারনেমটি কপি করুন, এবং তারপর 'ওপেন গুগল কনসোল'-এ ক্লিক করুন। ল্যাবটি রিসোর্সগুলো চালু করবে এবং তারপর আরেকটি ট্যাব খুলবে যেখানে সাইন ইন পেজটি দেখা যাবে।

পরামর্শ: ট্যাবগুলো পাশাপাশি আলাদা উইন্ডোতে খুলুন।
আপনি যদি ‘একটি অ্যাকাউন্ট বেছে নিন’ পৃষ্ঠাটি দেখতে পান, তাহলে ‘অন্য একটি অ্যাকাউন্ট ব্যবহার করুন’-এ ক্লিক করুন।

- সাইন ইন পেজে, কানেকশন ডিটেইলস প্যানেল থেকে কপি করা ইউজারনেমটি পেস্ট করুন। এরপর পাসওয়ার্ডটি কপি করে পেস্ট করুন।
গুরুত্বপূর্ণ: আপনাকে অবশ্যই কানেকশন ডিটেইলস প্যানেল থেকে ক্রেডেনশিয়াল ব্যবহার করতে হবে। আপনার কুইকল্যাবস (Qwiklabs) ক্রেডেনশিয়াল ব্যবহার করবেন না। যদি আপনার নিজের গুগল ক্লাউড (Google Cloud) অ্যাকাউন্ট থাকে, তবে এই ল্যাবের জন্য সেটি ব্যবহার করবেন না (এতে চার্জ এড়ানো যাবে)। ৪. পরবর্তী পৃষ্ঠাগুলিতে ক্লিক করে যান:
- শর্তাবলী মেনে নিন।
- রিকভারি অপশন বা টু-ফ্যাক্টর অথেন্টিকেশন যোগ করবেন না (কারণ এটি একটি অস্থায়ী অ্যাকাউন্ট)।
- ফ্রি ট্রায়ালের জন্য সাইন আপ করবেন না।
কিছুক্ষণ পর এই ট্যাবে ক্লাউড কনসোলটি খুলে যায়।
দ্রষ্টব্য: উপরের বাম দিকের নেভিগেশন মেনুতে ক্লিক করে আপনি গুগল ক্লাউড পণ্য ও পরিষেবাগুলির তালিকা দেখতে পারেন।

৩. কাজ ০. আপনার ওয়ার্কস্টেশন ক্লাস্টার পরীক্ষা করুন
এই ল্যাবের পরবর্তী অংশে আপনি কিছু ডেভেলপমেন্টের কাজ করার জন্য একটি গুগল ক্লাউড ওয়ার্কস্টেশন ব্যবহার করবেন। এই ল্যাবের স্টার্টআপ প্রক্রিয়াটি ইতিমধ্যেই আপনার ওয়ার্কস্টেশনের ক্লাস্টার তৈরি করা শুরু করে দিয়েছে। সামনে এগোনোর আগে, চলুন নিশ্চিত হয়ে নিই যে ক্লাস্টারটি তৈরি হচ্ছে।
- গুগল ক্লাউড কনসোলে, সার্চ বক্স ব্যবহার করে ক্লাউড ওয়ার্কস্টেশন -এ যান।
- ক্লাস্টার ব্যবস্থাপনা দেখতে বাম দিকের নেভিগেশন মেনু ব্যবহার করুন।
- যদি আপনার কোনো ক্লাস্টার আপডেট হতে থাকে, তাহলে আপনি টাস্ক ১-এ যেতে পারেন। যদি আপনি কোনো অবস্থাতেই কোনো ক্লাস্টার দেখতে না পান, তাহলে পেজটি রিফ্রেশ করুন। এরপরও যদি আপনি কোনো ক্লাস্টার আপডেট (বিল্ড) হতে না দেখেন, তাহলে এই নির্দেশাবলীর উপরের বাম দিকের বাটনটি ব্যবহার করে ল্যাবটি শেষ করুন এবং ল্যাবটি পুনরায় শুরু করুন।
৪. কাজ ১. জেমিনি ক্লাউড অ্যাসিস্ট সক্রিয় করুন এবং ব্যবহার করুন
এই টাস্কে আমরা জেমিনি ক্লাউড অ্যাসিস্ট সক্রিয় ও ব্যবহার করব। গুগল ক্লাউড কনসোলে কাজ করার সময়, জেমিনি ক্লাউড অ্যাসিস্ট আপনাকে পরামর্শ দিতে পারে, আপনার গুগল ক্লাউড ইনফ্রাস্ট্রাকচার তৈরি, কনফিগার এবং মনিটর করতে সাহায্য করতে পারে, এমনকি gcloud কমান্ডের পরামর্শ দিতে এবং টেরাফর্ম স্ক্রিপ্টও লিখতে পারে।
- ক্লাউড অ্যাসিস্ট ব্যবহারের জন্য সক্রিয় করতে, ক্লাউড কনসোল UI-এর উপরের সার্চ বক্সে ক্লিক করুন এবং ‘Ask Gemini’ নির্বাচন করুন (অথবা লেখাটি এমনও হতে পারে ‘Ask Gemini for Cloud console ’)।
- পেজটির Required API সেকশনে স্ক্রল করুন এবং Gemini for Google Cloud API-টি এনাবল করুন ।
- আপনি যদি সাথে সাথে কোনো চ্যাট ইন্টারফেস দেখতে না পান, তাহলে ‘ চ্যাটিং শুরু করুন’ (Start chatting) -এ ক্লিক করুন। ক্লাউড ওয়ার্কস্টেশন ব্যবহারের কিছু সুবিধা ব্যাখ্যা করতে জেমিনিকে জিজ্ঞাসা করে শুরু করুন। তৈরি হওয়া উত্তরটি ভালোভাবে দেখতে কয়েক মিনিট সময় নিন।
- এরপর, এজেন্ট বিল্ডারের সুবিধাগুলো এবং এটি কীভাবে জেনারেটিভ রেসপন্সকে বাস্তবসম্মত করতে সাহায্য করতে পারে, সে সম্পর্কে জিজ্ঞাসা করুন।
- সবশেষে, চলুন একটি তুলনা দেখা যাক। গুগল ক্লাউড কনসোলের জেমিনি চ্যাট উইন্ডোতে, নিম্নলিখিত প্রশ্নটি জিজ্ঞাসা করুন:
What are the major steps to creating a search app grounded in a
GCS data source using Vertex AI Agent builder?
- এখন, আপনার নন-ইনকগনিটো উইন্ডোতে, এখান থেকে পাবলিক জেমিনি ওয়েবসাইটে যান, প্রয়োজনে লগ ইন করুন এবং একই প্রশ্নটি জিজ্ঞাসা করুন। উত্তরগুলো কি একই বা অন্তত কাছাকাছি? নির্দিষ্ট ধাপগুলো কি একই? কোনোটি কি উল্লেখযোগ্যভাবে ভালো? যাই হোক, আমরা পরবর্তী ধাপগুলো আলোচনা করার সময় উত্তরগুলো মনে রাখবেন।
দ্রষ্টব্য: আপনি যদি আপনার অস্থায়ী কুইকল্যাবস অ্যাকাউন্ট ব্যবহার করে উপরের ধাপটি করার চেষ্টা করেন, তাহলে আপনাকে ব্লক করা হবে। যদি আপনার কর্মক্ষেত্রের অ্যাকাউন্টটিও ব্লক হয়ে যায়, কারণ আপনার সংস্থা জেমিনি ওয়েব অ্যাপ ব্যবহারের অনুমতি দিচ্ছে না, তাহলে কেবল এই ধাপটি এড়িয়ে যান এবং এগিয়ে যান। এটি এই অনুশীলনটি সম্পূর্ণ করার ক্ষেত্রে আপনার সক্ষমতাকে প্রভাবিত করবে না।
৫. কাজ ২. রান্নার পরামর্শ দেওয়ার চ্যাটবটটির জন্য ভার্টেক্স এআই এজেন্ট বিল্ডারে একটি সার্চ অ্যাপ তৈরি করুন।
আমরা যে ওয়েবসাইটটি তৈরি করছি, তাতে রান্নার পরামর্শের একটি পেজ থাকবে, যেখানে একটি চ্যাটবট থাকবে যা ব্যবহারকারীদের রান্না-সম্পর্কিত প্রশ্নের উত্তর খুঁজে পেতে সাহায্য করার জন্য ডিজাইন করা হয়েছে। এটি জেমিনি দ্বারা চালিত হবে এবং এর উৎস হিসেবে ৭০টি পাবলিক-ডোমেইন রান্নার বই ব্যবহার করা হবে। প্রশ্নের উত্তর দেওয়ার ক্ষেত্রে এই রান্নার বইগুলোই হবে জেমিনির তথ্যের নির্ভরযোগ্য উৎস।
- ক্লাউড কনসোল সার্চ বক্স ব্যবহার করে Vertex AI- তে যান। ড্যাশবোর্ড থেকে, ‘Enable All Recommended APIs’-এ ক্লিক করুন। যদি Vertex AI API-টি নিজে সক্রিয় করার জন্য কোনো পপ-আপ বক্স আসে, তবে সেটিও সক্রিয় করুন ।
- সার্চ ব্যবহার করে এজেন্ট বিল্ডারে যান, তারপর কন্টিনিউ করুন এবং এপিআই (API) অ্যাক্টিভেট করুন ।
- আমাদের পূর্ববর্তী পরামর্শ চাওয়ার সময় জেমিনি যেমনটা বলেছিল, এজেন্ট বিল্ডারে একটি সার্চ অ্যাপ তৈরি করার প্রক্রিয়া একটি নির্ভরযোগ্য ডেটা সোর্স তৈরির মাধ্যমে শুরু হয়। যখন ব্যবহারকারী সার্চ করেন, জেমিনি প্রশ্নটি এবং কীভাবে বুদ্ধিদীপ্ত উত্তর তৈরি করতে হবে তা বুঝতে পারে, কিন্তু সেই উত্তরে ব্যবহৃত তথ্যের জন্য এটি তার সহজাত জ্ঞানের উপর নির্ভর না করে, বরং প্রতিষ্ঠিত উৎসের উপর নির্ভর করে।
বাম দিকের মেনু থেকে, ডেটা স্টোরস (Data Stores)-এ যান এবং ডেটা স্টোর তৈরি করুন (Create Data Store)। ৪. আমাদের রান্নার পরামর্শ পেজটির ভিত্তি হিসেবে ব্যবহৃত পাবলিক ডোমেইন কুকবুকগুলো বর্তমানে একটি এক্সটার্নাল প্রজেক্টের ক্লাউড স্টোরেজ বাকেটে রয়েছে। ক্লাউড স্টোরেজ সোর্স টাইপটি নির্বাচন করুন। ৫. আমরা যে ধরনের তথ্য ইম্পোর্ট করছি, তার সাথে সম্পর্কিত ডিফল্ট অপশনগুলো পরীক্ষা করুন কিন্তু পরিবর্তন করবেন না। ইম্পোর্ট টাইপটি ফোল্ডার (Folder) হিসেবে সেট করা রাখুন এবং বাকেট পাথের জন্য ব্যবহার করুন: labs.roitraining.com/labs/old-cookbooks , তারপর কন্টিনিউ (Continue ) করুন। ৬. ডেটা স্টোরটির নাম দিন: old-cookbooks । আইডিটি এডিট করে old-cookbooks-id তে পরিবর্তন করুন এবং ডেটা স্টোরটি তৈরি করুন ।
ভার্টেক্স এআই এজেন্ট বিল্ডার বিভিন্ন ধরণের অ্যাপ সমর্থন করে, এবং ডেটা স্টোর প্রতিটির জন্য তথ্যের উৎস হিসেবে কাজ করে। সার্চ অ্যাপগুলো সাধারণ ব্যবহার এবং অনুসন্ধানের জন্য ভালো। চ্যাট অ্যাপগুলো ডেটাফ্লো চালিত চ্যাটবট/ভয়েসবট অ্যাপ্লিকেশনে জেনারেটিভ ফ্লো-এর জন্য ব্যবহৃত হয়। রিকমেন্ডেশন অ্যাপগুলো আরও ভালো রিকমেন্ডেশন ইঞ্জিন তৈরি করতে সাহায্য করে। এবং, এজেন্ট অ্যাপগুলো জেনএআই চালিত এজেন্ট তৈরির জন্য ব্যবহৃত হয়। অবশেষে, আমরা যা করতে চাই তার জন্য এজেন্ট সম্ভবত আমাদের সবচেয়ে ভালোভাবে সাহায্য করবে, কিন্তু যেহেতু পণ্যটি বর্তমানে প্রিভিউ করা হচ্ছে, আমরা সার্চ অ্যাপ টাইপটিই ব্যবহার করব। ৭. বাম পাশের মেনু ব্যবহার করে অ্যাপস -এ যান, তারপর ক্রিয়েট অ্যাপ-এ ক্লিক করুন। ৮. সার্চ অ্যাপ টাইপটি নির্বাচন করুন । বিভিন্ন অপশনগুলো পরীক্ষা করুন কিন্তু পরিবর্তন করবেন না। অ্যাপটির নাম দিন: cookbook-search । অ্যাপ আইডি এডিট করে cookbook-search-id সেট করুন। কোম্পানি হিসেবে Google সেট করুন এবং কন্টিনিউ করুন । ৯. কয়েক ধাপ আগে আপনার তৈরি করা old-cookbooks ডেটা স্টোরটি চেক করুন এবং সার্চ অ্যাপটি তৈরি করুন ।
আপনি যদি অ্যাক্টিভিটি ট্যাবটি দেখেন, তাহলে সম্ভবত দেখতে পাবেন যে কুকবুকগুলো এখনও ইম্পোর্ট এবং ইন্ডেক্স হচ্ছে। আমরা এজেন্ট বিল্ডারকে যে ৭০টি কুকবুক দিয়েছি, সেগুলোর মধ্যে থাকা হাজার হাজার পৃষ্ঠা ইন্ডেক্স করতে ৫ মিনিটের বেশি সময় লাগবে। এই কাজটি চলার সময়ে, চলুন আমাদের রেসিপি জেনারেটরের জন্য রেসিপি ডেটাবেসের কিছু ডেটা লোড এবং পরিষ্কার করে নিই।
৬. কাজ ৩। জেমিনি কোড অ্যাসিস্ট-এর সাহায্যে একটি কোলাব এন্টারপ্রাইজ নোটবুকে ডেটা লোড এবং পরিষ্কার করুন।
গুগল ক্লাউড জুপিটার নোটবুক নিয়ে কাজ করার জন্য কয়েকটি প্রধান উপায় প্রদান করে। আমরা গুগলের নতুনতম পরিষেবা, কোলাব এন্টারপ্রাইজ ব্যবহার করতে যাচ্ছি। আপনাদের মধ্যে কেউ কেউ হয়তো গুগলের কোলাব প্রোডাক্টটির সাথে পরিচিত, যা সাধারণত সেইসব ব্যক্তি ও প্রতিষ্ঠান ব্যবহার করে থাকে যারা একটি বিনামূল্যের পরিবেশে জুপিটার নোটবুক নিয়ে পরীক্ষা-নিরীক্ষা করতে চায়। কোলাব এন্টারপ্রাইজ হলো গুগল ক্লাউডের একটি বাণিজ্যিক পরিষেবা, যা গুগলের অন্যান্য ক্লাউড প্রোডাক্টগুলোর সাথে সম্পূর্ণরূপে সমন্বিত এবং যা জিসিপি (GCP) পরিবেশের নিরাপত্তা ও কমপ্লায়েন্স সক্ষমতার পূর্ণ সুবিধা গ্রহণ করে।
কোলাব এন্টারপ্রাইজের অন্যতম একটি বৈশিষ্ট্য হলো গুগলের জেমিনি কোড অ্যাসিস্টের সাথে ইন্টিগ্রেশন। কোড অ্যাসিস্ট বিভিন্ন কোড এডিটরে ব্যবহার করা যায় এবং কোড করার সময় এটি পরামর্শের পাশাপাশি নির্বিঘ্ন ইনলাইন সাজেশনও দিতে পারে। আমরা আমাদের রেসিপির ডেটা নিয়ে কাজ করার সময় এই জেনারেটিভ অ্যাসিস্ট্যান্টটির সাহায্য নেব।
- সার্চ ব্যবহার করে কোলাব এন্টারপ্রাইজ- এ যান এবং একটি নোটবুক তৈরি করুন । যদি কোলাবের নতুন ফিচারগুলো নিয়ে পরীক্ষা করার কোনো অফার পান, তবে তা বাতিল করুন। রানটাইম, অর্থাৎ নোটবুকের পেছনের কম্পিউটিং শক্তি, চালু করতে আপনার নতুন নোটবুকের উপরের ডান কোণায় থাকা 'কানেক্ট' বোতামটি চাপুন।

- Colab Enterprise Files প্যানে বর্তমান নোটবুকের নামের পাশে থাকা ট্রিপল ডট মেনু ব্যবহার করে এটির নাম পরিবর্তন করে
Data Wranglingরাখুন।

- একটি নতুন + টেক্সট বক্স তৈরি করুন এবং আপ অ্যারো ব্যবহার করে এটিকে পেজের প্রথম সেলে নিয়ে যান।

- টেক্সট বক্সটি সম্পাদনা করুন এবং লিখুন:
# Data Wrangling
Import the Pandas library
- আপনি এইমাত্র যে টেক্সট ব্লকটি তৈরি করেছেন তার নিচের কোড ব্লকে, 'imp' টাইপ করা শুরু করুন এবং Gemini Code Assist ধূসর রঙে বাকি ইম্পোর্টটি সাজেস্ট করবে। সাজেশনটি গ্রহণ করতে ট্যাব চাপুন।
import pandas as pd
- ইমপোর্ট কোড বক্সের নিচে, আরেকটি টেক্সট বক্স তৈরি করুন এবং লিখুন:
Create a Pandas DataFrame from: gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv. View the first few records.
- আরেকটি কোড ব্লক তৈরি ও সম্পাদনা করুন। আবার, 'df' টাইপ করা শুরু করুন এবং জেমিনি কোড অ্যাসিস্ট্যান্ট দ্বারা তৈরি কোডটি পরীক্ষা করুন। যদি তৈরি হওয়া সাজেশনের উপরে পাইথন কীওয়ার্ডের একটি অটোকমপ্লিট ড্রপ-লিস্ট দেখতে পান, তাহলে হালকা ধূসর রঙের সাজেস্টেড কোডটি দেখার জন্য 'escape' চাপুন। সাজেশনটি গ্রহণ করার জন্য আবার 'tab' চাপুন। যদি আপনার সাজেশনে 'head()' ফাংশন কলটি না থাকে, তবে সেটি যোগ করুন।
df = pd.read_csv('gs://labs.roitraining.com/labs/recipes/recipe_dataset.csv')
df.head()
- আপনার প্রথম কোড সেলে ক্লিক করুন, যেখানে আপনি Pandas ইম্পোর্ট করেছেন, এবং নির্বাচিত সেলটি রান করার জন্য Commands মেনু বা কিবোর্ড ব্যবহার করুন। কিবোর্ডে shift+enter চাপলে সেলটি রান হবে এবং ফোকাস পরবর্তী সেলে চলে যাবে, প্রয়োজনে একটি সেল তৈরিও হবে। পরবর্তী ধাপে যাওয়ার আগে সেলটি এক্সিকিউট হওয়া পর্যন্ত অপেক্ষা করুন।
দ্রষ্টব্য: যখন কোনো সেল এক্সিকিউট করা হয়নি, তখন আপনি ঠিক বাম পাশে [ ] দেখতে পাবেন। যখন একটি সেল এক্সিকিউট হতে থাকবে, আপনি একটি ঘূর্ণায়মান, চলমান অ্যানিমেশন দেখতে পাবেন। সেলটি শেষ হয়ে গেলে, [13]-এর মতো একটি সংখ্যা দেখা যাবে। ৯. যে সেলটি CSV ফাইলকে ডেটাফ্রেমে লোড করে, সেটি এক্সিকিউট করুন। ফাইলটি লোড হওয়া পর্যন্ত অপেক্ষা করুন এবং ডেটার প্রথম পাঁচটি সারি পরীক্ষা করুন। এটিই সেই রেসিপি ডেটা যা আমরা BigQuery-তে লোড করব এবং অবশেষে আমাদের রেসিপি জেনারেটরকে ভিত্তি দেওয়ার জন্য এটি ব্যবহার করব। ১০. একটি নতুন কোড ব্লক তৈরি করুন এবং নিচের কমেন্টটি লিখুন। কমেন্টটি টাইপ করার পর, পরবর্তী কোড লাইনে যান এবং আপনি df.columns সাজেশনটি পাবেন। এটি গ্রহণ করুন এবং তারপর সেলটি রান করুন।
# List the current DataFrame column names
আমরা এইমাত্র দেখিয়েছি যে, একটি জুপিটার নোটবুকে জেমিনি কোড অ্যাসিস্ট থেকে সাহায্য পাওয়ার জন্য আপনার কাছে আসলেই দুটি উপায় আছে: কোড সেলের উপরে টেক্সট সেল, অথবা কোড সেলের ভেতরেই কমেন্ট। কোড সেলের ভেতরের কমেন্ট জুপিটার নোটবুকে ভালোভাবে কাজ করে, কিন্তু এই পদ্ধতিটি গুগলের জেমিনি কোড অ্যাসিস্ট সমর্থনকারী অন্য যেকোনো IDE-তেও কাজ করবে।
- চলুন কলামটি কিছুটা পরিপাটি করা যাক।
Unnamed: 0কলামটির নাম পরিবর্তন করেidরাখুন এবং এটিকেuriএর সাথেlink। কোডটি তৈরি করার জন্য আপনার পছন্দের prompt > code কৌশল ব্যবহার করুন, তারপর সন্তুষ্ট হলে সেলটি রান করুন।
# Rename the column 'Unnamed: 0' to 'id' and 'link' to 'uri'
df.rename(columns={'Unnamed: 0': 'id', 'link': 'uri'}, inplace=True)
-
sourceএবংNERকলামগুলো মুছে ফেলুন এবংhead()ব্যবহার করে প্রথম কয়েকটি সারি দেখুন। এক্ষেত্রেও, Gemini-র সাহায্য নিন। শেষ দুটি লাইন রান করুন এবং ফলাফলগুলো পরীক্ষা করে দেখুন।
# Remove the source and NER columns
df.drop(columns=['source', 'NER'], inplace=True)
df.head()
- চলুন দেখি আমাদের ডেটাসেটে কতগুলো রেকর্ড আছে। আবার, আপনার পছন্দের প্রম্পটিং কৌশল দিয়ে শুরু করুন এবং দেখুন আপনি জেমিনিকে দিয়ে কোডটি তৈরি করাতে পারেন কিনা।
# Count the records in the DataFrame
df.shape # count() will also work
- ২২.৩ লক্ষ রেকর্ডে সম্ভবত আমাদের হাতে থাকা সময়ের চেয়ে বেশি রেসিপি রয়েছে। এজেন্ট বিল্ডারে ইনডেক্সিং প্রক্রিয়াটি আমাদের আজকের অনুশীলনের জন্য সম্ভবত অনেক বেশি সময় নেবে। একটি আপোস হিসেবে, চলুন ১,৫০,০০০ রেসিপি নমুনা হিসেবে নিয়ে তা নিয়ে কাজ করি। নমুনাটি নিতে এবং এটিকে
dfs(s মানে ছোট) নামের একটি নতুন ডেটাফ্রেমে সংরক্ষণ করতে আপনার প্রম্পট > কোড পদ্ধতি ব্যবহার করুন।
# Sample out 150,000 records into a DataFrame named dfs
dfs = df.sample(n=150000)
- আমাদের রেসিপির উৎস ডেটা BigQuery-তে লোড করার জন্য প্রস্তুত। লোড করার আগে, চলুন BigQuery-তে গিয়ে আমাদের টেবিলটি রাখার জন্য একটি ডেটাসেট প্রস্তুত করি। Google Cloud Console-এর সার্চ বক্স ব্যবহার করে BigQuery- তে যান। আপনি BigQuery-তে রাইট-ক্লিক করে এটি একটি নতুন ব্রাউজার ট্যাবেও খুলতে পারেন।
- যদি এটি আগে থেকেই দেখা না যায়, তাহলে ক্লাউড কনসোলের উপরের ডানদিকে থাকা জেমিনি লোগো ব্যবহার করে জেমিনি এআই চ্যাট প্যানেলটি খুলুন। যদি আপনাকে আবার এপিআই (API) চালু করতে বলা হয়, তাহলে 'enable' চাপুন অথবা পৃষ্ঠাটি রিফ্রেশ করুন। এই প্রম্পটটি চালান:
What is a dataset used for in BigQuery?উত্তরটি খতিয়ে দেখার পর জিজ্ঞাসা করুন:How can I create a dataset named recipe_data using the Cloud Console?ফলাফলগুলোকে নিম্নলিখিত কয়েকটি ধাপের সাথে তুলনা করুন।

- BigQuery Explorer প্যানে, আপনার প্রজেক্ট আইডির পাশে থাকা ট্রিপল ডট ভিউ অ্যাকশনস মেনুতে ক্লিক করুন। তারপর ক্রিয়েট ডেটাসেট (Create dataset) নির্বাচন করুন।

-
recipe_dataডেটাসেট এবং আইডি দিন। লোকেশন টাইপ US রাখুন এবং ডেটাসেট তৈরি করুন । যদি ডেটাসেটটি আগে থেকেই বিদ্যমান থাকার কোনো ত্রুটি বার্তা পান, তবে পরবর্তী ধাপে যান।
BigQuery-তে ডেটাসেট তৈরি হয়ে গেলে, চলুন আমাদের নোটবুকে ফিরে যাই এবং ইনসার্ট করি। ১৯. Colab Enterprise-এ আপনার ডেটা র্যাঙ্গলিং নোটবুকে ফিরে যান। একটি নতুন কোড সেলে, project_id নামে একটি ভ্যারিয়েবল তৈরি করুন এবং এটি আপনার বর্তমান প্রজেক্ট আইডি রাখার জন্য ব্যবহার করুন। এই নির্দেশাবলীর উপরের বাম দিকে, 'এন্ড ল্যাব' বাটনের নিচে দেখুন, এবং আপনি বর্তমান প্রজেক্ট আইডিটি খুঁজে পাবেন। আপনি চাইলে এটি ক্লাউড কনসোল হোম পেজেও পাবেন। আপনার project_id ভ্যারিয়েবলে মানটি অ্যাসাইন করুন এবং সেলটি রান করুন।
# Create a variable to hold the current project_id
project_id='YOUR_PROJECT_ID'
- `prompt > code` পদ্ধতি ব্যবহার করে একটি কোড ব্লক তৈরি করুন যা আমাদের সদ্য তৈরি করা
recipe_dataডেটাসেটেরrecipesনামের একটি টেবিলেdfsডেটাফ্রেমটি সন্নিবেশ করবে। সেলটি রান করুন।
dfs.to_gbq(destination_table='recipe_data.recipes', project_id=project_id, if_exists='replace')
৭. কাজ ৪. রেসিপি জেনারেটরের জন্য ভার্টেক্স এআই এজেন্ট বিল্ডারে একটি সার্চ অ্যাপ তৈরি করুন।
চমৎকার, আমাদের রেসিপি ডেটার টেবিলটি তৈরি হয়ে গেছে, এবার চলুন এটিকে ব্যবহার করে আমাদের রেসিপি জেনারেটরের জন্য একটি নির্ভরযোগ্য ডেটা সোর্স তৈরি করি। আমরা যে পদ্ধতিটি ব্যবহার করব তা আমাদের কুকিং চ্যাটবটের জন্য যা করেছিলাম তার মতোই হবে। আমরা একটি ডেটা স্টোর তৈরি করতে ভার্টেক্স এআই এজেন্ট বিল্ডার ব্যবহার করব, এবং তারপর সেটিকে একটি সার্চ অ্যাপের জন্য তথ্যের মূল উৎস হিসেবে ব্যবহার করব।
আপনি চাইলে, এজেন্ট বিল্ডার সার্চ অ্যাপ তৈরি করার ধাপগুলো মনে করিয়ে দেওয়ার জন্য গুগল ক্লাউড কনসোলে জেমিনিকে জিজ্ঞাসা করতে পারেন, অথবা নিচে তালিকাভুক্ত ধাপগুলো অনুসরণ করতে পারেন।
- সার্চ ব্যবহার করে এজেন্ট বিল্ডারে যান। ডেটা স্টোরস খুলুন এবং ডেটা স্টোর তৈরি করুন । এবার, বিগকোয়েরি ডেটা স্টোর টাইপটি নির্বাচন করুন ।
- টেবিল সিলেকশন সেলে, ব্রাউজ চাপুন এবং
recipesঅনুসন্ধান করুন। আপনার টেবিলের পাশের রেডিও বাটনটি সিলেক্ট করুন। যদি আপনি অন্য qwiklabs-gcp-... প্রোজেক্টের রেসিপি দেখতে পান, তাহলে নিশ্চিত করুন যে আপনি আপনার নিজের প্রোজেক্টটিই সিলেক্ট করেছেন ।
দ্রষ্টব্য: আপনি যদি এর পাশের রেডিও বোতামটি নির্বাচন না করে recipes তে ক্লিক করেন, তাহলে এটি আপনার ব্রাউজারে একটি নতুন ট্যাব খুলবে এবং আপনাকে BigQuery-এর টেবিল ওভারভিউ পৃষ্ঠায় নিয়ে যাবে। শুধু ব্রাউজার ট্যাবটি বন্ধ করুন এবং এজেন্ট বিল্ডারে রেডিও বোতামটি নির্বাচন করুন। ৩. বাকি ডিফল্ট বিকল্পগুলি পরীক্ষা করুন কিন্তু পরিবর্তন করবেন না, তারপর চালিয়ে যান । ৪. স্কিমা পর্যালোচনা পৃষ্ঠায়, প্রাথমিক ডিফল্ট কনফিগারেশনগুলি পরীক্ষা করুন, কিন্তু কিছু পরিবর্তন করবেন না। চালিয়ে যান। ৫. ডেটাস্টোরের নাম দিন recipe-data । ডেটাস্টোর আইডি সম্পাদনা করুন এবং এটিকে recipe-data-id তে সেট করুন। ডেটা স্টোর তৈরি করুন । ৬. বাম দিকের নেভিগেশন মেনু ব্যবহার করে অ্যাপস -এ যান এবং অ্যাপ তৈরি করুন । ৭. আরও একবার সার্চ অ্যাপটি নির্বাচন করুন । অ্যাপটির নাম দিন recipe-search এবং আইডিটি recipe-search-id তে সেট করুন। কোম্পানির নাম Google তে সেট করুন এবং চালিয়ে যান । ৮. এবার, recipe-data ডেটা সোর্সগুলি চেক করুন। অ্যাপটি তৈরি করুন ।
আমাদের ডাটাবেস টেবিলটি ইন্ডেক্স হতে কিছুটা সময় লাগবে। এই সময়ের মধ্যে, চলুন BigQuery-এর নতুন ডেটা ক্যানভাস নিয়ে পরীক্ষা-নিরীক্ষা করে দেখি এবং এক-দুটি আকর্ষণীয় উপায় খুঁজে পাই কিনা। ৯. সার্চ বক্স ব্যবহার করে BigQuery- তে যান। BigQuery Studio-এর উপরে, একদম ডানদিকের ট্যাবের পাশের নিচের দিকে মুখ করা তীরচিহ্নে ক্লিক করুন এবং ডেটা ক্যানভাস নির্বাচন করুন। রিজিয়নটি us-central1- এ সেট করুন।

- ডেটা ক্যানভাসের সার্চ বক্সে
recipesলিখে সার্চ করুন এবং আপনার টেবিলটি ক্যানভাসে যোগ করুন । - আপনার রেসিপি টেবিলের একটি ভিজ্যুয়াল উপস্থাপনা BigQuery ডেটা ক্যানভাসে লোড করা হবে। আপনি টেবিলের স্কিমা অন্বেষণ করতে, টেবিলের ডেটার প্রিভিউ দেখতে এবং অন্যান্য বিবরণ পরীক্ষা করতে পারেন। টেবিলের উপস্থাপনার নিচে, কোয়েরি (Query) -তে ক্লিক করুন।
- ক্যানভাসটি একটি মোটামুটি সাধারণ BigQuery কোয়েরি ডায়ালগ লোড করবে, তবে একটি অতিরিক্ত বিষয় থাকবে: কোয়েরি উইন্ডোর উপরে একটি টেক্সট বক্স রয়েছে যা ব্যবহার করে আপনি Gemini-র কাছে সাহায্য চাইতে পারেন। চলুন দেখি আমাদের স্যাম্পলে কিছু কেকের রেসিপি খুঁজে পাওয়া যায় কিনা। নিচের প্রম্পটটি চালান (টেক্সটটি টাইপ করে এবং SQL জেনারেশন শুরু করার জন্য এন্টার/রিটার্ন চাপুন):
Please select the title and ingredients for all the recipes with a title that contains the word cake.
- তৈরি হওয়া SQL-টি দেখুন। সন্তুষ্ট হলে, কোয়েরিটি চালান ।
- মন্দ না! সামনে এগোনোর আগে আরও কয়েকটি প্রম্পট ও কোয়েরি নিয়ে পরীক্ষা করে দেখতে পারেন। পরীক্ষা করার সময়, কোনটি কাজ করে আর কোনটি করে না, তা দেখার জন্য কম সুনির্দিষ্ট প্রম্পট ব্যবহার করে দেখুন। উদাহরণস্বরূপ, এই প্রম্পটটি:
Do I have any chili recipes?
(নতুন কোয়েরিটি চালাতে ভুলবেন না) এটি চিলি রেসিপির একটি তালিকা ফেরত দিয়েছিল, কিন্তু উপকরণগুলো বাদ দিয়েছিল, যতক্ষণ না আমি এটিকে নিম্নোক্তভাবে পরিবর্তন করি:
Do I have any chili recipes? Please include their title and ingredients.
(হ্যাঁ, কেউ বললে আমি ‘প্লিজ’ বলি। আমার মা খুব গর্বিত হতেন।)
আমি লক্ষ্য করলাম যে একটি চিলি রেসিপিতে মাশরুম ছিল, আর চিলিতে ওটা কে-ই বা চায়? আমি জেমিনিকে ওই রেসিপিগুলো বাদ দিতে সাহায্য করতে বললাম।
Do I have any chili recipes? Please include their title and ingredients, and ignore any recipes with mushrooms as an ingredient.
৮. কাজ ৫। জেমিনির সামান্য সাহায্যে মূল পাইথন এবং স্ট্রিমলিট ওয়েব অ্যাপ্লিকেশনটির কাঠামো তৈরি করুন।
আমাদের Vertex AI Agent Builder-এর দুটি ডেটা স্টোরই ইন্ডেক্স হয়ে যাওয়ায় এবং আমাদের সার্চ অ্যাপগুলোও চালু হওয়ার জন্য প্রায় প্রস্তুত, চলুন এবার আমাদের ওয়েব অ্যাপ্লিকেশনটি তৈরি করা শুরু করা যাক।
কাজ করার সময় আমরা Gemini Code Assist ব্যবহার করব। Visual Studio Code-এ Gemini Code Assist ব্যবহারের বিষয়ে আরও তথ্যের জন্য, এখানের ডকুমেন্টেশন দেখুন।
আমরা আমাদের ডেভেলপমেন্টের কাজ একটি গুগল ক্লাউড ওয়ার্কস্টেশনে করব; এটি একটি ক্লাউড-ভিত্তিক ডেভেলপমেন্ট এনভায়রনমেন্ট, যা আমাদের ক্ষেত্রে এক্লিপ্স থেইয়া (ওপেন সোর্স ভিজ্যুয়াল স্টুডিও কোড) দিয়ে আগে থেকেই লোড করা আছে। এই অনুশীলনের একটি স্বয়ংক্রিয় স্ক্রিপ্ট আমাদের জন্য ক্লাউড ওয়ার্কস্টেশন ক্লাস্টার এবং কনফিগারেশন তৈরি করে দিয়েছে, কিন্তু আমাদের এখনও ক্লাউড ওয়ার্কস্টেশনটি তৈরি করতে হবে। আপনি যদি ক্লাউড ওয়ার্কস্টেশন এবং এর ব্যবহার সম্পর্কে আরও তথ্য জানতে চান, তাহলে জেমিনি ক্লাউড অ্যাসিস্ট-কে জিজ্ঞাসা করতে পারেন :-)
- সার্চ ব্যবহার করে ক্লাউড ওয়ার্কস্টেশন- এ যান, তারপর ক্রিয়েট ওয়ার্কস্টেশন-এ ক্লিক করুন । ওয়ার্কস্টেশনটির নাম দিন
dev-envএবং my-config কনফিগারেশনটি ব্যবহার করুন। ওয়ার্কস্টেশনটি তৈরি করুন । - কয়েক মিনিট পর, আপনি আপনার 'আমার ওয়ার্কস্টেশন' তালিকায় আপনার নতুন ওয়ার্কস্টেশনটি দেখতে পাবেন।
dev-envচালু করুন এবং এটি চালু হয়ে গেলে, ডেভেলপমেন্ট এনভায়রনমেন্টটি লঞ্চ করুন । - ওয়ার্কস্টেশন এডিটরটি একটি নতুন ব্রাউজার ট্যাবে খুলবে এবং কিছুক্ষণ পরেই আপনি পরিচিত থেইয়া (ভিজ্যুয়াল স্টুডিও কোড) ইন্টারফেসটি দেখতে পাবেন। ইন্টারফেসের বাম দিকে, সোর্স কন্ট্রোল ট্যাবটি এক্সপ্যান্ড করুন এবং ক্লোন রিপোজিটরি চাপুন।

- রিপোজিটরি ইউআরএল হিসেবে
https://github.com/haggman/recipe-appলিখুন। রিপোটি আপনারuserফোল্ডারে ক্লোন করুন, তারপর সম্পাদনার জন্য ক্লোন করা রিপোটি খুলুন । - ক্লোন করা ফোল্ডারটি অন্বেষণ করার এবং আমাদের ওয়েব অ্যাপ্লিকেশনে কাজ শুরু করার আগে, আমাদের এডিটরের ক্লাউড কোড প্লাগইনটিকে গুগল ক্লাউডে লগ ইন করতে হবে এবং জেমিনি (Gemini) সক্রিয় করতে হবে। চলুন, এখন সেটাই করা যাক। আপনার এডিটরের নিচের বাম দিকে, ‘ক্লাউড কোড - সাইন ইন’ (Cloud Code - Sign in) -এ ক্লিক করুন। যদি লিঙ্কটি দেখতে না পান, তবে এক মিনিট অপেক্ষা করে আবার দেখুন।

- টার্মিনাল উইন্ডোতে একটি দীর্ঘ ইউআরএল (URL) প্রদর্শিত হবে। ব্রাউজারে ইউআরএলটি খুলুন এবং আপনার গুগল ক্লাউড এনভায়রনমেন্টে ক্লাউড কোডকে অ্যাক্সেস দেওয়ার জন্য ধাপগুলো অনুসরণ করুন। প্রমাণীকরণের সময় নিশ্চিত করুন যে আপনি আপনার ব্যক্তিগত গুগল ক্লাউড অ্যাকাউন্টের পরিবর্তে আপনার exercise temp
student-...অ্যাকাউন্টটি ব্যবহার করছেন। চূড়ান্ত ডায়ালগ বক্সে, ভেরিফিকেশন কোডটি কপি করুন এবং আপনার ক্লাউড ওয়ার্কস্টেশন ব্রাউজার ট্যাবে থাকা অপেক্ষারত টার্মিনাল উইন্ডোতে সেটি পেস্ট করুন। - কিছুক্ষণ পর, আপনার এডিটরের নিচের বাম দিকের ক্লাউড কোড লিঙ্কটি ‘ক্লাউড কোড - নো প্রজেক্ট’ -এ পরিবর্তিত হবে। একটি প্রজেক্ট নির্বাচন করতে নতুন লিঙ্কটিতে ক্লিক করুন। এডিটরের উপরে কমান্ড প্যালেটটি খুলে যাবে। ‘সিলেক্ট আ গুগল ক্লাউড প্রজেক্ট’-এ ক্লিক করুন এবং আপনার qwiklabs-gcp-... প্রজেক্টটি নির্বাচন করুন। কিছুক্ষণ পর, আপনার এডিটরের নিচের বাম দিকের লিঙ্কটি আপডেট হয়ে আপনার প্রজেক্ট আইডি প্রদর্শন করবে। এটি নির্দেশ করে যে ক্লাউড কোড আপনার চলমান প্রজেক্টের সাথে সফলভাবে সংযুক্ত হয়েছে।
- আপনার প্রোজেক্টের সাথে ক্লাউড কোড সংযুক্ত থাকলে, আপনি এখন জেমিনি কোড অ্যাসিস্ট সক্রিয় করতে পারবেন। আপনার এডিটর ইন্টারফেসের নিচের ডানদিকে, কাটা চিহ্নযুক্ত জেমিনি লোগোতে ক্লিক করুন। এডিটরের বাম দিকে জেমিনি চ্যাট প্যানেলটি খুলবে। 'Select a Google Cloud Project'-এ ক্লিক করুন। যখন কমান্ড প্যালেটটি খুলবে, তখন আপনার qwiklabs-gcp-... প্রোজেক্টটি নির্বাচন করুন। যদি আপনি ধাপগুলো সঠিকভাবে অনুসরণ করে থাকেন (এবং গুগল কোনো পরিবর্তন না করে থাকে), তাহলে আপনি এখন একটি সক্রিয় জেমিনি চ্যাট উইন্ডো দেখতে পাবেন।

- সবশেষে, চলুন এডিটর টার্মিনাল উইন্ডোটিকেও একইভাবে কনফিগার করে নিই। টার্মিনাল উইন্ডোটি খুলতে হ্যামবার্গার মেনু > ভিউ > টার্মিনাল ব্যবহার করুন।
gcloud initএক্সিকিউট করুন। আবারও, আপনারqwiklabs-gcp-...প্রোজেক্টের বিরুদ্ধে ক্লাউড শেল টার্মিনালকে কাজ করার অনুমতি দিতে লিঙ্কটি ব্যবহার করুন। জিজ্ঞাসা করা হলে, আপনারqwiklabs-gcp-...প্রোজেক্টের সংখ্যাসূচক বিকল্পটি নির্বাচন করুন। - চমৎকার, আমাদের টার্মিনাল, জেমিনি চ্যাট এবং ক্লাউড কোড কনফিগারেশন সবকিছু প্রস্তুত হয়ে গেলে, এক্সপ্লোরার ট্যাবটি খুলুন এবং বর্তমান প্রজেক্টের ফাইলগুলো ঘুরে দেখতে কয়েক মিনিট সময় নিন।

- এক্সপ্লোরারে আপনার
requirements.txtফাইলটি সম্পাদনার জন্য খুলুন। জেমিনি চ্যাট প্যানে যান এবং জিজ্ঞাসা করুন:
From the dependencies specified in the requirements.txt file, what type of application are we building?
- তাহলে, আমরা পাইথন এবং স্ট্রিমলিট ব্যবহার করে একটি ইন্টারেক্টিভ ওয়েব অ্যাপ্লিকেশন তৈরি করছি যা ভার্টেক্স এআই এবং ডিসকভারি ইঞ্জিনের সাথে যোগাযোগ করছে, চমৎকার। আপাতত, চলুন ওয়েব অ্যাপ্লিকেশনটির উপাদানগুলোর উপর মনোযোগ দিই। জেমিনি যেমনটা বলেছেন, স্ট্রিমলিট হলো পাইথনে ডেটা-চালিত ওয়েব অ্যাপ্লিকেশন তৈরির একটি ফ্রেমওয়ার্ক। এখন জিজ্ঞাসা করুন:
Does the current project's folder structure seem appropriate for a Streamlit app?s
এইখানেই জেমিনির সমস্যা হয়। জেমিনি এডিটরে আপনার বর্তমানে খোলা ফাইলটি অ্যাক্সেস করতে পারে, কিন্তু এটি আসলে পুরো প্রজেক্টটি দেখতে পায় না। এটি জিজ্ঞাসা করে দেখুন:
Given the below, does the current project's file and folder structure seem appropriate for a Streamlit app?
- build.sh
- Home.py
- requirements.txt
- pages
-- Cooking_Advice.py
-- Recipe_Search.py
আরও ভালো উত্তর পাবেন?
- চলুন স্ট্রিমলিট সম্পর্কে আরও কিছু তথ্য জেনে নেওয়া যাক:
What can you tell me about Streamlit?
বেশ, তাহলে আমরা দেখতে পাচ্ছি যে মিথুন রাশি আমাদের সুবিধা-অসুবিধা সহ একটি সুন্দর সামগ্রিক চিত্র তুলে ধরছে।
- যদি আপনি অসুবিধাগুলো খতিয়ে দেখতে চান, তাহলে জিজ্ঞাসা করতে পারেন:
What are the major downsides or shortcomings?
লক্ষ্য করুন, আমাদের "স্ট্রিমলিটের" কথাটা বলার প্রয়োজন হয়নি, কারণ জেমিনি চ্যাট কথোপকথনমূলক (একাধিক পালা)। আমরা একটি চ্যাট সেশনে থাকায় জেমিনি জানে আমরা কী নিয়ে কথা বলছিলাম। যদি কোনো সময়ে আপনি জেমিনি চ্যাটের ইতিহাস পুরোপুরি মুছে ফেলতে চান, তাহলে জেমিনি কোড চ্যাট উইন্ডোর উপরের দিকে থাকা ট্র্যাশক্যান আইকনটি ব্যবহার করুন।
৯. কাজ ৬: ওয়েব অ্যাপ্লিকেশনটি ক্লাউড রান-এ ডেপ্লয় করুন।
চমৎকার, আমাদের মূল অ্যাপ্লিকেশন কাঠামোটি তৈরি হয়ে গেছে, কিন্তু সবকিছু কি ঠিকঠাক কাজ করবে? আরও ভালো হয় যদি আমরা জানতে পারি যে গুগল ক্লাউডে এটি কোথায় হোস্ট করা উচিত?
- জেমিনি চ্যাট উইন্ডোতে জিজ্ঞাসা করুন:
If I containerize this application, what compute technologies
in Google Cloud would be best for hosting it?
- মনে রাখবেন, আপনি যদি আগে থেকেই আপনার IDE-তে কাজ না করে থাকেন, তাহলে আপনি Google Cloud Assist-ও ব্যবহার করতে পারেন। Google Cloud Console খুলুন, তারপর Gemini Cloud Assist খুলুন এবং জিজ্ঞাসা করুন:
If I have a containerized web application, where would be the
best place to run it in Google Cloud?
পরামর্শের দুটি সেট কি একই ছিল? আপনি কি কোনো পরামর্শের সাথে একমত বা দ্বিমত পোষণ করেন? মনে রাখবেন, জেমিনি একটি জেনারেটিভ এআই অ্যাসিস্ট্যান্ট, এবং একজন মানব সহকারীর মতোই, এর বলা সব কথার সাথে আপনি সবসময় একমত হবেন না। তবুও, গুগল ক্লাউডে এবং আপনার কোড এডিটরে কাজ করার সময় এই সহায়কটিকে সবসময় পাশে পেলে তা আপনাকে অনেক বেশি দক্ষ করে তুলতে পারে।
- স্টেটলেস ও স্বল্পস্থায়ী কন্টেইনারাইজড ওয়েব অ্যাপ্লিকেশনের জন্য ক্লাউড রান একটি দারুণ বিকল্প হবে। আপনার কোড এডিটরের জেমিনি চ্যাট উইন্ডোতে এই প্রম্পটটি চেষ্টা করুন:
What steps would be required to run this application in
Cloud Run?
- মনে হচ্ছে, আমাদের প্রথম কাজ হলো একটি Dockerfile তৈরি করা। এডিটর ব্যবহার করে আপনার প্রজেক্ট ফোল্ডারের রুটে
Dockerfileনামে একটি ফাইল তৈরি করুন। খেয়াল রাখবেন যেন ভুল করে ফাইলটি pages ফোল্ডারে না রাখেন। সম্পাদনা করার জন্য ফাইলটি খুলুন। - চলুন, আমাদের
Dockerfileতৈরি করার জন্য সাইড জেমিনি চ্যাট প্যানেলটি ব্যবহার করি। নিচের মতো একটি প্রম্পট ব্যবহার করুন। চ্যাটে ফলাফল প্রদর্শিত হলে, প্রস্তাবিত ডকারফাইলটির ঠিক উপরে থাকা কপি আইকনের পাশের + চিহ্নটি ব্যবহার করে প্রস্তাবিত কোডটি ডকারফাইলটিতে যুক্ত করুন।
Create a Dockerfile for the application in the current folder.
The dependencies are defined in requirements.txt and I want you
to use the Python 3 slim bookworm base image.
জেমিনি একই প্রম্পটের জবাবে সবসময় একই প্রতিক্রিয়া দেয় না। প্রথমবার যখন আমি জেমিনির কাছে একটি ডকারফাইল চেয়েছিলাম, তখন আমি ঠিক সেই ফাইলটিই পেয়েছিলাম যা আমি আপনাকে ব্যবহার করার পরামর্শ দেব। এইমাত্র আমি এই পরামর্শটি পেলাম:
```docker
# Base image
FROM python:3-bookworm-slim
# Set working directory
WORKDIR /app
# Install dependencies
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
gcc \
python3-dev \
&& rm -rf /var/lib/apt/lists/*
# Install pip and virtualenv
RUN pip install --upgrade pip virtualenv
# Create virtual environment
RUN python3 -m venv venv
# Activate virtual environment
WORKDIR /app/venv/bin
RUN . activate
# Install Streamlit and libraries from requirements.txt
RUN pip install -r requirements.txt
# Copy application files
COPY . /app
# Expose port 8501 for Streamlit
EXPOSE 8501
# Start Streamlit app
CMD ["streamlit", "run", "main.py"]
That's a heck of a Dockerfile. I'd simplify it a bit. We don't need the apt-get section as anything needed for Python is already in our base image. Also, using a virtual environment in a Python container is a waste of space, so I'd remove that. The expose command isn't strictly necessary, but it's fine. Also, it's trying to start main.py which I don't have.
6. Tweak the Dockerfile so it resembles the following:
পাইথন:3.11-স্লিম-বুকওয়ার্ম থেকে
WORKDIR /app
requirements.txt ফাইলটি কপি করুন। pip install –no-cache-dir –upgrade pip চালান &&
pip install –no-cache-dir -r requirements.txt
অনুলিপি করুন . .
CMD ["streamlit", "run", "Home.py"]
7. We need a place in Google cloud where we can store our container image. Let's get a little help from Gemini. In the Google Cloud Console Gemini Cloud Assist ask:
গুগল ক্লাউডে ডকার ইমেজ সংরক্ষণের জন্য সেরা জায়গা কোনটি?
8. If one of the answers you received is the Google Container Registry, then I guess Gemini hasn't gotten word that GCR is deprecated. Again, just like human assistants, you may get out of date or simply wrong answers (hallucinations). Always make sure to consider your choices carefully, even when Gemini is recommending something.
Let's go with Artifact Registry. Ask Gemini Cloud Assist how to create a docker registry in Artifact Registry named cooking-images.
আর্টিফ্যাক্ট রেজিস্ট্রি-তে ডকার রেজিস্ট্রি তৈরি করতে আমি কীভাবে gcloud ব্যবহার করতে পারি?
9. Now ask Gemini how you could use Cloud Build to build a new image named `recipe-web-app` from the Dockerfile in the current folder.
আমরা এইমাত্র তৈরি করা আর্টিফ্যাক্ট রেজিস্ট্রি রিপো থেকে একই নামের একটি ইমেজ ব্যবহার করে gcloud দিয়ে কীভাবে recipe-web-app নামের একটি নতুন ক্লাউড রান সার্ভিস বিল্ড করতে পারি?
10. To save you a little time, I've created a script that will create the Artifact Registry repo (if needed), use Cloud Build to build and push the image to the repo, and finally to deploy the application to Cloud Run. In your code editor use the **Explorer** view to open `build.sh` and explore the file.
11. Gemini can operate via the chat window, but it can also work directly in your code file using comments, like we used in the Data Wrangling notebook, and it also may be invoked using Control+i on Windows or Command+i on Mac. Click somewhere in the build.sh script file, activate Gemini using the appropriate Command+i / Control+i command.
<img src="img/61ac2c9a245a3695.png" alt="61ac2c9a245a3695.png" width="624.00" />
12. At the prompt enter the below. Examine and **Accept** the change.
অনুগ্রহ করে বর্তমান ফাইলটিতে মন্তব্য করুন।
How cool is that?! How many times have you had to work with someone elses code, only to have to waste time gaining a base understanding of their commentless work before you can even start making your changes. Gemini to the rescue!
13. Let's build and deploy our application. In the terminal window execute the `build.sh` file.
বিল্ড.এসএইচ
14. If you watch the build process, first it will build the Artifact Registry docker repo. Then, it uses Cloud Build to create the container image from the Dockerfile in the local folder (since we didn't supply a `cloudbuild.yaml`). Lastly, the docker image will be deployed into a new Cloud Run service. At the end of the script you'll get a Cloud Run test URL to use.
Open the returned link in a new tab of your browser. Take a moment and explore the application's structure and pages. Nice, now we need a hook in our generative AI functionality.
## Task 7: Connect the Cooking Advice page to our cookbook-search Agent Builder app
We have the framework for the web application running, but we need to connect the two work pages to our two Vertex AI Agent Builder search apps. Let's start with Cooking Advice.
1. In the Google Cloud console use search to navigate to **Chat** in Vertex AI.
2. In the right hand settings page pane set the model to **gemini-1.5-flash-002**. Slide the output token limit up to the max so the model can return longer answers if needed. Open the **Safety Filter Settings**. Set Hate speech, Sexually explicit content, and Harassment content to **Block some**. Set Dangerous content to **Block few** and **Save**. We're setting Dangerous Content a bit lower because talking about knives and cutting can be misinterpreted by Gemini as violence.
3. Slide on the toggle to enable **Grounding** then click **Customize**. Set the grounding source to **Vertex AI search** and for the datastore path use the following. Change YOUR_PROJECT_ID to the project ID found up near the End Lab button in these instructions, then **Save** the grounding settings
projects/YOUR_PROJECT_ID/locations/global/collections/default_collection/dataStores/old-cookbooks-id
**Note:** If you get an error then you either didn't change the project ID to your actual project ID, or you may have missed the step where you changed the old-cookbooks Agent Builder Data Store ID. Check your Agent Builder > Data Stores > old-cookbooks for its actual Data store ID.
4. Test a couple of chat messages. Perhaps start with the below. Try a few others if you like.
আমি কীভাবে বুঝব যে একটি টমেটো পেকেছে?
5. The model works, now let's experiment with the code. Click **Clear Conversation** so our conversations don't become part of the code then click **Get Code**.
<img src="img/dce8ad7ee006cca1.png" alt="dce8ad7ee006cca1.png" width="624.00" />
6. At the top of the code window, press Open Notebook so we can experiment and perfect the code in Colab Enterprise before integrating it into our app.
7. Take a few minutes to familiarize yourself with the code. Let's make a couple of changes to adapt it to what we want. Before we start, run the first code cell to connect to the compute and install the AI Platform SDK. After the block runs you will be prompted to restart the session. Go ahead and do that.
8. Move to the code we pulled out of Vertex AI Studio. Change the name of the method *multiturn_generate_content* to `start_chat_session`.
9. Scroll to the `model = GenerativeModel(` method call. The existing code defines the `generation_config` and `safety_settings` but doesn't actually use them. Modify the creation of the `GenerativeModel` so it resembles:
মডেল = জেনারেটিভমডেল( "gemini-1.5-flash-002", টুলস=টুলস, জেনারেশন_কনফিগ=জেনারেশন_কনফিগ, সেফটি_সেটিংস=সেফটি_সেটিংস, )
10. Lastly, add a final line to the method, just below `chat = model.start_chat()`, so the function returns the `chat` object. The finished function should look like the below.
**Note:** DO NOT COPY this code into your notebook. It is simply here as a sanity check.
def start_chat_session(): vertexai.init(project="qwiklabs-gcp-02-9a7298ceaaec", location="us-central1") tools = [ Tool.from_retrieval( retrieval=grounding.Retrieval( source=grounding.VertexAISearch(datastore="projects/qwiklabs-gcp-02-9a7298ceaaec/locations/global/collections/default_collection/dataStores/old-cookbooks-id"), ) ), ] model = GenerativeModel( "gemini-1.5-flash-002", tools=tools, generation_config=generation_config, safety_settings=safety_settings, ) chat = model.start_chat() return chat
11. Scroll to the bottom of the code cell and change the final line calling the old function so it calls the new function name and stores the returned object in a variable `chat`. Once you are satisfied with your changes, run the cell.
চ্যাট = চ্যাট সেশন শুরু করুন()
12. Create a new code cell and add the comment `# Use chat to invoke Gemini and print out the response`. Move to the next line and type resp and Gemini should auto complete the block for you. Update the prompt to `How can I tell if a tomato is ripe?`. Run the cell
response = chat.send_message("টমেটো পাকা কিনা তা আমি কীভাবে বুঝব?") print(response)
13. That's the response alright, but the part we really want is that nested text field. Modify the codeblock to print just that section, like:
response = chat.send_message("টমেটো পাকা কিনা তা আমি কীভাবে বুঝব?") print(response.candidates[0].content.parts[0].text)
14. Good, now that we have working chat code, let's integrate it into our web application. Copy all the contents of the code cell that creates the `start_chat_session` function (we won't need the test cell). If you click into the cell you can click the triple dot menu in the upper right corner and copy from there
<img src="img/17bf8d947393d4b.png" alt="17bf8d947393d4b.png" width="326.00" />
15. Switch to your Cloud Workstation editor and open pages\Cooking_Advice.py for editing.
16. Locate the comment:
আপনার নোটবুক থেকে কপি করা কোডটি এই বার্তার নিচে যোগ করুন।
17. Paste your copied code just below the above comment. Nice, now we have the section which drives the chat engine via a grounded call to Gemini. Now let's integrate it into Streamlit.
18. Locate section of commented code directly below the comment:
আপনার সেশন ভেরিয়েবল সেটআপ করার কোডটি এখানে দেওয়া হলো।
নির্দেশ পেলে এই ব্লকটি আনকমেন্ট করুন।
19. Uncomment this section of code (Up till the next `Setup done, let's build the page UI` section) and explore it. It creates or retrieves the chat and history session variables.
20. Next, we need to integrate the history and chat functionality into the UI. Scroll in the code until you locate the below comment.
চ্যাট ইন্টারফেস তৈরি করার কোডটি এখানে দেওয়া হলো।
নির্দেশনা পেলে নিচের কোডটি আনকমেন্ট করুন।
21. Uncomment the rest of the code below the comment and take a moment to explore it. If you like, highlight it and get Gemini to explain its functionality.
22. Excellent, now let's build the application and deploy it. When the URL comes back, launch the application and give the Cooking Advisor page a try. Perhaps ask it about ripe tomatoes, or the bot knows a good way to prepare brussels sprouts.
বিল্ড.এসএইচ
How cool is that! Your own personal AI cooking advisor :-)
## Task 8: (Optional) Connect the Recipe Search page to the recipe-search Agent Builder app
When we connected the Cooking Advice page to its grounded source, we did so using the Gemini API directly. For Recipe Search, let's connect to the Vertex AI Agent Builder search app directly.
1. In your Cloud Workstation editor, open the `pages/Recipe_Search.py` page for editing. Investigate the structure of the page.
2. Towards the top of the file, set your project ID.
3. Examine the `search_sample` function. This code more or less comes directly from the Discovery Engine documentation [here](https://cloud.google.com/generative-ai-app-builder/docs/preview-search-results#genappbuilder_search-python). You can find a working copy in this notebook [here](https://github.com/GoogleCloudPlatform/generative-ai/blob/main/search/create_datastore_and_search.ipynb).
4. The only change I made was to return the `response.results` instead of just the results. Without this, the return type is an object designed to page through results, and that's something we don't need for our basic application.
5. Scroll to the very end of the file and uncomment the entire section below `Here are the first 5 recipes I found`.
6. Highlight the whole section you just uncommented and open Gemini Code chat. Ask, `Explain the highlighted code`. If you don't have something selected, Gemini can explain the whole file. If you highlight a section and ask Gemini to explain, or comment, or improve it, Gemini will.
Take a moment and read through the explanation. For what it's worth, using a Colab Enterprise notebook is a great way to explore the Gemini APIs before you integrate them into your application. It's especially helpful at exploring some of the newer APIs which may not be documented as well as they could be.
7. At your editor terminal window, run `build.sh` to deploy the final application. Wait until the new version is deployed before moving to the next step.
## Task 9: (Optional) Explore the final application
Take a few minutes to explore the final application.
1. In the Google Cloud console, use search to navigate to **Cloud Run**, then click into your **recipe-web-app**.
2. Locate the application test URL (towards the top) and open it in a new browser tab.
3. The application home page should appear. Note the basic layout and navigation provided by Streamlit, with the python files from the `pages` folder displayed as navigational choices, and the `Home.py` loaded as the home page. Navigate to the **Cooking Advice** page.
4. After a few moments the chat interface will appear. Again, note the nice core layout provided by Streamlit.
5. Try a few cooking related questions and see how the bot functions. Something like:
ব্রকলি প্রস্তুত করার ব্যাপারে আপনার কি কোনো পরামর্শ আছে?
একটি ক্লাসিক চিকেন স্যুপের রেসিপি হলে কেমন হয়?
আমাকে মেরিং সম্পর্কে বলুন।
6. Now let's find a recipe or two. Navigate to the Recipe Search page and try a few searches. Something like:
চিলি কন কার্নে
মরিচ, ভুট্টা, ভাত
লেবু মেরিং পাই
স্ট্রবেরিযুক্ত একটি ডেজার্ট
## Congratulations!
You have created an application leveraging Vertex AI Agent Builder applications. Along the way you've explored Gemini Cloud Assist, Gemini Code Assist, and the natural language to SQL features of BigQuery's Data Canvas. Fantastic job!