Gemini Enterprise के एजेंट को Google Workspace के साथ इंटिग्रेट करना

1. शुरू करने से पहले

83e1c1629d14fb31.png

Gemini Enterprise क्या है?

Gemini Enterprise, एआई की मदद से काम करने वाला एक ऐडवांस एजेंटिक प्लैटफ़ॉर्म है. यह हर कर्मचारी और हर वर्कफ़्लो के लिए, Google के सबसे बेहतरीन एआई की सुविधाएं उपलब्ध कराता है. इसकी मदद से, टीम के सदस्य एक ही सुरक्षित प्लैटफ़ॉर्म पर एआई एजेंट ढूंढ सकते हैं, बना सकते हैं, शेयर कर सकते हैं, और उन्हें रन कर सकते हैं.

  • ऐडवांस मॉडल का ऐक्सेस: उपयोगकर्ताओं को Google के सबसे शक्तिशाली मल्टीमॉडल एआई का तुरंत ऐक्सेस मिलता है. इसमें Gemini भी शामिल है. इससे वे कारोबार से जुड़ी मुश्किल चुनौतियों का सामना कर पाते हैं.
  • खास एजेंट का इस्तेमाल करें: इस सुइट में, Google के ऐसे एजेंट शामिल हैं जिनका इस्तेमाल तुरंत किया जा सकता है. ये एजेंट रिसर्च, कोडिंग, और नोट लेने के लिए उपलब्ध हैं.
  • हर कर्मचारी को सशक्त बनाएं: नो-कोड और प्रो-कोड के विकल्पों की मदद से, सभी विभागों के कर्मचारी वर्कफ़्लो को ऑटोमेट करने के लिए, अपने हिसाब से एजेंट बना सकते हैं और उन्हें मैनेज कर सकते हैं.
  • डेटा के आधार पर जवाब देने वाले एजेंट: एजेंट को कंपनी के इंटरनल डेटा और तीसरे पक्ष के ऐप्लिकेशन से सुरक्षित तरीके से कनेक्ट किया जा सकता है. इससे यह पक्का किया जा सकता है कि एजेंट के जवाब, संदर्भ के हिसाब से सटीक हों.
  • केंद्रीय स्तर पर निगरानी: एडमिन, सभी एजेंट की गतिविधि देख सकते हैं और उनकी जांच कर सकते हैं. इससे यह पक्का किया जा सकता है कि संगठन, सुरक्षा और अनुपालन के कड़े मानकों को पूरा करता है.
  • इकोसिस्टम के साथ काम करने की सुविधा: यह प्लैटफ़ॉर्म, पार्टनर ऐप्लिकेशन और सेवा देने वाली कंपनियों के बड़े नेटवर्क के साथ इंटिग्रेट होता है. इससे अलग-अलग सिस्टम में ऑटोमेशन की सुविधा मिलती है.

127f2ed7d484722c.png

Google Workspace क्या है?

Google Workspace, क्लाउड-आधारित प्रॉडक्टिविटी और साथ मिलकर काम करने के टूल का एक कलेक्शन है. इसे लोगों, स्कूलों, और कारोबारों के लिए डिज़ाइन किया गया है:

  • कम्यूनिकेशन: प्रोफ़ेशनल ईमेल सेवाएं (Gmail), वीडियो कॉन्फ़्रेंसिंग (Meet), और टीम मैसेजिंग (Chat).
  • कॉन्टेंट बनाना: दस्तावेज़ लिखने (Docs), स्प्रेडशीट बनाने (Sheets), और प्रज़ेंटेशन डिज़ाइन करने (Slides) के लिए टूल.
  • संगठन: शेयर किए गए कैलेंडर (Calendars) और डिजिटल नोट लेने की सुविधा (Keep).
  • स्टोरेज: फ़ाइलों को सुरक्षित तरीके से सेव और शेयर करने के लिए, क्लाउड स्टोरेज की सुविधा (Drive).
  • मैनेजमेंट: उपयोगकर्ताओं और सुरक्षा सेटिंग को मैनेज करने के लिए एडमिन कंट्रोल (Workspace Admin Console).

किस तरह के कस्टम इंटिग्रेशन?

Google Workspace और Gemini Enterprise, एक बेहतरीन फ़ीडबैक लूप बनाते हैं. इसमें Workspace, रीयल-टाइम डेटा और साथ मिलकर काम करने से जुड़ा कॉन्टेक्स्ट उपलब्ध कराता है. वहीं, Gemini Enterprise, मॉडल, एजेंटिक रीज़निंग, और ऑर्केस्ट्रेशन उपलब्ध कराता है. इनकी मदद से, बेहतर वर्कफ़्लो को ऑटोमेट किया जा सकता है.

  • स्मार्ट कनेक्टिविटी: Google के मैनेज किए गए डेटा स्टोर, एपीआई, और एमसीपी सर्वर (Google के मैनेज किए गए और कस्टम) की मदद से एजेंट, Workspace डेटा को सुरक्षित और आसानी से ऐक्सेस कर सकते हैं. साथ ही, उपयोगकर्ताओं की ओर से कार्रवाइयां कर सकते हैं.
  • कस्टम एजेंट: नो-कोड डिज़ाइनर या प्रो-कोड फ़्रेमवर्क का इस्तेमाल करके, टीमें खास एजेंट बना सकती हैं. ये एजेंट, एडमिन के कंट्रोल वाले Workspace डेटा और कार्रवाइयों पर आधारित होते हैं.
  • नेटिव इंटिग्रेशन: Workspace ऐड-ऑन, एआई सिस्टम और Chat और Gmail जैसे ऐप्लिकेशन के बीच के अंतर को कम करते हैं. ऐसा, यूज़र इंटरफ़ेस (यूआई) के कॉम्पोनेंट या बैकग्राउंड प्रोसेस के ज़रिए किया जाता है. इससे एजेंट, उपयोगकर्ताओं को उसी जगह पर तुरंत मदद दे पाते हैं जहां वे मौजूद हैं. साथ ही, उन्हें संदर्भ के हिसाब से सहायता मिलती है.

