বুকশেল্ফ অ্যানালিটিক্স: BigQuery এবং জেনারেটিভ এআই-এর সাথে SQL অ্যাপ্লিকেশন তৈরি করতে Gemini ব্যবহার করুন

১. ভূমিকা

আপনি কি বই পড়তে ভালোবাসেন কিন্তু অসংখ্য বইয়ের ভিড়ে দিশেহারা হয়ে পড়েন? এমন একটি এআই-চালিত অ্যাপের কথা ভাবুন যা শুধু আপনার জন্য সেরা বইয়ের সুপারিশই করে না, বরং আপনার পছন্দের জনরার ওপর ভিত্তি করে একটি সংক্ষিপ্ত সারাংশও প্রদান করে, যা আপনাকে বইটির মূলভাব সম্পর্কে একটি ধারণা দেয়। এই কোডল্যাবে, আমি আপনাকে BigQuery, Gemini এবং Gemini দ্বারা চালিত Cloud Functions ব্যবহার করে এমনই একটি অ্যাপ তৈরি করার পদ্ধতি ধাপে ধাপে দেখাব।

প্রকল্পের সংক্ষিপ্ত বিবরণ

আমাদের ব্যবহারের ক্ষেত্রটি এই ৪টি মূল উপাদানকে কেন্দ্র করে গড়ে উঠেছে:

  • বইয়ের ডেটাবেস: ইন্টারনেট আর্কাইভের বইয়ের বিশাল BigQuery পাবলিক ডেটাসেটটি আমাদের পূর্ণাঙ্গ বইয়ের ক্যাটালগ হিসেবে কাজ করবে।
  • এআই সামারাইজেশন ইঞ্জিন: গুগল ক্লাউড ফাংশনস, জেমিনি ১.০ প্রো ল্যাঙ্গুয়েজ মডেল দ্বারা সজ্জিত হয়ে, ব্যবহারকারীর অনুরোধ অনুযায়ী তথ্যবহুল সারাংশ তৈরি করবে।
  • BigQuery ইন্টিগ্রেশন: BigQuery-এর অভ্যন্তরে একটি রিমোট ফাংশন, যা চাহিদা অনুযায়ী বইয়ের সারাংশ এবং থিম সরবরাহ করার জন্য আমাদের ক্লাউড ফাংশনকে কল করে।
  • ইউজার ইন্টারফেস: ক্লাউড রান-এ হোস্ট করা একটি ওয়েব অ্যাপ, যা ব্যবহারকারীদের ফলাফল দেখার জন্য একটি ওয়েব অ্যাপ্লিকেশন প্রদান করবে।

আমরা বাস্তবায়নটিকে ৩টি কোডল্যাবে ভাগ করব:

কোডল্যাব ১: জেমিনি ব্যবহার করে একটি জেমিনি অ্যাপ্লিকেশনের জন্য একটি জাভা ক্লাউড ফাংশন তৈরি করুন।

কোডল্যাব ২: BigQuery এবং Generative AI ব্যবহার করে Gemini দিয়ে SQL অ্যাপ তৈরি করুন।

কোডল্যাব ৩: Gemini ব্যবহার করে একটি Java Spring Boot ওয়েব অ্যাপ্লিকেশন তৈরি করুন যা BigQuery-এর সাথে ইন্টারঅ্যাক্ট করে।

২. BigQuery এবং Generative AI ব্যবহার করে Gemini দিয়ে SQL অ্যাপ তৈরি করুন।

আপনি যা তৈরি করবেন

আপনি একটি তৈরি করবেন

  • BigQuery-এর রিমোট মডেল , যা টেবিলের সেমিকোলন (;) দ্বারা পৃথক করা কীওয়ার্ডের তালিকা থেকে বইটির ধরণ (বা বিষয়বস্তু) শনাক্ত করার জন্য Vertex AI-এর text-bison-32k এন্ডপয়েন্টকে কল করে।
  • BigQuery-এর একটি রিমোট ফাংশন যা দূরবর্তীভাবে ডেপ্লয় করা জেনারেটিভ এআই ক্লাউড ফাংশনটিকে আহ্বান করবে।
  • রিমোট মডেল ও ফাংশন ব্যবহার করে SQL কোয়েরির মাধ্যমে একটি বইয়ের বিষয়বস্তু ও পাঠ্যের সারসংক্ষেপ তৈরি করুন এবং ফলাফলগুলো বুকশেলফ ডেটাসেটের একটি নতুন টেবিলে লিখুন।
  • আপনি মিথুন রাশির সাহায্যে এই পদক্ষেপগুলো বাস্তবায়ন করবেন।

