AI সংক্ষিপ্তকরণ জাম্প স্টার্ট সলিউশন অন্বেষণ এবং উন্নত করতে জেমিনি কোড সহায়তা ব্যবহার করে

১. ভূমিকা

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

এরপর আমরা জেমিনি কোড অ্যাসিস্ট ব্যবহার করে নিম্নলিখিত কাজগুলো করব:

  • যে পাইথন কোডটি ক্লাউড ফাংশনকে চালনা করে, সেটি বুঝুন, যা পিডিএফ ডকুমেন্ট থেকে টেক্সট বের করা, সেটির সারসংক্ষেপ করা এবং ফলাফল BigQuery-তে লেখার কাজ করে।
  • নতুন কার্যকারিতা লেখার জন্য আমরা পুরো প্রক্রিয়া জুড়ে জেমিনি কোড অ্যাসিস্ট-এর সাহায্য নেব। আমরা একটি ওয়েব অ্যাপ্লিকেশন (পাইথন ফ্লাস্ক অ্যাপ্লিকেশন) তৈরি করব এবং আমাদের কোড যাচাই করার জন্য অ্যাপ্লিকেশনটি স্থানীয়ভাবে চালাব।
  • ঐচ্ছিকভাবে, আমরা এই অ্যাপ্লিকেশনটি ক্লাউড রান-এ স্থাপন করার কথাও ভাবতে পারি এবং ম্যাটেরিয়াল ডিজাইন ব্যবহার করে ওয়েব অ্যাপ্লিকেশনটির ডিজাইন (নান্দনিকতা) উন্নত করতে পারি।

আপনি যা করবেন...

  • আপনি এআই সামারাইজেশন জাম্প স্টার্ট সলিউশনটি স্থাপন করবেন এবং এটি কীভাবে কাজ করে তা বোঝার জন্য প্রসেস ফ্লোটি চালু করবেন।
  • এরপর আপনি ক্লাউড শেল আইডিই (Cloud Shell IDE) ব্যবহার করে জাম্প স্টার্ট সলিউশন (Jump Start Solution)-এর বিদ্যমান কোড ডাউনলোড করবেন এবং জেমিনি কোড অ্যাসিস্ট (Gemini Code Assist) ব্যবহার করে কোডটি বুঝবেন।
  • আপনি একটি নতুন কার্যকারিতার জন্য কোড তৈরি করতে Gemini Code Assist Cloud Shell IDE ব্যবহার করবেন।

আপনি যা শিখবেন...

  • এআই সামারাইজেশন জাম্প স্টার্ট সলিউশন কীভাবে কাজ করে।
  • কোড জেনারেশন, কোড কমপ্লিশন এবং কোড সামারাইজেশনের মতো বিভিন্ন ডেভেলপার টাস্কের জন্য কীভাবে জেমিনি কোড অ্যাসিস্ট ব্যবহার করবেন।

আপনার যা যা লাগবে...

  • ক্রোম ওয়েব ব্রাউজার
  • একটি জিমেইল অ্যাকাউন্ট
  • বিলিং সক্ষম একটি ক্লাউড প্রজেক্ট
  • আপনার ক্লাউড প্রজেক্টের জন্য জেমিনি কোড অ্যাসিস্ট সক্রিয় করা হয়েছে।

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

২. সেটআপ

এই ল্যাবটি শুরু করার জন্য আপনার যা যা করা প্রয়োজন, তার সবকিছু এই বিভাগে আলোচনা করা হয়েছে।

গুগল ক্লাউড প্রজেক্টে জেমিনি ফর ক্লাউড সক্রিয় করুন

আমরা এখন আমাদের গুগল ক্লাউড প্রজেক্টে জেমিনি ফর ক্লাউড সক্রিয় করব। নিচে দেওয়া ধাপগুলো অনুসরণ করুন:

  1. https://console.cloud.google.com- এ যান এবং নিশ্চিত করুন যে আপনি এই ল্যাবের জন্য যে গুগল ক্লাউড প্রজেক্টটি নিয়ে কাজ করতে চান, সেটি নির্বাচন করেছেন। উপরের ডানদিকে থাকা ওপেন জেমিনি আইকনটিতে ক্লিক করুন।

