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

এটি নিম্নরূপভাবে কাজ করে:
- একজন ব্যবহারকারী গুগল চ্যাটে কোনো চ্যাট অ্যাপে সরাসরি বার্তা বা চ্যাট স্পেসে বার্তা পাঠান।
- ওয়েব সার্ভারে একটি HTTP অনুরোধ পাঠানো হয়, যা Node.js Google Cloud Run ফাংশন হিসেবে চলছে এবং এতে চ্যাট অ্যাপের লজিক থাকে।
- ঐচ্ছিকভাবে, চ্যাট অ্যাপের লজিকটি গুগল ওয়ার্কস্পেস পরিষেবা (যেমন ক্যালেন্ডার এবং শীটস), অন্যান্য গুগল পরিষেবা (যেমন ম্যাপস, ইউটিউব এবং ভার্টেক্স এআই), বা অন্যান্য ওয়েব পরিষেবা (যেমন একটি প্রজেক্ট ম্যানেজমেন্ট সিস্টেম বা টিকেটিং টুল)-এর সাথে একীভূত হতে পারে।
- ওয়েব সার্ভারটি Chat-এর মধ্যে থাকা Chat অ্যাপ সার্ভিসে একটি HTTP রেসপন্স ফেরত পাঠায়।
- প্রতিক্রিয়াটি ব্যবহারকারীর কাছে পৌঁছে দেওয়া হয়।
- ঐচ্ছিকভাবে, চ্যাট অ্যাপটি অ্যাসিঙ্ক্রোনাসভাবে বার্তা পোস্ট করতে বা অন্যান্য অপারেশন সম্পাদন করতে চ্যাট এপিআই-কে কল করতে পারে।
উপরের ৩ এবং ৬ নং ধাপে প্রয়োজনীয় পদক্ষেপগুলো নেওয়ার জন্য প্রতিটি গুগল চ্যাট অ্যাপের Node.js গুগল ক্লাউড রান ফাংশনে নিম্নলিখিত সোর্স ফাইলগুলোর নিজস্ব সংস্করণ থাকে:
-
package.json: একটি কেন্দ্রীয় ম্যানিফেস্ট যা Node.js প্রোজেক্টের ব্লুপ্রিন্ট হিসেবে কাজ করে। এটি মেটাডেটা, ডিপেন্ডেন্সি এবং স্ক্রিপ্ট নির্ধারণ করতে ব্যবহৃত হয়। -
env.js: একটি স্ক্রিপ্ট যা প্রোগ্রাম সম্পাদনের জন্য প্রয়োজনীয় ধ্রুবকগুলো নির্ধারণ করে। পরিবেশ এবং কনফিগারেশন অনুযায়ী এটি সম্পাদনা করা উচিত। -
index.js:এটি মূল স্ক্রিপ্ট যা গুগল চ্যাট ইন্টারঅ্যাকশন ইভেন্টগুলোর লজিক পরিচালনা করে। এই কোডল্যাবে শুধুমাত্র মেসেজ ইভেন্ট টাইপটি ইমপ্লিমেন্ট করা হয়েছে, কিন্তু বাস্তব অ্যাপ্লিকেশনগুলোতে সাধারণত কার্ড ক্লিক, স্ল্যাশ কমান্ড এবং ডায়ালগের মতো অন্যান্য টাইপও অন্তর্ভুক্ত থাকে।
প্রম্পট অ্যাপ
এই অ্যাপটি জেমিনি মডেলের উপর নির্ভর করে সংক্ষিপ্ত ও সহজ ভাষায় উত্তর দিয়ে ব্যবহারকারীদের সাথে তাদের স্বাভাবিক ভাষায় কথোপকথন করে।

অ্যাপ ফরম্যাট করুন
এই অ্যাপটি Prompt app উপর ভিত্তি করে তৈরি করা হয়েছে এবং এতে Google Chat মেসেজের নির্দিষ্ট টেক্সট ফরম্যাটের সাথে সামঞ্জস্যপূর্ণ রিচ টেক্সট উত্তরের সুবিধা যোগ করা হয়েছে।

গ্রাউন্ড অ্যাপ
এই অ্যাপটি Format app উপর ভিত্তি করে তৈরি, এতে গুগল সার্চ টুলের জন্য সমর্থন যোগ করা হয়েছে এবং উত্তর বার্তায় কার্ডসহ উৎস দেখানো হয়।

এমসিপি অ্যাপ
এই অ্যাপটি Format app উপর ভিত্তি করে তৈরি করা হয়েছে এবং এতে Google Workspace Developer Assist Model Context Protocol (MCP)- এর জন্য সমর্থন যোগ করা হয়েছে।

মাল্টি-টার্ন অ্যাপ
এই অ্যাপটি Format app উপর ভিত্তি করে তৈরি, এবং এতে গুগল ক্লাউড ফায়ারস্টোর ডেটাবেসের মাধ্যমে কথোপকথনমূলক মেমরির সমর্থন যোগ করা হয়েছে।

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

স্ট্রিম অ্যাপ
এই অ্যাপটি ব্যবহারকারীদের দেওয়া থিমের উপর ভিত্তি করে ছোট গল্প তৈরি করতে একটি জেমিনি মডেল ব্যবহার করে। অগ্রগতির সাথে সাথে মেসেজে ফলাফল এবং স্ট্যাটাস পাঠানোর জন্য গুগল চ্যাট এপিআই ব্যবহার করা হয়।

মাল্টিমোডাল অ্যাপ
এই অ্যাপটি ব্যবহারকারীদের লিখিত নির্দেশনার ওপর ভিত্তি করে ছবি সম্পাদনা করতে একটি জেমিনি মডেল ব্যবহার করে। ছবিগুলোকে মেসেজ অ্যাটাচমেন্ট হিসেবে ডাউনলোড ও আপলোড করতে গুগল চ্যাট এপিআই ব্যবহার করা হয়।

আপনি যা শিখবেন
- কৃত্রিম বুদ্ধিমত্তার মৌলিক ধারণাগুলো গুগল চ্যাট অ্যাপ এবং সেগুলো প্রয়োগের ক্ষেত্রে প্রাসঙ্গিক।
- Google Gen AI SDK ব্যবহার করে Vertex AI অ্যাক্সেস করতে।
- গুগল ওয়ার্কস্পেস এপিআই ব্যবহার করে চমৎকার ও শক্তিশালী ফিচার তৈরি করা।
- ক্লাউড রান ব্যবহার করে পরিমাপযোগ্য গুগল চ্যাট অ্যাপ তৈরি করা।
আপনার যা প্রয়োজন হবে
- Node.js ব্যবহার করে একটি HTTP গুগল চ্যাট অ্যাপ তৈরির কুইকস্টার্টটি সম্পন্ন হলো। এই কোডল্যাবটি চূড়ান্ত গুগল ক্লাউড প্রজেক্ট, গুগল চ্যাট অ্যাপ এবং গুগল ক্লাউড রান ফাংশনের উপর ভিত্তি করে তৈরি।
২. প্রস্তুত হন
রিসোর্স শুরু করুন এবং অ্যাক্সেস করুন
এই বিভাগে, আপনি আপনার পছন্দের ওয়েব ব্রাউজার থেকে নিম্নলিখিত রিসোর্সগুলো অ্যাক্সেস ও কনফিগার করতে পারবেন।
গুগল চ্যাট এপিআই কনফিগারেশন
একটি নতুন ট্যাবে গুগল ক্লাউড কনসোল খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- গুগল ক্লাউড সার্চ ফিল্ডে 'Google Chat API' লিখে সার্চ করুন, তারপর Google Chat API-তে ক্লিক করুন, Manage-এ ক্লিক করুন এবং Configuration-এ ক্লিক করুন।
- অ্যাপের নাম ও বিবরণ
Gen AI Appহিসেবে সেট করুন। - সংরক্ষণ করুন- এ ক্লিক করুন।

গুগল চ্যাট স্পেস
একটি নতুন ট্যাবে গুগল চ্যাট খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
- যদি আগে থেকে করা না থাকে, তাহলে চ্যাট অ্যাপ দিয়ে একটি সরাসরি বার্তা পাঠানোর জায়গা খুলুন।
-
Helloটাইপ করেenterচাপুন, চ্যাট অ্যাপটি আপনার নাম এবং অ্যাভাটার ছবি দিয়ে উত্তর দেবে।