Google Workspace के प्रॉडक्टिविटी बढ़ाने वाले दमदार ईकोसिस्टम को Gemini Enterprise की एआई की मदद से काम करने वाली ऐडवांस सुविधाओं के साथ मिलाकर, संगठन अपने कामकाज को बेहतर बना सकते हैं. इसके लिए, वे डेटा पर आधारित एआई एजेंट को अपनी ज़रूरत के हिसाब से तैयार कर सकते हैं. ये एजेंट, मुश्किल वर्कफ़्लो को ऑटोमेट करते हैं. ये सीधे तौर पर उन टूल में काम करते हैं जिन्हें टीमें रोज़ाना इस्तेमाल करती हैं.

ज़रूरी शर्तें

अगर आपको अपने एनवायरमेंट में सभी चरणों को फ़ॉलो करना है, तो आपको इनकी ज़रूरत होगी:

आपको क्या बनाना है

इस कोडलैब में, हम Gemini Enterprise के एआई एजेंट की मदद से तीन समाधान तैयार करेंगे. ये एजेंट, Google Workspace के साथ पूरी तरह से इंटिग्रेट किए गए हैं. इनमें आर्किटेक्चरल पैटर्न दिखाए जाएंगे, जिनका इस्तेमाल डेटा, कार्रवाइयों, और यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करने के लिए किया जा सकता है.

बिना कोड वाला कस्टम एजेंट

इस एजेंट की मदद से, उपयोगकर्ता अपनी आम भाषा में Workspace के डेटा को खोज सकते हैं और कार्रवाइयां कर सकते हैं. यह इन एलिमेंट पर निर्भर करता है:

  • मॉडल: Gemini.
  • डेटा और कार्रवाइयाँ: Google Workspace (Calendar, Gmail, Drive, NotebookLM) के लिए Gemini Enterprise के डेटा स्टोर, Google Search.
  • एजेंट बनाने के टूल: Gemini Enterprise Agent Designer.
  • एजेंट होस्ट: Gemini Enterprise.
  • यूज़र इंटरफ़ेस (यूआई): Gemini Enterprise का वेब ऐप्लिकेशन.

90e42539e5959634.png

60e62437ce29a818.png

प्रो-कोड कस्टम एजेंट

इस एजेंट की मदद से, उपयोगकर्ता अपनी आम भाषा में Workspace का डेटा खोज सकते हैं और कस्टम टूल और नियमों का इस्तेमाल करके कार्रवाइयां कर सकते हैं. यह इन एलिमेंट पर निर्भर करता है:

  • मॉडल: Gemini.
  • डेटा और कार्रवाइयां: Google Workspace (Calendar, Gmail, Drive, NotebookLM) के लिए Gemini Enterprise के डेटा स्टोर, Google Search, Google के मैनेज किए गए Vertex AI Search Model Context Protocol (MCP) सर्वर, Google Chat API के ज़रिए Google Chat मैसेज भेजने के लिए कस्टम टूल फ़ंक्शन.
  • एजेंट बनाने के टूल: एजेंट डेवलपमेंट किट (एडीके).
  • एजेंट होस्ट: Vertex AI Agent Engine.
  • यूज़र इंटरफ़ेस (यूआई): Gemini Enterprise का वेब ऐप्लिकेशन.

1647ebff031c42e7.png

a8087d2351e77fb4.png

Google Workspace ऐड-ऑन के तौर पर डिफ़ॉल्ट एजेंट

इस एजेंट की मदद से उपयोगकर्ता, Workspace ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में, Workspace के लिए अपनी भाषा में डेटा खोज सकते हैं. यह इन एलिमेंट पर निर्भर करता है:

  • मॉडल: Gemini.
  • डेटा: Google Workspace (Calendar, Gmail, Drive, NotebookLM) के लिए Gemini Enterprise के डेटा स्टोर, Google Search.
  • एजेंट होस्ट: Gemini Enterprise.
  • यूज़र इंटरफ़ेस (यूआई): Chat और Gmail के लिए Google Workspace ऐड-ऑन. इसे Calendar, Drive, Docs, Sheets, और Slides के लिए आसानी से बढ़ाया जा सकता है.
  • Google Workspace ऐड-ऑन: Apps Script, Gemini Enterprise और Vertex AI API, कॉन्टेक्स्ट के हिसाब से (उपयोगकर्ता का मेटाडेटा, चुना गया Gmail मैसेज).

c8c63fb3f324fecf.png

d33b8cb50ee251b7.png

आपको क्या सीखने को मिलेगा

  • Gemini Enterprise और Google Workspace के बीच इंटिग्रेशन पॉइंट, जो डेटा और कार्रवाइयों को चालू करते हैं.
  • Gemini Enterprise में होस्ट किए गए कस्टम एजेंट बनाने के लिए, नो-कोड और प्रो-कोड के विकल्प.
  • उपयोगकर्ता, Gemini Enterprise के वेब ऐप्लिकेशन और Google Workspace के ऐप्लिकेशन से एजेंट को कैसे ऐक्सेस कर सकते हैं.

2. सेट अप करें

कॉन्सेप्ट की समीक्षा करें

Gemini Enterprise ऐप्लिकेशन

Gemini Enterprise ऐप्लिकेशन, आपके उपयोगकर्ताओं को खोज के नतीजे, कार्रवाइयां, और एजेंट उपलब्ध कराता है. एपीआई के संदर्भ में, ऐप्लिकेशन शब्द का इस्तेमाल इंजन शब्द के साथ किया जा सकता है. किसी ऐप्लिकेशन को डेटा स्टोर से कनेक्ट करना ज़रूरी है, ताकि वह खोज के नतीजे, जवाब या कार्रवाइयां दिखाने के लिए डेटा का इस्तेमाल कर सके.

Gemini Enterprise का वेब ऐप्लिकेशन

Gemini Enterprise का वेब ऐप्लिकेशन, Gemini Enterprise के ऐप्लिकेशन से जुड़ा होता है. यह एक सेंट्रल एआई होम बेस के तौर पर काम करता है. यहाँ कर्मचारी, एक ही चैट इंटरफ़ेस का इस्तेमाल करके, कंपनी के अलग-अलग डेटा को खोज सकते हैं. साथ ही, मुश्किल वर्कफ़्लो के लिए खास एआई एजेंट चला सकते हैं. इसके अलावा, एंटरप्राइज़-लेवल की निजता के साथ, प्रोफ़ेशनल-ग्रेड का कॉन्टेंट जनरेट कर सकते हैं.

