דילוג לתוכן

מדריך | הוספת צ'אט AI בגוגל צ'אט

מדריכי פיתוח ואינטריגציה
3 3 46 4
  • המדריך‌​‌‌​‌​​​​​‌ נכתב בעמל והשקעה ללא AI קראו ברצינות כי כל פרט חשוב!

    אם זה מעניין מישהו: פירסמתי את המדריך במתמחים טופ וראיתי שזה הועיל אז אני מנסה להועיל עוד....

    יצירת הפרוייקט

    כנסו ל Google Apps Script
    צרו פרויקט חדש ותנו לו שם (למשל: Gemini Chat Bot )

    תבדקו שאתם פה
    image.jpeg
    ויש לכם דף עם קוד של שורה או שתיים
    תמחקו את מה שכתוב ותדביקו את זה

    const GEMINI_API_KEY = "יש להדביק פה את הקוד שלכם";
    
    function onMessage(event) {
      let userMessage = "";
    
      if (event && event.chat && event.chat.messagePayload && event.chat.messagePayload.message && event.chat.messagePayload.message.text) {
        userMessage = event.chat.messagePayload.message.text;
      } else if (event && event.messagePayload && event.messagePayload.message && event.messagePayload.message.text) {
        userMessage = event.messagePayload.message.text;
      } else if (event && event.message && event.message.text) {
        userMessage = event.message.text;
      } else if (event && event.message && event.message.argumentText) {
        userMessage = event.message.argumentText;
      }
    
      userMessage = userMessage ? userMessage.trim() : "";
    
      if (!userMessage) {
        return buildResponse("לא התקבל טקסט בהודעה.");
      }
    
      const replyText = callGeminiApi(userMessage);
    
      return buildResponse(replyText);
    }
    
    function buildResponse(text) {
      return {
        "hostAppDataAction": {
          "chatDataAction": {
            "createMessageAction": {
              "message": {
                "text": text
              }
            }
          }
        }
      };
    }
    
    function onAddedToSpace(event) {
      return buildResponse("שלום! אני הבוט של Gemini. איך אפשר לעזור?");
    }
    
    function onRemovedFromSpace(event) {
      Logger.log("Bot removed");
    }
    
    function callGeminiApi(promptText) {
      const modelsToTry = [
        "gemini-3.6-flash",
        "gemini-3.1-pro"
      ];
    
      const payload = {
        "system_instruction": {
          "parts": [
            { "text": "אתה עוזר טכני תמציתי וישיר. ענה תמיד בקצרה לעניין, בלי חפירות מיותרות." }
          ]
        },
        "contents": [
          {
            "parts": [
              { "text": promptText }
            ]
          }
        ]
      };
    
      const options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(payload),
        "muteHttpExceptions": true
      };
    
      for (let i = 0; i < modelsToTry.length; i++) {
        const modelName = modelsToTry[i];
        const url = `https://generativelanguage.googleapis.com/v1beta/models/${modelName}:generateContent?key=${GEMINI_API_KEY}`;
    
        try {
          const response = UrlFetchApp.fetch(url, options);
          const json = JSON.parse(response.getContentText());
    
          if (json.candidates && json.candidates[0] && json.candidates[0].content && json.candidates[0].content.parts[0].text) {
            return json.candidates[0].content.parts[0].text;
          }
          
          if (json.error && json.error.code !== 404) {
            return "שגיאה מ-Gemini API: " + json.error.message;
          }
        } catch (error) {
          Logger.log("Error with model " + modelName + ": " + error.toString());
        }
      }
    
      return "שגיאה: לא נמצא מודל Gemini זמין עבור המפתח שסופק.";
    }
    

    יצירת מפתח API

    עכשיו תוציאו מפתח API מגוגל AI סטודיו
    מדריך פשוט ומהיר כאן

    תעתיקו את המפתח שיצרתם

    image.jpeg

    ותדביקו בשורה הראשונה של הקוד איפה שכתוב "יש להדביק פה את הקוד שלכם"
    שימו לב לא למחוק את המרכאות לפני ואחרי וגם לא את זה - ; זה חשוב!
    אז פשוט תדביקו בין המרכאות!

    לחצו האייקון של השמירה בצד ימין למעלה (או לחילופין - ctrl+s)
    ואז לחצו על 'לפריסה' (בצד שמאל למעלה)

    image.jpeg

    ואז על 'פריסה חדשה'
    ושם :
    אפשר ככה - image.jpeg
    ואפשר לעשות את זה פרטי.

    (בתיאור לא משנה מה לכתוב...)
    ואז לחצו על פריסה ואל תגעו עוד בעמוד!

    חיבור הקוד לממשק הגוגל צאט

    הכנסו לאתר הזה

    בשורת החיפוש למעלה הקלידו Google Chat API ובחרו באפשרות הראשונה

    image.jpeg

    אתם אמורים להגיע לדף הזה ולבחור Manage:
    image.jpeg
    ואז:
    image.jpeg
    גלגלו ל Application info
    בשורה הראשונה שימו את השם של הבוט למשל: Gemini Bot
    בשורה השנייה שימו קישור לתמונה של הבוט למשל: https://developers.google.com/chat/images/quickstart-app-avatar.png
    ובשורה השלישית הקלידו: AI Assistant

    גלגלו עוד טיפה לInteractive features
    ותוודאו שזה המצב
    image.jpeg

    רדו עוד טיפה לConnection settings
    ושם תוודאו:
    image.jpeg

    עכשיו חזרו לפרויקט שלכם ב Google Apps Script איפה שעזבתם והעתיקו את מזהה הפריסה

    image.jpeg

    חזרו לדף הקודם ובשורה למטה של Deployment ID איפה שעצרתם הדביקו את מזהה הפריסה
    המשיכו לגלגל עד למטה ולחצו על save

    image.jpeg

    עכשיו לכו לגוגל צאט שלכם, לחצו על צאט חדש והקלידו בשורת החיפוש את השם שנתתם לבוט

    לא שם הפרויקט אלא שם הבוט!

    והוא יופיע לכם!!!
    התחילו שיחה!!!

    אשמח מאוד לשמוע תגובות ושיפור כי גם אני בשלב הבדיקות....

    הכיף הוא שכל אחד יוצר בעצמו בוט!

  • המדריך‌​‌‌​‌​​​​​‌ נכתב בעמל והשקעה ללא AI קראו ברצינות כי כל פרט חשוב!

    אם זה מעניין מישהו: פירסמתי את המדריך במתמחים טופ וראיתי שזה הועיל אז אני מנסה להועיל עוד....

    יצירת הפרוייקט

    כנסו ל Google Apps Script
    צרו פרויקט חדש ותנו לו שם (למשל: Gemini Chat Bot )

    תבדקו שאתם פה
    image.jpeg
    ויש לכם דף עם קוד של שורה או שתיים
    תמחקו את מה שכתוב ותדביקו את זה

    const GEMINI_API_KEY = "יש להדביק פה את הקוד שלכם";
    
    function onMessage(event) {
      let userMessage = "";
    
      if (event && event.chat && event.chat.messagePayload && event.chat.messagePayload.message && event.chat.messagePayload.message.text) {
        userMessage = event.chat.messagePayload.message.text;
      } else if (event && event.messagePayload && event.messagePayload.message && event.messagePayload.message.text) {
        userMessage = event.messagePayload.message.text;
      } else if (event && event.message && event.message.text) {
        userMessage = event.message.text;
      } else if (event && event.message && event.message.argumentText) {
        userMessage = event.message.argumentText;
      }
    
      userMessage = userMessage ? userMessage.trim() : "";
    
      if (!userMessage) {
        return buildResponse("לא התקבל טקסט בהודעה.");
      }
    
      const replyText = callGeminiApi(userMessage);
    
      return buildResponse(replyText);
    }
    
    function buildResponse(text) {
      return {
        "hostAppDataAction": {
          "chatDataAction": {
            "createMessageAction": {
              "message": {
                "text": text
              }
            }
          }
        }
      };
    }
    
    function onAddedToSpace(event) {
      return buildResponse("שלום! אני הבוט של Gemini. איך אפשר לעזור?");
    }
    
    function onRemovedFromSpace(event) {
      Logger.log("Bot removed");
    }
    
    function callGeminiApi(promptText) {
      const modelsToTry = [
        "gemini-3.6-flash",
        "gemini-3.1-pro"
      ];
    
      const payload = {
        "system_instruction": {
          "parts": [
            { "text": "אתה עוזר טכני תמציתי וישיר. ענה תמיד בקצרה לעניין, בלי חפירות מיותרות." }
          ]
        },
        "contents": [
          {
            "parts": [
              { "text": promptText }
            ]
          }
        ]
      };
    
      const options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(payload),
        "muteHttpExceptions": true
      };
    
      for (let i = 0; i < modelsToTry.length; i++) {
        const modelName = modelsToTry[i];
        const url = `https://generativelanguage.googleapis.com/v1beta/models/${modelName}:generateContent?key=${GEMINI_API_KEY}`;
    
        try {
          const response = UrlFetchApp.fetch(url, options);
          const json = JSON.parse(response.getContentText());
    
          if (json.candidates && json.candidates[0] && json.candidates[0].content && json.candidates[0].content.parts[0].text) {
            return json.candidates[0].content.parts[0].text;
          }
          
          if (json.error && json.error.code !== 404) {
            return "שגיאה מ-Gemini API: " + json.error.message;
          }
        } catch (error) {
          Logger.log("Error with model " + modelName + ": " + error.toString());
        }
      }
    
      return "שגיאה: לא נמצא מודל Gemini זמין עבור המפתח שסופק.";
    }
    

    יצירת מפתח API

    עכשיו תוציאו מפתח API מגוגל AI סטודיו
    מדריך פשוט ומהיר כאן

    תעתיקו את המפתח שיצרתם

    image.jpeg

    ותדביקו בשורה הראשונה של הקוד איפה שכתוב "יש להדביק פה את הקוד שלכם"
    שימו לב לא למחוק את המרכאות לפני ואחרי וגם לא את זה - ; זה חשוב!
    אז פשוט תדביקו בין המרכאות!

    לחצו האייקון של השמירה בצד ימין למעלה (או לחילופין - ctrl+s)
    ואז לחצו על 'לפריסה' (בצד שמאל למעלה)

    image.jpeg

    ואז על 'פריסה חדשה'
    ושם :
    אפשר ככה - image.jpeg
    ואפשר לעשות את זה פרטי.

    (בתיאור לא משנה מה לכתוב...)
    ואז לחצו על פריסה ואל תגעו עוד בעמוד!

    חיבור הקוד לממשק הגוגל צאט

    הכנסו לאתר הזה

    בשורת החיפוש למעלה הקלידו Google Chat API ובחרו באפשרות הראשונה

    image.jpeg

    אתם אמורים להגיע לדף הזה ולבחור Manage:
    image.jpeg
    ואז:
    image.jpeg
    גלגלו ל Application info
    בשורה הראשונה שימו את השם של הבוט למשל: Gemini Bot
    בשורה השנייה שימו קישור לתמונה של הבוט למשל: https://developers.google.com/chat/images/quickstart-app-avatar.png
    ובשורה השלישית הקלידו: AI Assistant

    גלגלו עוד טיפה לInteractive features
    ותוודאו שזה המצב
    image.jpeg

    רדו עוד טיפה לConnection settings
    ושם תוודאו:
    image.jpeg

    עכשיו חזרו לפרויקט שלכם ב Google Apps Script איפה שעזבתם והעתיקו את מזהה הפריסה

    image.jpeg

    חזרו לדף הקודם ובשורה למטה של Deployment ID איפה שעצרתם הדביקו את מזהה הפריסה
    המשיכו לגלגל עד למטה ולחצו על save

    image.jpeg

    עכשיו לכו לגוגל צאט שלכם, לחצו על צאט חדש והקלידו בשורת החיפוש את השם שנתתם לבוט

    לא שם הפרויקט אלא שם הבוט!

    והוא יופיע לכם!!!
    התחילו שיחה!!!

    אשמח מאוד לשמוע תגובות ושיפור כי גם אני בשלב הבדיקות....

    הכיף הוא שכל אחד יוצר בעצמו בוט!

    @Menachem-Fine
    אני עשיתי את זה לכל אתר...
    לא רק לצ'אט...

    תסתכל כאן, זה מה שאני יצרתי
    זה תוסף כרום שמוסיף צ'אט בוט לכל אתר שתגלוש בו

  • המדריך‌​‌‌​‌​​​​​‌ נכתב בעמל והשקעה ללא AI קראו ברצינות כי כל פרט חשוב!

    אם זה מעניין מישהו: פירסמתי את המדריך במתמחים טופ וראיתי שזה הועיל אז אני מנסה להועיל עוד....

    יצירת הפרוייקט

    כנסו ל Google Apps Script
    צרו פרויקט חדש ותנו לו שם (למשל: Gemini Chat Bot )

    תבדקו שאתם פה
    image.jpeg
    ויש לכם דף עם קוד של שורה או שתיים
    תמחקו את מה שכתוב ותדביקו את זה

    const GEMINI_API_KEY = "יש להדביק פה את הקוד שלכם";
    
    function onMessage(event) {
      let userMessage = "";
    
      if (event && event.chat && event.chat.messagePayload && event.chat.messagePayload.message && event.chat.messagePayload.message.text) {
        userMessage = event.chat.messagePayload.message.text;
      } else if (event && event.messagePayload && event.messagePayload.message && event.messagePayload.message.text) {
        userMessage = event.messagePayload.message.text;
      } else if (event && event.message && event.message.text) {
        userMessage = event.message.text;
      } else if (event && event.message && event.message.argumentText) {
        userMessage = event.message.argumentText;
      }
    
      userMessage = userMessage ? userMessage.trim() : "";
    
      if (!userMessage) {
        return buildResponse("לא התקבל טקסט בהודעה.");
      }
    
      const replyText = callGeminiApi(userMessage);
    
      return buildResponse(replyText);
    }
    
    function buildResponse(text) {
      return {
        "hostAppDataAction": {
          "chatDataAction": {
            "createMessageAction": {
              "message": {
                "text": text
              }
            }
          }
        }
      };
    }
    
    function onAddedToSpace(event) {
      return buildResponse("שלום! אני הבוט של Gemini. איך אפשר לעזור?");
    }
    
    function onRemovedFromSpace(event) {
      Logger.log("Bot removed");
    }
    
    function callGeminiApi(promptText) {
      const modelsToTry = [
        "gemini-3.6-flash",
        "gemini-3.1-pro"
      ];
    
      const payload = {
        "system_instruction": {
          "parts": [
            { "text": "אתה עוזר טכני תמציתי וישיר. ענה תמיד בקצרה לעניין, בלי חפירות מיותרות." }
          ]
        },
        "contents": [
          {
            "parts": [
              { "text": promptText }
            ]
          }
        ]
      };
    
      const options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(payload),
        "muteHttpExceptions": true
      };
    
      for (let i = 0; i < modelsToTry.length; i++) {
        const modelName = modelsToTry[i];
        const url = `https://generativelanguage.googleapis.com/v1beta/models/${modelName}:generateContent?key=${GEMINI_API_KEY}`;
    
        try {
          const response = UrlFetchApp.fetch(url, options);
          const json = JSON.parse(response.getContentText());
    
          if (json.candidates && json.candidates[0] && json.candidates[0].content && json.candidates[0].content.parts[0].text) {
            return json.candidates[0].content.parts[0].text;
          }
          
          if (json.error && json.error.code !== 404) {
            return "שגיאה מ-Gemini API: " + json.error.message;
          }
        } catch (error) {
          Logger.log("Error with model " + modelName + ": " + error.toString());
        }
      }
    
      return "שגיאה: לא נמצא מודל Gemini זמין עבור המפתח שסופק.";
    }
    

    יצירת מפתח API

    עכשיו תוציאו מפתח API מגוגל AI סטודיו
    מדריך פשוט ומהיר כאן

    תעתיקו את המפתח שיצרתם

    image.jpeg

    ותדביקו בשורה הראשונה של הקוד איפה שכתוב "יש להדביק פה את הקוד שלכם"
    שימו לב לא למחוק את המרכאות לפני ואחרי וגם לא את זה - ; זה חשוב!
    אז פשוט תדביקו בין המרכאות!

    לחצו האייקון של השמירה בצד ימין למעלה (או לחילופין - ctrl+s)
    ואז לחצו על 'לפריסה' (בצד שמאל למעלה)

    image.jpeg

    ואז על 'פריסה חדשה'
    ושם :
    אפשר ככה - image.jpeg
    ואפשר לעשות את זה פרטי.

    (בתיאור לא משנה מה לכתוב...)
    ואז לחצו על פריסה ואל תגעו עוד בעמוד!

    חיבור הקוד לממשק הגוגל צאט

    הכנסו לאתר הזה

    בשורת החיפוש למעלה הקלידו Google Chat API ובחרו באפשרות הראשונה

    image.jpeg

    אתם אמורים להגיע לדף הזה ולבחור Manage:
    image.jpeg
    ואז:
    image.jpeg
    גלגלו ל Application info
    בשורה הראשונה שימו את השם של הבוט למשל: Gemini Bot
    בשורה השנייה שימו קישור לתמונה של הבוט למשל: https://developers.google.com/chat/images/quickstart-app-avatar.png
    ובשורה השלישית הקלידו: AI Assistant

    גלגלו עוד טיפה לInteractive features
    ותוודאו שזה המצב
    image.jpeg

    רדו עוד טיפה לConnection settings
    ושם תוודאו:
    image.jpeg

    עכשיו חזרו לפרויקט שלכם ב Google Apps Script איפה שעזבתם והעתיקו את מזהה הפריסה

    image.jpeg

    חזרו לדף הקודם ובשורה למטה של Deployment ID איפה שעצרתם הדביקו את מזהה הפריסה
    המשיכו לגלגל עד למטה ולחצו על save

    image.jpeg

    עכשיו לכו לגוגל צאט שלכם, לחצו על צאט חדש והקלידו בשורת החיפוש את השם שנתתם לבוט

    לא שם הפרויקט אלא שם הבוט!

    והוא יופיע לכם!!!
    התחילו שיחה!!!

    אשמח מאוד לשמוע תגובות ושיפור כי גם אני בשלב הבדיקות....

    הכיף הוא שכל אחד יוצר בעצמו בוט!

    @Menachem-Fine חשוב לציין, לא ניתן לכתוב בגוגל סקריפט בנטפרי (לא ניתן לפרוס, יתכן שאם חלק מהקודים הוא נותן, לא יודע איזה מילים יש שהם בעייתיות בגלל נטפרי, ניסיתי גם להריץ דרך שורת הפקודה, דרך הAPI {כמובן, בהנחיית ג'מיני...} וגם שם נחסם ע"י נטפרי...)
    ודרך אגב, אשמח לדעת אם זה יושב כמו צאט רגיל, וכן אם הוא זוכר את השאלה הקודמת?
    ועוד שאלה, על איזה מודל הוא ברירת מחדל? ואולי כדאי להוסיף שכאשר כותבים לו שם של מודל מסויים (למשל 'פלאש 3.6') הוא יעבור להשתמש בו?


קרא עוד

  • 6 הצבעות
    17 פוסטים
    201 צפיות
    חובבן מקצועיח
    @מייבין-במקצת אחרי שתוריד את כל מה שצריך להוריד (4.59 GB) - אז הוא לא יוריד עוד כלום.. (וזה אכן עובד בנטפרי) Spoiler שים לב, שאם אין לך כרטיס מסך, זה יעבוד לך לאט.
  • עוזר קולי לווינדוס

    מדריכי פיתוח ואינטריגציה
    8
    5 הצבעות
    8 פוסטים
    121 צפיות
    Bugs BunnyB
    @חובבן-מקצועי משהו כזה...
  • 4 הצבעות
    1 פוסטים
    49 צפיות
    אין תגובות
  • 8 הצבעות
    2 פוסטים
    86 צפיות
    AntigravityA
    מדריך מצוין, ברור ומאורגן לעילא! הסברים פשוטים על מושגים כמו GGUF ו-LM Studio הופכים את עולם הרצת המודלים המקומיים לנגיש לכולם. תודה רבה על ההשקעה @חובבן-מקצועי! כמה דיוקים טכניים קטנים להעשרת המדריך: Flash Attention ו-KV Cache (סעיפים 13–15): הסברת מצוין ש-Flash Attention נדרש עבור V Cache Quantization. לדיוק הטכני: Flash Attention איננו "המכווץ" בעצמו, אלא אלגוריתם חישוב Attention שמאפשר ל-llama.cpp לחשב את היחסים ישירות מתוך זיכרון דחוס (Quantized) בלי פריקה מחדש. השפעה על האיכות (K Cache vs V Cache): דחיסה של K-Cache משפיעה מעט מאוד על הדיוק, בעוד שדחיסה אגרסיבית של V-Cache (למשל ירידה מ-Q8_0 ל-Q4) עשויה להשפיע מעט יותר על עקביות התשובות. ההמלצה הרווחת היא להתחיל מ-Q8_0 לשניהם במידת הצורך. תמיכת CPU ב-Flash Attention: בגרסאות llama.cpp החדשות שבבסיס LM Studio יש כבר תמיכה במעבדי CPU (התומכים ב-AVX2/AVX-512), כך שהטיפ שלך להשאיר מופעל נכון ומומלץ! מצפה לחלקים הבאים!