গুগল ক্লাউড রান ফাংশন পরিষেবা
একটি নতুন ট্যাবে গুগল ক্লাউড কনসোল খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- মেনু ☰ > ক্লাউড রান > সার্ভিসেস-এ ক্লিক করুন।
- পরিষেবাগুলির তালিকায়, addonchatapp-এ ক্লিক করুন, তারপর Source ট্যাবটি খুলুন।

সোর্স কোড এবং রিসোর্স স্থানীয়ভাবে ডাউনলোড করুন
- এই গিটহাব রিপোজিটরিটি ডাউনলোড করুন।
- আপনার পছন্দের স্থানীয় উন্নয়ন পরিবেশে,
node/chat/gen-ai-appsডিরেক্টরিটি খুলুন।

৩. প্রম্পট অ্যাপ
এই অ্যাপটি ভার্টেক্স এআই-এর জেমিনিকে ব্যবহারকারীদের সাথে তাদের স্বাভাবিক ভাষায় সংক্ষিপ্ত ও সাধারণ টেক্সট উত্তর ব্যবহার করে কথোপকথন করতে নির্দেশ দেয়। এই বাস্তবায়নটি Node.js-এর জন্য Google Gen AI SDK-এর উপর নির্ভর করে।
ধারণা পর্যালোচনা করুন
স্বাভাবিক ভাষা
দৈনন্দিন যোগাযোগের জন্য মানুষের ব্যবহৃত বা লিখিত যেকোনো ভাষা, যা কৃত্রিম বা কম্পিউটার-ভিত্তিক ভাষার বিপরীত।
ক্লাউড রান ফাংশন
ক্লাউড রান ফাংশনগুলো সার্ভারলেস ব্যাকএন্ড তৈরি, রিয়েল-টাইম ডেটা প্রসেসিং এবং ইন্টেলিজেন্ট অ্যাপ তৈরির জন্য চমৎকার। এখানে কোনো সার্ভার প্রোভিশন, ম্যানেজ, প্যাচ বা আপডেট করার প্রয়োজন হয় না। এগুলো স্বয়ংক্রিয়ভাবে স্কেল করে এবং অত্যন্ত সহজলভ্য ও ফল্ট-টলারেন্ট।
প্রম্পটিং
প্রম্পটিং বলতে একটি জেনারেটিভ এআই মডেলকে কাঙ্ক্ষিত আউটপুট তৈরি করতে পরিচালিত করার জন্য ইনপুট (প্রম্পট) তৈরি করার কৌশলকে বোঝায়। মডেল থেকে নির্দিষ্ট ও প্রাসঙ্গিক প্রতিক্রিয়া পাওয়ার জন্য এতে সাধারণত সতর্কতার সাথে প্রশ্ন তৈরি করা, প্রেক্ষাপট প্রদান করা, নির্দেশনা দেওয়া বা উদাহরণ দেওয়া অন্তর্ভুক্ত থাকে।
ভার্টেক্স এআই
জেনারেটিভ এআই তৈরি ও ব্যবহারের জন্য আপনার প্রয়োজনীয় সবকিছুই ভার্টেক্স এআই প্রদান করে, যার মধ্যে রয়েছে এআই সলিউশন, সার্চ ও কনভারসেশন, ১৩০টিরও বেশি ফাউন্ডেশন মডেল এবং একটি সমন্বিত এআই প্ল্যাটফর্ম।

মিথুন
জেমিনি হলো গুগলের একটি মাল্টিমোডাল এলএলএম, যা ভার্টেক্স এআই-এর মাধ্যমে গ্রহণ করা যায়। এটি মানুষকে তাদের মানবিক সম্ভাবনাকে উন্মোচন করতে সাহায্য করে, যাতে তারা তাদের কল্পনাশক্তি বাড়াতে, কৌতূহল প্রসারিত করতে এবং উৎপাদনশীলতা বৃদ্ধি করতে পারে।
গুগল জেন এআই এসডিকে
গুগল জেন এআই এসডিকে ডেভেলপারদের জন্য জেমিনি দ্বারা চালিত অ্যাপ্লিকেশন তৈরির উদ্দেশ্যে ডিজাইন করা হয়েছে। এটি জেমিনি ডেভেলপার এপিআই এবং ভার্টেক্স এআই উভয়ের সাথেই সামঞ্জস্যপূর্ণ একটি সমন্বিত ইন্টারফেস প্রদান করে। এর সাথে পাইথন , গো , নোড.জেএস এবং জাভা -তে ক্লায়েন্ট লাইব্রেরি রয়েছে।
পর্যালোচনা প্রবাহ

সোর্স কোড পর্যালোচনা করুন
env.js
...
// Replace with your GCP project ID.
projectID: process.env.PROJECT_ID || 'your-google-cloud-project-id',
// Replace with your GCP project location.
location: process.env.LOCATION || 'your-google-cloud-project-location',
// Replace with the Gemini model to use.
model: process.env.MODEL || 'gemini-2.5-flash-lite',
...
index.js
// Import the Google Gen AI SDK.
import { GoogleGenAI } from '@google/genai';
...
// Use Vertex AI.
const genAI = new GoogleGenAI({vertexai: true, project: env.projectID, location: env.location});
http('gen-ai-app', async (req, res) => {
// Send a new Chat message with the generated answer
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: await generateAnswer(req.body.chat.messagePayload.message.text)
}}}}});
});
async function generateAnswer(message) {
// The prompt is made of the user's message and specific instructions for the model.
const prompt = 'In a consice and with plain text only (no formatting), '
+ 'answer the following message in the same language: ' + message;
const aiResponse = await genAI.models.generateContent({model: env.model, contents: prompt});
return aiResponse.candidates[0].content.parts[0].text;
};
...
প্যাকেজ.json
...
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"@google-cloud/functions-framework": "^4.0.0",
"@google/genai": "1.15.0"
},
...
ভার্টেক্স এআই এপিআই সক্রিয় করুন
- Google Cloud কনসোলে Vertex AI API সক্রিয় করুন:
- মেনু ☰ > এপিআই ও পরিষেবা > সক্রিয় এপিআই ও পরিষেবা- তে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে Vertex AI API তালিকায় রয়েছে।
Google Cloud Run Node.js ফাংশন আপডেট করুন
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে, বর্তমান ডিরেক্টরি পরিবর্তন করে
node/chat/gen-ai-apps/1-promptএ যান। এতে সম্পূর্ণ সোর্স কোড এবং রিসোর্স রয়েছে। - একটি এডিটরে
env.jsখুলুন এবং নিম্নলিখিত বিষয়গুলো সেট করুন: - প্রজেক্ট আইডি : আপনার গুগল ক্লাউড প্রজেক্টের আইডি। এটি গুগল ক্লাউড কনসোলের স্বাগত পৃষ্ঠা থেকে পাওয়া যাবে।
- অবস্থান : আপনার গুগল ক্লাউড রান ফাংশন সার্ভিসের অঞ্চল। এটি গুগল ক্লাউড রান ফাংশন সার্ভিসের বিস্তারিত পৃষ্ঠা থেকে পাওয়া যাবে।
- মডেল : যে মডেলটি ব্যবহার করতে হবে। আপনি Vertex AI ডকুমেন্টেশন থেকে সমস্ত উপলব্ধ মডেল খুঁজে নিতে পারেন। দ্রুত এবং সাশ্রয়ী এক্সিকিউশনের জন্য ডিফল্টরূপে Flash মডেলটি সেট করা থাকে।

- Google Cloud Run ফাংশন পরিষেবা বিবরণ পৃষ্ঠার সোর্স ট্যাবে যান।
- উৎস সম্পাদনা করুন- এ ক্লিক করুন।
- ফাংশনের এন্ট্রি পয়েন্ট
gen-ai-appএ সেট করুন। - অনুপস্থিত সোর্স ফাইলটি তৈরি করতে ➕-এ ক্লিক করুন,
env.jsটাইপ করুন এবং ✔️-এ ক্লিক করুন। - আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের ফাইলগুলো দিয়ে
index.js,env.jsএবংpackage.jsonফাইলগুলোর সম্পূর্ণ বিষয়বস্তু প্রতিস্থাপন করুন। - সংরক্ষণ করুন এবং পুনরায় স্থাপন করুন ।
- সংশোধন স্থাপন সফলভাবে সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।