28f084ec1e159938.png

  1. কনসোলের ডানদিকে Gemini for Cloud চ্যাট উইন্ডোটি খুলে যাবে। নিচে দেখানো Enable বাটনটিতে ক্লিক করুন। যদি আপনি Enable বাটনটি দেখতে না পান এবং তার পরিবর্তে একটি চ্যাট ইন্টারফেস দেখতে পান, তাহলে সম্ভবত আপনি প্রজেক্টটির জন্য Gemini for Cloud ইতিমধ্যেই এনাবল করেছেন এবং আপনি সরাসরি পরবর্তী ধাপে যেতে পারেন।

e8df9adc4ea43a37.png

  1. একবার এটি চালু হয়ে গেলে, আপনি এক-দুটি প্রশ্ন করে জেমিনি ফর ক্লাউড পরীক্ষা করে দেখতে পারেন। কয়েকটি নমুনা প্রশ্ন দেখানো হয়েছে, তবে আপনি What is Cloud Run? মতো কিছু চেষ্টা করে দেখতে পারেন।

9859ea86a8310cb.png

জেমিনি ফর ক্লাউড আপনার প্রশ্নের উত্তর দেবে। আপনি ক্লিক করতে পারেন। f68286b2b2ea5c0a.png Gemini for Cloud চ্যাট উইন্ডোটি বন্ধ করতে উপরের ডান কোণার আইকনটিতে ক্লিক করুন।

ক্লাউড শেল IDE-তে জেমিনি কোড অ্যাসিস্ট সক্রিয় করুন

কোডল্যাবের বাকি অংশের জন্য আমরা ক্লাউড শেল আইডিই (Cloud Shell IDE) ব্যবহার করব, যা একটি সম্পূর্ণভাবে পরিচালিত কোড ওএসএস (Code OSS) ভিত্তিক ডেভেলপমেন্ট এনভায়রনমেন্ট। আমাদের ক্লাউড শেল আইডিই-তে কোড অ্যাসিস্ট (Code Assist) সক্রিয় এবং কনফিগার করতে হবে এবং এর ধাপগুলো নিচে দেওয়া হলো:

  1. ide.cloud.google.com- এ যান। IDE-টি প্রদর্শিত হতে কিছুটা সময় লাগতে পারে, তাই অনুগ্রহ করে ধৈর্য ধরুন।
  2. দেখানো অনুযায়ী নিচের স্ট্যাটাস বারে থাকা ‘ Cloud Code - Sign in’ বোতামটিতে ক্লিক করুন। নির্দেশনা অনুযায়ী প্লাগইনটি অনুমোদন করুন। যদি স্ট্যাটাস বারে "Cloud Code - no project" দেখতে পান, তবে সেটি নির্বাচন করুন এবং তারপরে প্রজেক্টের তালিকা থেকে নির্দিষ্ট গুগল ক্লাউড প্রজেক্টটি বেছে নিন, যেটিতে আপনি কাজ করতে চান।

6f5ce865fc7a3ef5.png

  1. দেখানো অনুযায়ী নীচের ডান কোণায় থাকা জেমিনি বাটনে ক্লিক করুন এবং শেষবারের মতো সঠিক গুগল ক্লাউড প্রজেক্টটি নির্বাচন করুন। যদি আপনাকে ক্লাউড এআই কম্প্যানিয়ন এপিআই (Cloud AI Companion API) সক্রিয় করতে বলা হয়, তবে তা করুন এবং সামনে এগিয়ে যান।
  2. আপনার গুগল ক্লাউড প্রজেক্টটি নির্বাচন করার পর, নিশ্চিত করুন যে আপনি স্ট্যাটাস বারের ক্লাউড কোড স্ট্যাটাস মেসেজে সেটি দেখতে পাচ্ছেন এবং নিচে দেখানো অনুযায়ী স্ট্যাটাস বারের ডানদিকে আপনার কোড অ্যাসিস্টও চালু আছে:

709e6c8248ac7d88.png