৩. প্রয়োজনীয়তা

  • ক্রোম বা ফায়ারফক্সের মতো একটি ব্রাউজার
  • বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট
  • পার্ট ১ কোডল্যাব " Use Gemini to build a Java Cloud Function for a Gemini application" কোডল্যাবের অংশ হিসেবে ক্লাউড ফাংশনটি ডেপ্লয় করা থাকলে তা সহায়ক হবে।
  • শর্তসাপেক্ষ: এই মুহূর্তে যদি আপনার কাছে বিনামূল্যে গুগল ক্লাউড ক্রেডিট লিঙ্কের অ্যাক্সেস থাকে (যা কর্মশালার আয়োজক আপনাকে দিয়ে থাকতে পারেন), তাহলে আগে থেকেই ক্রেডিট অ্যাক্টিভেশন এবং প্রজেক্ট তৈরির ধাপগুলো সম্পন্ন করতে নিচের পৃষ্ঠার নির্দেশাবলী ব্যবহার করুন। যদি আপনার কাছে এই লিঙ্কটি না থাকে, তাহলে নিচে দেওয়া প্রজেক্ট এবং বিলিংয়ের পূর্বশর্তের ধাপগুলো অনুসরণ করুন:

আপনার প্রকল্প তৈরি করুন

আপনি যদি উপরের শর্তসাপেক্ষ ধাপে উল্লিখিত লিঙ্কটি ব্যবহার করে ইতিমধ্যেই একটি বিলিং অ্যাকাউন্ট সক্রিয় করে থাকেন এবং একটি প্রজেক্ট তৈরি করে থাকেন, তাহলে আপনি নীচের ধাপগুলি এড়িয়ে যেতে পারেন।

  1. গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।

ক্লাউড শেল সক্রিয় করুন

  1. আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ এবং এতে bq আগে থেকেই লোড করা থাকে।

ক্লাউড কনসোল থেকে, উপরের ডান কোণায় থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন: 6757b2fb50ddcc2d.png

  1. ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে। আপনি যে প্রমাণীকৃত, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

জিক্লাউড প্রমাণীকরণ তালিকা

  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে অবগত আছে কিনা, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।

gcloud config list project

  1. আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud config set project <YOUR_PROJECT_ID>

gcloud কমান্ড ও তার ব্যবহারবিধি জানতে ডকুমেন্টেশন দেখুন।

৪. গুগল ক্লাউড এবং প্রয়োজনীয় এপিআই-এর জন্য জেমিনি সক্রিয় করা

মিথুন রাশি সক্রিয় করুন

  1. এপিআই (API) সক্রিয় করতে Gemini for Google Cloud Marketplace- এ যান। আপনি নিম্নলিখিত কমান্ডটিও ব্যবহার করতে পারেন:

gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID

  1. জেমিনি পেজটিতে যান এবং 'চ্যাটিং শুরু করুন'-এ ক্লিক করুন।

অন্যান্য প্রয়োজনীয় এপিআই সক্রিয় করুন

আমরা সেটা কীভাবে করব? চলুন, জেমিনিকে সেটাই জিজ্ঞেস করি, কেমন? কিন্তু তার আগে মনে রাখবেন:

দ্রষ্টব্য: এলএলএম (LLM) অনির্দিষ্ট। তাই আপনি যখন এই প্রম্পটগুলো চেষ্টা করবেন, তখন আপনি যে প্রতিক্রিয়া পাবেন তা আমার স্ক্রিনশটের প্রতিক্রিয়াগুলো থেকে ভিন্ন হতে পারে।

গুগল ক্লাউড কনসোলের সার্চ বারের পাশে উপরের ডান কোণায় থাকা 'ওপেন জেমিনি' আইকনটিতে ক্লিক করে জেমিনি চ্যাট কনসোলে যান।

