Google Workspace-এর সাথে Vertex AI এজেন্টগুলিকে একীভূত করুন

১. শুরু করার আগে

99afae2505f696fb.png সম্পর্কে

ভার্টেক্স এআই কী?

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

  • মডেল গার্ডেনে প্রবেশ করুন: নির্দিষ্ট এজেন্ট কাজের জন্য উপযুক্ত খুঁজে পেতে সম্পূর্ণ জেমিনি পরিবার, তৃতীয় পক্ষের মডেল এবং বিশেষায়িত ওপেন-সোর্স মডেল সহ ১৫০+ এরও বেশি ফাউন্ডেশন মডেল থেকে বেছে নিন।
  • স্থপতি জটিল অর্কেস্ট্রেশন: ভার্টেক্স এআই স্বায়ত্তশাসিত এজেন্ট ডিজাইন করার জন্য কাঠামো প্রদান করে যা পরিকল্পনা, বহু-পদক্ষেপের কাজ সম্পাদন এবং বহিরাগত API কল করার জন্য যুক্তি ব্যবহার করে।
  • এন্টারপ্রাইজ-গ্রেড গ্রাউন্ডিং: হ্যালুসিনেশন দূর করতে এবং তথ্যগত নির্ভুলতা নিশ্চিত করতে এজেন্টদের উচ্চ-কার্যক্ষমতাসম্পন্ন RAG (Retrieval-Augmented Generation) সহ লাইভ ব্যবসায়িক ডেটার সাথে সংযুক্ত করুন।
  • DevOps: এজেন্টের কর্মক্ষমতা এবং নিরাপত্তা পরিমাপের জন্য শক্তিশালী SDK, API এবং মূল্যায়ন সরঞ্জামগুলির সাহায্যে বিদ্যমান CI/CD পাইপলাইনে এজেন্ট ডেভেলপমেন্টকে নির্বিঘ্নে একীভূত করুন।
  • শিল্প-শক্তির নিরাপত্তা: ভার্টেক্স এআই নিশ্চিত করে যে প্রশিক্ষণ বা গ্রাউন্ডিংয়ের জন্য ব্যবহৃত গ্রাহকের ডেটা ব্যক্তিগত, এনক্রিপ্ট করা এবং বিশ্বব্যাপী বসবাসের প্রয়োজনীয়তার সাথে সঙ্গতিপূর্ণ থাকে।
  • অপ্টিমাইজড অবকাঠামো: গুগলের বিশ্বমানের TPU এবং GPU ক্লাস্টারগুলিতে এজেন্টিক ওয়ার্কলোড অনায়াসে স্কেল করুন, এমনকি সবচেয়ে চাহিদাপূর্ণ বিশ্বব্যাপী অ্যাপ্লিকেশনগুলির জন্যও কম-লেটেন্সি কর্মক্ষমতা নিশ্চিত করুন।

127f2ed7d484722c.png সম্পর্কে

গুগল ওয়ার্কস্পেস কী?

গুগল ওয়ার্কস্পেস হল ক্লাউড-ভিত্তিক উৎপাদনশীলতা এবং সহযোগিতামূলক সমাধানের একটি সংগ্রহ যা ব্যক্তি, স্কুল এবং ব্যবসার জন্য ডিজাইন করা হয়েছে:

  • যোগাযোগ: পেশাদার ইমেল পরিষেবা (Gmail), ভিডিও কনফারেন্সিং (Meet), এবং টিম মেসেজিং (চ্যাট)।
  • কন্টেন্ট তৈরি: ডকুমেন্ট লেখার (ডক্স), স্প্রেডশিট তৈরি (শিট) এবং প্রেজেন্টেশন ডিজাইন করার (স্লাইড) সরঞ্জাম।
  • সংগঠন: ভাগ করা ক্যালেন্ডার (ক্যালেন্ডার) এবং ডিজিটাল নোট-টেকিং (কিপ)।
  • স্টোরেজ: নিরাপদে ফাইল সংরক্ষণ এবং ভাগ করে নেওয়ার জন্য কেন্দ্রীভূত ক্লাউড স্পেস (ড্রাইভ)।
  • ব্যবস্থাপনা: ব্যবহারকারী এবং নিরাপত্তা সেটিংস পরিচালনা করার জন্য প্রশাসনিক নিয়ন্ত্রণ (ওয়ার্কস্পেস অ্যাডমিন কনসোল)।

কোন ধরণের কাস্টম ইন্টিগ্রেশন?

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

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

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

পূর্বশর্ত

আপনি যদি আপনার নিজের পরিবেশের সমস্ত ধাপ অনুসরণ করতে চান, তাহলে আপনার প্রয়োজন হবে:

তুমি কী তৈরি করবে

এই কোডল্যাবে, আমরা Vertex AI এজেন্টদের সাথে তিনটি সমাধান তৈরি করেছি যা Google Workspace-এর সাথে দৃঢ়ভাবে একীভূত। তারা এমন স্থাপত্য নিদর্শন প্রদর্শন করবে যা ডেটা, অ্যাকশন এবং UI-এর সাথে ইন্টারঅ্যাক্ট করতে ব্যবহার করা যেতে পারে।

Vertex AI Search অ্যাপ