জেমিনি কোড অ্যাসিস্ট ব্যবহারের জন্য প্রস্তুত!

ঐচ্ছিক: যদি আপনি ডানদিকের নিচের স্ট্যাটাস বারে জেমিনি দেখতে না পান, তাহলে আপনাকে ক্লাউড কোডে জেমিনি সক্রিয় করতে হবে। এটি করার আগে , ক্লাউড কোড এক্সটেনশন → সেটিংস- এ গিয়ে নিশ্চিত করুন যে IDE-তে জেমিনি সক্রিয় করা আছে এবং তারপর নিচে দেখানো অনুযায়ী জেমিনি শব্দটি লিখুন। নিশ্চিত করুন যে চেকবক্সটি নির্বাচিত আছে। আপনার IDE রিলোড করুন। এটি ক্লাউড কোডে জেমিনি সক্রিয় করবে এবং আপনার IDE-এর স্ট্যাটাস বারে জেমিনি আইকনটি দেখা যাবে।

228c9c9c6b956c8e.png

৩. এআই সামারাইজেশন জাম্প স্টার্ট সলিউশনটি স্থাপন করুন

  1. জেনারেটিভ এআই ডকুমেন্ট সামারাইজেশন সলিউশনে যান
  2. ডিপ্লয় ক্লিক করুন
  • আপনার প্রজেক্টে বিলিং চালু করা না থাকলে, বিলিং চালু করুন।
  • অঞ্চল হিসেবে us-central1 নির্বাচন করুন।
  • ডিপ্লয়-এ ক্লিক করুন।
  • এতে ১৫ মিনিট পর্যন্ত সময় লাগতে পারে।
  • আপনাকে কোনো পরিবর্তন করতে হবে না, তবে সলিউশন ডেপ্লয়মেন্ট ডিটেইল পেজে থাকা 'EXPLORE THIS SOLUTION' বাটনে ক্লিক করে জাম্প স্টার্ট সলিউশন ডেপ্লয়মেন্টটি নির্দ্বিধায় ঘুরে দেখতে পারেন।

৪. মিথুন রাশির সাথে চ্যাট করুন

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

এর ফলে ক্লাউড শেল আইডিই (Cloud Shell IDE)-এর ভেতরে ‘চ্যাট: জেমিনি’ (Chat: Gemini) প্যানেলটি খুলে যাবে এবং আপনি গুগল ক্লাউড বিষয়ে সাহায্য পেতে জেমিনির (Gemini) সাথে চ্যাট করতে পারবেন।

14ad103efaa0ddaa.png

আসুন, জেমিনি চ্যাট পেইন ব্যবহার করে একটি প্রম্পট প্রবেশ করাই এবং জেমিনির প্রতিক্রিয়া দেখি। নিম্নলিখিত প্রম্পটটি প্রবেশ করান:

What is Cloud Run? 

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

গুগল ক্লাউড সম্পর্কে প্রশ্ন করার জন্য নিচের নমুনা প্রশ্নগুলো অথবা আপনার নিজের তৈরি করা যেকোনো প্রশ্ন ব্যবহার করে দেখুন:

  • What is the difference between Cloud Run and Cloud Functions?
  • What services are available on Google Cloud to run containerized workloads?
  • What are the best practices to optimize costs while working with Google Cloud Storage?

উপরে থাকা ট্র্যাশ ক্যান আইকনটি লক্ষ্য করুন - এটি হলো কোড অ্যাসিস্ট চ্যাট হিস্টোরির কনটেক্সট রিসেট করার উপায়। আরও মনে রাখবেন যে, এই চ্যাট ইন্টারঅ্যাকশনটি IDE-তে আপনি যে ফাইল(গুলি) নিয়ে কাজ করছেন, তার উপর নির্ভরশীল।

৫. ক্লাউড কোড থেকে জাম্প স্টার্ট সলিউশন ক্লাউড ফাংশনটি ডাউনলোড করুন।