এই প্রশ্নটি 'এখানে একটি প্রম্পট লিখুন' বিভাগে টাইপ করুন:

gcloud কমান্ড ব্যবহার করে আমি কীভাবে BigQuery এবং Vertex AI এপিআইগুলো সক্রিয় করব?

আপনি নিচের ছবিতে দেখানো প্রতিক্রিয়াটি পাবেন:

19c3fd78530794d9.png

এটি কপি করুন (আপনি কমান্ড স্নিপেটের উপরে থাকা কপি আইকনটি ব্যবহার করতে পারেন) এবং সংশ্লিষ্ট সার্ভিসগুলো চালু করতে ক্লাউড শেল টার্মিনালে এটি চালান:

  • bigquery.googleapis.com
  • aiplatform.googleapis.com

৫. বইয়ের তথ্যের জন্য BigQuery পাবলিক ডেটাসেটটি অন্বেষণ করুন।

অসংখ্য ইন্টারনেট আর্কাইভ বইয়ের তথ্য সম্বলিত BigQuery পাবলিক ডেটাসেটটির সাথে পরিচিত হওয়ার মাধ্যমে শুরু করুন।

আপনি এই পাবলিক ডেটাসেটটি BigQuery এক্সপ্লোরার প্যানে খুঁজে পাবেন। BigQuery কনসোলে প্রবেশ করলে আপনি এটি বাম দিকে দেখতে পাবেন।

39e2ac03cc99cbac.png

সার্চ বারে "gdelt-bq" বা "internetarchivebooks" টাইপ করুন এবং 'সার্চ অল প্রজেক্টস'-এ ক্লিক করুন। ফলাফলটি এক্সপ্যান্ড করুন এবং নিচের ছবিতে দেখানো অনুযায়ী ইন্টারনেট আর্কাইভ বইগুলোকে স্টার চিহ্ন দিয়ে চিহ্নিত করুন:

68dba68a79cddfc9.png .

ডেটা সেটটি প্রসারিত করুন, gdelt-bq.internetarchivebooks-এ ক্লিক করুন এবং তারপরে 1920 টেবিলের ডেটা প্রিভিউ করুন। এই টেবিলে 1920 সালের আর্কাইভ করা বইগুলো অন্তর্ভুক্ত রয়েছে।

পরবর্তী বিভাগগুলিতে আমরা যে স্কিমাটি ব্যবহার করব তা দেখতে, নিম্নলিখিত কোয়েরিটি চালান:

select * from  `gdelt-bq.internetarchivebooks.1920` limit 5;

আমরা আমাদের কোডল্যাবের জন্য নিম্নলিখিত তিনটি ফিল্ড ব্যবহার করব:

  • BookMeta_Title (শিরোনাম)
  • থিমসমূহ (থিমগুলো সেমিকোলন (;) দ্বারা পৃথক করা)
  • BookMeta_FullText (বইটির সম্পূর্ণ পাঠ্য)

৬. bookshelf নামে একটি নতুন BigQuery ডেটাসেট তৈরি করুন।

এই ল্যাবে আমরা যে সমস্ত ডাটাবেস এবং অ্যানালিটিক্স অবজেক্ট তৈরি করতে যাচ্ছি, সেগুলোকে সংরক্ষণ করার জন্য আমরা প্রজেক্টের অধীনে একটি ডেটাসেট তৈরি করতে চাই। চলুন, একটি BigQuery ডেটাসেট কীভাবে তৈরি করতে হয় তা Gemini-কে জিজ্ঞাসা করি। 'enableing APIs' ধাপ থেকে আপনার ব্রাউজারের অন্য একটি ট্যাবে Gemini চ্যাটটি ইতিমধ্যেই খোলা থাকার কথা। যদি না থাকে, তবে আপনি এখন তা করতে পারেন। https://console.cloud.google.com- এ গিয়ে Google Cloud Console-এ যান এবং আপনি উপরে সার্চ বারের ঠিক পাশেই Gemini আইকনটি দেখতে পাবেন। সেটিতে ক্লিক করলে চ্যাটটি খুলে যাবে।

26e1491322855614.png

নিচে দেখানো অনুযায়ী নির্দেশাবলী প্রবেশ করান।

এই হলো আমার নির্দেশ:

How to create a BigQuery dataset?