संसाधन शुरू करना और उन्हें ऐक्सेस करना

इस सेक्शन में, अपने पसंदीदा वेब ब्राउज़र से इन संसाधनों को ऐक्सेस और कॉन्फ़िगर किया जा सकता है.

Gemini Enterprise ऐप्लिकेशन

Google Cloud Console को नए टैब में खोलें. इसके बाद, यह तरीका अपनाएं:

  1. अपना प्रोजेक्ट चुनें.
  2. Google Cloud के खोज फ़ील्ड में, Gemini Enterprise खोजें और उसे चुनें. इसके बाद, + ऐप्लिकेशन बनाएं पर क्लिक करें. अगर आपके पास Gemini Enterprise का लाइसेंस नहीं है, तो आपको 30 दिनों के लिए बिना किसी शुल्क के आज़माने वाले लाइसेंस को चालू करने के लिए कहा जाएगा.

  1. ऐप्लिकेशन का नाम को codelab पर सेट करें.
  2. नाम के आधार पर एक आईडी जनरेट होता है और उसे फ़ील्ड में दिखाया जाता है. इसे कॉपी करें.
  3. एक से ज़्यादा क्षेत्र को global (Global) पर सेट करें.
  4. बनाएं पर क्लिक करें.

8712ada39377205e.png

  1. ऐप्लिकेशन बन जाता है और आपको अपने-आप Gemini Enterprise > खास जानकारी पर रीडायरेक्ट कर दिया जाता है.
  2. पूरा ऐक्सेस पाएं में जाकर, पहचान सेट अप करें पर क्लिक करें.
  3. नई स्क्रीन पर, Google Identity का इस्तेमाल करें को चुनें. इसके बाद, Workforce Identity की पुष्टि करें पर क्लिक करें.

3209c156eff4ba43.png

  1. कॉन्फ़िगरेशन सेव हो जाता है और आपको Gemini Enterprise > खास जानकारी पर अपने-आप रीडायरेक्ट कर दिया जाता है.
  2. कॉन्फ़िगरेशन पर जाएं.
  3. सुविधा मैनेजमेंट टैब में, एजेंट डिज़ाइनर की सुविधा चालू करें को चालू करें. इसके बाद, सेव करें पर क्लिक करें.

f0cd9da419b41cb6.png

Gemini Enterprise का वेब ऐप्लिकेशन

Cloud Console में जाकर, नए टैब में Gemini Enterprise खोलें. इसके बाद, यह तरीका अपनाएं:

  1. codelab नाम वाले ऐप्लिकेशन पर क्लिक करें.
  2. दिखने वाले यूआरएल को कॉपी करें. हम इसका इस्तेमाल अगले चरणों में, Gemini Enterprise के वेब ऐप्लिकेशन पर जाने के लिए करेंगे.

b46ee6176744565d.png

3. बिना कोड वाला कस्टम एजेंट

इस एजेंट की मदद से, उपयोगकर्ता अपनी आम भाषा में Workspace के डेटा को खोज सकते हैं और कार्रवाइयां कर सकते हैं. यह इन एलिमेंट पर निर्भर करता है:

  • मॉडल: Gemini.
  • डेटा और कार्रवाइयाँ: Google Workspace (Calendar, Gmail, Drive, NotebookLM) के लिए Gemini Enterprise के डेटा स्टोर, Google Search.
  • एजेंट बनाने के टूल: Gemini Enterprise Agent Designer.
  • एजेंट होस्ट: Gemini Enterprise.
  • यूज़र इंटरफ़ेस (यूआई): Gemini Enterprise का वेब ऐप्लिकेशन.

कॉन्सेप्ट की समीक्षा करें

Gemini

Gemini, Google का एक मल्टीमॉडल एलएलएम है. इससे लोगों को अपनी पूरी क्षमता का इस्तेमाल करने में मदद मिलती है. इससे वे अपनी कल्पना को उड़ान दे पाते हैं, नई चीज़ें जानने की इच्छा को बढ़ा पाते हैं, और अपनी प्रॉडक्टिविटी को बेहतर बना पाते हैं.

Gemini Enterprise का डेटा स्टोर

Gemini Enterprise का डेटा स्टोर एक ऐसी इकाई होती है जिसमें पहले पक्ष (ग्राहक) के डेटा सोर्स से लिया गया डेटा शामिल होता है. जैसे, Google Workspace या तीसरे पक्ष के ऐप्लिकेशन, जैसे कि Jira या Salesforce. डेटा कनेक्टर, ऐसे डेटा स्टोर होते हैं जिनमें तीसरे पक्ष के ऐप्लिकेशन का डेटा होता है.

Gemini Enterprise का एजेंट डिज़ाइनर

Gemini Enterprise Agent Designer एक इंटरैक्टिव प्लैटफ़ॉर्म है. इसमें बिना कोड और कम कोड वाले विकल्प उपलब्ध हैं. इसकी मदद से, Gemini Enterprise में एक और कई चरणों वाले एजेंट बनाए, मैनेज किए, और लॉन्च किए जा सकते हैं.

समाधान के आर्किटेक्चर की समीक्षा करना

e77aafb772502aaf.png

एपीआई चालू करना

Gemini Enterprise के Workspace डेटा स्टोर के लिए, इन एपीआई को चालू करना ज़रूरी है:

  1. Google Cloud console में जाकर, Calendar, Gmail, और People API चालू करें:

573322606b715a69.png

  1. मेन्यू ☰ > एपीआई और सेवाएं > चालू किए गए एपीआई और सेवाएं पर क्लिक करें. इसके बाद, पुष्टि करें कि सूची में Google Calendar API, Gmail API, और People API मौजूद हैं.