ধরে নিচ্ছি আপনি ক্লাউড শেল এডিটর-এ আছেন, এই ধাপগুলো অনুসরণ করুন:

  • ক্লিক ক্লাউড কোড c0231861cba4b5d2.png
  • দ্রষ্টব্য: আপনার স্ক্রিনের আকারের উপর নির্ভর করে, এতে এক বা দুই ধাপ সময় লাগতে পারে।

4bf4e654a1749030.png অথবা a0baa1d1c1c30151.png

  • ক্লাউড ফাংশনগুলিতে ক্লিক করুন।
  • অনুরোধ করা হলে, লগ ইন করুন অথবা আপনার অ্যাকাউন্ট অনুমোদন করুন।
  • ওয়েবহুক ফাংশনটিতে ক্লিক করুন।
  • নতুন ওয়ার্কস্পেসে ডাউনলোড করার আইকনে ক্লিক করুন 21c63666e951f7b4.png
  • 196780f852e1a99e.png
  • ওয়ার্কস্পেসের নাম হিসেবে webhook-1 (যা ডিফল্ট থাকা উচিত) অথবা অন্য যেকোনো নাম ব্যবহার করুন এবং OK-তে ক্লিক করুন।
  • এটি ক্লাউড শেল আইডিই-তে কোডটি খুলে দেবে।

৬. বিদ্যমান প্রকল্পটি পর্যালোচনা করুন

এই জাম্প স্টার্ট সমাধানটি নিচে দেখানো হলো:

ddf9ee7ff5346f23.png

পিডিএফ আপলোড ফাংশনালিটি থেকে ক্লাউড স্টোরেজ পর্যন্ত কার্যপ্রবাহটি পর্যালোচনা করুন। পিডিএফ ফাইল আপলোড হলে যে ক্লাউড ফাংশনটি চালু হবে, তা main.py ফাইলে দেওয়া আছে।

ওই ফাইলটিতে ক্লিক করুন। ক্লাউড ফাংশনের এন্ট্রি পয়েন্ট হলো entrypoint ফাংশন, যা পরবর্তীতে cloud_event_entrypoint ফাংশনটিকে কল করে, যেটি পিডিএফ থেকে টেক্সট বের করে আনে। এরপর এটি summarization_entrypoint ফাংশনটিকে কল করে, যা Vertex AI মডেল ব্যবহার করে ফলাফলগুলোকে সংক্ষিপ্ত করে যথাক্রমে GCS এবং BigQuery-তে লিখে দেয়।

main.py ফাইলের সমস্ত কোড অথবা কোডের কোনো নির্দিষ্ট অংশ হাইলাইট করুন। Gemini Chat-এ ক্লিক করুন এবং নিম্নলিখিত প্রম্পটটি দিন: Explain this )।

এতে আপনি কোডটি সম্পর্কে একটি ব্যাখ্যা পাবেন।

৭. একটি নমুনা রান চালান।

আর্কিটেকচার ডায়াগ্রাম অনুযায়ী, ক্লাউড ফাংশনটি চালু করার জন্য আমরা <PROJECT_ID>_uploads বাকেটে একটি ফাইল আপলোড করতে যাচ্ছি।

নিশ্চিত করুন যে আপনার কাছে একটি নমুনা পিডিএফ প্রস্তুত আছে, যা আপনি আপলোড করতে পারবেন এবং যেটির সারসংক্ষেপ আপনি চান।

  • ক্লাউড কনসোলে গুগল ক্লাউড স্টোরেজে যান।
  • <PROJECT_ID>_uploads বাকেটে যান। UPLOAD FILES লিঙ্কে ক্লিক করে একটি নমুনা PDF আপলোড করুন।

আপনার কাছে কোনো নমুনা পিডিএফ ফাইল না থাকলে, আপনি আমাদের তৈরি করা নমুনাগুলোর মধ্যে একটি ব্যবহার করতে পারেন। ক্লাউড শেল থেকে, নিম্নলিখিত কমান্ডটি চালান:

gsutil cp \
    gs://arxiv-dataset/arxiv/cmp-lg/pdf/9410/9410009v1.pdf \
    gs://<PROJECT_ID>_uploads/