এই হলো উত্তর:

f7a989cc9a01009.png

আপনার সক্রিয় প্রজেক্টে 'bookshelf' নামের একটি ডেটাসেট তৈরি করতে, উত্তরে বর্ণিত ধাপগুলো অনুসরণ করুন।

একটি BigQuery ডেটাসেট তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:

  1. Google Cloud কনসোলে BigQuery পৃষ্ঠায় যান।
  2. এক্সপ্লোরার প্যানেলে আপনার প্রজেক্ট আইডিতে ক্লিক করুন।
  3. ডেটা সেট তৈরি করুন-এ ক্লিক করুন (আপনার প্রজেক্ট আইডির পাশে থাকা ৩টি ডটে ক্লিক করলে যে অপশনগুলো দেখা যাবে, এটি সেগুলোর মধ্যেই থাকবে)।
  4. ডেটা সেটের নাম হিসেবে 'bookshelf' লিখুন।
  5. অবস্থান "US(Multi-region)" হিসেবে সেট করুন।
  6. প্রতিক্রিয়ার ৩, ৪, ৫ এবং ৬ নম্বর ধাপের জন্য ডিফল্ট অপশনগুলো অপরিবর্তিত রাখুন।
  7. CREATE DATASET-এ ক্লিক করুন।

আপনার ডেটাসেটটি তৈরি হয়ে এক্সপ্লোরার প্যানেলে প্রদর্শিত হবে। 'বুকশেলফ' ডেটাসেটটি নিম্নরূপে দেখা যাবে:

৭. Vertex AI LLM (text-bison-32k) আহ্বান করার জন্য একটি রিমোট মডেল তৈরি করুন।

এরপরে, আমাদের BigQuery-তে এমন একটি মডেল তৈরি করতে হবে যা 'text-bison-32k' Vertex AI মডেলটিকে কল করবে। এই মডেলটি ডেটাসেটের প্রতিটি বইয়ের কীওয়ার্ড তালিকা থেকে বইটির একটি সাধারণ থিম বা প্রেক্ষাপট শনাক্ত করতে সাহায্য করবে।

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

BigQuery-তে LLM এন্ডপয়েন্ট (text-bison-32k) কল করার জন্য আপনি কীভাবে BigQuery এবং Vertex AI সংযোগ করবেন?

উত্তরটি নিম্নরূপ:

41904e30ce92b436.png

প্রতিক্রিয়াটিতে সঠিক তথ্য অন্তর্ভুক্ত রয়েছে, যেমন CREATE MODEL স্টেটমেন্ট ব্যবহার করা, BigQuery কানেকশন ব্যবহার করা এবং এন্ডপয়েন্ট নির্ধারণ করার মতো ধাপগুলো। কোয়েরি স্টেটমেন্টটি আমার জন্য সঠিক, কিন্তু এর মানে এই নয় যে আপনিও হুবহু একই আউটপুট পাবেন, কারণ এটি একটি বৃহৎ ল্যাঙ্গুয়েজ মডেল হওয়ায় আপনি ভিন্ন ফরম্যাট, পরিমাণ এবং গভীরতার প্রতিক্রিয়া পেতে পারেন। আমি যে সমস্ত বিবরণ পেয়েছি তা যদি আপনি দেখতে না পান, তবে নির্দ্বিধায় চ্যাটে ফলো-আপ প্রশ্ন জিজ্ঞাসা করুন। উদাহরণস্বরূপ: কানেকশন রিসোর্স কীভাবে তৈরি করতে হয়, বা কানেকশন অ্যাট্রিবিউটটি কেন অনুপস্থিত, বা আমি কীভাবে BigQuery থেকে Vertex AI-তে সংযোগ করব ইত্যাদি বিষয়ে আরও বিস্তারিত জানান।

এখানে একটি নমুনা ফলো-আপ প্রম্পট দেওয়া হলো (শুধুমাত্র ফলো-আপের প্রয়োজন হলে এটি ব্যবহার করুন, যদি প্রথম প্রাপ্ত উত্তরটিই যথেষ্ট হয়, তবে সেটি অনুসরণ করুন):

What about the connection? How will I connect from BigQuery to Vertex AI?

এই হলো উত্তর:

2ed9b3ed96b11bc9.png