এই এজেন্ট ব্যবহারকারীদের তাদের স্বাভাবিক ভাষায় ওয়ার্কস্পেসের জন্য ডেটা অনুসন্ধান এবং পদক্ষেপ নেওয়ার অনুমতি দেয়। এটি নিম্নলিখিত উপাদানগুলির উপর নির্ভর করে:

  • মডেল: মিথুন।
  • ডেটা এবং অ্যাকশন: Vertex AI গুগল ওয়ার্কস্পেসের (ক্যালেন্ডার, জিমেইল, ড্রাইভ) জন্য ডেটা সঞ্চয় করে।
  • এজেন্ট হোস্ট: ভার্টেক্স এআই অনুসন্ধান।
  • UI: ভার্টেক্স এআই সার্চ ওয়েব উইজেট।

d276ff8e2b9d0ddf.png সম্পর্কে

কাস্টম এজেন্ট

এই এজেন্ট ব্যবহারকারীদের কাস্টম টুল এবং নিয়ম ব্যবহার করে তাদের স্বাভাবিক ভাষায় Workspace-এর জন্য ডেটা অনুসন্ধান এবং পদক্ষেপ নেওয়ার অনুমতি দেয়। এটি নিম্নলিখিত উপাদানগুলির উপর নির্ভর করে:

  • মডেল: মিথুন।
  • ডেটা এবং অ্যাকশন: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ), গুগল-পরিচালিত ভার্টেক্স এআই সার্চ মডেল কনটেক্সট প্রোটোকল (এমসিপি) সার্ভার, গুগল চ্যাট বার্তা পাঠানোর জন্য কাস্টম টুল ফাংশন (গুগল চ্যাট এপিআই এর মাধ্যমে) এর জন্য ভার্টেক্স এআই ডেটা সঞ্চয় করে।
  • এজেন্ট তৈরির সরঞ্জাম: এজেন্ট ডেভেলপমেন্ট কিট (ADK)।
  • এজেন্ট হোস্ট: ভার্টেক্স এআই এজেন্ট ইঞ্জিন।
  • UI: ADK ওয়েব।

145f47f45332e6be.png সম্পর্কে

293ec4d3e2bb6a0.png সম্পর্কে

একটি ভদ্রলোক Google Workspace অ্যাড-অন

এই এজেন্ট ব্যবহারকারীদের Workspace অ্যাপ UI-এর প্রেক্ষাপটে তাদের স্বাভাবিক ভাষায় Workspace-এর ডেটা অনুসন্ধান করার অনুমতি দেয়। এটি নিম্নলিখিত উপাদানগুলির উপর নির্ভর করে:

  • মডেল: মিথুন।
  • ডেটা এবং অ্যাকশন: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ), গুগল-পরিচালিত ভার্টেক্স এআই সার্চ মডেল কনটেক্সট প্রোটোকল (এমসিপি) সার্ভার, গুগল চ্যাট বার্তা পাঠানোর জন্য কাস্টম টুল ফাংশন (গুগল চ্যাট এপিআই এর মাধ্যমে) এর জন্য ভার্টেক্স এআই ডেটা সঞ্চয় করে।
  • এজেন্ট তৈরির সরঞ্জাম: এজেন্ট ডেভেলপমেন্ট কিট (ADK)।
  • এজেন্ট হোস্ট: ভার্টেক্স এআই এজেন্ট ইঞ্জিন।
  • UI: চ্যাট এবং জিমেইলের জন্য গুগল ওয়ার্কস্পেস অ্যাড-অন (ক্যালেন্ডার, ড্রাইভ, ডক্স, শিট এবং স্লাইডে সহজেই সম্প্রসারিত করা যায়)।
  • গুগল ওয়ার্কস্পেস অ্যাড-অন: অ্যাপস স্ক্রিপ্ট, ভার্টেক্স এআই এজেন্ট ইঞ্জিন এপিআই, প্রাসঙ্গিক (নির্বাচিত জিমেইল বার্তা)।

172da43f310a0579.png সম্পর্কে

840b494aa5eaa1ef.png - [অনলাইন].

তুমি কি শিখবে

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

2. সেট আপ করুন

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

ধারণাগুলি পর্যালোচনা করুন

ভার্টেক্স এআই অ্যাপ্লিকেশন

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

ভার্টেক্স এআই ডেটা স্টোর

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

ভার্টেক্স এআই অ্যাপ্লিকেশন সেটিংস শুরু করুন

একটি নতুন ট্যাবে গুগল ক্লাউড কনসোল খুলুন, তারপর এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার প্রকল্পটি নির্বাচন করুন।
  2. গুগল ক্লাউড অনুসন্ধান ক্ষেত্রে, এআই অ্যাপ্লিকেশনগুলিতে যান

  1. শর্তাবলী পর্যালোচনা এবং সম্মত হওয়ার পর Continue-এ ক্লিক করুন এবং API সক্রিয় করুন
  2. সেটিংসে নেভিগেট করুন।
  3. প্রমাণীকরণ ট্যাবে, global সম্পাদনা করুন।

93b0cc6ed63fba0c.png সম্পর্কে

  1. Google Identity নির্বাচন করুন, তারপর Save এ ক্লিক করুন।

5c01b4cbeebaa93b.png দ্বারা পোস্ট করা 1 অনুবাদ, বিস্তারিত সব অনুবাদ

API গুলি সক্ষম করুন

ভার্টেক্স এআই ওয়ার্কস্পেস ডেটা স্টোরগুলির জন্য API গুলি সক্ষম করা প্রয়োজন:

  1. গুগল ক্লাউড কনসোলে , ক্যালেন্ডার, জিমেইল এবং পিপল এপিআই সক্ষম করুন:

3877dcaa56624d0b.png সম্পর্কে

  1. মেনু ☰ > APIs & Services > Enabled APIs & Services- এ ক্লিক করুন এবং তারপর নিশ্চিত করুন যে Google Calendar API , Gmail API , এবং People API তালিকায় রয়েছে।