Workspace Calendar और Gmail में Gemini Enterprise की कार्रवाइयों के लिए, सहमति वाली स्क्रीन को कॉन्फ़िगर करना ज़रूरी है:

  1. Google Cloud console में, मेन्यू ☰ > Google Auth platform > ब्रैंडिंग पर क्लिक करें.

  1. शुरू करें पर क्लिक करें.
  2. ऐप्लिकेशन की जानकारी में जाकर, ऐप्लिकेशन का नाम Codelab पर सेट करें .
  3. उपयोगकर्ता सहायता के लिए ईमेल पता में, सहायता के लिए वह ईमेल पता चुनें जिस पर उपयोगकर्ता, सहमति से जुड़े सवालों के लिए आपसे संपर्क कर सकें.
  4. आगे बढ़ें पर क्लिक करें.
  5. दर्शक सेक्शन में जाकर, संगठन के अंदर से जनरेट होने वाला ट्रैफ़िक चुनें.
  6. आगे बढ़ें पर क्लिक करें.
  7. संपर्क जानकारी में जाकर, वह ईमेल पता डालें जिस पर आपको अपने प्रोजेक्ट में हुए किसी भी बदलाव के बारे में सूचना मिल सके.
  8. आगे बढ़ें पर क्लिक करें.
  9. पूरा करें में जाकर, Google API सेवाओं के उपयोगकर्ता के डेटा की नीति पढ़ें. अगर आप इससे सहमत हैं, तो मैं Google API सेवाओं के उपयोगकर्ता के डेटा की नीति से सहमत हूं को चुनें.
  10. इसके बाद, जारी रखें और फिर बनाएं पर क्लिक करें.

578c2b38219b2f7b.png

  1. कॉन्फ़िगरेशन सेव हो जाता है और आपको Google Auth Platform > खास जानकारी पर अपने-आप रीडायरेक्ट कर दिया जाता है.
  2. डेटा ऐक्सेस पर जाएं.
  3. स्कोप जोड़ें या हटाएं पर क्लिक करें.
  4. यहां दिए गए स्कोप कॉपी करें और उन्हें मैन्युअल तरीके से स्कोप जोड़ें फ़ील्ड में चिपकाएं.
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
  1. टेबल में जोड़ें पर क्लिक करें. इसके बाद, अपडेट करें पर क्लिक करें. इसके बाद, सेव करें पर क्लिक करें.

874b1dda14e8f379.png

ज़्यादा जानने के लिए, OAuth की सहमति कॉन्फ़िगर करना गाइड पढ़ें.

OAuth क्लाइंट के क्रेडेंशियल बनाना

उपयोगकर्ताओं की पुष्टि करने के लिए, Gemini Enterprise का नया OAuth क्लाइंट बनाएं:

  1. Google Cloud console में, मेन्यू ☰ > Google Auth platform > क्लाइंट पर क्लिक करें.

  1. + क्लाइंट बनाएं पर क्लिक करें.
  2. ऐप्लिकेशन टाइप के लिए, वेब ऐप्लिकेशन चुनें.
  3. नाम को codelab पर सेट करें.
  4. अनुमति वाले JavaScript ऑरिजिन को छोड़ें.
  5. रीडायरेक्ट यूआरआई की अनुमति दी गई है सेक्शन में, यूआरआई जोड़ें पर क्लिक करें और https://vertexaisearch.cloud.google.com/oauth-redirect डालें.
  6. बनाएं पर क्लिक करें.
  7. आपको एक डायलॉग बॉक्स दिखेगा. इसमें आपका नया OAuth क्लाइंट आईडी और सीक्रेट होगा. इस जानकारी को सुरक्षित जगह पर सेव करें.

a46e5ebfb851aea5.png

डेटा स्टोर बनाना

Cloud Console में जाकर, Gemini Enterprise को नए टैब में खोलें. इसके बाद, यह तरीका अपनाएं:

  1. codelab नाम वाले ऐप्लिकेशन पर क्लिक करें.
  2. नेविगेशन मेन्यू में, कनेक्ट किए गए डेटा स्टोर पर क्लिक करें.
  3. + नया डेटा स्टोर पर क्लिक करें.
  4. सोर्स में, Google Calendar खोजें और चुनें पर क्लिक करें.
  5. कार्रवाइयां सेक्शन में, पिछले चरणों में सेव किया गया क्लाइंट आईडी और क्लाइंट सीक्रेट डालें. इसके बाद, पुष्टि करें पर क्लिक करें. साथ ही, OAuth क्लाइंट की पुष्टि करने और उसे अनुमति देने के लिए दिया गया तरीका अपनाएं.
  6. कैलेंडर इवेंट बनाएं और कैलेंडर इवेंट अपडेट करें कार्रवाइयां चालू करें.
  7. जारी रखें पर क्लिक करें.

a1d76e70edec0cf.png

  1. कॉन्फ़िगरेशन सेक्शन में, डेटा कनेक्टर का नाम calendar पर सेट करें.
  2. बनाएं पर क्लिक करें.
  3. आपको कनेक्ट किए गए डेटा स्टोर पर अपने-आप रीडायरेक्ट कर दिया जाएगा. यहां आपको नया डेटा स्टोर दिखेगा.

Google Gmail डेटा स्टोर बनाएं:

  1. + नया डेटा स्टोर पर क्लिक करें.
  2. सोर्स में, Google Gmail खोजें और चुनें पर क्लिक करें.
  3. कार्रवाइयां सेक्शन में, पिछले चरणों में सेव किया गया क्लाइंट आईडी और क्लाइंट सीक्रेट डालें. इसके बाद, पुष्टि करें पर क्लिक करें.
  4. ईमेल भेजें कार्रवाई चालू करें.
  5. जारी रखें पर क्लिक करें.
  6. कॉन्फ़िगरेशन सेक्शन में, डेटा कनेक्टर का नाम gmail पर सेट करें.
  7. बनाएं पर क्लिक करें.
  8. आपको कनेक्ट किए गए डेटा स्टोर पर अपने-आप रीडायरेक्ट कर दिया जाएगा. यहां आपको नया डेटा स्टोर दिखेगा.

Google Drive डेटा स्टोर बनाएं:

  1. + नया डेटा स्टोर पर क्लिक करें.
  2. सोर्स में, Google Drive खोजें. इसके बाद, चुनें पर क्लिक करें.
  3. डेटा सेक्शन में जाकर, सभी को चुनें. इसके बाद, जारी रखें पर क्लिक करें.
  4. कॉन्फ़िगरेशन सेक्शन में, डेटा कनेक्टर का नाम drive पर सेट करें.
  5. बनाएं पर क्लिक करें.
  6. आपको कनेक्ट किए गए डेटा स्टोर पर अपने-आप रीडायरेक्ट कर दिया जाएगा. यहां आपको नया डेटा स्टोर दिखेगा.

