Gemini API की मदद से, Google Workspace के टास्क अपने-आप पूरे होने की सुविधा

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

इस कोडलैब में, Gemini API की फ़ंक्शन-कॉलिंग और मल्टी-मॉडलिटी सुविधाओं की मदद से, Google Workspace के टास्क अपने-आप होने का तरीका बताया गया है.

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

  • Apps Script, JavaScript या इससे मिलती-जुलती प्रोग्रामिंग भाषा की बुनियादी जानकारी

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

  • Gemini API के फ़ंक्शन कॉलिंग और मल्टी-मॉडलिटी सुविधाओं का फ़ायदा कैसे लिया जा सकता है.
  • Gemini API के एक से ज़्यादा कॉल को एक साथ चेन करने का तरीका.
  • Gemini API की मदद से, Google Workspace के टास्क अपने-आप कैसे पूरे करें.

आपको इन चीज़ों की ज़रूरत पड़ेगी

इस कोडलैब का पूरा कोड, GitHub पर Gemini API कुकबुक में उपलब्ध है. पूरे किए गए कोड की ज़रूरत होने पर इसे देखें.

2. Gemini API सेट अप करना

Gemini के बारे में जानकारी

Gemini मॉडल, Google का सबसे बड़ा और सबसे सक्षम एआई मॉडल हैं. ऐप्लिकेशन में इन मॉडल का फ़ायदा पाने के लिए, Gemini API का इस्तेमाल किया जा सकता है. Gemini API को Google AI Studio में भी आज़माया जा सकता है. यह एपीआई के लिए एक वेब इंटरफ़ेस है. इसमें प्रॉम्प्ट आज़माएं, मॉडल की सेटिंग में बदलाव करें, और कस्टम मॉडल को ट्यून करने के लिए कोड लिखने की ज़रूरत न डालें.

कुंजी पाएं

ज़रूरी नहीं: अपनी कुंजी की जांच करें

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

export GOOGLE_API_KEY=Paste_your_API_key_here

curl "https://generativelanguage.googleapis.com/v1beta/models?key=${GOOGLE_API_KEY}"

आपको JSON फ़ॉर्मैट में मॉडल की सूची दिखेगी, जैसे कि Model/gemini-1.0-pro. यानी यह कारगर साबित हुआ.

3. ज़रूरी नहीं: Gemini API को ऐक्सेस करने का अनुरोध करें

इस चरण को छोड़कर, Gemini API को Apps Script ऐप्लिकेशन में जोड़ने से पहले, इससे आपको यह समझने में मदद मिलती है कि कॉन्टेंट जनरेट करने की सुविधा कैसे काम करती है.

मॉडल के बारे में जानकारी

Gemini API के ऐसे कई मॉडल उपलब्ध हैं जिनमें अलग-अलग सुविधाएँ और सीमाएं हैं. इन सभी मॉडल की जानकारी, Gemini के मॉडल वाले पेज पर दी गई है. साथ ही, इनकी क्षमताओं के बारे में भी बताया गया है.

पहला अनुरोध किया जा रहा है

Gemini API से टेक्स्ट प्रॉम्प्ट पाने के लिए, आपको JSON का अनुरोध करना होगा और उसे REST API एंडपॉइंट पर भेजना होगा.

ऐसा करने के लिए, इन चरणों का अनुसरण करें:

  1. नई फ़ाइल में, यह JSON अनुरोध डालें:
{
  contents: [
   {
     parts: [
       { text: 'The most important aspects of a persuasive presentation are:' }
     ]
   }
 ]
}

JSON के अनुरोध में यह प्रॉम्प्ट शामिल है: The most important aspects of a persuasive presentation are:. मॉडल इस निर्देश को पूरा करके, सीधे आपको नतीजे देगा.