চেষ্টা করে দেখুন
- গুগল চ্যাটের চ্যাট অ্যাপের ডিরেক্ট মেসেজ অংশে,
Hello, how are you?টাইপ করুন এবংenterচাপুন। অ্যাপটি প্রম্পটে দেওয়া আমাদের নির্দেশনা অনুযায়ী সাধারণ টেক্সটে সংক্ষিপ্ত উত্তর দেবে।

- গুগল চ্যাটের চ্যাট অ্যাপে সরাসরি বার্তা পাঠানোর জায়গায়,
Bonjour comment allez-vous?টাইপ করুন এবংenterচাপুন। অ্যাপটি প্রম্পটে দেওয়া আমাদের নির্দেশনা অনুযায়ী ফরাসি ভাষায় উত্তর দেবে।

৪. অ্যাপ ফরম্যাট করুন
এই অ্যাপটি Prompt app উপর ভিত্তি করে তৈরি এবং এতে Google Chat টেক্সট মেসেজ ফরম্যাটের সাথে সামঞ্জস্যপূর্ণ রিচ টেক্সট উত্তরের সুবিধা যোগ করা হয়েছে। মডেলটি যে বিভিন্ন বিকল্পগুলো ব্যবহার করতে পারে, সেগুলোর বিশদ বিবরণ দিয়ে প্রম্পটের নির্দেশাবলী আপডেট করা হয়েছে।
ধারণা পর্যালোচনা করুন
গুগল চ্যাট টেক্সট মেসেজ
সরাসরি গুগল চ্যাট ইন্টারফেসের মধ্যেই আরও স্পষ্ট ও ভাবপূর্ণ বার্তা পাঠানোর জন্য গুগল চ্যাট টেক্সট মেসেজে বিভিন্ন ফরম্যাটিং অপশন রয়েছে। বোল্ড, ইটালিক, স্ট্রাইকথ্রু প্রয়োগ করা, হাইপারলিঙ্ক তৈরি করা ইত্যাদির জন্য এগুলি নির্দিষ্ট মার্কডাউন নিয়মের উপর ভিত্তি করে তৈরি।
পর্যালোচনা প্রবাহ

সোর্স কোড পর্যালোচনা করুন
index.js
...
async function generateAnswer(message) {
// Specify formatting options that are compatible with Google Chat messages
// https://developers.google.com/workspace/chat/format-messages#format-texts
const prompt = `Use simple text for concise answers. The only formatting options you can use is to
(1) surround some text with a single star for bold such as *text* for strong emphasis
(2) surround some text with a single underscore for italic such as _text_ for gentle emphasis
(3) surround some text with a single tild for strikethrough such as ~text~ for removal
(4) use a less than before followed by a URL followed by a pipe followed by a link text followed
by a more than for a hyperlink such as <https://example.com|link text> for resource referencing
(5) use a backslash followed by the letter n for a new line such as \n for readibility
(6) surround some text with a single backquote such as \`text\` for quoting code
(7) surround an entire paragraph with three backquotes in dedicated lines such as
\`\`\`\nparagraph\n\`\`\` for quoting code
(8) prepend lines with list items with a single star or hyphen followed by a single space
such as * list item or - list item for bulleting ;
DO NOT USE ANY OTHER FORMATTING OTHER THAN THOSE.
Answer the following message in the same language: ${message}`;
...
};
...
Google Cloud Run Node.js ফাংশন আপডেট করুন
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে, বর্তমান ডিরেক্টরি পরিবর্তন করে
node/chat/gen-ai-apps/2-formatএ যান। এতে সম্পূর্ণ সোর্স কোড এবং রিসোর্স রয়েছে। - Google Cloud Run ফাংশন পরিষেবা বিবরণ পৃষ্ঠার সোর্স ট্যাবে যান।
- উৎস সম্পাদনা করুন- এ ক্লিক করুন।
-
index.jsফাইলের সম্পূর্ণ বিষয়বস্তু আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের বিষয়বস্তু দিয়ে প্রতিস্থাপন করুন। - সংরক্ষণ করুন এবং পুনরায় স্থাপন করুন ।
- সংশোধন স্থাপন সফলভাবে সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।

চেষ্টা করে দেখুন
- গুগল চ্যাটের চ্যাট অ্যাপে সরাসরি বার্তা পাঠানোর জায়গায়,
Showcase all formatting options you have with one paragraph eachএবংenterচাপুন। অ্যাপটি আমাদের দেওয়া নির্দেশনার উপর ভিত্তি করে ফরম্যাটিংয়ের নমুনা দেখিয়ে উত্তর দেবে।

- গুগল চ্যাটের চ্যাট অ্যাপে সরাসরি মেসেজ পাঠানোর জায়গায়,
What are Google Chat apps? What's great about them?টাইপ করুন এবংenterচাপুন। প্রয়োজন অনুযায়ী অ্যাপটি ফরম্যাটিং সহ উত্তর দেবে।

৫. গ্রাউন্ড অ্যাপ
এই অ্যাপটি Format app উপর ভিত্তি করে তৈরি, যেখানে গ্রাউন্ডিং এবং উৎস ফেরত দেওয়ার সুবিধা যোগ করা হয়েছে। এটি গুগল সার্চ টুলটি চালায় এবং উত্তরের লিঙ্কসহ কার্ড সংযুক্ত করে।
ধারণা পর্যালোচনা করুন
গ্রাউন্ডিং
গ্রাউন্ডিং হলো মডেলকে তথ্যের উৎসের সাথে সংযুক্ত করার একটি কৌশল। বাস্তব জগতের তথ্যের সাহায্যে উৎপাদিত বিষয়বস্তুর নির্ভুলতা ও প্রাসঙ্গিকতা উন্নত করার জন্য এটি প্রায়শই ব্যবহারিক প্রয়োগে ব্যবহৃত হয়, যার ফলে মডেলটি বিভ্রম বা তথ্যগতভাবে ভুল তথ্য প্রদান করা থেকে বিরত থাকে।
গুগল সার্চ টুল
গুগল সার্চ টুল মডেলদের রিয়েল-টাইম তথ্যের জন্য ওয়েবে অনুসন্ধান করার সুযোগ দিয়ে ভিত্তি মজবুত করে, যা তাদের প্রতিক্রিয়াগুলোকে নির্ভুল ও হালনাগাদ রাখে।
গুগল ওয়ার্কস্পেস কার্ড ফ্রেমওয়ার্ক
গুগল ওয়ার্কস্পেসের কার্ড ফ্রেমওয়ার্ক ডেভেলপারদের সমৃদ্ধ ও ইন্টারেক্টিভ ইউজার ইন্টারফেস তৈরি করতে সক্ষম করে। এর মাধ্যমে সুসংগঠিত ও দৃষ্টিনন্দন কার্ড তৈরি করা যায়, যেগুলোতে টেক্সট, ছবি, বাটন এবং অন্যান্য উইজেট অন্তর্ভুক্ত করা যেতে পারে। এই কার্ডগুলো কাঠামোগত তথ্য প্রদান করে এবং সরাসরি কথোপকথনের মধ্যেই দ্রুত পদক্ষেপ নেওয়ার সুযোগ দিয়ে ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে।
পর্যালোচনা প্রবাহ