NotebookLM डेटा स्टोर बनाएं:

  1. + नया डेटा स्टोर पर क्लिक करें.
  2. सोर्स में जाकर, NotebookLM खोजें. इसके बाद, चुनें पर क्लिक करें.
  3. कॉन्फ़िगरेशन सेक्शन में, डेटा कनेक्टर का नाम notebooklm पर सेट करें.
  4. बनाएं पर क्लिक करें.
  5. आपको कनेक्ट किए गए डेटा स्टोर पर अपने-आप रीडायरेक्ट कर दिया जाएगा. यहां आपको नया डेटा स्टोर दिखेगा.

कुछ मिनट बाद, कनेक्ट किए गए सभी डेटा स्टोर की स्थिति (NotebookLM को छोड़कर) चालू है के तौर पर दिखेगी. अगर आपको कोई गड़बड़ी दिखती है, तो गड़बड़ी की जानकारी देखने के लिए, डेटा सोर्स पर क्लिक करें.

ceba9eb2480a2696.png

टेस्ट डेटा स्टोर

Gemini Enterprise के वेब ऐप्लिकेशन का वह यूआरएल खोलें जिसे हमने पहले कॉपी किया था:

  1. मेन्यू ☰ > नई चैट पर क्लिक करें.
  2. चैट मैसेज के नए फ़ील्ड के फ़ुटर में, कनेक्टर आइकॉन पर क्लिक करें और सभी कनेक्टर चालू करें.
  3. अब कनेक्टर से जुड़े प्रॉम्प्ट के साथ एक्सपेरिमेंट किया जा सकता है. उदाहरण के लिए, चैट में Do I have any meetings today? टाइप करें और enter दबाएं.
  4. इसके बाद, How many emails did I receive today? टाइप करें और enter दबाएं.
  5. आखिर में, Give me the title of the last Drive file I created टाइप करें और enter दबाएं.

90e42539e5959634.png

कस्टम एजेंट बनाना

Gemini Enterprise के वेब ऐप्लिकेशन में, एजेंट डिज़ाइनर का इस्तेमाल करके नया एजेंट बनाएँ:

  1. मेन्यू ☰ > + नया एजेंट पर क्लिक करें.
  2. चैट में, An agent that always sends pirate-themed emails but use normal English otherwise टाइप करें और enter दबाएं.

2803c1dedd20433e.png

  1. Agent Designer, प्रॉम्प्ट के आधार पर एजेंट को ड्राफ़्ट करता है और उसे एडिटर में खोलता है.
  2. बनाएं पर क्लिक करें

कस्टम एजेंट आज़माएं

  1. Gemini Enterprise के वेब ऐप्लिकेशन में, नए एजेंट से चैट करें:
  2. मेन्यू ☰ > एजेंट पर क्लिक करें.
  3. आपके एजेंट में जाकर, एजेंट चुनें.
  4. नए चैट मैसेज फ़ील्ड के फ़ुटर में, कनेक्टर आइकॉन पर क्लिक करें. इसके बाद, कार्रवाइयां चालू करें पर क्लिक करें. इसके बाद, Mail के लिए दिए गए निर्देशों का पालन करके, एजेंट को अनुमति दें
  5. चैट में, Send an email to someone@example.com saying I'll see them at Cloud Next, generate some subject and body yourself टाइप करें और enter दबाएं. सेंपल ईमेल पते की जगह अपना ईमेल पता डाला जा सकता है.
  6. ईमेल भेजने के लिए, ✔️ पर क्लिक करें.

60e62437ce29a818.png

d4fb65d14fdf27da.png

4. प्रो-कोड कस्टम एजेंट

इस एजेंट की मदद से, उपयोगकर्ता अपनी आम भाषा में Workspace का डेटा खोज सकते हैं और कस्टम टूल और नियमों का इस्तेमाल करके कार्रवाइयां कर सकते हैं. यह इन एलिमेंट पर निर्भर करता है:

  • मॉडल: Gemini.
  • डेटा और कार्रवाइयां: Google Workspace (Calendar, Gmail, Drive, NotebookLM) के लिए Gemini Enterprise के डेटा स्टोर, Google Search, Google के मैनेज किए गए Vertex AI Search Model Context Protocol (MCP) सर्वर, Google Chat API के ज़रिए Google Chat मैसेज भेजने के लिए कस्टम टूल फ़ंक्शन.
  • एजेंट बनाने के टूल: एजेंट डेवलपमेंट किट (एडीके).
  • एजेंट होस्ट: Vertex AI Agent Engine.
  • यूज़र इंटरफ़ेस (यूआई): Gemini Enterprise का वेब ऐप्लिकेशन.

इसे Gemini Enterprise में इंटिग्रेट किया जाएगा. इसके लिए, bring-your-own सुविधा का इस्तेमाल किया जाएगा. इसलिए, हमें डिप्लॉयमेंट, रजिस्ट्रेशन, और कॉन्फ़िगरेशन के चरणों को पूरा करना होगा.

कॉन्सेप्ट की समीक्षा करें

Vertex AI

Vertex AI में, जनरेटिव एआई को बनाने और इस्तेमाल करने के लिए ज़रूरी सभी चीज़ें उपलब्ध हैं. जैसे, एआई के समाधान, खोज और बातचीत, 130 से ज़्यादा बुनियादी मॉडल, और यूनिफ़ाइड एआई प्लैटफ़ॉर्म.

4670fcf7a826af4d.png

Agent Development Kit (ADK)

एजेंट डेवलपमेंट किट (एडीके), टूल और फ़्रेमवर्क का एक खास सुइट है. इसे एआई एजेंट को आसानी से बनाने के लिए डिज़ाइन किया गया है. इसमें तर्क, मेमोरी मैनेजमेंट, और टूल इंटिग्रेशन के लिए पहले से बने मॉड्यूल उपलब्ध कराए जाते हैं.

मॉडल कॉन्टेक्स्ट पी्रोटोकॉल (एमसीपी)

मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) एक ओपन स्टैंडर्ड है. इसे इस तरह से डिज़ाइन किया गया है कि एआई ऐप्लिकेशन और अलग-अलग डेटा सोर्स या टूल के बीच आसानी से और सुरक्षित तरीके से इंटिग्रेट किया जा सके. इसके लिए, एक यूनिवर्सल "प्लग-एंड-प्ले" इंटरफ़ेस का इस्तेमाल किया जाता है.