JSON के अनुरोध में, जानकारी अपने-आप भरने के लिए तीन टॉप लेवल फ़ील्ड होते हैं: contents, generationConfig, और safetySettings. सिर्फ़ contents ज़रूरी है. अन्य आउटपुट, आउटपुट को कंट्रोल करने के तरीके उपलब्ध कराते हैं.

  1. इस JSON को presentation.txt फ़ाइल में सेव करें और फिर इसे सीधे curl को पास करें. इसका यह तरीका अपनाएं:
curl -H 'Content-Type: application/json' -X POST -d @presentation.txt \
  'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-latest:generateContent?key='${GOOGLE_API_KEY}

इस उदाहरण में, यूआरएल में ये वैल्यू सेट की गई हैं:

  • v1beta, एपीआई वर्शन के बारे में बताता है.
  • gemini-1.0-pro-latest, Gemini 1.0 Pro को मॉडल के तौर पर दिखाता है और सबसे नए स्नैपशॉट का इस्तेमाल करता है.
  • generateContent, उस एपीआई तरीके के बारे में बताता है जिसे आपने कॉल किया है.

आपको इनके जैसे नतीजे दिखेंगे:

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "* **Credibility:** The audience must trust that you are an expert on the subject matter and that you have their best interests at heart.\n* **Clearness:** Your message must be easy to understand and follow. Avoid using jargon or technical terms that your audience may not be familiar with.\n* **Concreteness:** Use specific examples and data to support your arguments. Avoid making vague or general claims.\n* **Emotional appeal:** In addition to appealing to the audience's logical side, you should also try to connect with them on an emotional level. Use storytelling, humor, and personal anecdotes to make your points more memorable and engaging.\n* **Strong closing:** End your presentation with a strong call to action. Tell the audience what you want them to do and why it is important for them to do it."
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [...]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [...]
  }
}

इसे आसानी से पढ़ा जा सके, इसलिए यहां नियमित रूप से फ़ॉर्मैट किया गया टर्मिनल आउटपुट दिया गया है:

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

generationConfig और safetySettings के साथ-साथ अन्य सेटिंग के बारे में ज़्यादा जानने के लिए, प्रॉम्प्ट और सुरक्षा से जुड़ी गाइड देखें.

4. Apps Script से Gemini API को कॉल करना

  1. script.new पर जाएं और code.gs आपके लिए अपने-आप एक Apps Script फ़ाइल तैयार हो जाएगी.
  2. code.gs फ़ाइल पर अपना कर्सर रखें. इसके बाद, 8bfe57773be886ab.png > पर क्लिक करें नाम बदलें.
  3. फ़ाइल का नाम बदलकर utils.gs करें.
  4. फ़ाइल से myFunction फ़ंक्शन हटाएं, ताकि फ़ाइल खाली हो.

प्रोजेक्ट में अपनी एपीआई पासकोड जोड़ें

  1. नेविगेशन मेन्यू में, प्रोजेक्ट सेटिंग चुनें.
  2. स्क्रिप्ट प्रॉपर्टी में जाकर, स्क्रिप्ट प्रॉपर्टी जोड़ें पर क्लिक करें.
  3. प्रॉपर्टी में, GOOGLE_API_KEY डालें.
  4. वैल्यू में जाकर, Google AI Studio में मौजूद एपीआई पासकोड डालें.

fcfe205a93879c49.png

  1. स्क्रिप्ट प्रॉपर्टी सेव करें पर क्लिक करें.
  2. एडिटर पर वापस जाएं.

Gemini API कोड जोड़ें

utils.gs फ़ाइल में, यह तरीका अपनाएं:

एपीआई पासकोड और एंडपॉइंट सेट अप करना:

const properties = PropertiesService.getScriptProperties().getProperties();
const geminiApiKey = properties['GOOGLE_API_KEY'];
const geminiEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-latest:generateContent?key=${geminiApiKey}`;
  1. यह फ़ंक्शन जोड़ें जो किसी प्रॉम्प्ट के साथ Gemini API को कॉल करता है:
function callGemini(prompt, temperature=0) {
  const payload = {
    "contents": [
      {
        "parts": [
          {
            "text": prompt
          },
        ]
      }
    ], 
    "generationConfig":  {
      "temperature": temperature,
    },
  };

  const options = { 
    'method' : 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  const response = UrlFetchApp.fetch(geminiEndpoint, options);
  const data = JSON.parse(response);
  const content = data["candidates"][0]["content"]["parts"][0]["text"];
  return content;
}
  1. प्रॉम्प्ट सेट करने वाला यह फ़ंक्शन जोड़ें:
function testGemini() {
  const prompt = "The best thing since sliced bread is";
  const output = callGemini(prompt);
  console.log(prompt, output);
}

इसका परीक्षण करें

  1. 76113423d1f91775.png सेव करें पर क्लिक करें.
  2. फ़ंक्शन ड्रॉपडाउन सूची में testGemini चुनें और 5b9034ff679c8761.png पर क्लिक करें.
  3. ज़रूरी अनुमतियां स्वीकार करें. आपका कोड चलना चाहिए और आपको एक्ज़ीक्यूशन लॉग में नतीजों के साथ कुछ कंसोल आउटपुट दिखेगा.

एक्ज़ीक्यूशन लॉग

इससे काम हो गया!

5. इमेज की मदद से Gemini API को कॉल करें

Gemini के मॉडल की सबसे दमदार सुविधाओं में से एक है मल्टी-मॉडल इनपुट की सुविधा. इसका मतलब है कि कॉन्टेंट में टेक्स्ट के साथ-साथ और भी बहुत कुछ उपलब्ध कराया जा सकता है! इस सेक्शन में, एक ऐसा फ़ंक्शन जोड़ा गया है जो Gemini API को इमेज के ज़रिए कॉल करता है.

  • मौजूदा const geminiEndpoint एलान के बाद, utils.gs फ़ाइल में सबसे ऊपर यह लाइन जोड़ें:
const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;

Gemini Vision कोड जोड़ें

  1. जोड़े गए इस नए एंडपॉइंट को कॉल करने के लिए, utils.gs फ़ाइल में कोई फ़ंक्शन जोड़ें:
function callGeminiProVision(prompt, image, temperature=0) {
  const imageData = Utilities.base64Encode(image.getAs('image/png').getBytes());

  const payload = {
    "contents": [
      {
        "parts": [
          {
            "text": prompt
          },
          {
            "inlineData": {
              "mimeType": "image/png",
              "data": imageData
            }
          }          
        ]
      }
    ], 
    "generationConfig":  {
      "temperature": temperature,
    },
  };

  const options = { 
    'method' : 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  const response = UrlFetchApp.fetch(geminiProVisionEndpoint, options);
  const data = JSON.parse(response);
  const content = data["candidates"][0]["content"]["parts"][0]["text"];
  return content;
}
  1. नीचे दिया गया टेस्ट फ़ंक्शन जोड़ें:
function testGeminiVision() {
  const prompt = "Provide a fun fact about this object.";
  const image = UrlFetchApp.fetch('https://storage.googleapis.com/generativeai-downloads/images/instrument.jpg').getBlob();
  const output = callGeminiProVision(prompt, image);
  console.log(prompt, output);
}

यह फ़ंक्शन, इंटरनेट से टेस्ट इमेज लोड करता है और उसे आपके तय किए गए फ़ंक्शन में भेजता है. बाद में, किसी स्प्रेडशीट से चार्ट का इस्तेमाल करने के लिए उसे वायर करें, ताकि यह सिर्फ़ एक टेस्ट हो.

इसका परीक्षण करें

  • testGeminiVision फ़ंक्शन को सेव करें और चलाएं. इसके बाद, आउटपुट की जांच करें.

849c6728bfb5ec52.png

6. टूल की मदद से Gemini API का इस्तेमाल करना

टेक्स्ट और इमेज के अलावा, अपने प्रॉम्प्ट में मौजूद टूल का भी ऐक्सेस दिया जा सकता है.

टूल-हैंडलिंग कोड जोड़ें

  • utils.gs फ़ाइल में ऐसा फ़ंक्शन जोड़ें जो टूल के निर्देशों को स्वीकार करता हो:
function callGeminiWithTools(prompt, tools, temperature=0) {
  const payload = {
    "contents": [
      {
        "parts": [
          {
            "text": prompt
          },
        ]
      }
    ], 
    "tools" : tools,
    "generationConfig":  {
      "temperature": temperature,
    },    
  };

  const options = { 
    'method' : 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  const response = UrlFetchApp.fetch(geminiEndpoint, options);
  const data = JSON.parse(response);
  const content = data["candidates"][0]["content"]["parts"][0]["functionCall"];
  return content;
}

इस स्कीमा और उपलब्ध फ़ील्ड के बारे में ज़्यादा जानकारी के लिए, FunctionDeclaration एपीआई का रेफ़रंस देखें.

इसका परीक्षण करें

  1. वह टूल तय करें जिसका इस्तेमाल करके मॉडल, मौजूदा तारीख और समय का पता लगा सके:
function testGeminiTools() {
  const prompt = "Tell me how many days there are left in this month.";
  const tools = {
    "function_declarations": [
      {
        "name": "datetime",
        "description": "Returns the current date and time as a formatted string.",
        "parameters": {
          "type": "string"
        }
      }
    ]
  };
  const output = callGeminiWithTools(prompt, tools);
  console.log(prompt, output);
}

यहां इस्तेमाल किया गया फ़ॉर्मैट FunctionDeclaration स्कीमा है. असल में, तारीख-समय फ़ंक्शन को कॉल नहीं किया जाता. आपको सिर्फ़ इस बात की सूचना मिलेगी कि मॉडल ने फ़ंक्शन कॉल का अनुरोध किया है. फ़ंक्शन कॉल को बाद के चरण में मैनेज किया जाता है.

  1. आउटपुट देखने के लिए testGeminiTools फ़ंक्शन को सेव करें और चलाएं.

एक्ज़ीक्यूशन लॉग

7. Google Workspace के साथ डेमो इंटिग्रेशन के बारे में खास जानकारी

अब आपको पता है कि फ़ंक्शन कॉल करने की सुविधा कैसे काम करती है. इसलिए, अब Gemini मॉडल की सुविधाओं को अन्य सेवाओं के लिए आसानी से इस्तेमाल किया जा सकता है. अगले कुछ सेक्शन में, आपको Google Workspace प्रॉडक्ट, जैसे कि Google Drive, Google Slides, और Google Sheets के लिए इंटिग्रेशन बनाने की जानकारी दी गई है. यहां एक सरल डायग्राम दिया गया है:

तीन टूल

हाई लेवल पर, जब उपयोगकर्ता की कोई क्वेरी आती है, तो Gemini API के फ़ंक्शन कॉलिंग का इस्तेमाल करके यह तय किया जाता है कि उसे कौनसा टूल इस्तेमाल करना है. आपको तीन टूल बनाने हैं, जो ये काम कर सकते हैं:

  • मीटिंग सेट अप करें. Google Drive में किसी ब्लॉग की खास जानकारी देने और Google Calendar में बनाई गई नई मीटिंग में खास जानकारी जोड़ने के लिए, डायग्राम में दिख रहा setupMeeting() फ़ंक्शन, Gemini 1.0 Pro API को शुरू करता है.
  • चार्ट से मिली अहम जानकारी के आधार पर ईमेल ड्राफ़्ट करना. Google Sheets में चार्ट का विश्लेषण करने और विश्लेषण के आधार पर Gmail में ईमेल लिखने के लिए, डायग्राम में मौजूद draftEmail() फ़ंक्शन, Gemini 1.0 Pro Vision को शुरू करता है.
  • स्केलेटन डेक बनाएं. Google Slides में किसी डेक के लिए बुलेट पॉइंट पर सोच-विचार करने के लिए, डायग्राम में दिखाए गए createDeck() फ़ंक्शन में Gemini 1.0 Pro को शुरू किया जा रहा है.

हर टूल के लिए, आपको नीचे दिए गए तीन काम करने होंगे:

  1. यह देखें कि Gemini API के फ़ंक्शन को कॉल करने के रिस्पॉन्स में, if...else ब्लॉक में उस टूल को शुरू करने के लिए कहा जाता है या नहीं.
  2. टूल की सुविधाओं को लागू करने के लिए, असल फ़ंक्शन जोड़ें.
  3. Gemini API को इस टूल के बारे में बताएँ, ताकि Gemini मॉडल को यह पता चल सके कि यह टूल मौजूद है या नहीं. साथ ही, वह फ़ंक्शन को कॉल करने का सही जवाब दे सके.

8. Apps Script का इस्तेमाल करके मीटिंग सेट अप करना

सबसे पहले, Google Calendar में मीटिंग अपने-आप सेट अप हो जाती है. हालांकि, इसमें जानकारी भी जोड़ी जाती है, जो Google Drive में किसी फ़ाइल की खास जानकारी होती है.

ऐसा करने के लिए, इन चरणों का अनुसरण करें:

  1. इस टेक्स्ट फ़ाइल को डाउनलोड करें, जो Gemini 1.5 Pro के लॉन्च ब्लॉग की टेक्स्ट कॉपी है.
  2. फ़ाइल को Google Drive में अपने रूट फ़ोल्डर में अपलोड करें.
  3. एडिटर में, main.gs फ़ाइल बनाएं और यह कोड जोड़ें:
function main() {
  const userQuery = "Set up a meeting at 10AM tomorrow with Helen to discuss the news in the Gemini-blog.txt file.";

  var tool_use = callGeminiWithTools(userQuery, WORKSPACE_TOOLS);
  Logger.log(tool_use);
  
  if(tool_use['name'] == "setupMeeting") {
    setupMeeting(tool_use['args']['time'], tool_use['args']['recipient'], tool_use['args']['filename']);
    Logger.log("Your meeting has been set up.");
 }
  else
    Logger.log("no proper tool found");
}

यहाँ, आपने Gemini API के फ़ंक्शन से कॉल करने की सुविधा को शुरू कर दिया है. इसके बाद, आपको टूल फ़ंक्शन तय करना होगा.

  1. संपादक के बाईं ओर, सेवाएं के आगे, + सेवा जोड़ें > Google Calendar API > जोड़ें. यह बेहतर Google कैलेंडर सेवा को चालू करता है, जिसका इस्तेमाल आपको बाद में कुछ बेहतर एपीआई के लिए करना होगा.

कोई सर्विक जोड़ें

  1. utils.gs फ़ाइल में, यह कोड जोड़ें:
function attachFileToMeeting(event, file, fileName) {
  // Get the iCal ID for the event.
  const iCalEventId = event.getId();

  // Log the ID and title for debugging.
  console.log(`iCal event ID: ${iCalEventId}`);
  console.log(`event Title: ${event.getTitle()}`);

  // Set up the options for listing the event with the advanced Google Calendar service.
  const options = {
      iCalUID: iCalEventId,
    };

  // Use the primary calendar as the calendar ID to list events.
  const calendarId = 'primary';

  // Use the advanced Google Calendar service to list the event.
  const calEvents = Calendar.Events.list(calendarId, options);

  // Get the Calendar ID used by the advanced Google Calendar service.
  const eventId = calEvents.items[0].id;

  // Get the file URL for the attachment.
  const fileUrl = file.getUrl();

    // Set up the patch options to add the file.
    var patch = {
      attachments: [{
        'fileUrl': fileUrl,
        'title': fileName
      }]
    };

    // Patch the event to add the file as an attachment.
    Calendar.Events.patch(patch, 'primary', eventId, {"supportsAttachments": true});  
}

function setupMeeting(time, recipient, filename) {
  const files = DriveApp.getFilesByName(filename);
  const file = files.next();
  const blogContent = file.getAs("text/*").getDataAsString();
  
  var geminiOutput = callGemini("Give me a really short title of this blog and a summary with less than three sentences. Please return the result as a JSON with two fields: title and summary. \n" +  blogContent);
  // The Gemini model likes to enclose the JSON with ```json and ```
  geminiOutput = JSON.parse(geminiOutput.replace(/```(?:json|)/g, ""));  
  const title = geminiOutput['title'];
  const fileSummary = geminiOutput['summary'];

  const event = CalendarApp.getDefaultCalendar().createEventFromDescription(`meet ${recipient} at ${time} to discuss "${title}"`); 
  event.setDescription(fileSummary);
  attachFileToMeeting(event, file, filename);
}