BigQuery সংযোগ তৈরি করতে, চলুন উত্তর থেকে ধাপগুলো অনুসরণ করি:

  1. BigQuery কনসোলে যান।
  2. BigQuery Explorer প্যানে, "+ADD" বোতামে ক্লিক করুন এবং "Connections to external data sources"-এ ক্লিক করুন।
  3. এই পর্যায়ে, এটি আপনাকে BigQuery Connection API সক্ষম করতে বলবে। ENABLE API-তে ক্লিক করুন:

ded96126495ffe9.png

  1. ‘Connections to external data sources’-এ ক্লিক করুন এবং আপনি নীচের মতো External data source স্লাইডটি দেখতে পাবেন। বাহ্যিক উৎসের তালিকা থেকে, ‘Vertex AI’ উৎসটি নির্বাচন করুন।

434cdbbb3a9436f2.png

  1. একটি সংযোগ আইডি টাইপ করুন (এটি আপনার পছন্দের যেকোনো আইডি হতে পারে, তবে আপাতত এটিকে " bq-vx " হিসেবে সেট করুন) এবং অঞ্চল (মাল্টিরিজিওন "US") নির্বাচন করুন।
  2. ‘সংযোগ তৈরি করুন’ বোতামে ক্লিক করুন।

d3a2aeebc3ecdfae.png

  1. সংযোগটি তৈরি করার পর, "সংযোগস্থলে যান" বোতামে ক্লিক করুন।
  2. কানেকশন ইনফো পেজ থেকে সার্ভিস অ্যাকাউন্ট আইডি-টি কপি করে নিন, কারণ আমরা পরবর্তী ধাপগুলোতে এই আইডি-টি ব্যবহার করব।
  3. এখন যেহেতু সংযোগটি তৈরি হয়ে গেছে, Vertex AI ব্যবহার করার জন্য আমরা যে সার্ভিস অ্যাকাউন্ট আইডিটি কপি করেছিলাম, সেটিতে অনুমতিগুলো নির্ধারণ করে দিই।
  4. Google Cloud Console পৃষ্ঠা থেকে Google Cloud IAM খুলুন অথবা লিঙ্কটিতে যান।
  5. ‘View by Principals’ বিভাগের অধীনে ‘Grant Access’-এ ক্লিক করুন।

5317eed5da0bb8c5.png

  1. অ্যাক্সেস মঞ্জুর করুন ডায়ালগ বক্সে, নতুন নীতিমালা টেক্সট বক্সের ভিতরে আমরা আগে লিখে রাখা সার্ভিস অ্যাকাউন্ট আইডিটি প্রবেশ করান।
  2. ভূমিকাটি "ভার্টেক্স এআই ব্যবহারকারী" হিসেবে সেট করুন।

f213db33d220aa5f.png

প্রয়োজনীয় সংযোগটি তৈরি করা হয়েছে। BigQuery থেকে Vertex AI ব্যবহার করার জন্য প্রিন্সিপালকে (সংযোগটির পরিষেবা অ্যাকাউন্ট) প্রয়োজনীয় অনুমতি দেওয়া হয়েছে।

BigQuery কোয়েরি এডিটরে একটি DB অবজেক্ট, এক্ষেত্রে MODEL, তৈরির জন্য নিম্নলিখিত DDL (ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ) স্টেটমেন্টটি চালান।

CREATE OR REPLACE MODEL bookshelf.llm_model
  REMOTE WITH CONNECTION `us.bq-vx`
  OPTIONS (ENDPOINT = 'text-bison-32k');

উপরের ধাপটির বিকল্প হিসেবে আপনি একটি কাজ করতে পারেন, তা হলো 'text-bison-32k' মডেলটি আহ্বান করার জন্য প্রয়োজনীয় মডেল তৈরি করতে আপনি জেমিনিকে একটি কোয়েরি সাজেস্ট করতে বলতে পারেন।

দ্রষ্টব্য: আপনি যদি আপনার সংযোগের জন্য একটি ভিন্ন নাম ব্যবহার করে থাকেন, তাহলে পূর্ববর্তী DDL স্টেটমেন্টে " us.bq-vx "-এর পরিবর্তে সেই নামটি ব্যবহার করুন। এই কোয়েরিটি আমাদের পূর্বে তৈরি করা "bookshelf" ডেটাসেটে রিমোট মডেলটি তৈরি করে।

