১. ভূমিকা
বিশাল ডেটাসেটে মূল্যবান অন্তর্দৃষ্টি থাকে, কিন্তু তা থেকে অর্থপূর্ণ ধারণা বের করা একটি কঠিন কাজ হতে পারে। প্রচলিত অ্যানালিটিক্স টুলগুলো প্রায়শই সূক্ষ্ম, মানবিক ব্যাখ্যা প্রদানে ব্যর্থ হয়, যা আমাদের ডেটার ভেতরের গল্পটিকে সত্যিকার অর্থে উপলব্ধি করতে সাহায্য করে। ডেটা ওয়্যারহাউসগুলোতে ক্রমশ আরও বেশি অসংগঠিত ডেটা জমা হচ্ছে, কিন্তু অন্তর্দৃষ্টি অর্জনের জন্য সেই ডেটা সবসময় সহজলভ্য ছিল না। অসংগঠিত টেক্সট, ছবি এবং ভিডিওতে আপনার ব্যবসার উন্নতির জন্য মূল্যবান তথ্য থাকে। এলএলএম (LLM) আপনার ডেটা বোঝার জন্য একটি শক্তিশালী নতুন উপায় প্রদান করে, যা ব্যাখ্যা, সেন্টিমেন্ট অ্যানালাইসিস, অবজেক্ট ডিটেকশন এবং আরও অনেক কিছু সরবরাহ করে। মাল্টিমোডাল মডেলের আবির্ভাবের সাথে (এবং অবজেক্ট টেবিলের মাধ্যমে BigQuery-তে ছবি ও ভিডিওর মতো অবজেক্ট ডেটা সংরক্ষণ করার ক্ষমতার ফলে), BigQuery-এর সাথে Gemini 1.0 Pro (টেক্সট-ভিত্তিক বিশ্লেষণের জন্য) এবং Gemini 1.0 Pro Vision (টেক্সট এবং ছবি/ভিডিও বিশ্লেষণের জন্য)-এর মতো শক্তিশালী এলএলএম-গুলোকে একীভূত করা আপনার ডেটা বিশ্লেষণের পদ্ধতিকে আমূল পরিবর্তন করে দিতে পারে।
এই কোডল্যাবে, আমরা আপনার এন্টারপ্রাইজ ডেটা থেকে LLM ইনসাইট বের করার এবং BigQuery-এর মধ্যে সেই ইনসাইটগুলোকে হাজার হাজার রো-তে স্কেল করার নিম্নলিখিত দুটি পদ্ধতি দেখব:
পদ্ধতি ১: দূরবর্তী মডেল আহ্বান
-
SELECTকোয়েরিতেML.GENERATE_TEXTব্যবহার করে BigQuery-এর ভেতর থেকে Gemini 1.0 Pro-কে কল করুন। - এই পদ্ধতিটি তখন ব্যবহার করুন যখন মডেলটি BigQuery-তে একটি রিমোট মডেল হিসেবে আগে থেকেই উপলব্ধ থাকে এবং আপনি এটিকে কোনো পরিবর্তন ছাড়াই ব্যবহার করতে চান। BigQuery ডকুমেন্টেশনে আপনি যে মডেলটি ব্যবহার করতে চান তার অবস্থা যাচাই করুন।
পদ্ধতি ২: রিমোট ফাংশন বাস্তবায়ন
- BigQuery-তে রিমোট ফাংশন হিসেবে উন্মুক্ত, Gemini 1.0 Pro Vision কল বাস্তবায়নকারী একটি ক্লাউড ফাংশনকে কল করুন।
- এই পদ্ধতিটি তখন ব্যবহার করুন যখন আপনি যে মডেলটি ব্যবহার করতে চান তা রিমোট মডেল হিসেবে সরাসরি উপলব্ধ না থাকে অথবা আপনি আপনার ব্যবহারের ক্ষেত্রে আরও বেশি নমনীয়তা এবং কাস্টমাইজেশন চান।
আপনি যা তৈরি করবেন
- রিমোট মডেল ইনভোকেশন পদ্ধতির জন্য, আপনি BigQuery-এর ML.GENERATE_TEXT কনস্ট্রাক্টে Gemini 1.0 Pro-এর রিমোট মডেলটি ইনভোক করার মাধ্যমে ইন্টারনেট আর্কাইভ বুকস ডেটাসেটের (যা BigQuery-তে সর্বজনীনভাবে উপলব্ধ) জন্য একটি লোকেশন সামারাইজার তৈরি করবেন।