ডেটা স্টোর তৈরি করুন

গুগল ড্রাইভ ডেটা স্টোর তৈরি করুন:

  1. গুগল ক্লাউড কনসোলে, AI অ্যাপ্লিকেশনগুলিতে যান, তারপর ডেটা স্টোরগুলিতে নেভিগেট করুন।

  1. + ডেটা স্টোর তৈরি করুন এ ক্লিক করুন।
  2. Source -এ, Google Drive -এর অধীনে, Select -এ ক্লিক করুন।

6939363368bde36d.png সম্পর্কে

  1. Data তে, All নির্বাচন করুন, এবং Continue এ ক্লিক করুন।

5044243322acec9e.png সম্পর্কে

  1. কনফিগারেশনে , ডেটা সংযোগকারীর নাম drive সেট করুন এবং প্রযোজ্য চার্জ পর্যালোচনা এবং সম্মত হওয়ার পরে চালিয়ে যান ক্লিক করুন।

1f5deb1aeecee983.png সম্পর্কে

  1. প্রাইসিং -এ, আপনার পছন্দের মূল্য নির্ধারণের মডেলটি নির্বাচন করুন এবং তৈরি করুন -এ ক্লিক করুন। এই কোডল্যাবের প্রেক্ষাপটে সাধারণ মূল্য নির্ধারণের পরামর্শ দেওয়া হচ্ছে।
  2. আপনাকে স্বয়ংক্রিয়ভাবে ডেটা স্টোরে পুনঃনির্দেশিত করা হবে যেখানে আপনি নতুন যোগ করা ডেটা স্টোর দেখতে পাবেন।

গুগল ক্যালেন্ডার ডেটা স্টোর তৈরি করুন:

  1. + ডেটা স্টোর তৈরি করুন এ ক্লিক করুন।
  2. উৎস বিভাগে, Google Calendar অনুসন্ধান করুন এবং নির্বাচন করুন ক্লিক করুন।
  3. অ্যাকশন বিভাগে, Skip এ ক্লিক করুন।
  4. কনফিগারেশন বিভাগে, ডেটা সংযোগকারীর নাম calendar সেট করুন।
  5. তৈরি করুন ক্লিক করুন।
  6. আপনাকে স্বয়ংক্রিয়ভাবে ডেটা স্টোরে পুনঃনির্দেশিত করা হবে যেখানে আপনি নতুন যোগ করা ডেটা স্টোর দেখতে পাবেন।

গুগল জিমেইল ডেটা স্টোর তৈরি করুন:

  1. + নতুন ডেটা স্টোরে ক্লিক করুন।
  2. সোর্স বিভাগে, গুগল জিমেইল অনুসন্ধান করুন এবং নির্বাচন করুন ক্লিক করুন।
  3. অ্যাকশন বিভাগে, Skip এ ক্লিক করুন।
  4. কনফিগারেশন বিভাগে, ডেটা সংযোগকারীর নামটি gmail এ সেট করুন।
  5. তৈরি করুন ক্লিক করুন।
  6. আপনাকে স্বয়ংক্রিয়ভাবে ডেটা স্টোরে পুনঃনির্দেশিত করা হবে যেখানে আপনি নতুন যোগ করা ডেটা স্টোর দেখতে পাবেন।

৩. ভার্টেক্স এআই সার্চ অ্যাপ

এই এজেন্ট ব্যবহারকারীদের তাদের স্বাভাবিক ভাষায় ওয়ার্কস্পেসের জন্য ডেটা অনুসন্ধান এবং পদক্ষেপ নেওয়ার অনুমতি দেয়। এটি নিম্নলিখিত উপাদানগুলির উপর নির্ভর করে:

  • মডেল: মিথুন।
  • ডেটা এবং অ্যাকশন: Vertex AI গুগল ওয়ার্কস্পেসের (ক্যালেন্ডার, জিমেইল, ড্রাইভ) জন্য ডেটা সঞ্চয় করে।
  • এজেন্ট হোস্ট: ভার্টেক্স এআই অনুসন্ধান।
  • UI: ভার্টেক্স এআই সার্চ ওয়েব উইজেট।

ধারণাগুলি পর্যালোচনা করুন

Vertex AI Search অ্যাপ

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

ভার্টেক্স এআই সার্চ ওয়েব উইজেট

ভার্টেক্স এআই সার্চ ওয়েব উইজ টি হল একটি পূর্ব-নির্মিত, কাস্টমাইজযোগ্য UI উপাদান যা ডেভেলপারদের ন্যূনতম কোডিং সহ সরাসরি একটি ওয়েবসাইটে একটি এআই-চালিত সার্চ বার এবং ফলাফল ইন্টারফেস এম্বেড করতে দেয়।

ভার্টেক্স এআই সার্চ প্রিভিউ

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

সমাধান স্থাপত্য পর্যালোচনা করুন

1f337dc91da74391.png সম্পর্কে

অ্যাপ তৈরি করুন

ক্লাউড কনসোল থেকে AI অ্যাপ্লিকেশন > অ্যাপ খুলুন, তারপর এই পদক্ষেপগুলি অনুসরণ করুন:

  1. + অ্যাপ তৈরি করুন এ ক্লিক করুন।
  2. টাইপ- এ, কাস্টম অনুসন্ধান (সাধারণ) এর অধীনে, তৈরি করুন-এ ক্লিক করুন।