সোর্স কোড পর্যালোচনা করুন
index.js
...
const aiResponse = await genAI.models.generateContent({
model: env.model,
contents: prompt,
// Google Search tool is enabled
config: { tools: [{ googleSearch: {}}]}
});
let groundingCardsV2 = undefined;
const grounding = aiResponse.candidates[0].groundingMetadata;
// Go through the grounding metadata if any
if (grounding && grounding.groundingChunks && grounding.groundingChunks.length > 0) {
let linkButtons = [];
grounding.groundingChunks.forEach(groundingChunk => {
if (groundingChunk.web) {
// Create one link button per web URL returned
linkButtons.push({
text: groundingChunk.web.domain,
onClick: { openLink: { url: groundingChunk.web.uri}}
});
}
});
// Create a card with link buttons
groundingCardsV2 = [{
cardId: "sourcesCard",
card: { sections: [{
header: "Sources",
widgets: [{ buttonList: { buttons: linkButtons}}]
}]}
}];
}
// Send a Chat message with the generated answer
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: aiResponse.candidates[0].content.parts[0].text,
// The sources are referenced in the card
cardsV2: groundingCardsV2
}}}}});
...
Google Cloud Run Node.js ফাংশন আপডেট করুন
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে, বর্তমান ডিরেক্টরি পরিবর্তন করে
node/chat/gen-ai-apps/3-groundএ যান। এতে সম্পূর্ণ সোর্স কোড এবং রিসোর্স রয়েছে। - Google Cloud Run ফাংশন পরিষেবা বিবরণ পৃষ্ঠার সোর্স ট্যাবে যান।
- উৎস সম্পাদনা করুন- এ ক্লিক করুন।
-
index.jsফাইলের সম্পূর্ণ বিষয়বস্তু আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের বিষয়বস্তু দিয়ে প্রতিস্থাপন করুন। - সংরক্ষণ করুন এবং পুনরায় স্থাপন করুন ।
- সংশোধন স্থাপন সফলভাবে সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।

চেষ্টা করে দেখুন
গুগল চ্যাটের চ্যাট অ্যাপে সরাসরি মেসেজ পাঠানোর জায়গায়, What's the world population? টাইপ করে enter চাপুন। অ্যাপটি একটি কার্ডে উৎসের লিঙ্ক সংযুক্ত করে উত্তর দেবে।

৬. এমসিপি অ্যাপ
এই অ্যাপটি Format app উপর ভিত্তি করে তৈরি, এবং এতে দূরবর্তীভাবে হোস্ট করা একটি মডেল কনটেক্সট প্রোটোকল (MCP) সার্ভার দ্বারা প্রদত্ত টুলগুলির জন্য সমর্থন যোগ করা হয়েছে। এটি গুগল ওয়ার্কস্পেস ডেভেলপার অ্যাসিস্ট MCP-এর সাথে সংযুক্ত হয়, যা গুগল ওয়ার্কস্পেস ডেভেলপারস ডকুমেন্টেশন অ্যাক্সেস এবং অনুসন্ধান করার জন্য টুল সরবরাহ করে।
ধারণা পর্যালোচনা করুন
মডেল প্রসঙ্গ প্রোটোকল (MCP)
মডেল কনটেক্সট প্রোটোকল হলো একটি ওপেন-সোর্স ফ্রেমওয়ার্ক যা মডেলগুলোকে একটি প্রমিত পদ্ধতিতে বাহ্যিক পরিষেবাগুলোর সাথে সংযুক্ত করে। মডেলগুলো প্রোগ্রামিংয়ের মাধ্যমে বিভিন্ন টুল আবিষ্কার, বুঝতে এবং সেগুলোর সাথে মিথস্ক্রিয়া করতে পারে, যার ফলে তাদের সক্ষমতা বৃদ্ধি পায়, বাস্তব জগতের কাজ সম্পাদন করা যায় এবং হালনাগাদ তথ্য পাওয়া যায়।
এমসিপি টাইপস্ক্রিপ্ট এসডিকে
টাইপস্ক্রিপ্ট এসডিকে সম্পূর্ণ এমসিপি স্পেসিফিকেশন বাস্তবায়ন করে, যা যেকোনো এমসিপি সার্ভারের সাথে সংযোগ স্থাপনকারী এমসিপি ক্লায়েন্ট তৈরি করাকে সহজ করে তোলে। এটি এমন এমসিপি সার্ভার তৈরির সুযোগও দেয়, যা রিসোর্স, প্রম্পট এবং টুলস-এ অ্যাক্সেস প্রদান করে।
পর্যালোচনা প্রবাহ

সোর্স কোড পর্যালোচনা করুন
index.js
// Import the MCP TypeScript SDK.
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
...
// Create and connect the MCP client from the URL.
const mcpServerUrl = new URL("https://workspace-developer.goog/mcp");
const client = new Client({ name: "gen-ai-app-mcp", version: "1.0.0" });
// Try Streamable HTTP first (new) and SSE (old) as fallback for transport
try {
await client.connect(new StreamableHTTPClientTransport(mcpServerUrl));
} catch (error) {
await client.connect(new SSEClientTransport(mcpServerUrl));
}
http('gen-ai-app', async (req, res) => {
...
const aiResponse = await genAI.models.generateContent({
model: env.model,
contents: prompt,
// MCP tools are enabled
config: { tools: [mcpToTool(client)]}
});
...
}
...
প্যাকেজ.json
...
"dependencies": {
...
"@modelcontextprotocol/sdk": "^1.18.1"
},
...
Google Cloud Run Node.js ফাংশন আপডেট করুন
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে, বর্তমান ডিরেক্টরি পরিবর্তন করে
node/chat/gen-ai-apps/4-mcpএ যান। এতে সম্পূর্ণ সোর্স কোড এবং রিসোর্স রয়েছে। - Google Cloud Run ফাংশন পরিষেবা বিবরণ পৃষ্ঠার সোর্স ট্যাবে যান।
- উৎস সম্পাদনা করুন- এ ক্লিক করুন।
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের ডেটা দিয়ে
index.jsএবংpackage.jsonফাইল দুটির সম্পূর্ণ বিষয়বস্তু প্রতিস্থাপন করুন। - সংরক্ষণ করুন এবং পুনরায় স্থাপন করুন ।
- সংশোধন স্থাপন সফলভাবে সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।

চেষ্টা করে দেখুন
- গুগল চ্যাটের চ্যাট অ্যাপে ডিরেক্ট মেসেজ স্পেসে,
What can you do for me?টাইপ করুন এবংenterচাপুন। অ্যাপটি বর্ণনা করবে যে এটি কী করতে সক্ষম (MCP tools)।

- গুগল চ্যাটের চ্যাট অ্যাপের ডিরেক্ট মেসেজ স্পেসে,
I would like to get the latest official documentation for the Google Sheets API append valuesকরেenterচাপুন। অ্যাপটি (MCP টুল ব্যবহার করে) অনুরোধ করা ডকুমেন্টেশনটি পাঠিয়ে দেবে।

৭. মাল্টি-টার্ন অ্যাপ
এই অ্যাপটি চ্যাট ইন্টারঅ্যাকশনের ইতিহাস ট্র্যাক করার মাধ্যমে কথোপকথনমূলক স্মৃতির সুবিধা যোগ করে Format app উপর ভিত্তি করে তৈরি করা হয়েছে। এটি আরও স্বাভাবিক, বুদ্ধিমান এবং ব্যক্তিগতকৃত অভিজ্ঞতা প্রদান করে। অ্যাপটি স্টোরেজের জন্য তাদের গুগল ক্লাউড প্রজেক্টের সাথে যুক্ত ডিফল্ট গুগল ক্লাউড ফায়ারস্টোর ডেটাবেস ব্যবহার করে।
ধারণা পর্যালোচনা করুন
মাল্টি-টার্ন
মাল্টি-টার্ন ধারণাটি বলতে একটি মডেলের একাধিক আদান-প্রদান ও কথোপকথন জুড়ে প্রসঙ্গ এবং ধারাবাহিকতা বজায় রাখার ক্ষমতাকে বোঝায়। জটিল কথোপকথন, অত্যাধুনিক এআই-চালিত কার্যকারিতা এবং স্বাভাবিক ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য এটি একটি অপরিহার্য বৈশিষ্ট্য।
গুগল ক্লাউড ফায়ারস্টোর
গুগল ক্লাউড ফায়ারস্টোর হলো মোবাইল, ওয়েব এবং সার্ভার ডেভেলপমেন্টের জন্য একটি নমনীয় ও পরিবর্ধনযোগ্য NoSQL ক্লাউড ডেটাবেস। এটি ডেটাকে ডকুমেন্ট আকারে কালেকশনে সাজিয়ে সংরক্ষণ করে এবং রিয়েল-টাইম সিনক্রোনাইজেশন ও অফলাইন সাপোর্ট প্রদান করে।
পর্যালোচনা প্রবাহ

সোর্স কোড পর্যালোচনা করুন
index.js
// Import the Google Cloud Firestore client library.
import { Firestore } from '@google-cloud/firestore';
...
// Configure DB
const USERS_PREFIX = 'users/';
const CHATS_COLLECTION = 'chats';
const db = new Firestore();
...
// Create or update data for a given user
async function createOrUpdateChatHistory(userId, data) {
await db.collection(CHATS_COLLECTION).doc(userId.replace(USERS_PREFIX, '')).set(data);
};
// Retrieve data snapshot for a given user
async function getChatHistory(userId) {
return await db.collection(CHATS_COLLECTION).doc(userId.replace(USERS_PREFIX, '')).get();
};
...
...
http('gen-ai-app', async (req, res) => {
// Retrieve the chat history of the user
const chatHistory = await getChatHistory(userId);
const chat = genAI.chats.create({
model: env.model,
// Initiate the model with chat history for context
history: chatHistory.exists ? chatHistory.data().contents : []
});
// If no history, send a first message to the model with instructions on how to behave
if(!chatHistory.exists) {
const preambule = 'The only formatting options you can use is to '
+ ...
+ 'DO NOT USE ANY OTHER FORMATTING OTHER THAN THOSE. '
+ 'Answer in the same language that I use.';
// The answer to this message is ignored
await chat.sendMessage({message: preambule});
}
// Send the user's message to the model to generate the answer
const aiResponse = await chat.sendMessage({message: userMessage});
// Persist the updated chat history of the user
await createOrUpdateChatHistory(userId, {contents: chat.getHistory({curated: true})});
// Send a Chat message with the generated answer
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: aiResponse.candidates[0].content.parts[0].text
}}}}});
});
...
প্যাকেজ.json
...
"dependencies": {
...
"@google-cloud/firestore": "^7.11.5"
},
...
গুগল ক্লাউড ফায়ারস্টোর এপিআই সক্রিয় করুন
- গুগল ক্লাউড কনসোলে , গুগল ক্লাউড ফায়ারস্টোর এপিআই সক্রিয় করুন:
- মেনু ☰ > এপিআই ও পরিষেবা > সক্রিয় এপিআই ও পরিষেবা- তে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে ক্লাউড ফায়ারস্টোর এপিআই তালিকায় রয়েছে।
ক্লাউড ফায়ারস্টোর ডাটাবেস তৈরি করুন
- Google Cloud কনসোলে , মেনু ☰ > Firestore- এ ক্লিক করুন।
- একটি ফায়ারস্টোর ডাটাবেস তৈরি করতে ক্লিক করুন
- ডিফল্ট কনফিগারেশন অপরিবর্তিত রেখে 'Create Database'-এ ক্লিক করুন।
Google Cloud Run Node.js ফাংশন আপডেট করুন
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে, বর্তমান ডিরেক্টরি পরিবর্তন করে
node/chat/gen-ai-apps/5-multi-turn। এতে সম্পূর্ণ সোর্স কোড এবং রিসোর্স রয়েছে। - Google Cloud Run ফাংশন পরিষেবা বিবরণ পৃষ্ঠার সোর্স ট্যাবে যান।
- উৎস সম্পাদনা করুন- এ ক্লিক করুন।
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের ডেটা দিয়ে
index.jsএবংpackage.jsonফাইল দুটির সম্পূর্ণ বিষয়বস্তু প্রতিস্থাপন করুন। - সংরক্ষণ করুন এবং পুনরায় স্থাপন করুন ।
- সংশোধন স্থাপন সফলভাবে সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।