यह कोड ये काम करता है:

  • setupMeeting() फ़ंक्शन आपकी Google Drive से गुज़रता है और Gemini-blog.txt फ़ाइल को खोजता है. Gemini API के फ़ंक्शन को कॉल करने पर, यह फ़ाइल नाम अपने-आप वापस आ जाता है. जवाब के चरण #3 में ऐसा होता है.
  • setupMeeting() फ़ंक्शन, फ़ाइल के कॉन्टेंट की खास जानकारी देने के लिए Gemini API को कॉल करता है. साथ ही, फ़्री फ़ॉर्म ब्यौरे का इस्तेमाल करके CalendarApp के साथ मीटिंग सेट अप करता है और मीटिंग में खास जानकारी जोड़ता है.
  • setupMeeting() फ़ंक्शन, मीटिंग में ब्लॉग फ़ाइल को अटैच करने के लिए Google Calendar की बेहतर सेवा का इस्तेमाल करने के लिए, attachFileToMeeting() फ़ंक्शन को कॉल करता है.
  1. utils.gs फ़ाइल के सबसे ऊपर, यह कोड जोड़ें:
const WORKSPACE_TOOLS = {
 "function_declarations": [
   {
     "name": "setupMeeting",
     "description": "Sets up a meeting in Google Calendar.",
     "parameters": {
       "type": "object",
       "properties": {
         "time": {
           "type": "string",
           "description": "The time of the meeting."
         },
         "recipient": {
           "type": "string",
           "description": "The name of the recipient."
         },   
         "filename": {
           "type": "string",
           "description": "The name of the file."
         },                     
       },
       "required": [
         "time",
         "recipient",
         "filename"
       ]
     }
   },
   // You add tools here.        
 ]
};
  1. एडिटर में, main.gs फ़ाइल पर वापस जाएं और 5b9034ff679c8761.png पर क्लिक करें.
  2. अगर Google Workspace आपसे स्क्रिप्ट चलाने की अनुमति मांगता है, तो ठीक है पर क्लिक करें.