ফাইলটি সফলভাবে আপলোড হয়ে গেলে, webhook ক্লাউড ফাংশনটি চালু হবে এবং এটি ডকুমেন্টে থাকা টেক্সটের সারসংক্ষেপ তৈরি করবে। এর আউটপুট summary_dataset নামের একটি BigQuery ডেটাসেট এবং summary_table টেবিলে লেখা হবে।

সারাংশের ফলাফল দেখতে টেবিলটি কোয়েরি করুন।

f2ed627e3e96d84e.png

৮. অ্যাপ্লিকেশনটির জন্য একটি ওয়েব অ্যাপ্লিকেশন ক্লায়েন্ট তৈরি করুন।

উপরের প্রক্রিয়াটি হলো সারসংক্ষেপ করতে চাওয়া পিডিএফ ফাইল আপলোড করার একটি ম্যানুয়াল, ধাপে ধাপে সম্পন্ন করার পদ্ধতি। অ্যাপ্লিকেশনটির জন্য একটি ওয়েব ফ্রন্ট-এন্ড তৈরি করলে কেমন হয়?

ওয়েব ফ্রন্ট-এন্ডের জন্য প্রয়োজনীয়তাগুলো সহজ:

  1. একটি সাধারণ HTML ফর্ম, যার মাধ্যমে সারসংক্ষেপ করার জন্য প্রয়োজনীয় ফাইলটি নির্বাচন ও আপলোড করা যায়।
  2. সফলভাবে আপলোড হওয়ার পর ফাইলটি <PROJECT_ID>_uploads বাকেটে লেখা উচিত, যাতে বাকি কার্যকারিতাগুলো স্বাভাবিকভাবে কাজ করে।

ডুয়েট এআই-কে সহায়তা করার জন্য আমরা এটি তৈরি করতে পাইথন এবং ওয়েব অ্যাপ্লিকেশনের ফ্লাস্ক ফ্রেমওয়ার্ক ব্যবহার করব।

চলুন শুরু করা যাক। আমরা ধরে নেব যে ক্লাউড শেল IDE-তে আপনার আগের ওয়ার্কস্পেসটি এখনও খোলা আছে।

সমস্ত ফাইল বন্ধ করুন এবং জেমিনি চ্যাট উইন্ডোতে নিম্নলিখিত নির্দেশটি দিন:

Write a Python Flask application that has a couple of routes:
The root route / should serve the index.html page using the render_template framework. The /upload route should accept a file being uploaded and write that file to a Cloud Storage bucket.

আদর্শগতভাবে এর ফলে নিম্নলিখিত কোডটি তৈরি হওয়া উচিত:

from flask import Flask, render_template, request, redirect, url_for
from google.cloud import storage

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    filename = file.filename
    bucket = storage.Client().bucket('your-bucket-name')
    blob = bucket.blob(filename)
    blob.upload_from_string(
        file.read(),
        content_type=file.content_type
    )
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

উপরের কোডটি IDE ওয়ার্কস্পেসের রুটে app.py নামে সংরক্ষণ করুন।

আমরা চাই অ্যাপ্লিকেশনটি ৮০৮০ পোর্টে এবং 0.0.0.0 হোস্ট অ্যাড্রেসে চলুক, তাই চলুন Gemini-কে app.run স্টেটমেন্টটি পরিবর্তন করতে বলি।

নিম্নলিখিত নির্দেশটি দিন:

Modify the app.py to run on port 8080 and host address 0.0.0.0

আপনার কোডটি এখন দেখতে এইরকম হওয়া উচিত:

from flask import Flask, render_template, request, redirect, url_for
from google.cloud import storage

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    filename = file.filename
    bucket = storage.Client().bucket('your-bucket-name')
    blob = bucket.blob(filename)
    blob.upload_from_string(
        file.read(),
        content_type=file.content_type
    )
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)

এরপরে, আমরা index.html ফাইলটিও তৈরি করতে চাই। জেমিনি চ্যাট উইন্ডোতে নিম্নলিখিত নির্দেশটি দিন:

Provide the index.html file

এটি আপনাকে index.html-এর জন্য নিচে দেওয়া কোডটি প্রদান করবে।