চেষ্টা করে দেখুন
- গুগল চ্যাটের চ্যাট অ্যাপের ডিরেক্ট মেসেজ অংশে,
Can you speak with the English from the 80's for now on?টাইপ করুন এবংenterচাপুন। অ্যাপটি ইতিবাচকভাবে সাড়া দেবে।

- গুগল চ্যাটের চ্যাট অ্যাপে সরাসরি মেসেজ পাঠানোর জায়গায়,
Define what Google Chat apps are in one sentenceটাইপ করেenterচাপুন। অ্যাপটি ৮০-র দশকের ইংরেজিতে উত্তর দিতে থাকবে।

৮. কাস্টম টুল অ্যাপ
এই অ্যাপটি Multi-turn app উপর ভিত্তি করে তৈরি, যেখানে একটি ফাংশন কলিং কাস্টম টুলের জন্য সাপোর্ট যোগ করা হয়েছে। এই টুলটি একটি পাবলিক ক্যালেন্ডার থেকে পরবর্তী ইভেন্ট খুঁজে বের করার জন্য গুগল ওয়ার্কস্পেস ক্যালেন্ডার এপিআই (Google Workspace Calendar API)- এর উপর নির্ভর করে। মডেলটি টুলের ইনপুট গ্রহণ এবং আউটপুট প্রদান সহ ব্যবহারকারীর সমস্ত কার্যকলাপ পরিচালনা করে। তবে, প্রয়োজনীয় এপিআই কলগুলো সম্পাদন করা এবং অনুরোধের ভিত্তিতে মডেলকে ফলাফল সরবরাহ করার দায়িত্ব অ্যাপ্লিকেশনটিরই থাকে। অ্যাপটি একটি গুগল এপিআই কী (Google API Key) ব্যবহার করে, কারণ পাবলিক ক্যালেন্ডারের ডেটা আনার জন্য ব্যবহারকারীর ক্রেডেনশিয়ালের প্রয়োজন হয় না।
ধারণা পর্যালোচনা করুন
ফাংশন কলিং
ফাংশন কলিং একটি মডেলকে শনাক্ত করতে সক্ষম করে যে কখন একজন ব্যবহারকারীর অনুরোধ কোনো বাহ্যিক টুল বা এপিআই দ্বারা পূরণ করা যেতে পারে। এরপর মডেলটি সেই টুলটিকে কল করার জন্য প্রয়োজনীয় প্যারামিটার সরবরাহ করে এবং এর প্রতিক্রিয়ার সাথে বাহ্যিক কার্যকারিতাগুলিকে একীভূত করে।
গুগল ওয়ার্কস্পেস এপিআই
গুগল ওয়ার্কস্পেস এপিআই ডেভেলপারদের তাদের অ্যাপ্লিকেশনগুলোকে বিভিন্ন গুগল ওয়ার্কস্পেস পরিষেবার সাথে একীভূত করতে সক্ষম করে। এই এপিআইগুলো জিমেইল, চ্যাট, ক্যালেন্ডার, ড্রাইভ, ডক্স, শিটস এবং আরও অনেক প্রোডাক্টের কার্যকারিতায় প্রোগ্রাম্যাটিক অ্যাক্সেস প্রদান করে, যা অটোমেশন, ডেটা সিঙ্ক্রোনাইজেশন এবং কাস্টম ওয়ার্কফ্লো তৈরির সুযোগ দেয়।
পর্যালোচনা প্রবাহ

সোর্স কোড পর্যালোচনা করুন
env.js
...
// Replace with your Google API key.
googleApiKey: process.env.GOOGLE_API_KEY || 'your-google-api-key',
...
index.js
// Import parameter type definitions from Google Gen AI SDK.
import { GoogleGenAI, Type } from '@google/genai';
// Import Google APIs that include the Google Calendar API.
import { google } from 'googleapis';
...
// Create a Google Calendar API client using a Google API key.
const calendar = google.calendar({version: 'v3', auth: env.googleApiKey});
...
// Define the tool used for function calling
const getNextPublicCalendarEventTitleFunctionDeclaration = {
name: 'getNextPublicCalendarEventTitle',
parameters: {
type: Type.OBJECT,
description: 'Get the title of the next event of a public calendar.',
properties: {
calendarId: {
type: Type.STRING,
description: 'ID of the public calendar to get the next event title.',
}
},
required: ['calendarId']
}
};
// The function referenced in the tool definition
async function getNextPublicCalendarEventTitle(calendarId) {
// Use Calendar API to retrieve the next event in the given calendar
const response = await calendar.events.list({
calendarId: calendarId,
timeMin: new Date().toISOString(),
maxResults: 1,
singleEvents: true,
orderBy: 'startTime',
});
const events = response.data.items;
if (!events || events.length === 0) {
return null;
}
return `${events[0].summary}`;
};
...
...
http('gen-ai-app', async (req, res) => {
...
// Send the user's message to the model to generate the answer
let aiResponse = await chat.sendMessage({
message: userMessage,
// The tool used for function calling is enabled
config: { tools: [{ functionDeclarations: [getNextPublicCalendarEventTitleFunctionDeclaration]}]}
});
// Handle the function calling turn with the model if any
const functionCall = aiResponse.candidates[0].content.parts[0].functionCall;
if (functionCall) {
let functionResult = null;
switch(functionCall.name) {
case 'getNextPublicCalendarEventTitle':
// Make the function call as per model request
functionResult = await getNextPublicCalendarEventTitle(functionCall.args['calendarId']);
break;
default:
}
// Finish the function calling turn by sending the execution result to the model
aiResponse = await chat.sendMessage({ message: { functionResponse: {
name: functionCall.name,
response: { output: functionResult }
}}});
}
...
// Send a Chat message with the generated answer
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: aiResponse.candidates[0].content.parts[0].text
}}}}});
});
...
প্যাকেজ.json
...
"dependencies": {
...
"googleapis": "^160.0.0"
},
...
ক্যালেন্ডার এপিআই সক্রিয় করুন
- গুগল ক্লাউড কনসোলে গুগল ক্যালেন্ডার এপিআই সক্রিয় করুন:
- মেনু ☰ > এপিআই ও পরিষেবা > সক্রিয় এপিআই ও পরিষেবা- তে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে Google Calendar API তালিকায় রয়েছে।
গুগল এপিআই কী তৈরি করুন
গুগল ক্লাউড কনসোলে , এই ধাপগুলো অনুসরণ করুন:
- মেনু ☰ > এপিআই ও পরিষেবা > পরিচয়পত্র-এ ক্লিক করুন।
- + Create credentials-এ ক্লিক করুন এবং তারপর API key নির্বাচন করুন।
- অপারেশনটি সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।
- নিশ্চিতকরণ ডায়ালগে, 'Your API Key' টেক্সট ফিল্ডটি খুঁজুন এবং 'Copy to clipboard'-এ ক্লিক করুন।
Google Cloud Run Node.js ফাংশন আপডেট করুন
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে, বর্তমান ডিরেক্টরি পরিবর্তন করে
node/chat/gen-ai-apps/6-custom-toolএ যান। এতে সম্পূর্ণ সোর্স কোড এবং রিসোর্স রয়েছে। - Google Cloud Run ফাংশন পরিষেবা বিবরণ পৃষ্ঠার সোর্স ট্যাবে যান।
- উৎস সম্পাদনা করুন- এ ক্লিক করুন।
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের ডেটা দিয়ে
index.jsএবংpackage.jsonফাইল দুটির সম্পূর্ণ বিষয়বস্তু প্রতিস্থাপন করুন। -
env.jsফাইলটি খুলুন এবং নিম্নলিখিত কাজগুলো করুন। - এক্সপোর্ট করা ফিল্ডগুলিতে googleApiKey যোগ করুন
export const env = {
...
googleApiKey: 'your-google-api-key',
};
- পূর্ববর্তী ধাপে কপি করা Google API Key-টি দিয়ে
your-google-api-keyপ্রতিস্থাপন করুন। `Show key`- তে ক্লিক করে Google Cloud ক্রেডেনশিয়াল পেজ থেকে এটি পুনরুদ্ধার করা যাবে।
- সংরক্ষণ করুন এবং পুনরায় স্থাপন করুন ।
- সংশোধন স্থাপন সফলভাবে সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।

চেষ্টা করে দেখুন
- গুগল ক্যালেন্ডারে , এই ধাপগুলো অনুসরণ করুন:
- অন্যান্য ক্যালেন্ডার-এর নিচে, + চিহ্নে ক্লিক করুন, তারপর নতুন ক্যালেন্ডার তৈরি করুন-এ ক্লিক করুন।
-
My Public Calendarনাম সেট করুন - ক্যালেন্ডার তৈরি করতে ক্লিক করুন
- অপারেশনটি সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।
- আমার ক্যালেন্ডারগুলির সেটিংস- এর অধীনে, নতুন তৈরি করা ক্যালেন্ডার ‘আমার পাবলিক ক্যালেন্ডার’ নির্বাচন করুন।
- ইভেন্টের অ্যাক্সেস অনুমতির অধীনে, ‘সর্বজনীনভাবে উপলব্ধ করুন’ নির্বাচন করুন এবং তারপরে সতর্কীকরণ ডায়ালগে ‘ওকে’ ক্লিক করুন।
- ইভেন্টের অ্যাক্সেস অনুমতির অধীনে, 'সর্বজনীনভাবে উপলব্ধ করুন' বিকল্পটির পাশের ড্রপডাউন মেনু থেকে ' ইভেন্টের সমস্ত বিবরণ দেখুন' নির্বাচন করুন।
- Integrate calendar-এর অধীনে, Calendar ID ফিল্ডের মানটি ক্লিপবোর্ডে কপি করুন।
- সেটিংস থেকে বের হতে উপরের বাম কোণায় থাকা বাম তীরচিহ্নটিতে ক্লিক করুন।
- আগামীকালের জন্য একটি নতুন ইভেন্ট তৈরি করতে ক্যালেন্ডারে ক্লিক করুন,
Important meetingটাইপ করুন, ড্রপডাউন থেকে ‘আমার পাবলিক ক্যালেন্ডার’ নির্বাচন করুন, তারপর ‘সংরক্ষণ করুন’ এ ক্লিক করুন। - গুগল চ্যাটের চ্যাট অ্যাপে ডিরেক্ট মেসেজ স্পেসে,
When is the next meeting?টাইপ করেenterচাপুন। অ্যাপটি একটি সুনির্দিষ্ট তথ্য চাইবে, কারণ কোন ক্যালেন্ডারের কথা বলা হচ্ছে তা স্পষ্ট নয়।

- গুগল চ্যাটের চ্যাট অ্যাপের ডিরেক্ট মেসেজ স্পেসে, আগে ক্লিপবোর্ডে কপি করা ক্যালেন্ডার আইডিটি পেস্ট করে
enterচাপুন। অ্যাপটি পূর্বে তৈরি করা ইভেন্টটির বিস্তারিত তথ্যসহ উত্তর দেবে।

৯. স্ট্রিম অ্যাপ
এই অ্যাপটি ব্যবহারকারীদের দেওয়া থিমের উপর ভিত্তি করে ২ মিনিটের স্টোরি তৈরি করতে একটি জেমিনি মডেল ব্যবহার করে। যেহেতু সম্পূর্ণ উত্তর তৈরি করতে সময় লাগে, তাই অ্যাপটি স্ট্রিমিং মোডে মডেলটিতে কল করে এবং অগ্রগতির সাথে সাথে মেসেজে কন্টেন্ট ও স্ট্যাটাস পাঠাতে গুগল চ্যাট এপিআই ব্যবহার করে।
ধারণা পর্যালোচনা করুন
গুগল চ্যাট এপিআই
গুগল চ্যাট এপিআই ডেভেলপারদের প্রোগ্রাম্যাটিকভাবে গুগল চ্যাটের সাথে যোগাযোগ করার সুযোগ দেয়, যার মাধ্যমে তারা বার্তা পাঠাতে, স্পেস তৈরি করতে, সদস্য পরিচালনা করতে এবং আরও অনেক কিছু করতে পারে, এবং কাস্টম ইন্টিগ্রেশন ও বট তৈরি করতে পারে।
স্ট্রিমিং
স্ট্রিমিং বলতে সম্পূর্ণ প্রতিক্রিয়া তৈরি হওয়ার জন্য অপেক্ষা না করে অবিচ্ছিন্নভাবে ডেটা গ্রহণ করার প্রক্রিয়াকে বোঝায়। এআই মডেল কলের ক্ষেত্রে, স্ট্রিমিং অ্যাপ্লিকেশনগুলোকে আংশিক ফলাফল উপলব্ধ হওয়ার সাথে সাথেই ব্যবহারকারীদের কাছে প্রদর্শন করার সুযোগ দেয়, যা বিশেষ করে দীর্ঘ সময় ধরে চলা জেনারেশন টাস্কের জন্য অনুভূত পারফরম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। এটি জেনারেটিভ এআই মডেলগুলোর জন্য বিশেষভাবে প্রাসঙ্গিক, যেগুলোর একটি সম্পূর্ণ আউটপুট তৈরি করতে উল্লেখযোগ্য পরিমাণ সময় লাগতে পারে।
পর্যালোচনা প্রবাহ

সোর্স কোড পর্যালোচনা করুন
index.js
// Import Google Auth library used to create Google Chat API client
import { GoogleAuth } from 'google-auth-library';
...
http('gen-ai-app', async (req, res) => {
// Use app authentication.
// Application Default Credentials (ADC) will use the Cloud Run function's
// default service account, we just need to specify the Chat API app auth scopes.
const auth = new GoogleAuth({
// Chat API app authentication scopes
scopes: ['https://www.googleapis.com/auth/chat.bot']
});
// Create Chat service client with application credentials
const chatClient = google.chat({
version: 'v1',
auth: await auth.getClient()
});
// Send a server streaming request to generate the answer
const aiResponse = await genAI.models.generateContentStream({
model: env.model,
contents: `Generate a story about a ${userMessage}. `
+ `It should take 2 minutes to read it out loud.`
});
// Send a first Chat message to summarize what will be done
await chatClient.spaces.messages.create({
parent: spaceName,
requestBody: { text: `Sure, let me work on generating a short story `
+ `about a ${userMessage} like you requested.`}
});
// Go through the response chunks received from the stream
let messageName = undefined;
let answer = "";
for await (const chunk of aiResponse) {
const text = chunk.text;
if (text) {
// Update the answer by concatenating the response chunks
answer += text;
// The Chat message request body is the same for message creation and update
const responseBody = {
text: answer,
accessoryWidgets: [getStatusAccessoryWidget('Generating story...', 'progress_activity')]
}
if (!messageName) {
// Create a Chat message dedicated to the generated content
const messageResponse = await chatClient.spaces.messages.create({
parent: spaceName,
requestBody: responseBody
});
messageName = messageResponse.data.name;
} else {
// Update the Chat message dedicated to the generated content
await chatClient.spaces.messages.patch({
name: messageName,
updateMask: 'text,accessory_widgets',
requestBody: responseBody
});
}
}
}
// Update the accessory widget with final progress status
await chatClient.spaces.messages.patch({
name: messageName,
updateMask: 'accessory_widgets',
requestBody: {
accessoryWidgets: [getStatusAccessoryWidget('Story is fully generated', 'check')]
}
});
// Send a last Chat message to confirm it's done
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'All done, I hope you like it!'
}}}}});
});
// Create an accessory widget with progress status
function getStatusAccessoryWidget(text, icon) {
return { buttonList: { buttons: [{
text: text,
icon: { materialIcon: { name: icon}},
// This is a workaround to have the icon shown, it's not clickable
onClick: { openLink: { url: "https://google.com"}},
disabled: true
}]}};
}
প্যাকেজ.json
...
"dependencies": {
...
"google-auth-library": "^10.3.0"
},
...
Google Cloud Run Node.js ফাংশন আপডেট করুন
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে, বর্তমান ডিরেক্টরি পরিবর্তন করে
node/chat/gen-ai-apps/7-streamএ যান। এতে সম্পূর্ণ সোর্স কোড এবং রিসোর্স রয়েছে। - Google Cloud Run ফাংশন পরিষেবা বিবরণ পৃষ্ঠার সোর্স ট্যাবে যান।
- উৎস সম্পাদনা করুন- এ ক্লিক করুন।
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের ডেটা দিয়ে
index.jsএবংpackage.jsonফাইল দুটির সম্পূর্ণ বিষয়বস্তু প্রতিস্থাপন করুন। - সংরক্ষণ করুন এবং পুনরায় স্থাপন করুন ।
- সংশোধন স্থাপন সফলভাবে সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।

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


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

সোর্স কোড পর্যালোচনা করুন
env.js
...
// Replace with the Gemini model to use.
model: process.env.MODEL || 'gemini-2.0-flash-preview-image-generation',
...
index.js
...
// Import byte stream management libraries.
import { Buffer } from 'buffer';
import { Readable } from 'stream';
...
// Download a Google Chat attachment as base 64 string.
async function downloadFile(appChatClient, attachmentName) {
const response = await appChatClient.media.download({
resourceName: attachmentName,
alt: 'media'
}, {
responseType: 'stream'
});
const chunks = [];
return new Promise((resolve) => {
response.data.on('data', (chunk) => {
chunks.push(chunk);
});
response.data.on('end', () => {
const fileBuffer = Buffer.concat(chunks);
const base64String = fileBuffer.toString('base64');
resolve(base64String);
});
});
}
// Upload a base 64 string as Google Chat attachment of a space.
async function uploadFile(useChatClient, spaceName, data) {
const filename = 'generated_image.png';
return await userChatClient.media.upload({
parent: spaceName,
requestBody: { filename: filename },
media: {
mimeType: 'image/png',
body: Readable.from(Buffer.from(data, 'base64'))
}
});
}
...
...
http('gen-ai-app', async (req, res) => {
const userEmail = req.body.chat.user.email;
const spaceName = req.body.chat.messagePayload.space.name;
const userMessage = req.body.chat.messagePayload.message.text;
const attachmentName = req.body.chat.messagePayload.message.attachment[0].attachmentDataRef.resourceName;
const attachmentContentType = req.body.chat.messagePayload.message.attachment[0].contentType;
// Set up app authentication used to download the attachment input
// Application Default Credentials (ADC) will use the Cloud Run function's
// default service account.
const appAuth = new GoogleAuth({
// Specify the Chat API app authentication scopes
scopes: ['https://www.googleapis.com/auth/chat.bot']
});
// Create Chat service client with application credentials
const appChatClient = google.chat({
version: 'v1',
auth: await appAuth.getClient()
});
// Send a request to generate the answer with both text and image contents
const aiResponse = await genAI.models.generateContent({
model: env.model,
contents: [{
role: 'USER',
parts: [
// The text content of the message
{ text: userMessage },
// The attachment of the message is downloaded and added inline
{ inlineData: {
data: await downloadFile(appChatClient, attachmentName),
mimeType: attachmentContentType
}}
]
}],
config: { responseModalities: ['TEXT', 'IMAGE']}
});
// Set up user impersonation authentication used to upload the attachment output
// and send the response.
const impersonatedUserAuth = new GoogleAuth({
// Specify the Chat API user authentication scopes
scopes: ['https://www.googleapis.com/auth/chat.messages'],
keyFile: './credentials.json',
clientOptions: {
// Impersonate the user who sent the original message
subject: userEmail
}
});
// Create Chat service client with impersonated user credentials
const userChatClient = google.chat({
version: 'v1',
auth: await impersonatedUserAuth.getClient()
});
let responseText = undefined;
let responseAttachment = undefined;
// Go through the response parts received
for (const part of aiResponse.candidates[0].content.parts) {
if (part.inlineData) {
// The resulting image is retrieved inline and uploaded
const mediaResponse = await uploadFile(userChatClient, spaceName, part.inlineData.data);
responseAttachment = mediaResponse.data;
} else {
responseText = part.text;
}
}
// Create a Chat message dedicated to the generated content
await userChatClient.spaces.messages.create({
parent: spaceName,
requestBody: {
text: responseText ? responseText : 'Here it is!',
// The uploaded image is referenced as attachment
attachment: responseAttachment ? [responseAttachment] : undefined
}
});
// Send a last Chat message to confirm it's done
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Done, feel free to let me know if you need anything else!'
}}}}});
});
...
সার্ভিস অ্যাকাউন্ট কনফিগার করুন এবং প্রাইভেট কী এক্সপোর্ট করুন
- ব্যবহারকারীদের জন্য গুগল চ্যাট বার্তা পরিচালনা করতে ক্লাউড রান ডিফল্ট পরিষেবা অ্যাকাউন্টকে দায়িত্ব অর্পণ করুন। https://www.googleapis.com/auth/chat.messages স্কোপের নির্দেশাবলী অনুসরণ করুন। ক্লাউড রান ডিফল্ট পরিষেবা অ্যাকাউন্টের ক্লায়েন্ট আইডি পুনরুদ্ধার করতে, এই ধাপগুলি অনুসরণ করুন:
- মেনু ☰ > আইএএম ও অ্যাডমিন > সার্ভিস অ্যাকাউন্টস-এ ক্লিক করুন
- ডিফল্ট কম্পিউট সার্ভিস অ্যাকাউন্ট নামের সার্ভিস অ্যাকাউন্টটিতে ক্লিক করুন।
- উন্নত সেটিংস বিভাগটি প্রসারিত করুন
- ক্লায়েন্ট আইডি ক্লিপবোর্ডে কপি করুন।
- ক্লাউড রান ডিফল্ট সার্ভিস অ্যাকাউন্টের জন্য একটি নতুন প্রাইভেট কী তৈরি ও ডাউনলোড করুন।
- মেনু ☰ > আইএএম ও অ্যাডমিন > সার্ভিস অ্যাকাউন্টস-এ ক্লিক করুন
- ডিফল্ট কম্পিউট সার্ভিস অ্যাকাউন্ট নামের সার্ভিস অ্যাকাউন্টটিতে ক্লিক করুন।
- Keys ট্যাবটি নির্বাচন করুন, Add key-তে ক্লিক করুন, তারপর Create new key-তে ক্লিক করুন ।
- JSON নির্বাচন করুন, তারপর Create-এ ক্লিক করুন।
- আপনার নতুন পাবলিক/প্রাইভেট কী পেয়ারটি তৈরি হয়ে আপনার মেশিনে একটি নতুন ফাইল হিসেবে ডাউনলোড হবে। ডাউনলোড করা JSON ফাইলটি সংরক্ষণ করুন এবং এর বিষয়বস্তু ক্লিপবোর্ডে কপি করুন। এই ফাইলটিই এই কী-টির একমাত্র কপি। আপনার কী নিরাপদে সংরক্ষণ করার পদ্ধতি সম্পর্কে জানতে, ‘সার্ভিস অ্যাকাউন্ট কী ব্যবস্থাপনা’ দেখুন।
Google Cloud Run Node.js ফাংশন আপডেট করুন
- আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টে, বর্তমান ডিরেক্টরি পরিবর্তন করে
node/chat/gen-ai-apps/8-multimodalএ যান। এতে সম্পূর্ণ সোর্স কোড এবং রিসোর্স রয়েছে। - Google Cloud Run ফাংশন পরিষেবা বিবরণ পৃষ্ঠার সোর্স ট্যাবে যান।
- উৎস সম্পাদনা করুন- এ ক্লিক করুন।
- অনুপস্থিত রিসোর্স ফাইলটি তৈরি করতে ➕-এ ক্লিক করুন,
credentials.jsonটাইপ করুন এবং ✔️-এ ক্লিক করুন। - পূর্ববর্তী ধাপে ডাউনলোড করা JSON ফাইলের বিষয়বস্তু নতুন তৈরি করা
credentials.jsonফাইলে পেস্ট করুন। -
index.jsফাইলের সম্পূর্ণ বিষয়বস্তু আপনার স্থানীয় ডেভেলপমেন্ট এনভায়রনমেন্টের ফাইল দিয়ে প্রতিস্থাপন করুন। -
env.jsফাইলটি খুলুন এবং model- এর মানgemini-2.0-flash-preview-image-generationএ সেট করুন।
...
model: 'gemini-2.0-flash-preview-image-generation',
...
- সংরক্ষণ করুন এবং পুনরায় স্থাপন করুন ।
- সংশোধন স্থাপন সফলভাবে সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করুন।

চেষ্টা করে দেখুন
গুগল চ্যাটের চ্যাট অ্যাপের ডিরেক্ট মেসেজ স্পেসে, PNG ফরম্যাটে আপনার একটি পোট্রেট ছবি আপলোড করুন, Change the background color to blue টাইপ করুন এবং enter চাপুন। অ্যাপটি নীল ব্যাকগ্রাউন্ডসহ ছবিটির একটি ভার্সন এবং একটি সম্পন্ন হওয়ার নিশ্চিতকরণ বার্তা দিয়ে উত্তর দেবে।

১১. পরিষ্কার করুন
গুগল ক্লাউড প্রজেক্টটি মুছে ফেলুন
এই কোডল্যাবে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে কোনো চার্জ হওয়া এড়াতে, আমরা আপনাকে গুগল ক্লাউড প্রজেক্টটি ডিলিট করে দেওয়ার পরামর্শ দিচ্ছি।
গুগল ক্লাউড কনসোলে , এই ধাপগুলো অনুসরণ করুন:
- মেনু ☰ > আইএএম ও অ্যাডমিন > সেটিংস-এ ক্লিক করুন।
- শাট ডাউন-এ ক্লিক করুন।
- প্রজেক্ট আইডিটি প্রবেশ করান।
- যাইহোক, শাট ডাউন-এ ক্লিক করুন।

১২. অভিনন্দন
অভিনন্দন! আপনি গুগল ওয়ার্কস্পেস অ্যাড-অন হিসেবে গুগল চ্যাট অ্যাপ তৈরি করেছেন, যা এআই-এর মৌলিক ধারণাগুলোকে সমন্বিত করে!
এরপর কী?
এই কোডল্যাবে আমরা শুধুমাত্র ন্যূনতম ব্যবহারের উদাহরণ তুলে ধরেছি, কিন্তু আপনার গুগল চ্যাট অ্যাপে সম্প্রসারণের জন্য অনেক ক্ষেত্র রয়েছে যা আপনি বিবেচনা করতে পারেন, যেমন নিম্নলিখিতগুলো:
- অডিও এবং ভিডিওর মতো অন্যান্য ধরনের মিডিয়াও সমর্থন করুন।
- ভার্টেক্স এআই-এর মতো ডেডিকেটেড প্ল্যাটফর্মে হোস্ট করা কাস্টমস সহ অন্যান্য এআই মডেলের সাথে একীভূত করুন।
- Agentspace এবং Dialogflow CX-এর মতো ডেডিকেটেড প্ল্যাটফর্মে হোস্ট করা কাস্টমস সহ এজেন্টদের সাথে ইন্টিগ্রেট করুন।
- কর্মক্ষমতা পর্যবেক্ষণ ও উন্নত করতে ফিডব্যাক লুপ এবং শ্রেণিবিন্যাসের ওপর নির্ভর করুন।
- দল, সংস্থা বা সাধারণ ব্যবহারকারীদের ক্ষমতায়নের জন্য মার্কেটপ্লেসে প্রকাশ করুন।
আরও জানুন
ডেভেলপারদের জন্য প্রচুর রিসোর্স উপলব্ধ আছে, যেমন ইউটিউব ভিডিও, ডকুমেন্টেশন ওয়েবসাইট, কোড স্যাম্পল এবং টিউটোরিয়াল:
- গুগল ওয়ার্কস্পেস ডেভেলপারস ইউটিউব চ্যানেল - ডেভেলপারগণ, স্বাগতম!
- গুগল চ্যাটের জন্য ডেভেলপারদের ডকুমেন্টেশন ওয়েবসাইট
- সমস্ত গুগল চ্যাট স্যাম্পলের জন্য গিটহাব রিপোজিটরি
- গুগল ক্লাউড ডেভেলপার সেন্টার
- ভার্টেক্স এআই-তে জেনারেটিভ এআই
- জেনারেটিভ এআই মডেল
- জেনারেটিভ এআই মডেল টিউনিং
- জেনারেটিভ এআই কাস্টম প্রশিক্ষণ