कुछ ही सेकंड में, एक्ज़ीक्यूशन लॉग पर एक मैसेज दिखता है. इससे आपको पता चलता है कि आपकी मीटिंग सेट अप हो गई है.

  1. Google Calendar में, खास जानकारी और अटैचमेंट वाली मीटिंग खोजें.

मीटिंग का न्योता

9. Apps Script का इस्तेमाल करके ईमेल ड्राफ़्ट करना

इसके बाद, Gmail में ईमेल को अपने-आप ड्राफ़्ट किया जाता है. यहां एक उदाहरण दिया गया है: मान लें कि Google Sheets में डेटा का विश्लेषण किया जाता है. सभी संख्याएं सही जगह पर रखें और एक चार्ट बनाएं. चार्ट के आधार पर ईमेल ड्राफ़्ट करने के लिए, आपको Gemini Pro Vision API का इस्तेमाल करना है.

ऐसा करने के लिए, इन चरणों का अनुसरण करें:

  1. इस शीट को खोलें और फ़ाइल -> पर क्लिक करें कॉपी बनाएं.
  2. दस्तावेज़ कॉपी करें डायलॉग के नाम टेक्स्ट बॉक्स में, डिफ़ॉल्ट नाम Copy of CollegeExpenses को CollegeExpenses से बदलें.
  3. main.gs फ़ाइल में, पिछली उपयोगकर्ता क्वेरी को किसी नए कोड से बदलें और फिर नीचे दिया गया कोड if...else स्टेटमेंट में जोड़ें:
function main() {
  // const userQuery = "Set up a meeting at 5PM with Helen to discuss the news in the Gemini-1.5-blog.txt file.";  
  const userQuery = "Draft an email for Mary with insights from the chart in the CollegeExpenses sheet.";

  if(...) {...}
  // Add this code
  else if(tool_use['name'] == "draftEmail") {
    draftEmail(tool_use['args']['sheet_name'], tool_use['args']['recipient']);
    Logger.log("Check your Gmail to review the draft");
  }
  else {...}

}
  1. utils.gs फ़ाइल में, यह कोड जोड़ें:
function draftEmail(sheet_name, recipient) {
  
  const prompt = `Compose the email body for ${recipient} with your insights for this chart. Use information in this chart only and do not do historical comparisons. Be concise.`;

  var files = DriveApp.getFilesByName(sheet_name);
  var sheet = SpreadsheetApp.openById(files.next().getId()).getSheetByName("Sheet1");
  var expenseChart = sheet.getCharts()[0];

  var chartFile = DriveApp.createFile(expenseChart.getBlob().setName("ExpenseChart.png"));
  var emailBody = callGeminiProVision(prompt, expenseChart);
  GmailApp.createDraft(recipient+"@demo-email-provider.com", "College expenses", emailBody, {
      attachments: [chartFile.getAs(MimeType.PNG)],
      name: 'myname'
  });
}