<!DOCTYPE html>
<html>
<head>
  <title>File Upload</title>
</head>
<body>
  <h1>File Upload</h1>
  <form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
  </form>
</body>
</html>

index.html ফাইলটি কোথায় সেভ করতে হবে, তা জেমিনিকে জিজ্ঞাসা করতে পারি। নিম্নলিখিত নির্দেশটি দিন:

Since this is using the render_template framework, where should this file be saved?

এর উত্তরটি নিম্নলিখিতটির অনুরূপ হওয়া উচিত:

c666ee4af5039728.png

রুট ফোল্ডারে templates নামে একটি ফোল্ডার তৈরি করুন এবং index.html ফাইলটি সেখানে সংরক্ষণ করুন।

যদি ফাইলটি গুগল ক্লাউড স্টোরেজ বাকেটে সেভ করা না যায়, সেই ক্ষেত্রে app.py ফাইলে আমরা একটি এক্সেপশন হ্যান্ডলিং চাই। app.py ফাইলটি খোলা রাখুন এবং জেমিনি চ্যাট উইন্ডোতে নিম্নলিখিত প্রম্পটটি দিন।

modify the app.py to have exception handling in the upload() function. The success or failure should be returned to the index page.

এটি এখন নিচে দেখানো অনুযায়ী কিছু এক্সেপশন হ্যান্ডলিং যোগ করবে:

from flask import Flask, render_template, request, redirect, url_for
from google.cloud import storage

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    try:
        file = request.files['file']
        filename = file.filename
        bucket = storage.Client().bucket('your-bucket-name')
        blob = bucket.blob(filename)
        blob.upload_from_string(
            file.read(),
            content_type=file.content_type
        )
        return redirect(url_for('index'))
    except Exception as e:
        return render_template('index.html', error=str(e))

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)

যেহেতু আমাদের index.html-এ এরর মেসেজটি দেখাতে হবে, তাই সেটিও পরিবর্তন করতে হবে। নিচের প্রম্পটের মাধ্যমে জেমিনিকে দিয়ে কাজটি করিয়ে নেওয়া যাক:

update the index.html to display the error message

এর ফলে নিচে দেখানো ছবির মতো একটি আপডেট করা index.html পাওয়া যাবে:

<!DOCTYPE html>
<html>
<head>
  <title>File Upload</title>
</head>
<body>
  <h1>File Upload</h1>
  {% if error %}
    <p style="color: red;">{{ error }}</p>
  {% endif %}
  <form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
  </form>
</body>
</html>

উপরের প্রতিটি ধাপে যথাক্রমে app.py এবং index.html ফাইলে পরিবর্তনগুলো সংরক্ষণ করছেন কিনা, তা নিশ্চিত করুন।

app.py সঠিক বাকেট নেম নেই, তাই আমরা সেই তথ্যটি Gemini-কে দিয়ে পরিবর্তনগুলো করতে বলতে পারি। এছাড়াও, storage.Client() ইনস্ট্যান্সের জন্য আমাদের প্রজেক্ট আইডি প্রদান করতে হবে। এজন্য Gemini চ্যাট উইন্ডোতে নিচের কয়েকটি প্রম্পট দিন (এখানে <PROJECT_ID> এর জায়গায় আপনার Google Cloud প্রজেক্ট আইডি বসান) এবং পরিবর্তনগুলো অন্তর্ভুক্ত করুন:

প্রম্পট ১

My bucket name is gemini-for-devs-demo_uploads, please change the code to use that.

প্রম্পট ২

My project id is gemini-for-devs-demo, please change the storage.Client() to use that.

চূড়ান্ত app.py ফাইলটি দেখতে এইরকম (নীচে আমার প্রজেক্ট আইডি দেখানো হয়েছে, কিন্তু আদর্শগতভাবে এটি সেই প্রজেক্ট আইডি হওয়া উচিত যা নিয়ে আপনি কাজ করছেন এবং যা আপনি উপরের প্রম্পটে দিয়েছেন):