फ़ंक्शन टूल

फ़ंक्शन टूल, पहले से तय की गई एक ऐसी रूटीन होती है जिसे एआई मॉडल ट्रिगर कर सकता है. इससे वह कुछ खास कार्रवाइयां कर सकता है या बाहरी सिस्टम से रीयल-टाइम डेटा पा सकता है. इससे, एआई मॉडल की क्षमताएं सिर्फ़ टेक्स्ट जनरेट करने से आगे बढ़ जाती हैं.

समाधान के आर्किटेक्चर की समीक्षा करना

43df337e0f3d64e8.png

सोर्स कोड की समीक्षा करना

agent.py

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

# Gemini Enterprise authentication injects a bearer token into the ToolContext state.
# The key pattern is "GE_AUTH_NAME_<random_digits>".
# We dynamically parse this token to authenticate our MCP and API calls.
GE_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(GE_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)]
)

एपीआई चालू करना

इस समाधान के लिए, इन एपीआई को चालू करना ज़रूरी है:

  1. Google Cloud Console में जाकर, Vertex AI, Cloud Resource Manager, और Google Chat API चालू करें:

4f02a36b050bab00.png

  1. मेन्यू ☰ > एपीआई और सेवाएं > चालू किए गए एपीआई और सेवाएं पर क्लिक करें. इसके बाद, पुष्टि करें कि Vertex AI API, Cloud Resource Manager API, और Google Chat API सूची में शामिल हैं.

इस समाधान के लिए, डेटा को ऐक्सेस करने की अतिरिक्त अनुमति की ज़रूरत होती है:

  1. Google Cloud console में, मेन्यू ☰ > Google Auth platform > डेटा ऐक्सेस पर क्लिक करें.

  1. स्कोप जोड़ें या हटाएं पर क्लिक करें.
  2. यहां दिए गए स्कोप कॉपी करें और उन्हें मैन्युअल तरीके से स्कोप जोड़ें फ़ील्ड में चिपकाएं.
  3. टेबल में जोड़ें पर क्लिक करें. इसके बाद, अपडेट करें पर क्लिक करें. इसके बाद, सेव करें पर क्लिक करें.
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/chat.messages.create
https://www.googleapis.com/auth/chat.spaces.create
  1. टेबल में जोड़ें पर क्लिक करें. इसके बाद, अपडेट करें पर क्लिक करें. इसके बाद, सेव करें पर क्लिक करें.

56fbba733139acfe.png

OAuth क्लाइंट के क्रेडेंशियल अपडेट करना

इस समाधान के लिए, अनुमति वाले एक और रीडायरेक्ट यूआरआई की ज़रूरत है:

  1. Google Cloud console में, मेन्यू ☰ > Google Auth platform > क्लाइंट पर क्लिक करें.

  1. क्लाइंट के नाम codelab पर क्लिक करें.
  2. रीडायरेक्ट यूआरआई की अनुमति दी गई है सेक्शन में, यूआरआई जोड़ें पर क्लिक करें और https://vertexaisearch.cloud.google.com/static/oauth/oauth.html डालें.
  3. सेव करें पर क्लिक करें.

deed597aa54fec91.png

Vertex AI Search MCP चालू करना

  1. टर्मिनल में, यह कमांड चलाएं:
gcloud beta services mcp enable discoveryengine.googleapis.com \
     --project=$(gcloud config get-value project)

Chat ऐप्लिकेशन को कॉन्फ़िगर करना

  1. Google Cloud Console में, Google Cloud के खोज फ़ील्ड में Google Chat API खोजें. इसके बाद, Google Chat API पर क्लिक करें. इसके बाद, मैनेज करें पर क्लिक करें और फिर कॉन्फ़िगरेशन पर क्लिक करें.

  1. ऐप्लिकेशन का नाम और ब्यौरे को Gemini Enterprise पर सेट करें.
  2. अवतार का यूआरएल एट्रिब्यूट की वैल्यू को https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png पर सेट करें.
  3. इंटरैक्टिव सुविधाएं चालू करें से चुने का निशान हटाएं. इसके बाद, दिखने वाले मोडल डायलॉग में बंद करें पर क्लिक करें.
  4. Log errors to Logging को चुनें.
  5. सेव करें पर क्लिक करें.

90cb612e51bce4e6.png

Vertex AI Agent Engine में एजेंट को डिप्लॉय करना

  1. GitHub की इस रिपॉज़िटरी को डाउनलोड करें.

  1. टर्मिनल में, 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

eafd2f9c4fbf305.png

  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

Gemini Enterprise में एजेंट को रजिस्टर करना

Cloud Console में जाकर, नए टैब में Gemini Enterprise खोलें. इसके बाद, यह तरीका अपनाएं:

  1. codelab नाम वाले ऐप्लिकेशन पर क्लिक करें.
  2. नेविगेशन मेन्यू में, एजेंट पर क्लिक करें.
  3. + एजेंट जोड़ें पर क्लिक करें.
  4. एजेंट इंजन के ज़रिए कस्टम एजेंट के लिए, जोड़ें पर क्लिक करें. आपको अनुमतियां सेक्शन दिखेगा.
  5. अनुमति जोड़ें पर क्लिक करें.
  6. अनुमति देने वाले का नाम को enterprise-ai पर सेट करें. नाम के आधार पर एक आईडी जनरेट होता है और उसे फ़ील्ड में दिखाया जाता है. इसे कॉपी करें.
  7. क्लाइंट आईडी को उसी वैल्यू पर सेट करें जिस पर पिछले चरणों में OAuth क्लाइंट बनाया और अपडेट किया गया था.
  8. क्लाइंट सीक्रेट को उसी वैल्यू पर सेट करें जिस पर पिछले चरणों में OAuth क्लाइंट बनाया और अपडेट किया गया था.
  9. टोकन यूआरआई को https://oauth2.googleapis.com/token पर सेट करें.
  10. पिछले चरणों में बनाए गए और अपडेट किए गए 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
  1. इसके बाद, हो गया पर क्लिक करें. फिर, आगे बढ़ें पर क्लिक करें. आपको कॉन्फ़िगरेशन सेक्शन दिखेगा.
  2. एजेंट का नाम और एजेंट का ब्यौरा को Enterprise AI पर सेट करें.
  3. Agent Engine reasoning engine को, पिछले चरणों में कॉपी किए गए reasoning engine के संसाधन के नाम पर सेट करें. इसका फ़ॉर्मैट ऐसा होता है:
projects/<PROJECT_ID>/locations/<LOCATION>/reasoningEngines/<REASONING_ENGINE_ID>
  1. बनाएं पर क्लिक करें. जोड़ा गया नया एजेंट अब एजेंट में दिख रहा है.

एजेंट आज़माएँ

  1. Gemini Enterprise के वेब ऐप्लिकेशन में, नए एजेंट से चैट करें:
  2. मेन्यू ☰ > एजेंट पर क्लिक करें.
  3. आपके संगठन से में जाकर, एजेंट चुनें.
  4. चैट में, Please find my meetings for today, I need their titles and links टाइप करें और enter दबाएं.
  5. अनुमति दें पर क्लिक करें. इसके बाद, अनुमति देने की प्रोसेस पूरी करें.

ed61cf654cbcd76c.png

  1. एजेंट, उपयोगकर्ता के खाते के हिसाब से कैलेंडर इवेंट की सूची के साथ जवाब देता है.
  2. चैट में, Please send a Chat message to someone@example.com with the following text: Hello! टाइप करें और enter दबाएं.
  3. एजेंट, पुष्टि करने वाले मैसेज के साथ जवाब देता है.

1647ebff031c42e7.png

a8087d2351e77fb4.png

5. Google Workspace ऐड-ऑन के तौर पर डिफ़ॉल्ट एजेंट

इस एजेंट की मदद से उपयोगकर्ता, Workspace ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) में अपनी भाषा में Workspace का डेटा खोज सकते हैं. यह इन एलिमेंट पर निर्भर करता है:

  • मॉडल: Gemini.
  • डेटा: Google Workspace (Calendar, Gmail, Drive, NotebookLM) के लिए Gemini Enterprise के डेटा स्टोर, Google Search.
  • एजेंट होस्ट: Gemini Enterprise.
  • यूज़र इंटरफ़ेस (यूआई): Chat और Gmail के लिए Google Workspace ऐड-ऑन. इसे Calendar, Drive, Docs, Sheets, और Slides के लिए आसानी से बढ़ाया जा सकता है.
  • Google Workspace ऐड-ऑन: Apps Script, Gemini Enterprise और Vertex AI API, कॉन्टेक्स्ट के हिसाब से (उपयोगकर्ता का मेटाडेटा, चुना गया Gmail मैसेज).

Google Workspace ऐड-ऑन को StreamAssist API का इस्तेमाल करके, Gemini Enterprise से कनेक्ट किया जाएगा.

कॉन्सेप्ट की समीक्षा करना

Google Workspace ऐड-ऑन

Google Workspace ऐड-ऑन, पसंद के मुताबिक बनाया गया एक ऐप्लिकेशन होता है. यह Google Workspace के एक या उससे ज़्यादा ऐप्लिकेशन (Gmail, Chat, Calendar, Docs, Drive, Meet, Sheets, और Slides) की सुविधाओं को बढ़ाता है.

Apps Script

Apps Script, क्लाउड पर आधारित एक JavaScript प्लैटफ़ॉर्म है. यह Google Drive पर काम करता है. इसकी मदद से, Google के सभी प्रॉडक्ट को इंटिग्रेट किया जा सकता है और उनमें किए जाने वाले टास्क को ऑटोमेट किया जा सकता है.

Google Workspace Card framework

Google Workspace में मौजूद कार्ड फ़्रेमवर्क की मदद से डेवलपर, बेहतर और इंटरैक्टिव यूज़र इंटरफ़ेस बना सकते हैं. इससे व्यवस्थित और देखने में आकर्षक कार्ड बनाए जा सकते हैं. इनमें टेक्स्ट, इमेज, बटन, और अन्य विजेट शामिल किए जा सकते हैं. इन कार्ड से, उपयोगकर्ताओं को बेहतर अनुभव मिलता है. ऐसा इसलिए, क्योंकि इनमें व्यवस्थित तरीके से जानकारी दी जाती है. साथ ही, Workspace ऐप्लिकेशन में सीधे तौर पर तुरंत कार्रवाई करने की सुविधा मिलती है.

समाधान के आर्किटेक्चर की समीक्षा करना

1798c39f7aaed8fc.png

सोर्स कोड की समीक्षा करना

appsscript.json

...
"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"
  ]
...

Chat.gs

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

Sidebar.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 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();
  }
}
...

AgentHandler.gs

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

सेवा खाता शुरू करना

Google Cloud Console में जाकर, यह तरीका अपनाएं:

  1. मेन्यू ☰ > आईएएम और एडमिन > सेवा खाते > + सेवा खाता बनाएं पर क्लिक करें.

  1. सेवा खाते का नाम को ge-add-on पर सेट करें.

d44d6aae29e2464c.png

  1. बनाएं और जारी रखें पर क्लिक करें.
  2. अनुमतियों में Discovery Engine Viewer की भूमिका जोड़ें.

f1374efa4f326ef5.png

  1. जारी रखें पर क्लिक करें. इसके बाद, हो गया पर क्लिक करें. आपको सेवा खातों वाले पेज पर रीडायरेक्ट कर दिया जाएगा. यहां आपको बनाया गया सेवा खाता दिखेगा.

b9496085f1404c5c.png

  1. नए बनाए गए सेवा खाते को चुनें. इसके बाद, कुंजियां टैब को चुनें.
  2. कुंजी जोड़ें पर क्लिक करें. इसके बाद, नई कुंजी बनाएं पर क्लिक करें.
  3. JSON को चुनें. इसके बाद, बनाएं पर क्लिक करें.

f4280f5533a08821.png

  1. डायलॉग बंद हो जाता है और आपकी नई सार्वजनिक/निजी कुंजी की जोड़ी, JSON फ़ाइल के तौर पर आपके लोकल एनवायरमेंट में अपने-आप डाउनलोड हो जाती है.