9714a5fff49b5e1b.png সম্পর্কে

  1. কনফিগারেশনে , দাম পর্যালোচনা এবং সম্মত হওয়ার পরে এন্টারপ্রাইজ সংস্করণের বৈশিষ্ট্য এবং জেনারেটিভ রেসপন্স পরীক্ষা করুন।
  2. অ্যাপের নাম codelab এ সেট করুন।
  3. নামের উপর ভিত্তি করে একটি আইডি তৈরি করা হয় এবং ক্ষেত্রের নীচে প্রদর্শিত হয়, এটি অনুলিপি করুন।
  4. কোম্পানির নাম Codelab এ সেট করুন।
  5. মাল্টি-রিজিওনকে global (Global) তে সেট করুন।
  6. চালিয়ে যান ক্লিক করুন।

327702cd837cbb18.png সম্পর্কে

  1. Data- তে, ড্রাইভ , জিমেইল এবং ক্যালেন্ডার ডেটা স্টোর নির্বাচন করুন, তারপর Continue-এ ক্লিক করুন।

5745607f3c43d5c0.png সম্পর্কে

  1. প্রাইসিং -এ, আপনার পছন্দের মূল্য নির্ধারণের মডেলটি নির্বাচন করুন এবং তৈরি করুন -এ ক্লিক করুন। এই কোডল্যাবের প্রেক্ষাপটে সাধারণ মূল্য নির্ধারণের পরামর্শ দেওয়া হচ্ছে।
  2. অ্যাপটি তৈরি করা হয় এবং আপনাকে স্বয়ংক্রিয়ভাবে AI অ্যাপ্লিকেশন > অ্যাপস > কোডল্যাব > অ্যাপ ওভারভিউতে পুনঃনির্দেশিত করা হয়।
  3. সংযুক্ত ডেটা স্টোরে নেভিগেট করুন।
  4. কয়েক মিনিট পরে, সমস্ত সংযুক্ত ডেটা স্টোর স্ট্যাটাস সক্রিয় হওয়া উচিত।

d53ed9d9d1ced955.png সম্পর্কে

ওয়েব উইজেট কনফিগার করুন

  1. কনফিগারেশনে নেভিগেট করুন।
  2. UI ট্যাবে, Search টাইপটিকে Search with follow-ups এ সেট করুন, তারপর Save and publish এ ক্লিক করুন।

af1ca3bd78e1cb4f.png সম্পর্কে

অ্যাপটি ব্যবহার করে দেখুন

  1. Preview- এ নেভিগেট করুন, ওয়েব উইজেট প্রদর্শিত হবে।
  2. চ্যাটে, Do I have any meetings today? টাইপ করুন এবং এন্টার enter
  3. চ্যাটে, Did I receive an email on March 1st 2026? টাইপ করুন এবং enter টিপুন।
  4. চ্যাটে, Give me the title of the latest Drive file I created টাইপ করুন এবং enter টিপুন।

d276ff8e2b9d0ddf.png সম্পর্কে

৪. কাস্টম এজেন্ট

এই এজেন্ট ব্যবহারকারীদের কাস্টম টুল এবং নিয়ম ব্যবহার করে তাদের স্বাভাবিক ভাষায় Workspace-এর জন্য ডেটা অনুসন্ধান এবং পদক্ষেপ নেওয়ার অনুমতি দেয়। এটি নিম্নলিখিত উপাদানগুলির উপর নির্ভর করে:

  • মডেল: মিথুন।
  • ডেটা এবং অ্যাকশন: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ), গুগল-পরিচালিত ভার্টেক্স এআই সার্চ মডেল কনটেক্সট প্রোটোকল (এমসিপি) সার্ভার, গুগল চ্যাট বার্তা পাঠানোর জন্য কাস্টম টুল ফাংশন (গুগল চ্যাট এপিআই এর মাধ্যমে) এর জন্য ভার্টেক্স এআই ডেটা সঞ্চয় করে।
  • এজেন্ট তৈরির সরঞ্জাম: এজেন্ট ডেভেলপমেন্ট কিট (ADK)।
  • এজেন্ট হোস্ট: ভার্টেক্স এআই এজেন্ট ইঞ্জিন।
  • UI: ADK ওয়েব।

ধারণাগুলি পর্যালোচনা করুন

এজেন্ট ডেভেলপমেন্ট কিট (ADK)

এজেন্ট ডেভেলপমেন্ট কিট (ADK) হল একটি বিশেষায়িত সরঞ্জাম এবং কাঠামোর স্যুট যা যুক্তি, মেমরি ব্যবস্থাপনা এবং সরঞ্জাম একীকরণের জন্য পূর্ব-নির্মিত মডিউল সরবরাহ করে স্বায়ত্তশাসিত AI এজেন্ট তৈরিকে সহজ করার জন্য ডিজাইন করা হয়েছে।

মডেল কনটেক্সট প্রোটোকল (এমসিপি)

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

ফাংশন টুল

একটি ফাংশন টুল হল একটি পূর্বনির্ধারিত এক্সিকিউটেবল রুটিন যা একটি AI মডেল নির্দিষ্ট ক্রিয়া সম্পাদন করতে বা বহিরাগত সিস্টেম থেকে রিয়েল-টাইম ডেটা পুনরুদ্ধার করতে ট্রিগার করতে পারে, যা এর ক্ষমতাগুলিকে সাধারণ টেক্সট জেনারেশনের বাইরেও প্রসারিত করে।

ADK Web সম্পর্কে

ADK ওয়েব হল বিল্ট-ইন ডেভেলপমেন্ট UI যা সহজে ডেভেলপমেন্ট এবং ডিবাগিংয়ের জন্য ADK SDK এর সাথে আসে।

সমাধান স্থাপত্য পর্যালোচনা করুন

অনুসরণ

সোর্স কোড পর্যালোচনা করুন