from flask import Flask, render_template, request, redirect, url_for
from google.cloud import storage

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload():
    try:
        file = request.files['file']
        filename = file.filename
        bucket = storage.Client(project='gcp-experiments-349209').bucket('gcp-experiments-349209_uploads')
        blob = bucket.blob(filename)
        blob.upload_from_string(
            file.read(),
            content_type=file.content_type
        )
        return redirect(url_for('index'))
    except Exception as e:
        return render_template('index.html', error=str(e))

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)

৯. ওয়েব অ্যাপ্লিকেশনটি স্থানীয়ভাবে চালান।

requirements.txt ফাইলে সংজ্ঞায়িত নির্ভরতাগুলো সহ একটি পাইথন এনভায়রনমেন্ট তৈরি করুন। নিচে দেখানো অনুযায়ী ক্লাউড শেল IDE-এর কমান্ড প্যালেটে যান:

55dffeed9fe6e9c0.png

Python: Create Environment এবং তারপর (venv) ব্যবহার করে একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করার ধাপগুলো অনুসরণ করুন, এরপর পাইথন 3.x ইন্টারপ্রেটার এবং requirements.txt ফাইলটি ইনস্টল করুন। এটি প্রয়োজনীয় এনভায়রনমেন্ট তৈরি করবে।

এখন টার্মিনালটি চালু করুন, যেমনটি নিচে দেখানো হয়েছে:

6ede24cb97a4e9c5.png

টার্মিনালে নিম্নলিখিত কমান্ডটি দিন:

python app.py

Flask অ্যাপটি চালু হবে এবং আপনি এইরকম কিছু দেখতে পাবেন:

(.venv) romin@cloudshell:~/webhook-2 (gcp-experiments-349209)$ python app.py 
 * Serving Flask app 'app'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:8080
 * Running on http://10.88.0.3:8080
Press CTRL+C to quit
 * Restarting with watchdog (inotify)
 * Debugger is active!
 * Debugger PIN: 989-296-833

http://127.0.0.1:8080 ইউআরএল-টি ভিজিট করুন, সেখানে index.html পেজটি প্রদর্শিত হবে।

আপনার স্থানীয় মেশিন থেকে একটি ফাইল আপলোড করুন এবং সেটি সফলভাবে প্রক্রিয়া করা হবে।

ল্যাবে আমরা আগে যে BigQuery ডেটাসেট এবং টেবিলটি দেখেছিলাম, সেখানে গিয়ে আপনি সারসংক্ষেপটি পরীক্ষা করতে পারেন। বিকল্পভাবে, আপনি ক্লাউড স্টোরেজ বাকেটটি ( <PROJECT_ID>_output ) দেখতে পারেন।

১০. (ঐচ্ছিক) উন্মুক্ত অন্বেষণ - ক্লাউড রানে স্থাপন করুন

  • আপনি অ্যাপ্লিকেশনটি ক্লাউড রান-এ ডেপ্লয় করতে পারেন।
  • নিম্নলিখিত প্রম্পটটি ব্যবহার করে জেমিনি কোড অ্যাসিস্টকে জিজ্ঞাসা করুন (উপরের প্রম্পটটির কয়েকটি ভিন্নতা চেষ্টা করার প্রয়োজন হতে পারে):
I don't want to build a container image but deploy directly from source. What is the gcloud command for that?

১১. (ঐচ্ছিক) এক্সপ্লোরেশন খুলুন - CSS স্টাইল যোগ করুন

  • আপনার অ্যাপ্লিকেশনে CSS স্টাইল যোগ করতে Gemini Code Assist এবং এর ইন-এডিটর অ্যাসিস্ট্যান্ট ব্যবহার করুন এবং কাজ শেষ হলে অ্যাপ্লিকেশনটি পুনরায় ডিপ্লয় করুন!
  • index.html ফাইলটি খুলুন এবং জেমিনি চ্যাটে নিম্নলিখিত প্রশ্নটি করুন: Can you apply material design styles to this index.html?
  • কোডটি পরীক্ষা করে দেখুন এটি কাজ করে কিনা।

১২. অভিনন্দন!

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

১৩. রেফারেন্স নথি