यह फ़ंक्शन, शीट से कॉलेज के खर्च की जानकारी वाला चार्ट इकट्ठा करता है और ईमेल ड्राफ़्ट करने के लिए, इसे Gemini Pro Vision को भेजता है. Gemini Pro Vision, चार्ट से जानकारी इकट्ठा करता है और आपके लिए ईमेल के मुख्य हिस्से को ड्राफ़्ट के तौर पर सेव करता है.

  1. utils.gs फ़ाइल में, You add tools here टिप्पणी के बाद, WORKSPACE_TOOLS ऑब्जेक्ट में यह कोड जोड़ें:
  WORKSPACE_TOOLS = {
    "function_declarations": [
      // You add tools here.

      {
        "name": "draftEmail",
        "description": "Write an email by analyzing data or charts in a Google Sheets file.",
        "parameters": {
          "type": "object",
          "properties": {
            "sheet_name": {
              "type": "string",
              "description": "The name of the sheet to analyze."
            },
            "recipient": {
              "type": "string",
              "description": "The name of the recipient."
            },            
          },
          "required": [
            "sheet_name",
            "recipient"
          ]
        }
      },   


    ]
  };
  1. एडिटर में, main.gs फ़ाइल पर वापस जाएं और 5b9034ff679c8761.png पर क्लिक करें.
  2. 10 से 20 सेकंड बाद, अपना Gmail खोलें. आपको इस तरह का ईमेल ड्राफ़्ट दिखेगा:

ईमेल का ड्राफ़्ट भेजने से पहले, उसमें बदलाव किया जा सकता है. जब ईमेल में एक छोटा सा प्रॉम्प्ट सबमिट किया जाता है और चार्ट दिखता है, तो ईमेल को पूरी तरह Gemini Pro Vision की मदद से लिखा जाता है.

10. Apps Script की मदद से स्केलेटन डेक बनाना

इसके बाद, Apps Script की मदद से, Google Slides में स्केलेटन डेक अपने-आप बनता है.

ऐसा करने के लिए, इन चरणों का अनुसरण करें:

  1. main.gs फ़ाइल में, पिछली उपयोगकर्ता क्वेरी को किसी नए कोड से बदलें और if...else स्टेटमेंट में यह कोड जोड़ें:
function main() {
  // const userQuery = "Draft an email for Mary with insights from the chart in the CollegeExpenses sheet.";
  const userQuery = "Help me put together a deck about water conservation.";

  if(...) {...}
  // Add this code
  else if(tool_use['name'] == 'createDeck') {
    deckURL = createDeck(tool_use['args']['topic']);
    Logger.log("Deck URL: " + deckURL);
  }
  else {...}

}
  1. utils.gs फ़ाइल में, यह कोड जोड़ें:
function createDeck(topic) {
  const prompt = `I'm preparing a ${NUM_SLIDES}-slide deck to discuss ${topic}. Please help me brainstorm and generate main bullet points for each slide. Keep the title of each slide short. Please produce the result as a valid JSON so that I can pass it to other APIs.`;
  
  var geminiOutput = callGemini(prompt, 0.4);
  // The Gemini model likes to enclose the JSON with ```json and ```
  geminiOutput = geminiOutput.replace(/```(?:json|)/g, "");
  const bulletPoints = JSON.parse(geminiOutput);
    
  // Create a Google Slides presentation.
  const presentation = SlidesApp.create("My New Presentation");

  // Set up the opening slide.
  var slide = presentation.getSlides()[0]; 
  var shapes = slide.getShapes();
  shapes[0].getText().setText(topic);

  var body;
  for (var i = 0; i < NUM_SLIDES; i++) {
      slide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY);
      shapes = slide.getShapes();
      // Set title.
      shapes[0].getText().setText(bulletPoints['slides'][i]['title']);
  
      // Set body.
      body = "";
      for (var j = 0; j < bulletPoints['slides'][i]['bullets'].length; j++) {
        body += '* ' + bulletPoints['slides'][i]['bullets'][j] + '\n';
      }
      shapes[1].getText().setText(body);
  } 

  return presentation.getUrl();
}

यह फ़ंक्शन, किसी विषय पर सोच-विचार करने के लिए Gemini API को कॉल करता है. साथ ही, बुलेट पॉइंट को इस फ़ॉर्मैट में दिखाता है

को चुनें और स्केलेटन डेक को भरने के लिए Apps Script का इस्तेमाल करें.

  1. utils.gs फ़ाइल में, You add tools here टिप्पणी के बाद, WORKSPACE_TOOLS ऑब्जेक्ट में यह कोड जोड़ें:
  WORKSPACE_TOOLS = {
    "function_declarations": [
      // You add tools here.

      {
        "name": "createDeck",
        "description": "Build a simple presentation deck with Google Slides and return the URL.",
        "parameters": {
          "type": "object",
          "properties": {
            "topic": {
              "type": "string",
              "description": "The topic that the presentation is about."
            },
          },
          "required": [
            "topic"
          ]
        }
      },


    ]
  };
  1. utils.gs फ़ाइल के सबसे ऊपर, यह कॉन्स्टेंट बताएं:
const NUM_SLIDES = 3;

यह उन स्लाइड की संख्या है जिन्हें Gemini मॉडल शुरुआती स्लाइड के साथ-साथ बनाता है.

  1. एडिटर में, main.gs फ़ाइल पर वापस जाएं और 5b9034ff679c8761.png पर क्लिक करें. कुछ ही सेकंड में, आपको एक्ज़ीक्यूशन लॉग में प्रज़ेंटेशन का यूआरएल दिखता है.
  2. यूआरएल खोलने के लिए, अपने ब्राउज़र का इस्तेमाल करें. आपको बुलेट पॉइंट से भरा हुआ एक स्केलेटन डेक दिखेगा.

ड्राफ़्ट डेक

11. एक्सप्लोर करने के लिए आइडिया

इन तीन इंटिग्रेशन के अलावा, इन आइडिया को भी एक्सप्लोर किया जा सकता है:

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

12. बधाई हो

आपने Gemini API की मल्टी-मॉडल क्षमताओं और फ़ंक्शन कॉल के बारे में जान लिया है. आपने Apps Script की मदद से, Google Workspace के कुछ टास्क अपने-आप होने के लिए इनका इस्तेमाल किया है!

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