- রিমোট ফাংশন ইমপ্লিমেন্টেশন পদ্ধতির জন্য, আপনি একটি বেসলাইন ইমেজের সাথে টেস্ট ইমেজগুলো যাচাই করার জন্য একটি ইমেজ ভ্যালিডেটর তৈরি করবেন। এর জন্য, আপনি একটি এক্সটার্নাল টেবিলে টেস্ট ইমেজের স্ক্রিনশটসহ একটি ডেটাসেট তৈরি করবেন এবং Gemini 1.0 Pro Vision-কে বেসলাইন ইমেজের সাথে এটি যাচাই করতে বলবেন। তারপর, আপনি একটি জাভা ক্লাউড ফাংশন তৈরি করবেন যা Gemini Pro Vision কল ইমপ্লিমেন্ট করে এবং BigQuery-তে এটিকে একটি রিমোট ফাংশন হিসেবে ইনভোক করবেন।

দ্রষ্টব্য:
BigQuery-তে রিমোট মডেল হিসেবে আরও Vertex AI জেনারেটিভ এআই মডেল উপলব্ধ থাকতে পারে। এর মানে হলো, আপনি BigQuery-এর ML.GENERATE_TEXT কনস্ট্রাক্ট ব্যবহার করে সরাসরি এই মডেলগুলো অ্যাক্সেস করতে পারবেন। তবে, রিমোট মডেল উপলব্ধ থাকলেও, আপনার ব্যবহারের জন্য ক্লাউড ফাংশন ব্যবহার করে উন্নত কাস্টমাইজেশন তৈরি করার এবং তারপর BigQuery থেকে এই মডেলগুলোকে রিমোট ফাংশন হিসেবে অ্যাক্সেস করার সুযোগ সবসময়ই থাকে।
BigQuery কেন?
BigQuery হলো একটি সার্ভারবিহীন, মাল্টি-ক্লাউড ডেটা ওয়্যারহাউস যা ন্যূনতম পরিচালনগত খরচে বাইট থেকে পেটাবাইট পর্যন্ত স্কেল করতে পারে এবং তাই এমএল (ML) ট্রেনিং ডেটা সংরক্ষণের জন্য এটি একটি চমৎকার পছন্দ। এর বিল্ট-ইন BigQuery মেশিন লার্নিং (BQML) এবং অ্যানালিটিক্স সক্ষমতা ব্যবহার করে, আপনি শুধুমাত্র SQL কোয়েরির মাধ্যমে কোড ছাড়াই প্রেডিকশন তৈরি করতে পারেন। এছাড়াও, আপনি ফেডারেটেড কোয়েরির মাধ্যমে বাহ্যিক উৎস থেকে ডেটা অ্যাক্সেস করতে পারেন, যা জটিল ETL পাইপলাইনের প্রয়োজনীয়তা দূর করে।
BigQuery হলো একটি সম্পূর্ণভাবে পরিচালিত ক্লাউড ডেটা ওয়্যারহাউস যা ব্যবহারকারীদের স্ট্রাকচার্ড, সেমি-স্ট্রাকচার্ড এবং আনস্ট্রাকচার্ড ডেটা বিশ্লেষণ করতে সাহায্য করে।
২. প্রয়োজনীয়তা
- ক্রোম বা ফায়ারফক্সের মতো একটি ব্রাউজার
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট।
৩. শুরু করার আগে
- গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
- আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ এবং এটি bq-এর সাথে আগে থেকেই লোড করা থাকে। গুগল ক্লাউড কনসোলের শীর্ষে থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন।

- ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে যাচাই করে নিন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে:
gcloud auth list
- gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে অবগত আছে কিনা, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
- আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
- এপিআই (API) সক্রিয় করতে Gemini for Google Cloud Marketplace- এ যান। এছাড়াও আপনি ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
- নিশ্চিত করুন যে নিম্নলিখিত API গুলি সক্রিয় করা আছে:
- বিগকোয়েরি
- বিগকোয়েরি সংযোগ
- ক্লাউড ফাংশন
- ক্লাউড রান
- ভার্টেক্স এআই
- ক্লাউড বিল্ড
- ক্লাউড স্টোরেজ এপিআই
gcloud কমান্ড ব্যবহার করার বিকল্প হলো এই লিঙ্কের মাধ্যমে কনসোলে প্রবেশ করা।
gcloud কমান্ড এবং এর ব্যবহার সম্পর্কে জানতে ডকুমেন্টেশন দেখুন।
৪. একটি BigQuery ডেটাসেট এবং বাহ্যিক সংযোগ তৈরি করুন
প্রথমে একটি ডেটাসেট এবং একটি ক্লাউড রিসোর্স সংযোগ তৈরি করে নেওয়া যাক।
BigQuery-তে একটি ডেটাসেট হলো আপনার অ্যাপ্লিকেশনের সমস্ত টেবিল এবং অবজেক্টের জন্য একটি ধারক।
একটি ডেটাসেট তৈরি করতে, নিম্নলিখিতগুলি করুন:
- Google Cloud কনসোলে BigQuery পৃষ্ঠায় যান।
- এক্সপ্লোরার প্যানেলে, সেই প্রজেক্টটি নির্বাচন করুন যেখানে আপনি ডেটাসেটটি তৈরি করতে চান।
- অ্যাকশন অপশনটি (উল্লম্ব এলিপসিস আইকন) প্রসারিত করুন এবং ক্রিয়েট ডেটাসেট-এ ক্লিক করুন।