Apps Script प्रोजेक्ट बनाना और उसे कॉन्फ़िगर करना

  1. Enterprise AI add on Apps Script प्रोजेक्ट खोलने के लिए, इस बटन पर क्लिक करें:

  1. खास जानकारी > कॉपी बनाएं पर क्लिक करें.
  2. स्क्रिप्ट प्रॉपर्टी जोड़ने के लिए, अपने Apps Script प्रोजेक्ट में जाकर, प्रोजेक्ट सेटिंग > स्क्रिप्ट की प्रॉपर्टी में बदलाव करें > स्क्रिप्ट की प्रॉपर्टी जोड़ें पर क्लिक करें.
  3. 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>
  1. APP_SERVICE_ACCOUNT_KEY को, पिछले चरणों में डाउनलोड की गई सेवा खाते की फ़ाइल से JSON कुंजी पर सेट करें.
  2. स्क्रिप्ट प्रॉपर्टी सेव करें पर क्लिक करें

Gmail और Chat में डिप्लॉय करना

अपने Apps Script प्रोजेक्ट में, यह तरीका अपनाएं:

  1. तैनात करें > टेस्ट डिप्लॉयमेंट पर क्लिक करें. इसके बाद, इंस्टॉल करें पर क्लिक करें. यह सुविधा अब Gmail में उपलब्ध है.
  2. हेड डिप्लॉयमेंट आईडी में जाकर, कॉपी करें पर क्लिक करें.

2ed2df972ad92715.png

Google Cloud Console में जाकर, यह तरीका अपनाएं:

  1. Google Cloud के खोज फ़ील्ड में Google Chat API खोजें. इसके बाद, Google Chat API पर क्लिक करें. इसके बाद, मैनेज करें पर क्लिक करें. इसके बाद, कॉन्फ़िगरेशन पर क्लिक करें.

  1. इंटरैक्टिव सुविधाएं चालू करें को चुनें.
  2. स्पेस और ग्रुप बातचीत में शामिल हों से चुने का निशान हटाएं.
  3. कनेक्शन की सेटिंग में जाकर, Apps Script को चुनें.
  4. डिप्लॉयमेंट आईडी को पिछले चरणों में कॉपी किए गए हेड डिप्लॉयमेंट आईडी पर सेट करें.
  5. दिखने की सेटिंग में जाकर, इस Chat ऐप्लिकेशन को अपने Workspace डोमेन के चुनिंदा लोगों और ग्रुप के लिए उपलब्ध कराएं को चुनें. इसके बाद, अपना ईमेल पता डालें.
  6. सेव करें पर क्लिक करें.

3b7d461c423f7c51.png

ऐड-ऑन आज़माएं

नए टैब में Google Chat खोलें. इसके बाद, यह तरीका अपनाएं:

  1. Chat ऐप्लिकेशन Gemini Enterprise में कोई डायरेक्ट मैसेज स्पेस खोलें.

3da8690d19baf2d0.png

  1. कॉन्फ़िगर करें पर क्लिक करें और पुष्टि करने की प्रोसेस पूरी करें.
  2. What are my meetings for today? टाइप करें और enter दबाएं. Gemini Enterprise के Chat ऐप्लिकेशन को नतीजों के साथ जवाब देना चाहिए.

c8c63fb3f324fecf.png

नए टैब में Gmail खोलें. इसके बाद, यह तरीका अपनाएं:

  1. खुद को एक ईमेल भेजें. इसमें विषय को We need to talk पर और मुख्य हिस्से को Are you available today between 8 and 9 AM? पर सेट करें
  2. हाल ही में मिला ईमेल मैसेज खोलें.
  3. Enterprise के लिए एआई ऐड-ऑन साइडबार खोलें.
  4. मैसेज को Am I? पर सेट करें
  5. मैसेज भेजें पर क्लिक करें.
  6. जवाब, बटन के बाद दिखता है.

d33b8cb50ee251b7.png

6. व्यवस्थित करें

Google Cloud प्रोजेक्ट मिटाना

इस कोडलैब में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क लिए जाने से बचने के लिए, हमारा सुझाव है कि आप Google Cloud प्रोजेक्ट को मिटा दें.

Google Cloud Console में जाकर, यह तरीका अपनाएं:

  1. मेन्यू ☰ > आईएएम और एडमिन > सेटिंग पर क्लिक करें.

  1. शट डाउन करें पर क्लिक करें.
  2. प्रोजेक्ट आईडी डालें.
  3. फिर भी बंद करें पर क्लिक करें.

3b9492d97f771b2c.png

7. बधाई हो

बधाई हो! आपने ऐसे समाधान बनाए हैं जो कर्मचारियों के लिए, Gemini Enterprise और Google Workspace को एक साथ इस्तेमाल करने की सुविधा देते हैं!

आगे क्या करना है?

इस कोडलैब में, हम सिर्फ़ सबसे सामान्य इस्तेमाल के उदाहरण दिखाते हैं. हालांकि, ऐसे कई अन्य उदाहरण भी हैं जिन पर आपको अपने समाधानों में विचार करना चाहिए. जैसे:

  • Gemini CLI और Antigravity जैसे एआई की मदद से काम करने वाले डेवलपर टूल इस्तेमाल करें.
  • कस्टम एमसीपी, कस्टम फ़ंक्शन कॉल, और जनरेटिव यूआई जैसे अन्य एजेंट फ़्रेमवर्क और टूल के साथ इंटिग्रेट करें.
  • Vertex AI जैसे प्लैटफ़ॉर्म पर होस्ट किए गए कस्टम मॉडल के साथ-साथ अन्य एआई मॉडल के साथ इंटिग्रेट करें.
  • इन्हें Dialogflow जैसे प्लैटफ़ॉर्म पर होस्ट किए गए अन्य एजेंट के साथ इंटिग्रेट किया जा सकता है. इसके अलावा, इन्हें तीसरे पक्ष के एजेंट के साथ Cloud Marketplace के ज़रिए इंटिग्रेट किया जा सकता है.
  • टीमों, संगठनों या सार्वजनिक उपयोगकर्ताओं को बेहतर सुविधाएं देने के लिए, Cloud Marketplace पर एजेंट पब्लिश करें.

ज़्यादा जानें

डेवलपर के लिए कई संसाधन उपलब्ध हैं. जैसे, YouTube वीडियो, दस्तावेज़ वाली वेबसाइटें, कोड सैंपल, और ट्यूटोरियल: