১. শুরু করার আগে
জেমিনি এন্টারপ্রাইজ কী?
জেমিনি এন্টারপ্রাইজ একটি উন্নত এজেন্টিক প্ল্যাটফর্ম যা প্রতিটি কর্মীর জন্য, প্রতিটি ওয়ার্কফ্লোতে গুগল এআই-এর সেরাটা নিয়ে আসে। এটি টিমগুলোকে একটি সুরক্ষিত পরিবেশে এআই এজেন্ট আবিষ্কার, তৈরি, শেয়ার এবং পরিচালনা করতে সক্ষম করে।
- উন্নত মডেলগুলো ব্যবহারের সুযোগ: ব্যবহারকারীরা জটিল ব্যবসায়িক চ্যালেঞ্জ মোকাবেলা করার জন্য জেমিনি সহ গুগলের সবচেয়ে শক্তিশালী মাল্টিমোডাল এআই-এর তাৎক্ষণিক অ্যাক্সেস পান।
- বিশেষায়িত এজেন্ট ব্যবহার করুন: এই স্যুটে গবেষণা, কোডিং এবং নোট নেওয়ার জন্য প্রস্তুত গুগল এজেন্ট রয়েছে, যা তাৎক্ষণিক সুবিধা প্রদান করে।
- প্রতিটি কর্মীকে ক্ষমতায়ন করুন: নো-কোড এবং প্রো-কোড বিকল্পগুলো সকল বিভাগের কর্মীদের ওয়ার্কফ্লো অটোমেশনের জন্য তাদের নিজস্ব কাস্টম এজেন্ট তৈরি ও পরিচালনা করার সুযোগ দেয়।
- ডেটার সাথে এজেন্টদের সংযুক্ত করা: এজেন্টদের প্রতিক্রিয়া যেন প্রাসঙ্গিকভাবে নির্ভুল হয়, তা নিশ্চিত করার জন্য তাদেরকে কোম্পানির অভ্যন্তরীণ ডেটা এবং তৃতীয় পক্ষের অ্যাপ্লিকেশনের সাথে নিরাপদে সংযুক্ত করা যেতে পারে।
- কেন্দ্রীভূত পরিচালনা: সংস্থাটি কঠোর নিরাপত্তা ও সম্মতি মানদণ্ড মেনে চলছে কিনা, তা নিশ্চিত করার জন্য প্রশাসকগণ সমস্ত এজেন্টের কার্যকলাপ দেখতে ও নিরীক্ষা করতে পারেন।
- ইকোসিস্টেমের সাথে সম্প্রসারণ করুন: প্ল্যাটফর্মটি বিভিন্ন সিস্টেম জুড়ে অটোমেশন প্রসারিত করতে অংশীদার অ্যাপ্লিকেশন এবং পরিষেবা প্রদানকারীদের একটি বিস্তৃত নেটওয়ার্কের সাথে সমন্বিত হয়।
গুগল ওয়ার্কস্পেস কী?
গুগল ওয়ার্কস্পেস হলো ব্যক্তি, স্কুল এবং ব্যবসার জন্য ডিজাইন করা ক্লাউড-ভিত্তিক উৎপাদনশীলতা ও সহযোগিতামূলক সমাধানসমূহের একটি সংগ্রহ:
- যোগাযোগ: পেশাদার ইমেল পরিষেবা (Gmail), ভিডিও কনফারেন্সিং (Meet), এবং টিম মেসেজিং (Chat)।
- কন্টেন্ট তৈরি: ডকুমেন্ট (Docs) লেখার, স্প্রেডশিট (Sheets) তৈরির এবং প্রেজেন্টেশন (Slides) ডিজাইন করার টুল।
- সংগঠন: শেয়ার করা ক্যালেন্ডার (Calendars) এবং ডিজিটাল নোট নেওয়া (Keep)।
- স্টোরেজ: ফাইল নিরাপদে সংরক্ষণ ও শেয়ার করার জন্য কেন্দ্রীভূত ক্লাউড স্পেস (ড্রাইভ)।
- ব্যবস্থাপনা: ব্যবহারকারী ও নিরাপত্তা সেটিংস পরিচালনার জন্য প্রশাসনিক নিয়ন্ত্রণ (ওয়ার্কস্পেস অ্যাডমিন কনসোল)।
কী ধরনের কাস্টম ইন্টিগ্রেশন?
গুগল ওয়ার্কস্পেস এবং জেমিনি এন্টারপ্রাইজ একটি শক্তিশালী ফিডব্যাক লুপ তৈরি করে, যেখানে ওয়ার্কস্পেস রিয়েল-টাইম ডেটা এবং কোলাবোরেশন কনটেক্সট প্রদান করে, আর জেমিনি এন্টারপ্রাইজ ইন্টেলিজেন্ট ওয়ার্কফ্লো স্বয়ংক্রিয় করার জন্য প্রয়োজনীয় মডেল, এজেন্টিক রিজনিং এবং অর্কেস্ট্রেশন সরবরাহ করে।
- স্মার্ট কানেক্টিভিটি: গুগল-পরিচালিত ডেটা স্টোর, এপিআই, এবং এমসিপি সার্ভার (গুগল-পরিচালিত ও কাস্টম) এজেন্টদেরকে নিরাপদে ও নির্বিঘ্নে ওয়ার্কস্পেস ডেটা অ্যাক্সেস করতে এবং ব্যবহারকারীদের পক্ষ থেকে বিভিন্ন পদক্ষেপ গ্রহণ করতে সক্ষম করে।
- কাস্টম এজেন্ট: নো-কোড ডিজাইনার বা প্রো-কোড ফ্রেমওয়ার্ক ব্যবহার করে, টিমগুলো অ্যাডমিন-পরিচালিত ওয়ার্কস্পেস ডেটা এবং অ্যাকশনের উপর ভিত্তি করে বিশেষায়িত এজেন্ট তৈরি করতে পারে।
- নেটিভ ইন্টিগ্রেশন: ওয়ার্কস্পেস অ্যাড-অনগুলো ডেডিকেটেড UI কম্পোনেন্ট বা ব্যাকগ্রাউন্ড প্রসেসের মাধ্যমে AI সিস্টেম এবং চ্যাট ও জিমেইলের মতো অ্যাপ্লিকেশনগুলোর মধ্যেকার সংযোগ স্থাপন করে। এর ফলে এজেন্টরা ব্যবহারকারীদের ঠিক যেখানে তারা আছেন, সেখানেই তাৎক্ষণিক ও প্রাসঙ্গিক সহায়তা প্রদান করতে পারেন।
গুগল ওয়ার্কস্পেসের শক্তিশালী প্রোডাক্টিভিটি ইকোসিস্টেমের সাথে জেমিনি এন্টারপ্রাইজের উন্নত এজেন্টিক ক্ষমতাকে একত্রিত করে, প্রতিষ্ঠানগুলো কাস্টম ও ডেটা-ভিত্তিক এআই এজেন্টের মাধ্যমে তাদের কার্যক্রমকে রূপান্তরিত করতে পারে। এই এজেন্টগুলো তাদের টিমের প্রতিদিন ব্যবহৃত টুলগুলোর মধ্যেই সরাসরি জটিল ওয়ার্কফ্লো স্বয়ংক্রিয় করে তোলে।
পূর্বশর্ত
আপনি যদি আপনার নিজের পরিবেশে সমস্ত ধাপ অনুসরণ করতে চান, তাহলে আপনার প্রয়োজন হবে:
- গুগল ক্লাউড ও পাইথন সম্পর্কে প্রাথমিক জ্ঞান।
- আপনার মালিকানাধীন একটি Google Cloud প্রজেক্ট, যেটিতে বিলিং চালু আছে। কোনো বিদ্যমান প্রজেক্টে বিলিং চালু আছে কিনা তা পরীক্ষা করতে, আপনার প্রজেক্টগুলোর বিলিং স্ট্যাটাস যাচাই করুন দেখুন। একটি প্রজেক্ট তৈরি করতে এবং বিলিং সেট আপ করতে, একটি Google Cloud প্রজেক্ট তৈরি করুন দেখুন। প্রজেক্টের মালিকানা পরিবর্তন করতে, প্রজেক্টের সদস্যদের পরিচালনা করুন বা প্রজেক্টের মালিকানা পরিবর্তন করুন দেখুন।
- জেমিনি এন্টারপ্রাইজ স্ট্যান্ডার্ড / প্লাস সংস্করণগুলো সক্রিয় করা হয়েছে। জেমিনি এন্টারপ্রাইজ সংস্করণগুলোর তুলনা করতে, ‘জেমিনি এন্টারপ্রাইজ-এর সংস্করণগুলোর তুলনা’ দেখুন। যদি আপনার জেমিনি এন্টারপ্রাইজ-এর লাইসেন্স না থাকে, তাহলে পরবর্তী ধাপে একটি ট্রায়াল লাইসেন্স তৈরি করার বিকল্প পাবেন।
- একটি বিজনেস বা এন্টারপ্রাইজ গুগল ওয়ার্কস্পেস অ্যাকাউন্ট, যেখানে গুগল চ্যাট এবং স্মার্ট ফিচারগুলো চালু করা আছে ।
- আপনার গুগল ক্লাউড প্রজেক্টের জন্য গুগল ক্লাউড সিএলআই ইনস্টল এবং চালু করা হয়েছে ।
- পাইথন ৩.১১ বা তার পরবর্তী সংস্করণ ইনস্টল করা থাকতে হবে, নির্দেশাবলীর জন্য পাইথনের অফিসিয়াল ওয়েবসাইট দেখুন।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আমরা গুগল ওয়ার্কস্পেসের সাথে নিবিড়ভাবে সমন্বিত জেমিনি এন্টারপ্রাইজ এআই এজেন্ট ব্যবহার করে তিনটি সলিউশন তৈরি করব। এগুলোর মাধ্যমে এমন কিছু আর্কিটেকচারাল প্যাটার্ন দেখানো হবে, যা ডেটা, অ্যাকশন এবং ইউআই-এর সাথে ইন্টারঅ্যাক্ট করতে ব্যবহার করা যেতে পারে।
নো-কোড কাস্টম এজেন্ট
এই এজেন্টটি ব্যবহারকারীদের তাদের স্বাভাবিক ভাষায় ওয়ার্কস্পেসের জন্য ডেটা অনুসন্ধান করতে এবং বিভিন্ন পদক্ষেপ নিতে সাহায্য করে। এটি নিম্নলিখিত উপাদানগুলোর উপর নির্ভর করে:
- মডেল: মিথুন।
- ডেটা ও কার্যক্রম: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ, নোটবুকএলএম) এবং গুগল সার্চ- এর জন্য জেমিনি এন্টারপ্রাইজ ডেটা স্টোর।
- এজেন্ট তৈরির টুল: জেমিনি এন্টারপ্রাইজ এজেন্ট ডিজাইনার।
- এজেন্ট হোস্ট: জেমিনি এন্টারপ্রাইজ।
- UI: জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপ।
প্রো-কোড কাস্টম এজেন্ট
এই এজেন্টটি ব্যবহারকারীদের নিজস্ব টুল ও নিয়ম ব্যবহার করে তাদের স্বাভাবিক ভাষায় ওয়ার্কস্পেসের জন্য ডেটা অনুসন্ধান করতে এবং বিভিন্ন পদক্ষেপ নিতে সাহায্য করে। এটি নিম্নলিখিত উপাদানগুলোর উপর নির্ভর করে:
- মডেল: মিথুন।
- ডেটা ও কার্যক্রম: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ, নোটবুকএলএম)-এর জন্য জেমিনি এন্টারপ্রাইজ ডেটা স্টোর, গুগল সার্চ , গুগল-পরিচালিত ভার্টেক্স এআই সার্চ মডেল কনটেক্সট প্রোটোকল (এমসিপি) সার্ভার, এবং গুগল চ্যাট মেসেজ পাঠানোর জন্য কাস্টম টুল ফাংশন (গুগল চ্যাট এপিআই-এর মাধ্যমে)।
- এজেন্ট তৈরির সরঞ্জাম: এজেন্ট ডেভেলপমেন্ট কিট (ADK)।
- এজেন্ট হোস্ট: ভার্টেক্স এআই এজেন্ট ইঞ্জিন।
- UI: জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপ।
গুগল ওয়ার্কস্পেস অ্যাড-অন হিসেবে ডিফল্ট এজেন্ট
এই এজেন্টটি ব্যবহারকারীদের ওয়ার্কস্পেস অ্যাপ UI-এর প্রেক্ষাপটে তাদের স্বাভাবিক ভাষায় ওয়ার্কস্পেসের ডেটা অনুসন্ধান করার সুযোগ দেয়। এটি নিম্নলিখিত উপাদানগুলোর উপর নির্ভর করে:
- মডেল: মিথুন।
- ডেটা: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ, নোটবুকএলএম) এবং গুগল সার্চ- এর জন্য জেমিনি এন্টারপ্রাইজ ডেটা স্টোর।
- এজেন্ট হোস্ট: জেমিনি এন্টারপ্রাইজ।
- ইউজার ইন্টারফেস: চ্যাট এবং জিমেইলের জন্য গুগল ওয়ার্কস্পেস অ্যাড-অন (সহজেই ক্যালেন্ডার, ড্রাইভ, ডক্স, শিটস এবং স্লাইডস পর্যন্ত সম্প্রসারণযোগ্য)।
- গুগল ওয়ার্কস্পেস অ্যাড-অন: অ্যাপস স্ক্রিপ্ট, জেমিনি এন্টারপ্রাইজ ও ভার্টেক্স এআই এপিআই, প্রাসঙ্গিক (ব্যবহারকারীর মেটাডেটা, নির্বাচিত জিমেইল বার্তা)।
আপনি যা শিখবেন
- জেমিনি এন্টারপ্রাইজ এবং গুগল ওয়ার্কস্পেসের মধ্যেকার ইন্টিগ্রেশন পয়েন্টগুলো, যা ডেটা এবং অ্যাকশনসমূহকে সক্ষম করে।
- জেমিনি এন্টারপ্রাইজে হোস্ট করা কাস্টম এজেন্ট তৈরির জন্য নো-কোড এবং প্রো-কোড বিকল্পসমূহ।
- যে যে উপায়ে ব্যবহারকারীরা জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপ এবং গুগল ওয়ার্কস্পেস অ্যাপ্লিকেশন থেকে এজেন্টদের অ্যাক্সেস করতে পারেন।
২. প্রস্তুত হন
ধারণা পর্যালোচনা করুন
জেমিনি এন্টারপ্রাইজ অ্যাপ
একটি জেমিনি এন্টারপ্রাইজ অ্যাপ আপনার ব্যবহারকারীদের কাছে অনুসন্ধানের ফলাফল, কার্যকলাপ এবং এজেন্ট সরবরাহ করে। এপিআই (API)-এর ক্ষেত্রে 'অ্যাপ' শব্দটি 'ইঞ্জিন' শব্দের সাথে একই অর্থে ব্যবহার করা যেতে পারে। অনুসন্ধানের ফলাফল, উত্তর বা কার্যকলাপ পরিবেশন করার জন্য কোনো ডেটা স্টোর থেকে ডেটা ব্যবহার করতে হলে, অ্যাপটিকে অবশ্যই সেই ডেটা স্টোরের সাথে সংযুক্ত থাকতে হবে।
জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপ
একটি জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপ অন্য একটি জেমিনি এন্টারপ্রাইজ অ্যাপের সাথে সংযুক্ত থাকে। এটি একটি কেন্দ্রীভূত এআই হোম বেস হিসেবে কাজ করে, যেখানে কর্মীরা একটিমাত্র চ্যাট ইন্টারফেস ব্যবহার করে কোম্পানির বিচ্ছিন্ন ডেটা অনুসন্ধান করতে, জটিল ওয়ার্কফ্লোর জন্য বিশেষায়িত এআই এজেন্ট চালাতে এবং এন্টারপ্রাইজ-স্তরের গোপনীয়তা বজায় রেখে পেশাদার মানের কন্টেন্ট তৈরি করতে পারেন।
রিসোর্স শুরু করুন এবং অ্যাক্সেস করুন
এই বিভাগে, আপনি আপনার পছন্দের ওয়েব ব্রাউজার থেকে নিম্নলিখিত রিসোর্সগুলো অ্যাক্সেস ও কনফিগার করতে পারবেন।
জেমিনি এন্টারপ্রাইজ অ্যাপ
একটি নতুন ট্যাবে গুগল ক্লাউড কনসোল খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
- আপনার প্রকল্পটি নির্বাচন করুন।
- গুগল ক্লাউড সার্চ ফিল্ডে, Gemini Enterprise সার্চ করে সিলেক্ট করুন, তারপর + Create app-এ ক্লিক করুন। যদি আপনার Gemini Enterprise-এর লাইসেন্স না থাকে, তাহলে আপনাকে একটি ৩০-দিনের ফ্রি ট্রায়াল লাইসেন্স অ্যাক্টিভেট করার জন্য অনুরোধ করা হবে।
- অ্যাপের নাম '
codelabসেট করুন। - নামের উপর ভিত্তি করে একটি আইডি তৈরি হয় এবং তা ফিল্ডের নিচে প্রদর্শিত হয়, সেটি কপি করুন।
- মাল্টি-রিজিওন
global (Global)এ সেট করুন। - তৈরি করুন- এ ক্লিক করুন।
- অ্যাপটি তৈরি হয়ে গেলে আপনাকে স্বয়ংক্রিয়ভাবে Gemini Enterprise > Overview- তে পুনঃনির্দেশিত করা হবে।
- সম্পূর্ণ অ্যাক্সেস পান (Get Full access) -এর অধীনে, পরিচয় সেট আপ করুন (Set up identity) -এ ক্লিক করুন।
- নতুন স্ক্রিনে, ‘Use Google Identity’ নির্বাচন করুন এবং ‘Confirm Workforce Identity’-তে ক্লিক করুন।
- কনফিগারেশনটি সংরক্ষিত হয়ে গেলে আপনাকে স্বয়ংক্রিয়ভাবে Gemini Enterprise > Overview- তে পুনঃনির্দেশিত করা হবে।
- কনফিগারেশন -এ যান।
- ফিচার ম্যানেজমেন্ট ট্যাবে, ‘এজেন্ট ডিজাইনার সক্ষম করুন’ বিকল্পটি চালু করুন, তারপর সেভ-এ ক্লিক করুন।
জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপ
ক্লাউড কনসোল থেকে একটি নতুন ট্যাবে জেমিনি এন্টারপ্রাইজ খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
-
codelabনামের অ্যাপটিতে ক্লিক করুন। - প্রদর্শিত URL-টি কপি করে নিন, কারণ পরবর্তী ধাপে জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপে নেভিগেট করার জন্য আমরা এটি ব্যবহার করব।
৩. নো-কোড কাস্টম এজেন্ট
এই এজেন্টটি ব্যবহারকারীদের তাদের স্বাভাবিক ভাষায় ওয়ার্কস্পেসের জন্য ডেটা অনুসন্ধান করতে এবং বিভিন্ন পদক্ষেপ নিতে সাহায্য করে। এটি নিম্নলিখিত উপাদানগুলোর উপর নির্ভর করে:
- মডেল: মিথুন।
- ডেটা ও কার্যক্রম: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ, নোটবুকএলএম) এবং গুগল সার্চ- এর জন্য জেমিনি এন্টারপ্রাইজ ডেটা স্টোর।
- এজেন্ট তৈরির টুল: জেমিনি এন্টারপ্রাইজ এজেন্ট ডিজাইনার।
- এজেন্ট হোস্ট: জেমিনি এন্টারপ্রাইজ।
- UI: জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপ।
ধারণা পর্যালোচনা করুন
মিথুন
জেমিনি হলো গুগলের একটি মাল্টিমোডাল এলএলএম। এটি মানুষকে তাদের মানবিক সম্ভাবনাকে উন্মোচন করতে সাহায্য করে, যাতে তারা তাদের কল্পনাশক্তি বাড়াতে, কৌতূহল প্রসারিত করতে এবং উৎপাদনশীলতা বৃদ্ধি করতে পারে।
জেমিনি এন্টারপ্রাইজ ডেটা স্টোর
জেমিনি এন্টারপ্রাইজ ডেটা স্টোর হলো এমন একটি সত্তা যা গুগল ওয়ার্কস্পেসের মতো ফার্স্ট-পার্টি ডেটা সোর্স অথবা জিরা বা সেলসফোর্সের মতো থার্ড-পার্টি অ্যাপ্লিকেশন থেকে গৃহীত ডেটা ধারণ করে। যে ডেটা স্টোরগুলো থার্ড-পার্টি অ্যাপ্লিকেশন থেকে ডেটা ধারণ করে, সেগুলোকে ডেটা কানেক্টরও বলা হয়।
জেমিনি এন্টারপ্রাইজ এজেন্ট ডিজাইনার
জেমিনি এন্টারপ্রাইজ এজেন্ট ডিজাইনার হলো জেমিনি এন্টারপ্রাইজে একক এবং বহু-ধাপের এজেন্ট তৈরি, পরিচালনা এবং চালু করার জন্য একটি ইন্টারেক্টিভ নো-কোড, লো-কোড প্ল্যাটফর্ম।
সমাধান স্থাপত্য পর্যালোচনা করুন
এপিআই সক্ষম করুন
জেমিনি এন্টারপ্রাইজ ওয়ার্কস্পেস ডেটা স্টোরগুলির জন্য এপিআই (API) সক্রিয় করা প্রয়োজন:
- গুগল ক্লাউড কনসোলে ক্যালেন্ডার, জিমেইল এবং পিপল এপিআইগুলো সক্রিয় করুন:
- মেনু ☰ > এপিআই ও পরিষেবা > সক্রিয় এপিআই ও পরিষেবা- তে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে Google Calendar API , Gmail API , এবং People API তালিকায় রয়েছে।
OAuth সম্মতি স্ক্রিন কনফিগার করুন
জেমিনি এন্টারপ্রাইজ ওয়ার্কস্পেস ক্যালেন্ডার এবং জিমেইল অ্যাকশনগুলির জন্য একটি সম্মতি স্ক্রিন কনফিগারেশন প্রয়োজন:
- Google Cloud কনসোলে , মেনু ☰ > Google Auth প্ল্যাটফর্ম > ব্র্যান্ডিং- এ ক্লিক করুন।
- শুরু করতে ক্লিক করুন।
- অ্যাপ ইনফরমেশন-এর অধীনে, অ্যাপের নাম
Codelabএ সেট করুন। - ব্যবহারকারী সহায়তা ইমেল- এ, এমন একটি সহায়তা ইমেল ঠিকানা বেছে নিন যেখানে ব্যবহারকারীরা তাদের সম্মতি সম্পর্কে কোনো প্রশ্ন থাকলে আপনার সাথে যোগাযোগ করতে পারে।
- পরবর্তী ধাপে যান।
- Audience-এর অধীনে Internal নির্বাচন করুন।
- পরবর্তী ধাপে যান।
- যোগাযোগের তথ্যের অধীনে, একটি ইমেল ঠিকানা লিখুন যেখানে আপনার প্রকল্পের যেকোনো পরিবর্তন সম্পর্কে আপনাকে জানানো যাবে।
- পরবর্তী ধাপে যান।
- Finish-এর অধীনে, Google API Services ব্যবহারকারীর ডেটা নীতি পর্যালোচনা করুন এবং যদি আপনি সম্মত হন, তাহলে I agree to the Google API Services: User Data Policy নির্বাচন করুন।
- চালিয়ে যান-এ ক্লিক করুন, তারপর তৈরি করুন ।
- কনফিগারেশনটি সংরক্ষিত হয়ে গেলে আপনাকে স্বয়ংক্রিয়ভাবে Google Auth Platform > Overview- তে পুনঃনির্দেশিত করা হবে।
- ডেটা অ্যাক্সেস- এ যান।
- স্কোপ যোগ বা অপসারণ করতে ক্লিক করুন।
- নিম্নলিখিত স্কোপগুলি কপি করে 'ম্যানুয়ালি অ্যাড স্কোপস' ফিল্ডে পেস্ট করুন।
https://www.googleapis.com/auth/calendar.readonly
https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/calendar.calendars
https://www.googleapis.com/auth/gmail.send
https://www.googleapis.com/auth/gmail.readonly
- টেবিলে যোগ করুন-এ ক্লিক করুন, তারপর আপডেট করুন , তারপর সংরক্ষণ করুন ।
আরও জানতে, OAuth সম্মতি কনফিগার করার সম্পূর্ণ নির্দেশিকাটি দেখুন।
OAuth ক্লায়েন্ট ক্রেডেনশিয়াল তৈরি করুন
ব্যবহারকারীদের প্রমাণীকরণের জন্য জেমিনি এন্টারপ্রাইজের জন্য একটি নতুন OAuth ক্লায়েন্ট তৈরি করুন:
- Google Cloud কনসোলে , মেনু ☰ > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ ক্লিক করুন।
- ক্লায়েন্ট তৈরি করতে ক্লিক করুন।
- অ্যাপ্লিকেশনের ধরন হিসেবে ওয়েব অ্যাপ্লিকেশন নির্বাচন করুন।
- নামটি
codelabহিসেবে সেট করুন। - অনুমোদিত জাভাস্ক্রিপ্ট উৎসগুলি এড়িয়ে যান।
- Authorized redirect URIs সেকশনে, Add URI-তে ক্লিক করুন এবং
https://vertexaisearch.cloud.google.com/oauth-redirectলিখুন। - তৈরি করুন- এ ক্লিক করুন।
- আপনার নতুন তৈরি করা OAuth ক্লায়েন্ট আইডি এবং সিক্রেট সহ একটি ডায়ালগ বক্স প্রদর্শিত হবে। এই তথ্যটি একটি নিরাপদ স্থানে সংরক্ষণ করুন।
ডেটা স্টোর তৈরি করুন
আপনার ওয়ার্কস্পেস ডেটার সাথে জেমিনি এন্টারপ্রাইজকে সংযুক্ত করতে ডেটা স্টোর তৈরি করতে হবে।
ক্লাউড কনসোল থেকে একটি নতুন ট্যাবে জেমিনি এন্টারপ্রাইজ খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
-
codelabনামের অ্যাপটিতে ক্লিক করুন। - নেভিগেশন মেনুতে, ‘Connected data stores’- এ ক্লিক করুন।
- নতুন ডেটা স্টোরে ক্লিক করুন।
- সোর্স- এ, গুগল ক্যালেন্ডার অনুসন্ধান করুন এবং সিলেক্ট-এ ক্লিক করুন।
- অ্যাকশনস সেকশনে, পূর্ববর্তী ধাপগুলো থেকে সংরক্ষিত ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট লিখুন, এবং তারপর ভেরিফাই অথ-এ ক্লিক করে OAuth ক্লায়েন্টকে অথেন্টিকেট ও অথরাইজ করার ধাপগুলো অনুসরণ করুন।
- 'ক্যালেন্ডার ইভেন্ট তৈরি করুন' এবং 'ক্যালেন্ডার ইভেন্ট আপডেট করুন' অ্যাকশনগুলো সক্রিয় করুন।
- চালিয়ে যান-এ ক্লিক করুন।
- কনফিগারেশন বিভাগে, ডেটা কানেক্টরের নাম
calendarহিসেবে সেট করুন। - তৈরি করুন- এ ক্লিক করুন।
- আপনাকে স্বয়ংক্রিয়ভাবে সংযুক্ত ডেটা স্টোরগুলিতে পুনঃনির্দেশিত করা হবে, যেখানে আপনি নতুন যুক্ত হওয়া ডেটা স্টোরটি দেখতে পারবেন।
গুগল জিমেইল ডেটা স্টোর তৈরি করুন:
- নতুন ডেটা স্টোরে ক্লিক করুন।
- সোর্স -এ Google Gmail অনুসন্ধান করুন এবং সিলেক্ট-এ ক্লিক করুন।
- অ্যাকশনস সেকশনে, পূর্ববর্তী ধাপগুলো থেকে সেভ করা ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট লিখুন, এবং তারপর ভেরিফাই অথ-এ ক্লিক করুন।
- 'ইমেল পাঠান' অ্যাকশনটি সক্রিয় করুন।
- চালিয়ে যান-এ ক্লিক করুন।
- কনফিগারেশন বিভাগে, ডেটা কানেক্টরের নাম
gmailএ সেট করুন। - তৈরি করুন- এ ক্লিক করুন।
- আপনাকে স্বয়ংক্রিয়ভাবে সংযুক্ত ডেটা স্টোরগুলিতে পুনঃনির্দেশিত করা হবে, যেখানে আপনি নতুন যুক্ত হওয়া ডেটা স্টোরটি দেখতে পারবেন।
গুগল ড্রাইভ ডেটা স্টোর তৈরি করুন:
- নতুন ডেটা স্টোরে ক্লিক করুন।
- সোর্স -এ Google Drive অনুসন্ধান করুন এবং সিলেক্ট-এ ক্লিক করুন।
- ডেটা বিভাগে, ‘সব’ নির্বাচন করুন, তারপর ‘ চালিয়ে যান’ ক্লিক করুন।
- কনফিগারেশন বিভাগে, ডেটা কানেক্টরের নাম '
driveহিসেবে সেট করুন। - তৈরি করুন- এ ক্লিক করুন।
- আপনাকে স্বয়ংক্রিয়ভাবে সংযুক্ত ডেটা স্টোরগুলিতে পুনঃনির্দেশিত করা হবে, যেখানে আপনি নতুন যুক্ত হওয়া ডেটা স্টোরটি দেখতে পারবেন।
নোটবুকএলএম ডেটা স্টোর তৈরি করুন:
- নতুন ডেটা স্টোরে ক্লিক করুন।
- সোর্স -এ NotebookLM অনুসন্ধান করুন এবং সিলেক্ট-এ ক্লিক করুন।
- কনফিগারেশন বিভাগে, ডেটা কানেক্টরের নাম
notebooklmএ সেট করুন। - তৈরি করুন- এ ক্লিক করুন।
- আপনাকে স্বয়ংক্রিয়ভাবে সংযুক্ত ডেটা স্টোরগুলিতে পুনঃনির্দেশিত করা হবে, যেখানে আপনি নতুন যুক্ত হওয়া ডেটা স্টোরটি দেখতে পারবেন।
কয়েক মিনিট পর, (NotebookLM বাদে) সংযুক্ত সমস্ত ডেটা স্টোরের স্ট্যাটাস 'Active' হয়ে যাবে। যদি কোনো ত্রুটি দেখতে পান, তাহলে ত্রুটির বিস্তারিত বিবরণ দেখার জন্য ডেটা সোর্সের উপর ক্লিক করতে পারেন।
পরীক্ষার ডেটা স্টোর
কিছু টেস্ট কোয়েরি চালিয়ে যাচাই করুন যে আপনার ডেটা স্টোরগুলো সঠিকভাবে ডেটা গ্রহণ করছে কিনা।
আমরা আগে যে Gemini Enterprise ওয়েব অ্যাপের URL-টি কপি করেছিলাম, সেটি খুলুন:
- মেনু ☰ > নতুন চ্যাট-এ ক্লিক করুন।
- নতুন চ্যাট মেসেজ ফিল্ডের ফুটার অংশে, কানেক্টর আইকনে ক্লিক করুন এবং সমস্ত কানেক্টর সক্রিয় করুন।
- আপনি এখন কানেক্টর সম্পর্কিত প্রম্পটগুলো নিয়ে পরীক্ষা করতে পারেন। উদাহরণস্বরূপ, চ্যাটে
Do I have any meetings today?টাইপ করুন এবংenterচাপুন। - এরপর,
How many emails did I receive today?টাইপ করেenterচাপুন। - অবশেষে,
Give me the title of the last Drive file I createdটাইপ করুন এবংenterচাপুন।
কাস্টম এজেন্ট তৈরি করুন
জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপে, এজেন্ট ডিজাইনার ব্যবহার করে একটি নতুন এজেন্ট তৈরি করুন:
- মেনুতে ক্লিক করুন ☰ > + নতুন এজেন্ট ।
- চ্যাটে টাইপ করুন
An agent that always sends pirate-themed emails but use normal English otherwiseএবংenterচাপুন।
- এজেন্ট ডিজাইনার প্রম্পটের উপর ভিত্তি করে এজেন্টের খসড়া তৈরি করে এবং এডিটরে তা খোলে।
- তৈরি করতে ক্লিক করুন
কাস্টম এজেন্ট চেষ্টা করুন
আপনার নতুন এজেন্টটি কীভাবে প্রশ্নের উত্তর দেয় এবং কাজ সম্পাদন করে, তা দেখতে পরীক্ষা করে দেখুন।
- জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপে, নতুন তৈরি করা এজেন্টের সাথে চ্যাট করুন:
- মেনু ☰ > এজেন্ট-এ ক্লিক করুন।
- আপনার এজেন্টদের তালিকা থেকে এজেন্ট নির্বাচন করুন।
- নতুন চ্যাট মেসেজ ফিল্ডের ফুটার অংশে, কানেক্টরস আইকনে ক্লিক করুন, তারপর ‘Enable actions for Mail’-এ ক্লিক করুন এবং এজেন্টকে অনুমোদন দেওয়ার জন্য নির্দেশাবলী অনুসরণ করুন।
- চ্যাটে,
Send an email to someone@example.com saying I'll see them at Cloud Next, generate some subject and body yourselfenterচাপুন। আপনি নমুনা ইমেলটির জায়গায় আপনার নিজের ইমেল ঠিকানা বসাতে পারেন। - ইমেইলটি পাঠাতে ✔️-এ ক্লিক করুন।
৪. প্রো-কোড কাস্টম এজেন্ট
এই এজেন্টটি ব্যবহারকারীদের নিজস্ব টুল ও নিয়ম ব্যবহার করে তাদের স্বাভাবিক ভাষায় ওয়ার্কস্পেসের জন্য ডেটা অনুসন্ধান করতে এবং বিভিন্ন পদক্ষেপ নিতে সাহায্য করে। এটি নিম্নলিখিত উপাদানগুলোর উপর নির্ভর করে:
- মডেল: মিথুন।
- ডেটা ও কার্যক্রম: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ, নোটবুকএলএম)-এর জন্য জেমিনি এন্টারপ্রাইজ ডেটা স্টোর, গুগল সার্চ , গুগল-পরিচালিত ভার্টেক্স এআই সার্চ মডেল কনটেক্সট প্রোটোকল (এমসিপি) সার্ভার, এবং গুগল চ্যাট মেসেজ পাঠানোর জন্য কাস্টম টুল ফাংশন (গুগল চ্যাট এপিআই-এর মাধ্যমে)।
- এজেন্ট তৈরির সরঞ্জাম: এজেন্ট ডেভেলপমেন্ট কিট (ADK)।
- এজেন্ট হোস্ট: ভার্টেক্স এআই এজেন্ট ইঞ্জিন।
- UI: জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপ।
এটি ‘ ব্রিং-ইয়োর-ওন’ ফিচার ব্যবহার করে জেমিনি এন্টারপ্রাইজে ইন্টিগ্রেট করা হবে, তাই আমাদের ডেপ্লয়মেন্ট, রেজিস্ট্রেশন এবং কনফিগারেশন ধাপগুলো সম্পন্ন করতে হবে।
ধারণা পর্যালোচনা করুন
ভার্টেক্স এআই
জেনারেটিভ এআই তৈরি ও ব্যবহারের জন্য আপনার প্রয়োজনীয় সবকিছুই ভার্টেক্স এআই প্রদান করে, যার মধ্যে রয়েছে এআই সলিউশন, সার্চ ও কনভারসেশন, ১৩০টিরও বেশি ফাউন্ডেশন মডেল এবং একটি সমন্বিত এআই প্ল্যাটফর্ম।
এজেন্ট ডেভেলপমেন্ট কিট (ADK)
এজেন্ট ডেভেলপমেন্ট কিট (ADK) হলো বিভিন্ন টুল ও ফ্রেমওয়ার্কের একটি বিশেষায়িত সংকলন, যা যুক্তিনির্মাণ, মেমরি ব্যবস্থাপনা এবং টুল ইন্টিগ্রেশনের জন্য পূর্ব-নির্মিত মডিউল সরবরাহ করার মাধ্যমে স্বয়ংক্রিয় এআই এজেন্ট তৈরি প্রক্রিয়াকে সহজ করার জন্য ডিজাইন করা হয়েছে।
মডেল কনটেক্সট প্রোটোকল (এমসিপি)
মডেল কনটেক্সট প্রোটোকল (MCP) হলো একটি উন্মুক্ত স্ট্যান্ডার্ড, যা একটি সার্বজনীন, 'প্লাগ-এন্ড-প্লে' ইন্টারফেসের মাধ্যমে এআই অ্যাপ্লিকেশন এবং বিভিন্ন ডেটা উৎস বা টুলের মধ্যে নির্বিঘ্ন ও নিরাপদ সংযোগ স্থাপনের জন্য ডিজাইন করা হয়েছে।
ফাংশন টুল
ফাংশন টুল হলো একটি পূর্বনির্ধারিত নির্বাহযোগ্য রুটিন, যা একটি এআই মডেল নির্দিষ্ট কাজ সম্পাদন করতে বা বাহ্যিক সিস্টেম থেকে রিয়েল-টাইম ডেটা সংগ্রহ করতে চালু করতে পারে, যার ফলে এর সক্ষমতা সাধারণ টেক্সট তৈরির বাইরেও প্রসারিত হয়।
সমাধান স্থাপত্য পর্যালোচনা করুন
সোর্স কোড পর্যালোচনা করুন
agent.py
নিম্নলিখিত কোডটি জেমিনি এন্টারপ্রাইজের সাথে প্রমাণীকরণ করে, ভার্টেক্স এআই সার্চ এমসিপি এবং চ্যাট এপিআই টুলগুলো চালু করে, এবং এজেন্টের আচরণ নির্ধারণ করে।
- প্রমাণীকরণ : এটি জেমিনি এন্টারপ্রাইজ কর্তৃক ইনজেক্ট করা প্রমাণীকরণ টোকেন (
CLIENT_AUTH_NAME) পুনরুদ্ধার করতে_get_access_token_from_contextএকটি হেল্পার ফাংশন ব্যবহার করে। ভার্টেক্স এআই সার্চ এমসিপি এবং গুগল চ্যাট টুলের মতো ডাউনস্ট্রিম পরিষেবাগুলিকে নিরাপদে কল করার জন্য এই টোকেনটি অত্যন্ত গুরুত্বপূর্ণ। - টুলস সেটআপ : এটি
vertexai_mcp(একটি টুলসেট যা Vertex AI Search Model Context Protocol (MCP) সার্ভারের সাথে সংযোগ স্থাপন করে) এবংsend_direct_messageটুলটিকে ইনিশিয়ালাইজ করে। এর ফলে এজেন্ট আপনার সংযুক্ত ডেটা স্টোরগুলোতে অনুসন্ধান করতে এবং গুগল চ্যাট বার্তা পাঠাতে সক্ষম হয়। - এজেন্ট সংজ্ঞা : এটি
gemini-2.5-flashমডেল ব্যবহার করেroot_agentসংজ্ঞায়িত করে। নির্দেশাবলীতে এজেন্টকে তথ্য পুনরুদ্ধারের জন্য সার্চ টুল এবং বিভিন্ন কাজের জন্যsend_direct_messageটুল ব্যবহারে অগ্রাধিকার দিতে বলা হয়, যা কার্যকরভাবে এজেন্টকে আপনার এন্টারপ্রাইজ ডেটার সাথে সংযুক্ত করে।
...
MODEL = "gemini-2.5-flash"
# Gemini Enterprise authentication injects a bearer token into the ToolContext state.
# The key pattern is "CLIENT_AUTH_NAME_<random_digits>".
# We dynamically parse this token to authenticate our MCP and API calls.
CLIENT_AUTH_NAME = "enterprise-ai"
VERTEXAI_SEARCH_TIMEOUT = 15.0
def get_project_id():
"""Fetches the consumer project ID from the environment natively."""
_, project = google.auth.default()
if project:
return project
raise Exception(f"Failed to resolve GCP Project ID from environment.")
def find_serving_config_path():
"""Dynamically finds the default serving config in the engine."""
project_id = get_project_id()
engines = discoveryengine_v1.EngineServiceClient().list_engines(
parent=f"projects/{project_id}/locations/global/collections/default_collection"
)
for engine in engines:
# engine.name natively contains the numeric Project Number
return f"{engine.name}/servingConfigs/default_serving_config"
raise Exception(f"No Discovery Engines found in project {project_id}")
def _get_access_token_from_context(tool_context: ToolContext) -> str:
"""Helper method to dynamically parse the intercepted bearer token from the context state."""
escaped_name = re.escape(CLIENT_AUTH_NAME)
pattern = re.compile(fr"^{escaped_name}_\d+$")
# Handle ADK varying state object types (Raw Dict vs ADK State)
state_dict = tool_context.state.to_dict() if hasattr(tool_context.state, 'to_dict') else tool_context.state
matching_keys = [k for k in state_dict.keys() if pattern.match(k)]
if matching_keys:
return state_dict.get(matching_keys[0])
raise Exception(f"No bearer token found in ToolContext state matching pattern {pattern.pattern}")
def auth_header_provider(tool_context: ToolContext) -> dict[str, str]:
token = _get_access_token_from_context(tool_context)
return {"Authorization": f"Bearer {token}"}
def send_direct_message(email: str, message: str, tool_context: ToolContext) -> dict:
"""Sends a Google Chat Direct Message (DM) to a specific user by email address."""
chat_client = chat_v1.ChatServiceClient(
credentials=Credentials(token=_get_access_token_from_context(tool_context))
)
# 1. Setup the DM space or find existing one
person = chat_v1.User(
name=f"users/{email}",
type_=chat_v1.User.Type.HUMAN
)
membership = chat_v1.Membership(member=person)
space_req = chat_v1.Space(space_type=chat_v1.Space.SpaceType.DIRECT_MESSAGE)
setup_request = chat_v1.SetUpSpaceRequest(
space=space_req,
memberships=[membership]
)
space_response = chat_client.set_up_space(request=setup_request)
space_name = space_response.name
# 2. Send the message
msg = chat_v1.Message(text=message)
message_request = chat_v1.CreateMessageRequest(
parent=space_name,
message=msg
)
message_response = chat_client.create_message(request=message_request)
return {"status": "success", "message_id": message_response.name, "space": space_name}
vertexai_mcp = McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://discoveryengine.googleapis.com/mcp",
timeout=VERTEXAI_SEARCH_TIMEOUT,
sse_read_timeout=VERTEXAI_SEARCH_TIMEOUT
),
tool_filter=['search'],
# The auth_header_provider dynamically injects the bearer token from the ToolContext
# into the MCP call for authentication.
header_provider=auth_header_provider
)
# Answer nicely the following user queries:
# - Please find my meetings for today, I need their titles and links
# - What is the latest Drive file I created?
# - What is the latest Gmail message I received?
# - Please send the following message to someone@example.com: Hello, this is a test message.
root_agent = LlmAgent(
model=MODEL,
name='enterprise_ai',
instruction=f"""
You are a helpful assistant that always uses the Vertex AI MCP search tool to answer the user's message, unless the user asks you to send a message to someone.
If the user asks you to send a message to someone, use the send_direct_message tool to send the message.
You MUST unconditionally use the Vertex AI MCP search tool to find answer, even if you believe you already know the answer or believe the Vertex AI MCP search tool does not contain the data.
The Vertex AI MCP search tool accesses the user's data through datastores including Google Drive, Google Calendar, and Gmail.
Only use the Vertex AI MCP search tool with servingConfig and query parameters, do not use any other parameters.
Always use the servingConfig {find_serving_config_path()} while using the Vertex AI MCP search tool.
""",
tools=[vertexai_mcp, FunctionTool(send_direct_message)]
)
এপিআই সক্ষম করুন
সমাধানটির জন্য অতিরিক্ত এপিআই সক্রিয় করার প্রয়োজন হবে:
- Google Cloud কনসোলে Vertex AI, Cloud Resource Manager, এবং Google Chat API-গুলো সক্রিয় করুন:
- মেনু ☰ > এপিআই ও পরিষেবা > সক্রিয় এপিআই ও পরিষেবা- তে ক্লিক করুন এবং তারপরে নিশ্চিত করুন যে Vertex AI API , Cloud Resource Manager API , এবং Google Chat API তালিকায় রয়েছে।
OAuth সম্মতি স্ক্রিন আপডেট করুন
সমাধানটির জন্য অতিরিক্ত ডেটা অ্যাক্সেসের প্রয়োজন:
- Google Cloud কনসোলে , মেনু ☰ > Google Auth প্ল্যাটফর্ম > ডেটা অ্যাক্সেস- এ ক্লিক করুন।
- স্কোপ যোগ বা অপসারণ করতে ক্লিক করুন।
- নিম্নলিখিত স্কোপগুলি কপি করে 'ম্যানুয়ালি অ্যাড স্কোপস' ফিল্ডে পেস্ট করুন।
- টেবিলে যোগ করুন-এ ক্লিক করুন, তারপর আপডেট করুন , তারপর সংরক্ষণ করুন ।
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/chat.messages.create
https://www.googleapis.com/auth/chat.spaces.create
- টেবিলে যোগ করুন-এ ক্লিক করুন, তারপর আপডেট করুন , তারপর সংরক্ষণ করুন ।
OAuth ক্লায়েন্টের পরিচয়পত্র আপডেট করুন
সমাধানটির জন্য একটি অতিরিক্ত অনুমোদিত রিডাইরেক্ট ইউআরআই প্রয়োজন:
- Google Cloud কনসোলে , মেনু ☰ > Google Auth প্ল্যাটফর্ম > ক্লায়েন্টস- এ ক্লিক করুন।
- ক্লায়েন্ট নাম
codelabএ ক্লিক করুন। - Authorized redirect URIs সেকশনে, Add URI-তে ক্লিক করুন এবং
https://vertexaisearch.cloud.google.com/static/oauth/oauth.htmlলিখুন। - সংরক্ষণ করুন- এ ক্লিক করুন।
ভার্টেক্স এআই সার্চ এমসিপি সক্ষম করুন
- টার্মিনালে, নিম্নলিখিত কমান্ডটি চালান:
gcloud beta services mcp enable discoveryengine.googleapis.com \
--project=$(gcloud config get-value project)
চ্যাট অ্যাপ কনফিগার করুন
গুগল চ্যাট অ্যাপটি এর প্রাথমিক তথ্য দিয়ে কনফিগার করুন।
- গুগল ক্লাউড কনসোলে , গুগল ক্লাউড সার্চ ফিল্ডে
Google Chat APIলিখে সার্চ করুন, Google Chat API-তে ক্লিক করুন, Manage-এ ক্লিক করুন এবং Configuration-এ ক্লিক করুন।
- অ্যাপের নাম এবং বিবরণ
Gemini Enterpriseএ সেট করুন। - অ্যাভাটার ইউআরএলটি
https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png-এ সেট করুন। - প্রদর্শিত মোডাল ডায়ালগে ‘Enable Interactive features’ থেকে টিক চিহ্ন তুলে দিন, তারপর ‘Disable’-এ ক্লিক করুন।
- লগিং-এ ত্রুটি লগ করুন নির্বাচন করুন।
- সংরক্ষণ করুন- এ ক্লিক করুন।
ভার্টেক্স এআই এজেন্ট ইঞ্জিনে এজেন্ট স্থাপন করুন
আপনার এজেন্টকে ভার্টেক্স এআই এজেন্ট ইঞ্জিন পরিকাঠামোতে স্থাপন করুন।
- এই গিটহাব রিপোজিটরিটি ডাউনলোড করুন।
- টার্মিনালে
solutions/enterprise-ai-agentডিরেক্টরিটি খুলুন এবং তারপর নিম্নলিখিত কমান্ডটি চালান:
# 1. Create and activate a new virtual environment python3 -m venv .venv source .venv/bin/activate # 2. Install poetry and project dependencies pip install poetry poetry install # 3. Deploy the agent adk deploy agent_engine \ --project=$(gcloud config get-value project) \ --region=us-central1 \ --display_name="Enterprise AI" \ enterprise_ai
- যখন আপনি লগ-এ "Deploying to agent engine..." লাইনটি দেখতে পাবেন, তখন একটি নতুন টার্মিনাল খুলুন এবং Vertex AI Reasoning Engine Service Agent- এ প্রয়োজনীয় অনুমতি যোগ করতে নিম্নলিখিত কমান্ডটি চালান:
# 1. Get the current Project ID
PROJECT_ID=$(gcloud config get-value project)
# 2. Extract the Project Number for that ID
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
# 3. Construct the Service Account name
SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com"
# 4. Apply the IAM policy binding
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT" \
--role="roles/discoveryengine.viewer"
- adk deploy কমান্ডটি সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন, তারপর কমান্ড আউটপুটে সবুজ রঙে দেখানো নতুন ডেপ্লয় করা এজেন্টের রিসোর্স নামটি কপি করুন।
জেমিনি এন্টারপ্রাইজে এজেন্ট নিবন্ধন করুন
আপনার ডেপ্লয় করা এজেন্টকে ব্যবহারকারীদের কাছে অ্যাক্সেসযোগ্য করতে Gemini Enterprise-এর সাথে রেজিস্টার করুন।
ক্লাউড কনসোল থেকে একটি নতুন ট্যাবে জেমিনি এন্টারপ্রাইজ খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
-
codelabনামের অ্যাপটিতে ক্লিক করুন। - নেভিগেশন মেনুতে, এজেন্ট-এ ক্লিক করুন।
- + এজেন্ট যোগ করুন -এ ক্লিক করুন।
- এজেন্ট ইঞ্জিনের মাধ্যমে কাস্টম এজেন্টের জন্য 'অ্যাড' এ ক্লিক করুন। ' অথরাইজেশন' সেকশনটি প্রদর্শিত হবে।
- অনুমোদন যোগ করুন -এ ক্লিক করুন।
- অথরাইজেশন নামটি
enterprise-aiতে সেট করুন। এই নামের উপর ভিত্তি করে একটি আইডি তৈরি হবে এবং ফিল্ডের নিচে তা প্রদর্শিত হবে, সেটি কপি করুন। - পূর্ববর্তী ধাপগুলিতে তৈরি ও আপডেট করা OAuth ক্লায়েন্টের মতো একই মানে ক্লায়েন্ট আইডি সেট করুন।
- পূর্ববর্তী ধাপগুলিতে তৈরি ও আপডেট করা OAuth ক্লায়েন্টের মতো একই মানে ক্লায়েন্ট সিক্রেট সেট করুন।
- টোকেন ইউআরআই
https://oauth2.googleapis.com/tokenএ সেট করুন। - পূর্ববর্তী ধাপগুলিতে তৈরি ও আপডেট করা OAuth ক্লায়েন্ট আইডি দিয়ে <CLIENT_ID> প্রতিস্থাপন করার পর Authorization URI-কে নিম্নলিখিত মানে সেট করুন।
https://accounts.google.com/o/oauth2/v2/auth?client_id=<CLIENT_ID>&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.calendars%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.events%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.send%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fchat.messages.create%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fchat.spaces.create&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
- Done-এ ক্লিক করে Next-এ ক্লিক করুন। Configuration সেকশনটি প্রদর্শিত হবে।
- এজেন্টের নাম এবং এজেন্টের বিবরণ
Enterprise AI-তে সেট করুন। - পূর্ববর্তী ধাপগুলিতে কপি করা রিজনিং ইঞ্জিন রিসোর্স নামটি ব্যবহার করে এজেন্ট ইঞ্জিনের রিজনিং ইঞ্জিন সেট করুন। এটির ফরম্যাটটি নিম্নরূপ:
projects/<PROJECT_ID>/locations/<LOCATION>/reasoningEngines/<REASONING_ENGINE_ID>
- তৈরি করুন- এ ক্লিক করুন। নতুন যুক্ত হওয়া এজেন্টটি এখন এজেন্টদের তালিকায় অন্তর্ভুক্ত হয়েছে।
এজেন্টকে চেষ্টা করুন
আপনার কাস্টম এজেন্টের সাথে চ্যাট করে কার্যপ্রবাহটি যাচাই করুন।
- জেমিনি এন্টারপ্রাইজ ওয়েব অ্যাপে, নতুন নিবন্ধিত এজেন্টের সাথে চ্যাট করুন:
- মেনু ☰ > এজেন্ট-এ ক্লিক করুন।
- আপনার প্রতিষ্ঠান থেকে এজেন্ট নির্বাচন করুন।
- চ্যাটে টাইপ করুন,
Please find my meetings for today, I need their titles and linksএবংenterচাপুন। - Authorize-এ ক্লিক করুন, তারপর অনুমোদনের প্রক্রিয়াটি অনুসরণ করুন।
- এজেন্ট ব্যবহারকারীর অ্যাকাউন্টের ওপর নির্ভর করে ক্যালেন্ডার ইভেন্টের একটি তালিকা দিয়ে উত্তর দেয়।
- চ্যাটে,
Please send a Chat message to someone@example.com with the following text: Hello!টাইপ করুন এবংenterচাপুন। - এজেন্ট একটি নিশ্চিতকরণ বার্তা দিয়ে উত্তর দেয়।
৫. গুগল ওয়ার্কস্পেস অ্যাড-অন হিসেবে ডিফল্ট এজেন্ট
এই এজেন্টটি ব্যবহারকারীদের ওয়ার্কস্পেস অ্যাপ UI-এর প্রেক্ষাপটে তাদের স্বাভাবিক ভাষায় ওয়ার্কস্পেস সম্পর্কিত ডেটা অনুসন্ধান করার সুযোগ দেয়। এটি নিম্নলিখিত উপাদানগুলোর উপর নির্ভর করে:
- মডেল: মিথুন।
- ডেটা: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ, নোটবুকএলএম) এবং গুগল সার্চ- এর জন্য জেমিনি এন্টারপ্রাইজ ডেটা স্টোর।
- এজেন্ট হোস্ট: জেমিনি এন্টারপ্রাইজ।
- ইউজার ইন্টারফেস: চ্যাট এবং জিমেইলের জন্য গুগল ওয়ার্কস্পেস অ্যাড-অন (সহজেই ক্যালেন্ডার, ড্রাইভ, ডক্স, শিটস এবং স্লাইডস পর্যন্ত সম্প্রসারণযোগ্য)।
- গুগল ওয়ার্কস্পেস অ্যাড-অন: অ্যাপস স্ক্রিপ্ট, জেমিনি এন্টারপ্রাইজ ও ভার্টেক্স এআই এপিআই, প্রাসঙ্গিক (ব্যবহারকারীর মেটাডেটা, নির্বাচিত জিমেইল বার্তা)।
গুগল ওয়ার্কস্পেস অ্যাড-অনটি স্ট্রিমঅ্যাসিস্ট এপিআই ব্যবহার করে জেমিনি এন্টারপ্রাইজের সাথে সংযুক্ত করা হবে।
ধারণা পর্যালোচনা করুন
গুগল ওয়ার্কস্পেস অ্যাড অন
গুগল ওয়ার্কস্পেস অ্যাড-অন হলো একটি কাস্টমাইজড অ্যাপ্লিকেশন যা এক বা একাধিক গুগল ওয়ার্কস্পেস অ্যাপ্লিকেশনকে (জিমেইল, চ্যাট, ক্যালেন্ডার, ডক্স, ড্রাইভ, মিট, শিটস এবং স্লাইডস) সম্প্রসারিত করে।
অ্যাপস স্ক্রিপ্ট
অ্যাপস স্ক্রিপ্ট হলো গুগল ড্রাইভ দ্বারা চালিত একটি ক্লাউড-ভিত্তিক জাভাস্ক্রিপ্ট প্ল্যাটফর্ম, যা আপনাকে গুগলের বিভিন্ন প্রোডাক্টের সাথে ইন্টিগ্রেট করতে এবং কাজগুলো স্বয়ংক্রিয় করতে সাহায্য করে।
গুগল ওয়ার্কস্পেস কার্ড ফ্রেমওয়ার্ক
গুগল ওয়ার্কস্পেসের কার্ড ফ্রেমওয়ার্ক ডেভেলপারদের সমৃদ্ধ ও ইন্টারেক্টিভ ইউজার ইন্টারফেস তৈরি করতে সক্ষম করে। এর মাধ্যমে সুসংগঠিত ও দৃষ্টিনন্দন কার্ড তৈরি করা যায়, যেগুলোতে টেক্সট, ছবি, বাটন এবং অন্যান্য উইজেট অন্তর্ভুক্ত করা যেতে পারে। এই কার্ডগুলো কাঠামোগত তথ্য প্রদান করে এবং সরাসরি ওয়ার্কস্পেস অ্যাপ্লিকেশনের মধ্যেই দ্রুত পদক্ষেপ গ্রহণের সুযোগ দিয়ে ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে।
সমাধান স্থাপত্য পর্যালোচনা করুন
সোর্স কোড পর্যালোচনা করুন
appsscript.json
নিম্নলিখিত কনফিগারেশনটি অ্যাড-অনটির ট্রিগার এবং অনুমতিসমূহ নির্ধারণ করে।
- অ্যাড-অনটির সংজ্ঞা দেয় : এটি গুগল ওয়ার্কস্পেসকে জানায় যে এই প্রজেক্টটি চ্যাট এবং জিমেইল উভয়ের জন্যই একটি অ্যাড-অন।
- প্রাসঙ্গিক ট্রিগার : জিমেইলের জন্য, এটি একটি
contextualTriggerসেট আপ করে যা ব্যবহারকারী যখনই কোনো ইমেল বার্তা খোলে তখনonAddonEventসক্রিয় করে। এটি অ্যাড-অনটিকে ইমেলের বিষয়বস্তু "দেখতে" সক্ষম করে। - অনুমতিসমূহ : এটি অ্যাড-অনটি চালানোর জন্য প্রয়োজনীয়
oauthScopesগুলির তালিকা দেয়, যেমন বর্তমান ইমেল পড়ার, স্ক্রিপ্টটি চালানোর এবং বাহ্যিক পরিষেবাগুলির (যেমন Gemini Enterprise API) সাথে সংযোগ করার অনুমতি।
...
"addOns": {
"common": {
"name": "Enterprise AI",
"logoUrl": "https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png"
},
"chat": {},
"gmail": {
"contextualTriggers": [
{
"unconditional": {},
"onTriggerFunction": "onAddonEvent"
}
]
}
},
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/discoveryengine.assist.readwrite",
"https://www.googleapis.com/auth/gmail.addons.execute",
"https://www.googleapis.com/auth/gmail.addons.current.message.readonly"
]
...
চ্যাট.জিএস
নিম্নলিখিত কোডটি আগত গুগল চ্যাট বার্তাগুলি পরিচালনা করে।
- বার্তা গ্রহণ :
onMessageফাংশনটি হলো বার্তা আদান-প্রদানের প্রবেশদ্বার। - কনটেক্সট পরিচালনা করে : এটি ব্যবহারকারীর প্রপার্টিতে
space.name(চ্যাট স্পেসের আইডি) সংরক্ষণ করে। এর ফলে, এজেন্ট যখন উত্তর দেওয়ার জন্য প্রস্তুত হয়, তখন সে সঠিকভাবে জানতে পারে যে বার্তাটি কোন কথোপকথনে পোস্ট করতে হবে। - এজেন্টের কাছে দায়িত্ব অর্পণ : এটি
requestAgentকল করে এবং ব্যবহারকারীর বার্তাটি সেই মূল লজিকের কাছে পাঠিয়ে দেয় যা এপিআই (API) যোগাযোগ পরিচালনা করে।
...
// Service that handles Google Chat operations.
// Handle incoming Google Chat message events, actions will be taken via Google Chat API calls
function onMessage(event) {
if (isInDebugMode()) {
console.log(`MESSAGE event received (Chat): ${JSON.stringify(event)}`);
}
// Extract data from the event.
const chatEvent = event.chat;
setChatConfig(chatEvent.messagePayload.space.name);
// Request AI agent to answer the message
requestAgent(chatEvent.messagePayload.message);
// Respond with an empty response to the Google Chat platform to acknowledge execution
return null;
}
// --- Utility functions ---
// The Chat direct message (DM) space associated with the user
const SPACE_NAME_PROPERTY = "DM_SPACE_NAME"
// Sets the Chat DM space name for subsequent operations.
function setChatConfig(spaceName) {
const userProperties = PropertiesService.getUserProperties();
userProperties.setProperty(SPACE_NAME_PROPERTY, spaceName);
console.log(`Space is set to ${spaceName}`);
}
// Retrieved the Chat DM space name to sent messages to.
function getConfiguredChat() {
const userProperties = PropertiesService.getUserProperties();
return userProperties.getProperty(SPACE_NAME_PROPERTY);
}
// Finds the Chat DM space name between the Chat app and the given user.
function findChatAppDm(userName) {
return Chat.Spaces.findDirectMessage(
{ 'name': userName },
{'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}`}
).name;
}
// Creates a Chat message in the configured space.
function createMessage(message) {
const spaceName = getConfiguredChat();
console.log(`Creating message in space ${spaceName}...`);
return Chat.Spaces.Messages.create(
message,
spaceName,
{},
{'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}`}
).name;
}
সাইডবার.জিএস
নিম্নলিখিত কোডটি জিমেইল সাইডবার তৈরি করে এবং ইমেইলের বিষয়বস্তু সংগ্রহ করে।
- UI তৈরি করে :
createSidebarCardWorkspace Card Service ব্যবহার করে ভিজ্যুয়াল ইন্টারফেসটি নির্মাণ করে। এটি একটি টেক্সট ইনপুট এরিয়া এবং একটি "Send message" বাটন সহ একটি সাধারণ লেআউট তৈরি করে। - ইমেইলের প্রেক্ষাপট সংগ্রহ করে :
handleSendMessageএ কোডটি পরীক্ষা করে দেখে যে ব্যবহারকারী বর্তমানে কোনো ইমেইল দেখছেন কিনা (event.gmail.messageId)। যদি তিনি দেখে থাকেন, তবে এটি নিরাপদে ইমেইলটির বিষয় এবং মূল অংশ সংগ্রহ করে ব্যবহারকারীর প্রম্পটে যুক্ত করে দেয়। - ফলাফল প্রদর্শন করে : এজেন্ট সাড়া দিলে, কোডটি উত্তরটি দেখানোর জন্য সাইডবার কার্ডটি আপডেট করে।
...
// Service that handles Gmail operations.
// Triggered when the user opens the Gmail Add-on or selects an email.
function onAddonEvent(event) {
// If this was triggered by a button click, handle it
if (event.parameters && event.parameters.action === 'send') {
return handleSendMessage(event);
}
// Otherwise, just render the default initial sidebar
return createSidebarCard();
}
// Creates the standard Gmail sidebar card consisting of a text input and send button.
// Optionally includes an answer section if a response was generated.
function createSidebarCard(optionalAnswerSection) {
const card = CardService.newCardBuilder();
const actionSection = CardService.newCardSection();
// Create text input for the user's message
const messageInput = CardService.newTextInput()
.setFieldName("message")
.setTitle("Message")
.setMultiline(true);
// Create action for sending the message
const sendAction = CardService.newAction()
.setFunctionName('onAddonEvent')
.setParameters({ 'action': 'send' });
const sendButton = CardService.newTextButton()
.setText("Send message")
.setTextButtonStyle(CardService.TextButtonStyle.FILLED)
.setOnClickAction(sendAction);
actionSection.addWidget(messageInput);
actionSection.addWidget(CardService.newButtonSet().addButton(sendButton));
card.addSection(actionSection);
// Attach the response at the bottom if we have one
if (optionalAnswerSection) {
card.addSection(optionalAnswerSection);
}
return card.build();
}
// Handles clicks from the Send message button.
function handleSendMessage(event) {
const commonEventObject = event.commonEventObject || {};
const formInputs = commonEventObject.formInputs || {};
const messageInput = formInputs.message;
let userMessage = "";
if (messageInput && messageInput.stringInputs && messageInput.stringInputs.value.length > 0) {
userMessage = messageInput.stringInputs.value[0];
}
if (!userMessage || userMessage.trim().length === 0) {
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification().setText("Please enter a message."))
.build();
}
let finalQueryText = `USER MESSAGE TO ANSWER: ${userMessage}`;
// If we have an email selected in Gmail, append its content as context
if (event.gmail && event.gmail.messageId) {
try {
GmailApp.setCurrentMessageAccessToken(event.gmail.accessToken);
const message = GmailApp.getMessageById(event.gmail.messageId);
const subject = message.getSubject();
const bodyText = message.getPlainBody() || message.getBody();
finalQueryText += `\n\nEMAIL THE USER HAS OPENED ON SCREEN:\nSubject: ${subject}\nBody:\n---\n${bodyText}\n---`;
} catch (e) {
console.error("Could not fetch Gmail context: " + e);
// Invalidate the token explicitly so the next prompt requests the missing scopes
ScriptApp.invalidateAuth();
CardService.newAuthorizationException()
.setResourceDisplayName("Enterprise AI")
.setAuthorizationUrl(ScriptApp.getAuthorizationUrl())
.throwException();
}
}
try {
const responseText = queryAgent({ text: finalQueryText, forceNewSession: true });
// We leverage the 'showdown' library to parse the LLM's Markdown output into HTML
// We also substitute markdown listings with arrows and adjust newlines for clearer rendering in the sidebar
let displayedText = substituteListingsFromMarkdown(responseText);
displayedText = new showdown.Converter().makeHtml(displayedText).replace(/\n/g, '\n\n');
const textParagraph = CardService.newTextParagraph();
textParagraph.setText(displayedText);
const answerSection = CardService.newCardSection()
.addWidget(textParagraph);
const updatedCard = createSidebarCard(answerSection);
return CardService.newActionResponseBuilder()
.setNavigation(CardService.newNavigation().updateCard(updatedCard))
.build();
} catch (err) {
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification().setText("Error fetching response: " + err.message))
.build();
}
}
...
এজেন্টহ্যান্ডলার.জিএস
নিম্নলিখিত কোডটি জেমিনি এন্টারপ্রাইজে এপিআই কলটি পরিচালনা করে।
- এপিআই কল পরিচালনা করে :
queryAgentহলো আপনার অ্যাড-অন এবং Gemini Enterprise-এর মধ্যেকার সংযোগকারী। এটি এমন একটি অনুরোধ তৈরি করে যাতে ব্যবহারকারীর জিজ্ঞাসা, তার টাইমজোন এবং সক্রিয় সেশন আইডি অন্তর্ভুক্ত থাকে। - ডাইনামিক ডিসকভারি : কোন ডেটা কানেক্টরগুলো উপলব্ধ আছে তা খুঁজে বের করার জন্য এটি
getAgentDataStoresকল করে। - প্রতিক্রিয়া স্ট্রিম করে : যেহেতু এজেন্টের প্রতিক্রিয়া আসতে কিছুটা সময় লাগতে পারে, তাই এটি সার্ভার-সেন্ট ইভেন্টস (SSE) সহ
streamAssistএপিআই (streamAssist API) ব্যবহার করে। কোডটি প্রতিক্রিয়াটিকে খণ্ডে খণ্ডে সংগ্রহ করে এবং সম্পূর্ণ উত্তরটি পুনর্গঠন করে।
...
// Service that handles Gemini Enterprise AI Agent operations.
// Submits a query to the AI agent and returns the response string synchronously
function queryAgent(input) {
const isNewSession = input.forceNewSession || !PropertiesService.getUserProperties().getProperty(AGENT_SESSION_NAME);
const sessionName = input.forceNewSession ? createAgentSession() : getOrCreateAgentSession();
let systemPrompt = "SYSTEM PROMPT START Do not respond with tables but use bullet points instead.";
if (input.forceNewSession) {
systemPrompt += " Do not ask the user follow-up questions or converse with them as history is not kept in this interface.";
}
systemPrompt += " SYSTEM PROMPT END\n\n";
const queryText = isNewSession ? systemPrompt + input.text : input.text;
const requestPayload = {
"session": sessionName,
"userMetadata": { "timeZone": Session.getScriptTimeZone() },
"query": { "text": queryText },
"toolsSpec": { "vertexAiSearchSpec": { "dataStoreSpecs": getAgentDataStores().map(ds => { dataStore: ds }) } },
"agentsSpec": { "agentSpecs": [{ "agentId": getAgentId() }] }
};
const responseContentText = UrlFetchApp.fetch(
`https://${getLocation()}-discoveryengine.googleapis.com/v1alpha/${getReasoningEngine()}/assistants/default_assistant:streamAssist?alt=sse`,
{
method: 'post',
headers: { 'Authorization': `Bearer ${ScriptApp.getOAuthToken()}` },
contentType: 'application/json',
payload: JSON.stringify(requestPayload),
muteHttpExceptions: true
}
).getContentText();
if (isInDebugMode()) {
console.log(`Response: ${responseContentText}`);
}
const events = responseContentText.split('\n').map(s => s.replace(/^data:\s*/, '')).filter(s => s.trim().length > 0);
console.log(`Received ${events.length} agent events.`);
let answerText = "";
for (const eventJson of events) {
if (isInDebugMode()) {
console.log("Event: " + eventJson);
}
const event = JSON.parse(eventJson);
// Ignore internal events
if (!event.answer) {
console.log(`Ignored: internal event`);
continue;
}
// Handle text replies
const replies = event.answer.replies || [];
for (const reply of replies) {
const content = reply.groundedContent.content;
if (content) {
if (isInDebugMode()) {
console.log(`Processing content: ${JSON.stringify(content)}`);
}
if (content.thought) {
console.log(`Ignored: thought event`);
continue;
}
answerText += content.text;
}
}
if (event.answer.state === "SUCCEEDED") {
console.log(`Answer text: ${answerText}`);
return answerText;
} else if (event.answer.state !== "IN_PROGRESS") {
throw new Error("Something went wrong, check the Apps Script logs for more info.");
}
}
return answerText;
}
// Gets the list of data stores configured for the agent to include in the request.
function getAgentDataStores() {
const responseContentText = UrlFetchApp.fetch(
`https://${getLocation()}-discoveryengine.googleapis.com/v1/${getReasoningEngine().split('/').slice(0, 6).join('/')}/dataStores`,
{
method: 'get',
// Use the add on service account credentials for data store listing access
headers: { 'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}` },
contentType: 'application/json',
muteHttpExceptions: true
}
).getContentText();
if (isInDebugMode()) {
console.log(`Response: ${responseContentText}`);
}
const dataStores = JSON.parse(responseContentText).dataStores.map(ds => ds.name);
if (isInDebugMode()) {
console.log(`Data stores: ${dataStores}`);
}
return dataStores;
}
...
পরিষেবা অ্যাকাউন্ট শুরু করুন
অ্যাড-অনটির সার্ভার-সাইড কার্যক্রম অনুমোদন করার জন্য একটি নির্দিষ্ট সার্ভিস অ্যাকাউন্ট তৈরি করুন।
গুগল ক্লাউড কনসোলে , এই ধাপগুলো অনুসরণ করুন:
- মেনু ☰ > আইএএম ও অ্যাডমিন > সার্ভিস অ্যাকাউন্টস > + সার্ভিস অ্যাকাউন্ট তৈরি করুন- এ ক্লিক করুন।
- সার্ভিস অ্যাকাউন্টের নাম
ge-add-onএ সেট করুন।
- তৈরি করুন-এ ক্লিক করুন এবং চালিয়ে যান ।
- অনুমতিতে ডিসকভারি ইঞ্জিন ভিউয়ার রোলটি যোগ করুন।
- Continue-তে ক্লিক করুন, তারপর Done-এ ক্লিক করুন। আপনাকে সার্ভিস অ্যাকাউন্টস পেজে রিডাইরেক্ট করা হবে এবং আপনি আপনার তৈরি করা সার্ভিস অ্যাকাউন্টটি দেখতে পাবেন।
- নতুন তৈরি করা সার্ভিস অ্যাকাউন্টটি নির্বাচন করুন, তারপর Keys ট্যাবে যান।
- Add key-তে ক্লিক করুন, তারপর Create new key-তে ক্লিক করুন।
- JSON নির্বাচন করুন, তারপর Create-এ ক্লিক করুন।
- ডায়ালগটি বন্ধ হয়ে যায় এবং আপনার নতুন তৈরি করা পাবলিক/প্রাইভেট কী পেয়ারটি স্বয়ংক্রিয়ভাবে আপনার স্থানীয় পরিবেশে একটি JSON ফাইল হিসেবে ডাউনলোড হয়ে যায়।
অ্যাপস স্ক্রিপ্ট প্রজেক্ট তৈরি এবং কনফিগার করুন
অ্যাড-অন কোড হোস্ট করতে একটি নতুন অ্যাপস স্ক্রিপ্ট প্রজেক্ট তৈরি করুন এবং এর সংযোগ বৈশিষ্ট্যগুলো কনফিগার করুন।
- এন্টারপ্রাইজ এআই অ্যাড-অন অ্যাপস স্ক্রিপ্ট প্রজেক্টটি খুলতে নিচের বাটনটিতে ক্লিক করুন:
- ওভারভিউ-তে ক্লিক করুন > একটি অনুলিপি তৈরি করুন ।
- আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে, স্ক্রিপ্ট প্রোপার্টি যোগ করতে প্রজেক্ট সেটিংস > স্ক্রিপ্ট প্রোপার্টি সম্পাদনা > স্ক্রিপ্ট প্রোপার্টি যোগ করুন -এ ক্লিক করুন।
- REASONING_ENGINE_RESOURCE_NAME- কে Gemini Enterprise অ্যাপ্লিকেশন রিসোর্সের নামে সেট করুন। এর গঠনটি নিম্নরূপ:
# 1. Replace PROJECT_ID with the Google Cloud project ID. # 2. Replace GE_APP_ID with the codelab app ID found in Google Cloud console > Gemini Enterprise > Apps. projects/<PROJECT_ID>/locations/global/collections/default_collection/engines/<GE_APP_ID>
- পূর্ববর্তী ধাপে ডাউনলোড করা সার্ভিস অ্যাকাউন্ট ফাইল থেকে প্রাপ্ত JSON কী-টি দিয়ে APP_SERVICE_ACCOUNT_KEY সেট করুন।
- স্ক্রিপ্ট প্রোপার্টি সংরক্ষণ করতে ক্লিক করুন
জিমেইল এবং চ্যাটে স্থাপন করুন
অ্যাড-অনটি সরাসরি Gmail এবং Google Chat-এর মধ্যে পরীক্ষা করার জন্য স্থাপন করুন।
আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে এই ধাপগুলো অনুসরণ করুন:
- Deploy > Test deployments-এ ক্লিক করুন, তারপর Install-এ ক্লিক করুন। এটি এখন Gmail-এ উপলব্ধ।
- হেড ডিপ্লয়মেন্ট আইডি- এর অধীনে কপি-তে ক্লিক করুন।
গুগল ক্লাউড কনসোলে , এই ধাপগুলো অনুসরণ করুন:
- গুগল ক্লাউড সার্চ ফিল্ডে
Google Chat APIঅনুসন্ধান করুন, Google Chat API-তে ক্লিক করুন, Manage-এ ক্লিক করুন এবং Configuration-এ ক্লিক করুন।
- ইন্টারেক্টিভ বৈশিষ্ট্যগুলি সক্ষম করুন নির্বাচন করুন।
- স্পেস এবং গ্রুপ কথোপকথনে যোগদান করার বিকল্পটি অনির্বাচিত করুন।
- সংযোগ সেটিংস-এর অধীনে, অ্যাপস স্ক্রিপ্ট নির্বাচন করুন।
- পূর্ববর্তী ধাপগুলিতে কপি করা হেড ডিপ্লয়মেন্ট আইডি -তে ডিপ্লয়মেন্ট আইডি সেট করুন।
- ‘Visibility’-এর অধীনে, ‘Make this Chat app available to specific people and groups in Your Workspace Domain’ নির্বাচন করুন এবং আপনার ইমেল ঠিকানা লিখুন।
- সংরক্ষণ করুন- এ ক্লিক করুন।
অ্যাড অন ব্যবহার করে দেখুন
আপনার লাইভ অ্যাড-অনটি ডেটা সংগ্রহ করতে এবং প্রাসঙ্গিকভাবে প্রশ্নের উত্তর দিতে পারে কিনা, তা যাচাই করতে এটির সাথে ইন্টারঅ্যাক্ট করুন।
একটি নতুন ট্যাবে গুগল চ্যাট খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
- Gemini Enterprise চ্যাট অ্যাপের মাধ্যমে একটি সরাসরি বার্তা পাঠানোর স্থান খুলুন।
- কনফিগার-এ ক্লিক করুন এবং প্রমাণীকরণ প্রক্রিয়াটি অনুসরণ করুন।
- "
What are my meetings for today?টাইপ করুন এবংenterচাপুন। Gemini Enterprise Chat অ্যাপটি ফলাফলসহ উত্তর দেবে।
নতুন ট্যাবে Gmail খুলুন, তারপর এই ধাপগুলো অনুসরণ করুন:
- নিজেকে একটি ইমেল পাঠান, যার সাবজেক্ট হবে
We need to talkএবং বডিতে লিখবেন ‘Are you available today between 8 and 9 AM? - নতুন প্রাপ্ত ইমেল বার্তাটি খুলুন।
- এন্টারপ্রাইজ এআই অ্যাড-অন সাইডবারটি খুলুন।
- বার্তাটি '
Am I?তে সেট করুন। - বার্তা পাঠান- এ ক্লিক করুন।
- বাটনটির পরে উত্তরটি প্রদর্শিত হয়।
৬. পরিষ্কার করুন
গুগল ক্লাউড প্রজেক্টটি মুছে ফেলুন
এই কোডল্যাবে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে কোনো চার্জ হওয়া এড়াতে, আমরা আপনাকে গুগল ক্লাউড প্রজেক্টটি ডিলিট করে দেওয়ার পরামর্শ দিচ্ছি।
গুগল ক্লাউড কনসোলে , এই ধাপগুলো অনুসরণ করুন:
- মেনু ☰ > আইএএম ও অ্যাডমিন > সেটিংস-এ ক্লিক করুন।
- শাট ডাউন-এ ক্লিক করুন।
- প্রজেক্ট আইডিটি প্রবেশ করান।
- যাইহোক, শাট ডাউন-এ ক্লিক করুন।
৭. অভিনন্দন
Congratulations! You built solutions that harness the power of bringing Gemini Enterprise and Google Workspace closer for workers!
এরপর কী?
We only showcase the most typical use cases in this codelab, but there are plenty of expansion areas that you might want to consider in your solutions, such as the following:
- Use AI-empowered developer tools such as Gemini CLI and Antigravity.
- Integrate with other agent frameworks and tools such as custom MCPs, custom function calls, and generative UIs.
- Integrate with other AI models, including customs, hosted in dedicated platforms such as Vertex AI.
- Integrate with other agents, hosted in dedicated platforms such as Dialogflow or by third parties via the Cloud Marketplace.
- Publish agents on the Cloud Marketplace to empower teams, organizations or public users.
আরও জানুন
There are plenty of resources available for developers such as YouTube videos, documentation websites, code samples, and tutorials:
- গুগল ক্লাউড ডেভেলপার সেন্টার
- Supported products | Google Cloud MCP servers
- A2UI
- Model Garden on Vertex AI | Google Cloud
- Agents overview | Gemini Enterprise | Google Cloud Documentation
- Scaling AI agents with Google Cloud Marketplace and Gemini Enterprise
- Offer AI agents through Google Cloud Marketplace
- Google Workspace Developers YouTube channel - Welcome Developers!
- Google Workspace Developers Website
- GitHub repository for all Google Workspace add on samples






