- ডেটা সেট তৈরি করুন -এ ক্লিক করুন।
- ডেটাসেট আইডি ফিল্ডে
gemini_bq_fnলিখুন। - আপনার অবস্থানের ধরণ হিসেবে
Multi-regionসেট করুন এবং ডিফল্ট মানটি গ্রহণ করুন, যা হলোUS(multiple regions in United States. - ডেটা সেট তৈরি করুন -এ ক্লিক করুন।
- এক্সপ্লোরার প্যানে ডেটা সেটটি তৈরি হয়েছে এবং আপনার প্রজেক্ট আইডির অধীনে তালিকাভুক্ত আছে কিনা তা যাচাই করুন।
আপনার ক্লাউড ফাংশনের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি BigQuery কানেকশন প্রয়োজন। একটি রিমোট ফাংশন তৈরি করতে হলে, আপনাকে অবশ্যই একটি BigQuery কানেকশন তৈরি করতে হবে। এই কোডল্যাবে, আমরা ক্লাউড ফাংশনের মাধ্যমে BigQuery থেকে মডেলটি অ্যাক্সেস করার জন্য BigLake কানেকশন ব্যবহার করব। BigLake কানেকশনগুলো BigQuery-এর সূক্ষ্ম অ্যাক্সেস কন্ট্রোল এবং নিরাপত্তা বজায় রেখে এক্সটার্নাল ডেটা সোর্সের সাথে সংযোগ স্থাপন করতে সাহায্য করে, যা আমাদের ক্ষেত্রে হলো Vertex AI Gemini Pro API।
BigLake সংযোগ তৈরি করতে, নিম্নলিখিতগুলি করুন:
- BigQuery পেজের Explorer প্যানে Add- এ ক্লিক করুন।

- বাহ্যিক ডেটা উৎসের সাথে সংযোগ করতে ক্লিক করুন।
- কানেকশন টাইপ মেনু থেকে ভার্টেক্স এআই রিমোট মডেল, রিমোট ফাংশন এবং বিগলেক (ক্লাউড রিসোর্স) নির্বাচন করুন।
- কানেকশন আইডি ফিল্ডে আপনার কানেকশনের নাম
gemini-bq-connহিসেবে লিখুন। - আপনার অবস্থানের ধরণ হিসেবে
Multi-regionসেট করুন এবং ডিফল্ট মানটি গ্রহণ করুন, যা হলোUS(multiple regions in United States. - সংযোগ তৈরি করুন -এ ক্লিক করুন।
- 'Go to connection'-এ ক্লিক করুন এবং তারপরে 'Connection info' প্যানে থেকে সার্ভিস অ্যাকাউন্ট আইডিটি কপি করুন।

- IAM ও অ্যাডমিন পেজে যান এবং 'অ্যাক্সেস দিন'-এ ক্লিক করুন।
- সার্ভিস অ্যাকাউন্ট আইডিটি 'নতুন নীতি' ফিল্ডে পেস্ট করুন।
- রোল তালিকা থেকে
Vertex AI userরোলটি নির্বাচন করুন, এবং তারপর সেভ-এ ক্লিক করুন।

আপনি এখন সফলভাবে ডেটাসেট এবং BigQuery সংযোগ তৈরি করেছেন। এরপর, আপনি রিমোট মডেল ইনভোকেশনের জন্য প্রয়োজনীয় ধাপগুলো সম্পন্ন করবেন।
৫. ব্যবহারের ক্ষেত্র #১ রিমোট মডেল ইনভোকেশন: রিমোট মডেল ইনভোকেশন সেট আপ করুন
এখন যেহেতু আপনি আপনার ডেটাসেট এবং কানেকশন তৈরি করে ফেলেছেন, চলুন Vertex AI Gemini Pro ফাউন্ডেশন মডেলের উপর ভিত্তি করে BigQuery-তে একটি মডেল তৈরি করি। এই অনুশীলনের শেষে, আপনি শুধুমাত্র SQL কোয়েরি ব্যবহার করে আপনার LLM অ্যাপ্লিকেশনটি চালু করতে পারবেন।
ধাপ ১: রিমোট মডেলের ইনপুট ডেটা ধারণ করার জন্য একটি BigQuery টেবিল তৈরি করুন।
আপনার ডেটাসেটে books নামে একটি টেবিল তৈরি করুন, যা BigQuery দ্বারা সর্বজনীন ব্যবহারের জন্য সংগৃহীত Internet Archive Books ডেটাসেটের bigquery-public-data.gdelt_internetarchivebooks.1905 টেবিল থেকে প্রায় ৫০টি রেকর্ড ধারণ করতে পারবে।
এটি করার জন্য, BigQuery SQL এডিটর প্যান থেকে নিম্নলিখিত DDL (ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ) স্টেটমেন্টটি এক্সিকিউট করুন:
create or replace table gemini_bq_fn.books as (
select *
from
bigquery-public-data.gdelt_internetarchivebooks.1905 limit 50)
ধাপ ২ : একটি BigQuery মডেল তৈরি করুন
আপনার ডেটাসেটে একটি মডেল তৈরি করুন। এটি করার জন্য, BigQuery SQL Editor প্যানে থেকে নিম্নলিখিত DDL-টি চালান:
CREATE MODEL `gemini_bq_fn.gemini_remote_model`
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(ENDPOINT = 'gemini-pro');
লক্ষ্য করুন যে, মডেলটি দেখার একটি বিকল্পসহ এটি তৈরি করা হয়েছে।
ধাপ ৩: আপনার নতুন জেনারেটিভ এআই অ্যাপ্লিকেশনটি পরীক্ষা করুন।
রিমোট মডেলে অনুরোধ পাঠাতে SELECT কোয়েরিতে ML.GENERATE_TEXT ফাংশনটি ব্যবহার করুন।
SELECT ml_generate_text_llm_result as Gemini_Response, prompt as Prompt
FROM ML.GENERATE_TEXT(MODEL `gemini_bq_fn.gemini_remote_model`,
(select 'You are a text summarizer and standardizer. From the following text that contains address locations, standardize and print one standardized, consolidated address. You cannot return empty because you know how to pick up sensible data from the text in this field: ' ||
substring(locations, 0, 200) as prompt
from `gemini_bq_fn.books`),
STRUCT(
TRUE AS flatten_json_output));
আপনি নিম্নলিখিত ফলাফলটি দেখতে পাবেন:

অভিনন্দন! আপনি সফলভাবে দেখিয়েছেন কিভাবে একটি BigQuery টেবিলের টেক্সট ডেটা বিশ্লেষণ করার জন্য ML.GENERATE_TEXT ফাংশনের সাথে একটি রিমোট মডেল ( gemini-pro মডেলের উপর ভিত্তি করে) ব্যবহার করতে হয়।
এবার BigQuery রিমোট ফাংশন ব্যবহার করে আরেকটি Vertex AI মডেল চেষ্টা করা যাক। ধরা যাক, আপনি BigQuery-তে দূর থেকে মডেলটি ব্যবহারের পদ্ধতিতে আরও বেশি কাস্টমাইজেশন এবং নমনীয়তা যোগ করতে চান। সমর্থিত মডেলগুলোর তালিকা BigQuery ডকুমেন্টেশনে দেওয়া আছে।
৬. ব্যবহারের ক্ষেত্র #২ রিমোট ফাংশন বাস্তবায়ন: রিমোট ফাংশন বাস্তবায়ন সেট আপ করুন
এই অনুশীলনে, আপনি Gemini 1.0 Pro Vision ফাউন্ডেশন মডেল বাস্তবায়নকারী Java Cloud Function-এর উপর ভিত্তি করে BigQuery-তে একটি ফাংশন তৈরি করবেন। প্রথমে, আপনি Gemini 1.0 Pro Vision মডেল ব্যবহার করে ছবি তুলনা করার জন্য Java Cloud Function-টি তৈরি ও ডিপ্লয় করবেন, এবং তারপরে BigQuery-তে রিমোট ফাংশনটি তৈরি করবেন যা ডিপ্লয় করা Cloud Function-টিকে কল করবে। মনে রাখবেন যে BigQuery-তে যেকোনো রিমোট ফাংশন এক্সিকিউশনের জন্য একই পদ্ধতি অনুসরণ করা যেতে পারে।
তাহলে, চলুন শুরু করা যাক!
ধাপ ১: জাভা ক্লাউড ফাংশন তৈরি করুন
আপনি একটি বেসলাইন ইমেজের সাথে টেস্ট ইমেজগুলো যাচাই করার জন্য জাভাতে একটি জেন ২ ক্লাউড ফাংশন তৈরি করবেন। বেসলাইন ইমেজটি BigQuery-এর একটি এক্সটার্নাল টেবিলে থাকা টেস্ট ইমেজের স্ক্রিনশট সম্বলিত একটি ডেটাসেটে সংরক্ষিত আছে। আপনি Gemini Pro Vision মডেল (জাভা SDK) ব্যবহার করে ইমেজগুলো যাচাই করবেন। এরপর আপনি জাভা ক্লাউড ফাংশনটি একটি REST এন্ডপয়েন্টে ডেপ্লয় করবেন।
এই ধাপগুলো অনুসরণ করুন:
- ক্লাউড শেল এডিটর চালু করুন।
- আপনি যদি লিগ্যাসি এডিটর ব্যবহার করেন, তাহলে ‘নতুন এডিটরটি ব্যবহার করে দেখুন ’ এ ক্লিক করুন।
- স্ট্যাটাস বারে, ক্লাউড কোড - সাইন ইন-এ ক্লিক করুন।
- ক্লাউড শেল এডিটরকে গুগল ক্লাউড এপিআই কল করার অনুমতি দিতে বলা হলে, 'Authorize'-এ ক্লিক করুন। আপনার গুগল অ্যাকাউন্টে সাইন ইন করতে নির্দেশাবলী অনুসরণ করুন। আপনি এখন গুগল ক্লাউডের সাথে সংযুক্ত হয়েছেন।
- আপনি যদি ক্লাউড কোড স্ট্যাটাস বারে আপনার প্রজেক্টটি দেখতে না পান, তাহলে ক্লাউড কোড - সাইন ইন > একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন-এ ক্লিক করুন। সেই গুগল ক্লাউড প্রজেক্টটি বেছে নিন যেখানে আপনি আপনার ক্লাউড ফাংশনগুলো তৈরি করতে চান। প্রজেক্টটি লোড হয়ে যাবে এবং ক্লাউড শেল এডিটরে সক্রিয় প্রজেক্ট হয়ে উঠবে।
- ক্লাউড কোড স্ট্যাটাস বারে, সক্রিয় প্রজেক্টের নামে ক্লিক করুন। যে কুইক পিক মেনুটি প্রদর্শিত হবে, সেখান থেকে নিউ অ্যাপ্লিকেশন (New Application ) নির্বাচন করুন।
- নতুন অ্যাপ্লিকেশন তৈরি করুন ডায়ালগ বক্সে, ক্লাউড ফাংশনস অ্যাপ্লিকেশনটি নির্বাচন করুন।

- টেমপ্লেট নির্বাচন করতে বলা হলে Java: Hello World নির্বাচন করুন।

- প্রজেক্ট পাথে আপনার প্রজেক্টের নাম হিসেবে
Gemini-BQ-Functionলিখুন। প্রজেক্ট কাঠামোটি একটি নতুন ক্লাউড শেল এডিটর ভিউতে প্রদর্শিত হবে।

-
<dependencies>... </dependencies>ট্যাগের মধ্যে প্রয়োজনীয় ডিপেন্ডেন্সিগুলো যোগ করুন অথবা নমুনা pom.xml ফাইল থেকে ডিপেন্ডেন্সিগুলো কপি করুন। - আপনার ক্লাসের নাম
HelloWorld.javaথেকে পরিবর্তন করে আরও অর্থপূর্ণ কিছু রাখুন। ধরা যাক,GeminiBigQueryFunction.java। সেই অনুযায়ী প্যাকেজের নামও পরিবর্তন করুন। - GeminiBigQueryFunction.Java ফাইলের প্লেসহোল্ডার কোডটি গিটহাব রিপোজিটরিতে দেওয়া নমুনা কোড দিয়ে প্রতিস্থাপন করুন। নমুনা কোডে <YOUR_PROJECT_ID> ভেরিয়েবলটি আপনার প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করতে ভুলবেন না।
- ক্লাউড শেল টার্মিনালে যান। আপনি আপনার প্রজেক্ট ডিরেক্টরিতে আছেন কিনা তা পরীক্ষা করুন। যদি না থাকেন, তাহলে নিম্নলিখিত কমান্ডটি চালিয়ে প্রজেক্ট ডিরেক্টরিতে যান:
cd Gemini-BQ-Function
- ক্লাউড ফাংশনটি বিল্ড ও ডিপ্লয় করতে নিম্নলিখিত স্টেটমেন্টটি এক্সিকিউট করুন:
gcloud functions deploy gemini-bq-fn --gen2 --runtime java17 --trigger-http --entry-point cloudcode.helloworld.GeminiBigQueryFunction --allow-unauthenticated --source .
কমান্ডের এন্ট্রি পয়েন্টটি আপনার ফাংশনের এন্ট্রি পয়েন্ট দিয়ে প্রতিস্থাপন করুন। আউটপুটটি নিম্নলিখিত ফরম্যাটে একটি REST URL হবে:
https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/gemini-bq-fn
- টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালিয়ে এই ক্লাউড ফাংশনটি পরীক্ষা করুন:
gcloud functions call gemini-bq-fn --region=us-central1 --gen2 --data '{"calls":[["https://storage.googleapis.com/img_public_test/image_validator/baseline/1.JPG", "https://storage.googleapis.com/img_public_test/image_validator/test/2.JPG", "PROMPT_ABOUT_THE_IMAGES_TO_GEMINI"]]}'
দৈবচয়ন নমুনা নির্দেশনার উত্তর:

চমৎকার! Gemini Pro Vision মডেলের জন্য জেনেরিক ক্লাউড ফাংশন ইমপ্লিমেন্টেশনটি প্রস্তুত। চলুন, একটি BigQuery রিমোট ফাংশনের ভেতর থেকে সরাসরি BigQuery ডেটার ওপর এই এন্ডপয়েন্টটি ব্যবহার করি।
ধাপ ২: একটি BigQuery অবজেক্ট টেবিল এবং রিমোট ফাংশন তৈরি করুন
পূর্বশর্ত
অনুশীলনের এই অংশের জন্য আপনার একটি ক্লাউড স্টোরেজ বাকেট প্রয়োজন হবে। একটি ক্লাউড স্টোরেজ বাকেট তৈরি করতে এই ধাপগুলো অনুসরণ করুন:
- একটি বাকেট তৈরি করতে, ক্লাউড স্টোরেজ কনসোলে যান এবং 'Create' এ ক্লিক করুন।
- আপনার বাকেট নেম হিসেবে
demo-bq-gemini-public-imageলিখুন এবং Create-এ ক্লিক করুন। -
Enforce public access prevention on this bucketবিকল্পটি আনচেক করুন। যদিও এই অনুশীলনে আপনি সর্বজনীন প্রবেশাধিকারের জন্য এই বাকেটটি তৈরি করছেন, আমরা সুপারিশ করি যে আপনি সর্বজনীন প্রবেশাধিকার রোধ করুন এবং আপনার এন্টারপ্রাইজ ব্যবহারের ক্ষেত্রে প্রয়োজন অনুযায়ী নির্দিষ্ট পরিষেবা অ্যাকাউন্টগুলিকে অনুমতি প্রদান করুন। - বাকেটটি তৈরি হয়ে গেলে, পারমিশনগুলো দেখতে ও পরিবর্তন করতে পারমিশন ট্যাবে যান।
- প্রিন্সিপাল যোগ করতে, 'অ্যাক্সেস দিন' (Grant access) এ ক্লিক করুন। কোনো নির্দিষ্ট অ্যাকাউন্টকে অনুমতি দিতে একটি সার্ভিস অ্যাকাউন্ট আইডি উল্লেখ করুন অথবা আপনার বাকেটে সর্বজনীন অ্যাক্সেস দিতে
allUsersউল্লেখ করুন। -
Storage Object Viewerরোলটি নির্বাচন করুন এবং সেভ-এ ক্লিক করুন। অনুরোধ করা হলে, পাবলিক অ্যাক্সেসের অনুমতি দিন। - অবজেক্টস ট্যাবে যান এবং তুলনা করার জন্য বেসলাইন ইমেজ ও টেস্ট ইমেজ আপলোড করুন। এই কোডল্যাবের জন্য, আপনি নিম্নলিখিত পাবলিকলি উপলব্ধ অবজেক্টগুলো আপলোড করতে পারেন: baseline.JPG , TEST1.JPG , এবং TEST2.JPG ।
একটি BigQuery অবজেক্ট টেবিল তৈরি করুন
আপনার পূর্বে তৈরি করা কানেকশন এবং ডেটাসেট ব্যবহার করে বাকেটের অসংগঠিত ডেটা অ্যাক্সেস করার জন্য BigQuery থেকে একটি এক্সটার্নাল অবজেক্ট টেবিল তৈরি করুন। এটি করার জন্য, BigQuery কোয়েরি এডিটর প্যানে থেকে নিম্নলিখিত DDL (ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ) স্টেটমেন্টটি এক্সিকিউট করুন:
CREATE OR REPLACE EXTERNAL TABLE `gemini_bq_fn.image_validation`
WITH CONNECTION `us.gemini-bq-conn`
OPTIONS(object_metadata="SIMPLE", uris=["gs://demo-bq-gemini-public-image/*.JPG"]);
আপনার ডেটাসেটে image_validation নামে একটি নতুন অবজেক্ট টেবিল তৈরি হয়েছে কিনা তা যাচাই করুন।
একটি BigQuery রিমোট ফাংশন তৈরি করুন
Gemini Pro Vision মডেলটি বাস্তবায়নকারী জাভা ক্লাউড ফাংশনটিকে কল করার জন্য BigQuery-তে একটি রিমোট ফাংশন তৈরি করুন। এটি একই ডেটাসেটে তৈরি করুন। এটি করার জন্য, BigQuery কনসোলের SQL এডিটর প্যান থেকে নিম্নলিখিত DDL-টি রান করুন:
CREATE OR REPLACE FUNCTION `gemini_bq_fn.FN_IMAGE_VALIDATE` (baseline STRING, test STRING, prompt STRING) RETURNS STRING
REMOTE WITH CONNECTION `us.gemini-bq-conn`
OPTIONS (
endpoint = 'https://us-central1-<your project id>.cloudfunctions.net/gemini-bq-fn',
max_batching_rows = 1
);
এন্ডপয়েন্ট ইউআরএলটি হলো সেই REST ইউআরএল যা এই অনুশীলনের শুরুতে ফেরত দেওয়া হয়েছিল। এটি BigQuery-তে রিমোট ফাংশনটি তৈরি করে। উপরের DDL-টিতে তিনটি প্যারামিটার রয়েছে। প্রথম দুটি প্যারামিটার হলো পূর্ববর্তী ধাপে তৈরি করা অবজেক্ট টেবিলে সংরক্ষিত ছবিগুলোর ইউআরএল। শেষ প্যারামিটারটি হলো মডেলের (Gemini Pro Vision) প্রম্পট। এই সিগনেচারটি পার্স করতে ব্যবহৃত Java Cloud Functions কোডটি আপনি দেখতে পারেন:
Gson().fromJson(request.getReader(), JsonObject.class);
JsonArray calls_array = requestJson.getAsJsonArray("calls");
JsonArray calls = (JsonArray) calls_array.get(0);
String baseline_url = calls.get(0).toString().replace("\"", "");
String test_url = calls.get(1).toString().replace("\"", "");
String prompt_string = calls.get(2).toString();
BigQuery থেকে Gemini আহ্বান করুন
প্রম্পটের সাথে ছবিগুলো যাচাই করার ফাংশনটি পরীক্ষা করতে একটি SELECT কোয়েরিতে রিমোট ফাংশনটি ব্যবহার করুন।
select gemini_bq_fn.FN_IMAGE_VALIDATE(
'https://storage.googleapis.com/demo-bq-gemini-public-image/Baseline.JPG',
REPLACE(uri, 'gs://', 'https://storage.googleapis.com/') ,
'You are an expert image validator who can respond with JSON result. Find 2 images here. The first one is the reference image. The second image is the test image. Compare the second image to see if the second image is similar to the first in terms of the text present in the image. Respond ONLY in JSON Format with 3 attributes namely SIMILARITY which is a \"YES\" or \"NO\", SIMILARITY_SCORE which is a percentage and DIFFERENCE_COMMENT which is a string.' ) as IMAGE_VALIDATION_RESULT
from `gemini_bq_fn.image_validation`
where uri like '%TEST1%';
TEST1 এবং TEST2 অবজেক্ট ফাইলগুলো দিয়ে উপরের কোয়েরিটি চেষ্টা করুন। আপনি নিচের মতো একটি ফলাফল দেখতে পাবেন:

আপনার অবগতির জন্য ছবিগুলো নিচে দেওয়া হলো:
বেসলাইন চিত্র

পরীক্ষার ছবি

লক্ষ্য করুন যে, ছবি দুটির মধ্যে মিল হলো দুটিতেই ডুয়েট এআই ক্লাউড কনসোল ভিউ রয়েছে, কিন্তু মডেল দ্বারা JSON ফরম্যাটে আনা হওয়ায় উভয়ের লেখা ভিন্ন।
এর মাধ্যমে, আপনি রিমোট ফাংশন বাস্তবায়ন সফলভাবে পরীক্ষা করেছেন।
৭. সুবিধাসমূহ এবং ব্যবহারের ক্ষেত্রসমূহ
চলুন, স্ট্রাকচার্ড এবং আনস্ট্রাকচার্ড ডেটা অ্যানালিটিক্সের জন্য BigQuery এবং Gemini ইন্টিগ্রেট করার কিছু সুবিধা দেখে নেওয়া যাক।
- আপনার ডেটাতে GenAI নিয়ে আসুন: ডেটা এদিক-ওদিক সরানো, পুনরাবৃত্তি এবং অতিরিক্ত জটিলতার আর প্রয়োজন নেই। আপনি একই BigQuery পরিবেশে ডেটা বিশ্লেষণ করতে এবং অন্তর্দৃষ্টি তৈরি করতে পারবেন।
- উন্নত বিশ্লেষণ: জেমিনির স্বাভাবিক ভাষার ব্যাখ্যা আপনার ডেটাকে বোঝার ক্ষেত্রে একটি নতুন মাত্রা যোগ করে এবং আপনি SQL কোয়েরি ব্যবহার করে এটি অর্জন করতে পারেন।
- পরিমাপযোগ্যতা: এই সমাধানটি স্বল্প কোড প্রচেষ্টায় এবং সহজে বৃহৎ ডেটাসেট ও জটিল বিশ্লেষণ পরিচালনা করে।
এর প্রয়োগক্ষেত্র অনেক। অর্থায়ন (বাজারের প্রবণতা বিশ্লেষণ), খুচরা ব্যবসা (গ্রাহকের মনোভাব), স্বাস্থ্যসেবা (মেডিকেল রিপোর্টের সারসংক্ষেপ) ইত্যাদির মতো পরিস্থিতিগুলো বিবেচনা করুন, যেখানে আপনার অ্যানালিটিক্স এবং ব্যবসায়িক দলগুলো তুলনামূলকভাবে কম প্রচেষ্টা, সম্পদ এবং পছন্দের একটি পরিচিত ভাষা ও টুল ব্যবহার করে এগুলো বাস্তবায়ন করতে পারে।
৮. পরিষ্কার করুন
এই পোস্টে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, এই ধাপগুলো অনুসরণ করুন:
- গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা (Manage resources) পৃষ্ঠায় যান।
- প্রজেক্ট তালিকা থেকে, আপনি যে প্রজেক্টটি মুছতে চান সেটি নির্বাচন করুন এবং তারপর ডিলিট বোতামে ক্লিক করুন।
- ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।
- আপনি যদি আপনার প্রজেক্টটি রাখতে চান, তাহলে উপরের ধাপগুলো এড়িয়ে যান এবং Cloud Functions-এ গিয়ে ফাংশনগুলোর তালিকা থেকে আপনি যেটি মুছতে চান সেটি চেক করে Delete-এ ক্লিক করুন।
৯. অভিনন্দন
অভিনন্দন। BigQuery-তে Gemini মডেলগুলো ইন্টিগ্রেট করার ফলে, আপনি এখন আর শুধু আপনার ডেটা বিশ্লেষণ করছেন না — আপনি একজন ডেটা স্টোরিটেলার। আপনি আপনার ডেটাসেটের ভেতরের লুকানো আখ্যানগুলো তৈরি করতে পারেন এবং আপনার ইনসাইটগুলো বোঝার পদ্ধতিকে বদলে দিতে পারেন। পরীক্ষা-নিরীক্ষা শুরু করুন! এই কৌশলটি আপনার নিজের ডেটাসেটে প্রয়োগ করুন এবং আপনার ডেটার ভেতরের গল্পগুলো আবিষ্কার করুন। BigQuery যেহেতু অবজেক্ট টেবিলে ( এক্সটার্নাল টেবিল ) আনস্ট্রাকচারড ডেটা সাপোর্ট করে, তাই ইমেজ ডেটার উপর জেনারেটিভ ইনসাইট তৈরি করার জন্য Gemini Pro Vision ব্যবহার করে দেখতে পারেন। আরও বিস্তারিত নির্দেশনার জন্য Vertex AI , BigQuery Remote Functions , এবং Cloud Functions- এর ডকুমেন্টেশন দেখুন। এই প্রজেক্টটির গিটহাব রিপো এখানে দেওয়া হলো। এই শিক্ষা দিয়ে আপনি কী তৈরি করছেন, তা আমাদের জানান!