এজেন্ট.পিআই

...
MODEL = "gemini-2.5-flash"

# Access token for authentication
ACCESS_TOKEN = os.environ.get("ACCESS_TOKEN")
if not ACCESS_TOKEN:
    raise ValueError("ACCESS_TOKEN environment variable must be set")

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 send_direct_message(email: str, message: str) -> dict:
    """Sends a Google Chat Direct Message (DM) to a specific user by email address."""
    chat_client = chat_v1.ChatServiceClient(
        credentials=Credentials(token=ACCESS_TOKEN)
    )

    # 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,
        headers={"Authorization": f"Bearer {ACCESS_TOKEN}"}
    ),
    tool_filter=['search']
)

# 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)]
)

সোর্স কোড ডাউনলোড করুন

  1. এই GitHub সংগ্রহস্থলটি ডাউনলোড করুন।

  1. একটি টার্মিনালে, solutions/enterprise-ai-agent-local ডিরেক্টরিটি খুলুন।

API গুলি সক্ষম করুন

সমাধানটির জন্য অতিরিক্ত API সক্রিয়করণ প্রয়োজন:

  1. গুগল ক্লাউড কনসোলে , ভার্টেক্স এআই, ক্লাউড রিসোর্স ম্যানেজার এবং গুগল চ্যাট এপিআই সক্ষম করুন:

60bae4065338c5bf.png - সর্বশেষ সংস্করণ।

  1. মেনু ☰ > APIs & Services > Enabled APIs & Services- এ ক্লিক করুন এবং তারপর নিশ্চিত করুন যে Vertex AI API , Cloud Resource Manager API , এবং Google Chat API তালিকায় রয়েছে।

সমাধানটির জন্য একটি সম্মতি স্ক্রিন কনফিগারেশন প্রয়োজন:

  1. গুগল ক্লাউড কনসোলে , মেনু ☰ > গুগল অথ প্ল্যাটফর্ম > ব্র্যান্ডিং এ ক্লিক করুন।

  1. শুরু করুন ক্লিক করুন।
  2. অ্যাপ তথ্যের অধীনে, অ্যাপের নাম Codelab এ সেট করুন।
  3. ব্যবহারকারীর সহায়তা ইমেল বিভাগে, এমন একটি সহায়তা ইমেল ঠিকানা বেছে নিন যেখানে ব্যবহারকারীদের সম্মতি সম্পর্কে প্রশ্ন থাকলে তারা আপনার সাথে যোগাযোগ করতে পারবেন।
  4. পরবর্তী ক্লিক করুন।
  5. অডিয়েন্স এর অধীনে, অভ্যন্তরীণ নির্বাচন করুন।
  6. পরবর্তী ক্লিক করুন।
  7. যোগাযোগের তথ্য এর অধীনে, একটি ইমেল ঠিকানা লিখুন যেখানে আপনার প্রকল্পের যেকোনো পরিবর্তন সম্পর্কে আপনাকে অবহিত করা যেতে পারে।
  8. পরবর্তী ক্লিক করুন।
  9. Finish এর অধীনে, Google API পরিষেবা ব্যবহারকারীর ডেটা নীতি পর্যালোচনা করুন এবং যদি আপনি সম্মত হন, তাহলে আমি Google API পরিষেবাগুলিতে সম্মত: ব্যবহারকারীর ডেটা নীতি নির্বাচন করুন।
  10. Continue-এ ক্লিক করুন তারপর Create-এ ক্লিক করুন।

অনুসরণ

  1. কনফিগারেশনটি সংরক্ষিত হয় এবং আপনাকে স্বয়ংক্রিয়ভাবে Google Auth প্ল্যাটফর্ম > ওভারভিউ এ পুনঃনির্দেশিত করা হয়।

আরও জানতে, সম্পূর্ণ OAuth কনফিগার সম্মতি নির্দেশিকাটি দেখুন।

OAuth ক্লায়েন্ট ক্রেডেনশিয়াল তৈরি করুন

স্থানীয় পরিবেশে ব্যবহারকারীকে প্রমাণীকরণের জন্য একটি নতুন ডেস্কটপ অ্যাপ OAuth ক্লায়েন্ট তৈরি করুন:

  1. গুগল ক্লাউড কনসোলে , মেনু ☰ > গুগল অথ প্ল্যাটফর্ম > ক্লায়েন্ট এ ক্লিক করুন।

  1. + ক্লায়েন্ট তৈরি করুন ক্লিক করুন।
  2. অ্যাপ্লিকেশন ধরণের জন্য, ডেস্কটপ অ্যাপ নির্বাচন করুন।
  3. নামটি codelab এ সেট করুন।
  4. তৈরি করুন ক্লিক করুন। নতুন তৈরি শংসাপত্রটি প্রদর্শিত হবে।
  5. ডাউনলোড JSON এ ক্লিক করুন এবং solutions/enterprise-ai-agent-local ডিরেক্টরিতে client_secret.json ফাইলটি সংরক্ষণ করুন।

c1c9bc2f8c14dd6c.png সম্পর্কে

Vertex AI সার্চ MCP সক্ষম করুন

  1. একটি টার্মিনালে, এক্সিকিউট করুন:
gcloud beta services mcp enable discoveryengine.googleapis.com \
     --project=$(gcloud config get-value project)