৮. একটি রিমোট ফাংশন তৈরি করুন যা জাভা ক্লাউড ফাংশনকে কল করে।

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

দ্রষ্টব্য: আপনি যদি এই কোডল্যাবটি না করে থাকেন অথবা এই ক্লাউড ফাংশনটি ডিপ্লয় না করে থাকেন, তাহলে আপনি এই ধাপটি এড়িয়ে পরবর্তী বিষয়ে (যা হলো, রিমোট মডেল ব্যবহার করে বইগুলোর মূলভাবের সারসংক্ষেপ করা) চলে যেতে পারেন।

BigQuery কনসোলে যান এবং নিম্নলিখিত DDL স্টেটমেন্টটি কোয়েরি এডিটরে পেস্ট করুন (আপনি + বোতামে ক্লিক করে একটি নতুন কোয়েরি এডিটর ট্যাব তৈরি করতে পারেন)।

a54c0b0014666cac.png

নিচে DDL দেওয়া হলো যা আপনি কপি করতে পারেন। মনে রাখবেন, এন্ডপয়েন্টটি আপনার ডেপ্লয় করা ক্লাউড ফাংশন এন্ডপয়েন্ট ( কোডল্যাব ১ থেকে তৈরি) দিয়ে প্রতিস্থাপন করতে হবে। যদি আপনার কোনো এন্ডপয়েন্ট না থাকে, তাহলে ডেমো দেখানোর উদ্দেশ্যে নিচের DDL-এর মাস্ক করা অক্ষরগুলোকে "abis-345004" দিয়ে প্রতিস্থাপন করতে পারেন।

CREATE OR REPLACE FUNCTION
  `bookshelf.GEMINI_REMOTE_CALL` (context STRING) RETURNS STRING
  REMOTE WITH CONNECTION `us.bq-vx`
  OPTIONS (
    endpoint = 'https://us-central1-****-******.cloudfunctions.net/remote-gemini-call'  );

গুগল ক্লাউড প্ল্যাটফর্মে BigQuery কনসোলে যান এবং একটি নতুন কোয়েরি এডিটর ট্যাব খুলুন। BigQuery কোয়েরি এডিটরে, উপরের DDL স্টেটমেন্টটি পেস্ট করুন। কোয়েরিটি চালানোর পর আপনি নিম্নলিখিত প্রতিক্রিয়া দেখতে পাবেন:

a023d5691acf6f.png

এখন যেহেতু মডেল এবং ফাংশন তৈরি করা হয়ে গেছে, চলুন একটি SELECT কোয়েরিতে এই দুটি BigQuery অবজেক্ট চালিয়ে পরীক্ষা করে দেখি।

৯. রিমোট মডেল ব্যবহার করে মূল বিষয়বস্তুগুলোর সারসংক্ষেপ করুন।

চলুন, প্রদত্ত থিমের তালিকা থেকে বইটির জন্য একটি সমন্বিত কীওয়ার্ড তৈরি করতে আমাদের তৈরি করা রিমোট মডেল "bookshelf.llm_model" ব্যবহার করি:

SELECT * FROM ML.GENERATE_TEXT(MODEL `bookshelf.llm_model`,
(
SELECT
     CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` LIMIT 1
));

ঐচ্ছিক ধাপ: LLM-দ্বারা তৈরি ফলাফল ফিল্ডটি নেস্টেড বা স্তরযুক্ত। চলুন কোয়েরিতে কিছু LLM প্যারামিটার এবং "flatten_json_output" অ্যাট্রিবিউটটি যোগ করি। "flatten_json_output" অ্যাট্রিবিউটটি ব্যবহার করলে LLM-দ্বারা তৈরি ফলাফল ফিল্ড থেকে এই নেস্টেড কাঠামোটি দূর করতে সাহায্য করে।

SELECT * FROM ML.GENERATE_TEXT ( MODEL `bookshelf.llm_model`, (
 SELECT CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt FROM `gdelt-bq.internetarchivebooks.1920` limit 1),
    STRUCT( 0.2 AS temperature, 100 AS max_output_tokens, TRUE AS flatten_json_output));

এখন, BigQuery Editor-এ SELECT কোয়েরিটি চালান এবং ফলাফল যাচাই করুন। পরীক্ষার জন্য আমরা কোয়েরির ফলাফল ১-এ সীমাবদ্ধ রেখেছি। ফলাফলটি নিম্নরূপে প্রদর্শিত হয়:

9b0d33eca61a73d2.png

১০. রিমোট ফাংশন ব্যবহার করে বইয়ের সম্পূর্ণ পাঠ্যের সারসংক্ষেপ তৈরি করুন।

আমরা এখন পূর্বে তৈরি করা bookshelf.GEMINI_REMOTE_CALL ক্লাউড ফাংশনটি চালিয়ে বইটির সারসংক্ষেপ করার চেষ্টা করব।

দ্রষ্টব্য: যদি আপনি রিমোট ফাংশন তৈরি করা (এই কোডল্যাবের পূর্ববর্তী বিষয়) বাদ দিয়ে থাকেন, তাহলে SELECT কোয়েরিতে bookshelf.GEMINI_REMOTE_CALL ফাংশন কলটিও বাদ দিতে মনে রাখবেন।

পূর্বে তৈরি করা রিমোট ফাংশন (GEMINI_REMOTE_CALL) কল করে এমন SELECT কোয়েরিটি ব্যবহার করুন। এই GEMINI_REMOTE_CALL ফাংশনটির কলে বইয়ের পাঠ্যের সারাংশ জানতে চেয়ে একটি প্রম্পট অন্তর্ভুক্ত থাকে:

select BookMeta_Title, `bookshelf.GEMINI_REMOTE_CALL` (
  CONCAT('This is about a book. The title of the book is this: ', BookMeta_Title,  ' . The theme of the book is as follows: ', Themes, 'The following text contains an excerpt from the book. Summarize it in less than 5 lines to create the gist. If you do not have a summary, use the title and themes to make up a short summary. DO NOT RETURN EMPTY RESPONSE. ', SUBSTR(BookMeta_FullText, 5000, 10000))) Summary 
  from `gdelt-bq.internetarchivebooks.1920` where Themes like '%EDUCATION%' limit 1;

উল্লেখ্য যে, সারাংশটি তৈরি করার জন্য আমরা বইটির পূর্ণাঙ্গ পাঠ্যের একটি উপাংশ নিয়েছি।

কোয়েরিটির ফলাফল নিম্নরূপ:

658bb0a9c9cf0938.png

১১. বইয়ের তথ্য একটি টেবিলে সংরক্ষণ করুন।

এখন যেহেতু আমরা শুধুমাত্র SQL কোয়েরি ব্যবহার করে BigQuery থেকে LLM কল দুটিই (রিমোট মডেল এবং ফাংশন) পরীক্ষা করে দেখেছি, চলুন রিমোট মডেল এবং ফাংশনের ডেটাসেটেই থিম ইনসাইটস সহ "বুকশেলফ" ডেটা সংরক্ষণের জন্য একটি BigQuery টেবিল তৈরি করি।

আমরা এই ধাপে এলএলএম মডেল কল এবং রিমোট ফাংশন কল উভয়ই অন্তর্ভুক্ত করতে পারতাম। কিন্তু যেহেতু আমরা রিমোট ফাংশন কলটিকে (যা ক্লাউড ফাংশনকে আহ্বান করে) একটি ঐচ্ছিক ধাপ হিসেবে চিহ্নিত করেছি, তাই আমরা শুধুমাত্র রিমোট মডেল থেকে প্রাপ্ত ইনসাইটগুলোই ব্যবহার করব।

আমরা যে কোয়েরিটি ব্যবহার করব তা হলো:

SELECT
  BookMeta_Title, Themes, ml_generate_text_llm_result Context 
   FROM
  ML.GENERATE_TEXT (
    MODEL `bookshelf.llm_model`,
    (
 SELECT
      BookMeta_Title,
      Themes,BookMeta_FullText,
      CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

BigQuery Editor-এ কোয়েরিটি চালালে ফলাফলটি নিম্নরূপ হয়:

2c6e08e75a680867.png

এখন, উপরের কোয়েরি থেকে 'bookshelf.books' নামের একটি টেবিল তৈরি করতে জেমিনিকে বলুন। গুগল ক্লাউড কনসোলে জেমিনি চ্যাট কনসোলে যান এবং নিম্নলিখিত প্রম্পটটি লিখুন।

আমরা এই নির্দেশিকাটি ব্যবহার করব:

Create a BigQuery table named bookshelf.books from this SELECT query: 
SELECT
  BookMeta_Title, Themes, ml_generate_text_llm_result Context 
   FROM
  ML.GENERATE_TEXT (
    MODEL `bookshelf.llm_model`,
    (
 SELECT
      BookMeta_Title,
      Themes,BookMeta_FullText,
      CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
    FROM `gdelt-bq.internetarchivebooks.1920` limit 5),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

জেমিনি চ্যাটের প্রতিক্রিয়াটি নিম্নরূপ:

df6595a4b14f7b9.png

আপনি যদি সরাসরি এখান থেকে কোয়েরিটি কপি করতে চান, তাহলে সেটি নিচে দেওয়া হলো:

CREATE TABLE bookshelf.books (
  BookMeta_Title STRING,
  Themes STRING,
  ml_generate_text_llm_result STRING
) AS (
  SELECT
    BookMeta_Title,
    Themes,
    ml_generate_text_llm_result Context
  FROM
    ML.GENERATE_TEXT (
      MODEL `bookshelf.llm_model`,
      (
        SELECT
          BookMeta_Title,
          Themes,
          BookMeta_FullText,
          CONCAT('Read all the words in the following text separated by ";" and come up with one single (most relating) theme that is applicable : ', Themes, '. Take the title of the book from the following value', BookMeta_Title, '. Return a meaningful and concise theme with one or two words, not more than that. If a theme is not possible, return a context from its title. But DO NOT return empty or null. ') AS prompt
        FROM `gdelt-bq.internetarchivebooks.1920`
        LIMIT 5
      ),
      STRUCT(
        0.2 AS temperature,
        100 AS max_output_tokens,
        TRUE AS flatten_json_output
      )
    )
);

BigQuery Editor-এ কোয়েরিটি চালানোর পর ফলাফলটি নিম্নরূপ:

2d1ce716f844b7ad.png

ব্যাস! এবার টেবিলটি কোয়েরি করুন এবং আরও গভীর অন্তর্দৃষ্টির জন্য ডেটা নিয়ে পরীক্ষা-নিরীক্ষা করুন।

১২. অভিনন্দন

অভিনন্দন! আমরা নিম্নলিখিত কাজগুলো সফলভাবে সম্পন্ন করেছি এবং এই প্রক্রিয়ার কিছু ধাপে জেমিনিকেও ব্যবহার করেছি:

  • BigQuery-তে একটি রিমোট মডেল তৈরি করা হয়েছে, যা টেবিলের সেমিকোলন (;) দ্বারা পৃথক করা কীওয়ার্ডের তালিকা থেকে বইটির ধরণ (বা বিষয়বস্তু) শনাক্ত করার জন্য Vertex AI-এর "text-bison-32k" এন্ডপয়েন্টটিকে কল করে।
  • BigQuery-তে একটি রিমোট ফাংশন তৈরি করা হয়েছে যা এই ডেপ্লয় করা জেনারেটিভ এআই ক্লাউড ফাংশনটিকে দূর থেকে কল করবে। এই ফাংশনটি ইনপুট হিসেবে প্রম্পটটি নেবে এবং আউটপুট হিসেবে একটি স্ট্রিং দেবে যা বইটির সারসংক্ষেপ ৫ লাইনে তুলে ধরবে।
  • রিমোট মডেল ও ফাংশন ব্যবহার করে SQL কোয়েরির মাধ্যমে একটি বইয়ের বিষয়বস্তু ও পাঠ্যের সারসংক্ষেপ করা হয়েছে এবং ফলাফলগুলো বুকশেলফ ডেটাসেটের একটি নতুন টেবিলে লেখা হয়েছে।
  • পরবর্তী কাজ হিসেবে, BigQuery-তে তৈরি করা অবজেক্টগুলো মুছে ফেলার জন্য SQL কোডটি পেতে Gemini ব্যবহার করার চেষ্টা করুন। এর মাধ্যমে পরিষ্করণ ধাপটি সম্পন্ন হবে।