চ্যাট অ্যাপ কনফিগার করুন

  1. গুগল ক্লাউড কনসোলে , গুগল ক্লাউড অনুসন্ধান ক্ষেত্রে Google Chat API অনুসন্ধান করুন, গুগল চ্যাট API ক্লিক করুন, পরিচালনা করুন ক্লিক করুন এবং কনফিগারেশন ক্লিক করুন।

  1. অ্যাপের নাম এবং বর্ণনা Vertex AI তে সেট করুন।
  2. Avatar URL টি https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png এ সেট করুন।
  3. Enable Interactive features অনির্বাচন করুন, তারপর প্রদর্শিত মোডাল ডায়ালগে Disable এ ক্লিক করুন।
  4. Logging থেকে Log errors নির্বাচন করুন।
  5. সংরক্ষণ করুন ক্লিক করুন।

952e7ebcb945f1b2.png সম্পর্কে

ADK ওয়েবে এজেন্ট চালান

  1. একটি টার্মিনালে, solutions/enterprise-ai-agent-local ডিরেক্টরিটি খুলুন এবং তারপর কার্যকর করুন:
# 1. Authenticate with all the required scopes
gcloud auth application-default login \
  --client-id-file=client_secret.json \
   --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/chat.spaces,https://www.googleapis.com/auth/chat.messages

# 2. Configure environment
export ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
export GOOGLE_GENAI_USE_VERTEXAI=1
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project)
export GOOGLE_CLOUD_LOCATION=us-central1

# 3. Create and activate a new virtual environment
python3 -m venv .venv
source .venv/bin/activate

# 4. Install poetry and project dependencies
pip install poetry
poetry install

# 5. Start ADK Web
adk web

95fc30883ce3d56f.png সম্পর্কে

এজেন্ট ব্যবহার করে দেখুন

  1. আপনার ইন্টারনেট ব্রাউজারে, ADK ওয়েবসাইটটি খুলুন।
  2. চ্যাটে, Please find my meetings for today, I need their titles and links টাইপ করুন এবং enter টিপুন।
  3. এজেন্ট ক্যালেন্ডার ইভেন্টের একটি তালিকা সহ উত্তর দেয় (ব্যবহারকারীর অ্যাকাউন্টের উপর নির্ভর করে)।
  4. চ্যাটে, Please send a Chat message to someone@example.com with the following text: Hello! এবং enter টিপুন।
  5. এজেন্ট একটি নিশ্চিতকরণ বার্তার মাধ্যমে উত্তর দেয়।

145f47f45332e6be.png সম্পর্কে

293ec4d3e2bb6a0.png সম্পর্কে

৫. গুগল ওয়ার্কস্পেস অ্যাড-অন হিসেবে এজেন্ট

এই এজেন্ট ব্যবহারকারীদের Workspace অ্যাপ UI-এর প্রেক্ষাপটে তাদের স্বাভাবিক ভাষায় Workspace-এর ডেটা অনুসন্ধান করার অনুমতি দেয়। এটি নিম্নলিখিত উপাদানগুলির উপর নির্ভর করে:

  • মডেল: মিথুন।
  • ডেটা এবং অ্যাকশন: গুগল ওয়ার্কস্পেস (ক্যালেন্ডার, জিমেইল, ড্রাইভ), গুগল-পরিচালিত ভার্টেক্স এআই সার্চ মডেল কনটেক্সট প্রোটোকল (এমসিপি) সার্ভার, গুগল চ্যাট বার্তা পাঠানোর জন্য কাস্টম টুল ফাংশন (গুগল চ্যাট এপিআই এর মাধ্যমে) এর জন্য ভার্টেক্স এআই ডেটা সঞ্চয় করে।
  • এজেন্ট তৈরির সরঞ্জাম: এজেন্ট ডেভেলপমেন্ট কিট (ADK)।
  • এজেন্ট হোস্ট: ভার্টেক্স এআই এজেন্ট ইঞ্জিন।
  • UI: চ্যাট এবং জিমেইলের জন্য গুগল ওয়ার্কস্পেস অ্যাড-অন (ক্যালেন্ডার, ড্রাইভ, ডক্স, শিট এবং স্লাইডে সহজেই সম্প্রসারিত করা যায়)।
  • গুগল ওয়ার্কস্পেস অ্যাড-অন: অ্যাপস স্ক্রিপ্ট, ভার্টেক্স এআই এজেন্ট ইঞ্জিন এপিআই, প্রাসঙ্গিক (নির্বাচিত জিমেইল বার্তা)।

ধারণাগুলি পর্যালোচনা করুন

গুগল ওয়ার্কস্পেস অ্যাড-অন

Google Workspace অ্যাড-অন হল একটি কাস্টমাইজড অ্যাপ্লিকেশন যা এক বা একাধিক Google Workspace অ্যাপ্লিকেশন (Gmail, Chat, Calendar, Docs, Drive, Meet, Sheets এবং Slides) প্রসারিত করে।

অ্যাপস স্ক্রিপ্ট

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

গুগল ওয়ার্কস্পেস কার্ড ফ্রেমওয়ার্ক

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

সমাধান স্থাপত্য পর্যালোচনা করুন

f2fd048ba298f431.png সম্পর্কে

সোর্স কোড পর্যালোচনা করুন

এজেন্ট

এজেন্ট.পিআই

...
MODEL = "gemini-2.5-flash"

# Client 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)]
)

ক্লায়েন্ট

অ্যাপস্ক্রিপ্ট.জেসন

...
"addOns": {
    "common": {
      "name": "Vertex 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/cloud-platform",
   "https://www.googleapis.com/auth/gmail.addons.execute",
   "https://www.googleapis.com/auth/gmail.addons.current.message.readonly"
 ]
...

চ্যাট.জিএস

...
// 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;
}

সাইডবার.gs

...
// 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 response = queryAgent({ text: finalQueryText });

    // 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(response.text);
    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();
  }
}
...

এজেন্টহ্যান্ডলার.জিএস

...
// Service that handles Vertex AI Agent operations.

// Submits a query to the AI agent and returns the response string synchronously
function queryAgent(input) {
 let systemPrompt = "SYSTEM PROMPT START Do not respond with tables but use bullet points instead." +
   " Do not ask the user follow-up questions or converse with them as history is not kept in this interface." +
   " SYSTEM PROMPT END\n\n";

 const requestPayload = {
   "class_method": "async_stream_query",
   "input": {
     "user_id": "vertex_ai_add_on",
     "message": { "role": "user", "parts": [{ "text": systemPrompt + input.text }] },
     "state_delta": {
       "enterprise-ai_999": `${ScriptApp.getOAuthToken()}`
     }
   }
 };

 const responseContentText = UrlFetchApp.fetch(
   `https://${getLocation()}-aiplatform.googleapis.com/v1/${getReasoningEngine()}:streamQuery?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 author = "default";
 let answerText = "";
 for (const eventJson of events) {
   if (isInDebugMode()) {
     console.log("Event: " + eventJson);
   }
   const event = JSON.parse(eventJson);

   // Retrieve the agent responsible for generating the content
   author = event.author;
  
   // Ignore events that are not useful for the end-user
   if (!event.content) {
     console.log(`${author}: internal event`);
     continue;
   }

   // Handle text answers
   const parts = event.content.parts || [];
   const textPart = parts.find(p => p.text);
   if (textPart) {
     answerText += textPart.text;
   }
 }
 return { author: author, text: answerText };
}
...

ভার্টেক্স এআই এজেন্ট ইঞ্জিনে এজেন্ট স্থাপন করুন

  1. একটি টার্মিনালে, পূর্ববর্তী ধাপে ডাউনলোড করা উৎসগুলি থেকে solutions/enterprise-ai-agent ডিরেক্টরিটি খুলুন এবং তারপর কার্যকর করুন:
# 1. Create and activate a new virtual environment
deactivate
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

অনুসরণ

  1. যখন আপনি লগগুলিতে "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"
  1. adk deploy কমান্ডটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন তারপর সবুজ রঙে কমান্ড আউটপুট থেকে নতুন মোতায়েন করা এজেন্টের রিসোর্সের নামটি কপি করুন।

d098fe1347d6581b.png

পরিষেবা অ্যাকাউন্ট শুরু করুন

গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:

  1. মেনু ☰ > IAM & Admin > পরিষেবা অ্যাকাউন্ট > + পরিষেবা অ্যাকাউন্ট তৈরি করুন এ ক্লিক করুন।

  1. পরিষেবা অ্যাকাউন্টের নাম vertexai-add-on এ সেট করুন।

46be0eb53f416c59.png সম্পর্কে

  1. সম্পন্ন ক্লিক করুন। আপনাকে পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় পুনঃনির্দেশিত করা হবে এবং আপনি আপনার তৈরি করা পরিষেবা অ্যাকাউন্টটি দেখতে পাবেন।

f002fef61c71ed8.png সম্পর্কে

  1. নতুন তৈরি পরিষেবা অ্যাকাউন্টটি নির্বাচন করুন, তারপর কী ট্যাবটি নির্বাচন করুন।
  2. "কী যোগ করুন" ক্লিক করুন তারপর নতুন কী তৈরি করুন
  3. JSON নির্বাচন করুন তারপর Create এ ক্লিক করুন।

7b140535d9e1af44.png সম্পর্কে

  1. ডায়ালগটি বন্ধ হয়ে যায় এবং আপনার নতুন তৈরি পাবলিক/প্রাইভেট কী জোড়া স্বয়ংক্রিয়ভাবে আপনার স্থানীয় পরিবেশে JSON ফাইল হিসাবে ডাউনলোড হয়।

অ্যাপস স্ক্রিপ্ট প্রজেক্ট তৈরি এবং কনফিগার করুন

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

  1. ওভারভিউ > একটি কপি তৈরি করুন ক্লিক করুন।
  2. আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে, স্ক্রিপ্ট প্রপার্টি যোগ করতে প্রোজেক্ট সেটিংস > স্ক্রিপ্ট প্রপার্টি সম্পাদনা করুন > স্ক্রিপ্ট প্রপার্টি যোগ করুন এ ক্লিক করুন।
  3. REASONING_ENGINE_RESOURCE_NAME কে পূর্ববর্তী ধাপে কপি করা Vertex AI এজেন্ট রিসোর্স নামে সেট করুন। এর ফর্ম্যাটটি নিম্নরূপ:
projects/<PROJECT_NUMBER>/locations/us-central1/reasoningEngines/<AGENT_ID>
  1. পূর্ববর্তী ধাপে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট ফাইল থেকে APP_SERVICE_ACCOUNT_KEY কে JSON কীতে সেট করুন।
  2. স্ক্রিপ্ট বৈশিষ্ট্য সংরক্ষণ করুন ক্লিক করুন

Gmail এবং Chat-এ ব্যবহার করুন

আপনার অ্যাপস স্ক্রিপ্ট প্রজেক্টে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. Deploy > Test deployments এ ক্লিক করুন, তারপর Install করুন । এটি এখন Gmail এ উপলব্ধ।
  2. হেড ডিপ্লয়মেন্ট আইডি এর অধীনে কপি ক্লিক করুন।

b0cba69eef271850.png সম্পর্কে

গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:

  1. গুগল ক্লাউড সার্চ ফিল্ডে Google Chat API খুঁজুন, গুগল চ্যাট এপিআই ক্লিক করুন, ম্যানেজ এ ক্লিক করুন এবং কনফিগারেশন এ ক্লিক করুন।

  1. ইন্টারেক্টিভ বৈশিষ্ট্যগুলি সক্ষম করুন নির্বাচন করুন।
  2. "স্পেস এবং গ্রুপ কথোপকথনে যোগদান করুন" নির্বাচন মুক্ত করুন।
  3. সংযোগ সেটিংসের অধীনে, অ্যাপস স্ক্রিপ্ট নির্বাচন করুন।
  4. পূর্ববর্তী ধাপগুলিতে কপি করা হেড ডিপ্লয়মেন্ট আইডিতে ডিপ্লয়মেন্ট আইডি সেট করুন।
  5. দৃশ্যমানতার অধীনে, আপনার কর্মক্ষেত্র ডোমেনের নির্দিষ্ট ব্যক্তি এবং গোষ্ঠীর জন্য এই চ্যাট অ্যাপটি উপলব্ধ করুন নির্বাচন করুন এবং আপনার ইমেল ঠিকানা লিখুন।
  6. সংরক্ষণ করুন ক্লিক করুন।

6ea187ccb90a0e49.png সম্পর্কে

অ্যাড অন ব্যবহার করে দেখুন

একটি নতুন ট্যাবে Google Chat খুলুন, তারপর এই ধাপগুলি অনুসরণ করুন:

  1. চ্যাট অ্যাপ Vertex AI দিয়ে একটি সরাসরি বার্তা স্থান খুলুন।

495632314dec5a5d.png সম্পর্কে

  1. কনফিগার ক্লিক করুন এবং প্রমাণীকরণ প্রবাহের মধ্য দিয়ে যান।
  2. What are my meetings for today? টাইপ করুন এবং enter টিপুন। Vertex AI Chat অ্যাপটি ফলাফল সহ উত্তর দেবে।

172da43f310a0579.png সম্পর্কে

একটি নতুন ট্যাবে Gmail খুলুন, তারপর এই পদক্ষেপগুলি অনুসরণ করুন:

  1. নিজেকে একটি ইমেল পাঠান যেখানে Subject " We need to talk এবং Body " Are you available today between 8 and 9 AM?
  2. নতুন প্রাপ্ত ইমেল বার্তাটি খুলুন।
  3. সাইডবারে Vertex AI অ্যাডটি খুলুন।
  4. বার্তাটি Do I have any meeting conflicts? এ সেট করুন।
  5. বার্তা পাঠান ক্লিক করুন।
  6. বোতামের পরে উত্তরটি প্রদর্শিত হবে।

840b494aa5eaa1ef.png - [অনলাইন].

৬. পরিষ্কার করা

গুগল ক্লাউড প্রোজেক্ট মুছুন

এই কোডল্যাবে ব্যবহৃত রিসোর্সের জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, আমরা আপনাকে Google ক্লাউড প্রোজেক্টটি মুছে ফেলার পরামর্শ দিচ্ছি।

গুগল ক্লাউড কনসোলে , এই পদক্ষেপগুলি অনুসরণ করুন:

  1. মেনু ☰ > IAM & Admin > সেটিংস এ ক্লিক করুন।

  1. বন্ধ করুন ক্লিক করুন।
  2. প্রকল্প আইডি লিখুন।
  3. যাই হোক বন্ধ করুন ক্লিক করুন।

3b9492d97f771b2c.png সম্পর্কে

৭. অভিনন্দন

অভিনন্দন! আপনি এমন সমাধান তৈরি করেছেন যা কর্মীদের জন্য Vertex AI এবং Google Workspace কে আরও কাছাকাছি আনার শক্তিকে কাজে লাগায়!

এরপর কী?

আমরা এই কোডল্যাবের কেবলমাত্র সবচেয়ে সাধারণ ব্যবহারের উদাহরণগুলিই প্রদর্শন করছি, তবে আপনার সমাধানগুলিতে প্রচুর সম্প্রসারণের ক্ষেত্র বিবেচনা করতে পারেন, যেমন নিম্নলিখিতগুলি:

  • জেমিনি সিএলআই এবং অ্যান্টিগ্র্যাভিটির মতো এআই-ক্ষমতাসম্পন্ন ডেভেলপার টুল ব্যবহার করুন।
  • অন্যান্য এজেন্ট ফ্রেমওয়ার্ক এবং টুল যেমন কাস্টম MCP, কাস্টম ফাংশন কল এবং জেনারেটিভ UI এর সাথে একীভূত করুন।
  • Vertex AI-এর মতো ডেডিকেটেড প্ল্যাটফর্মে হোস্ট করা কাস্টমস সহ অন্যান্য AI মডেলের সাথে একীভূত করুন।
  • ডায়ালগফ্লো-এর মতো ডেডিকেটেড প্ল্যাটফর্মে অথবা ক্লাউড মার্কেটপ্লেসের মাধ্যমে তৃতীয় পক্ষের দ্বারা হোস্ট করা অন্যান্য এজেন্টদের সাথে একীভূত করুন।
  • দল, সংস্থা বা জনসাধারণের ব্যবহারকারীদের ক্ষমতায়নের জন্য ক্লাউড মার্কেটপ্লেসে প্রকাশনা এজেন্টদের নিয়োগ করুন।

আরও জানুন

ডেভেলপারদের জন্য প্রচুর রিসোর্স রয়েছে যেমন ইউটিউব ভিডিও, ডকুমেন্টেশন ওয়েবসাইট, কোড নমুনা এবং টিউটোরিয়াল: