使用 Google Apps Script + Gemini API 打造「數學家教代理機器人」

 

隨著人工智慧(AI)的快速發展,越來越多工具能夠協助我們自動化處理各式各樣的問題。本文將示範如何使用 Google Apps Script 與 Gemini API,打造一個「數學家教代理機器人」,幫助學生解決數學題目、提供解題思路與教學。





一、需求與架構說明

  1. 前端/使用者輸入

    • 使用者會輸入一段文字(例如數學題目)詢問機器人。
    • 程式需能辨別該問題是否為數學相關,並加上適當的提示(prompt)送往 Gemini API。
  2. Google Apps Script 後端

    • 我們透過 Google Apps Script 提供一個簡單的 Web API 入口(Web App)
    • 使用 doPost(e) 接收前端傳遞的問題,然後呼叫 Gemini API 進行回應。
    • 可以整合錯誤處理、參數調整、或根據學生等級(國小、國中、高中)切換不同 prompt 等功能。
  3. 部署與測試

    • 在 Google Apps Script 中將程式部署成 Web App,取得對外可用的 URL。
    • 透過如 Postman 或自建前端網頁,將問題 POST 到此 Web App,並取得 AI 回答。

接著,我們將展示主要的程式碼架構與使用方式。


二、程式範例

以下程式碼示範了 兩個主要部分

  1. 呼叫 Gemini API 的函式(callGeminiAPI()
  2. 提供 Web API 入口(doPost(e)

請注意:此範例內容與參數僅為 示意。實際串接時,請參考官方正式文件(API URL、授權方式、回傳格式等),並確保您擁有正確的 Gemini API Key 或憑證。

 


1. 呼叫 Gemini API 的函式

/* * 呼叫 Gemini API,傳入 prompt 並回傳機器人的回答。 * @param {string} prompt - 使用者要傳給 Gemini 的文字內容 * @return {string} - Gemini 回傳的文字回答 */

<!DOCTYPE html>
<html>
  <head><meta charset="UTF-8"><title>Gemini數學家教代理機器人</title></head>
  <body>
    <input type="text" id="userInput" placeholder="輸入您的問題...">
    <button onclick="sendToBot()">送出</button>
    <div id="response"></div>

    <script>
      function sendToBot() {
        var userMessage = document.getElementById('userInput').value;
        document.getElementById('response').innerText = '思考中...';
        google.script.run.withSuccessHandler(function(botResponse) {
          document.getElementById('response').innerText = botResponse;
        }).withFailureHandler(function(err) {
          document.getElementById('response').innerText = '發生錯誤:' + err.message;
        }).generateBotResponse(userMessage);
      }
    </script>
  </body>
</html>

2. 提供 Web API 入口(doPost)


此函式可使您的 Apps Script 成為一個簡易的 WebhookWeb API。當外部程式或前端以 HTTP POST 方式傳入問題(例如「3x + 5 = 14,求 x」),doPost(e) 會將此問題丟給上面 callGeminiAPI() 呼叫 Gemini,並把取得的回答再回傳。

/** * 以 POST 方式提供 Web API。 * e 為 POST 請求的參數,如 e.postData.contents 可能包含 question。 */
// 請填入您的 API_KEY
var API_KEY = 'XXXXXXXXXX';

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('index');
}

function generateBotResponse(userMessage) {
  var url = 'https://generativelanguage.googleapis.com/v1/models/gemini-1.5-pro:generateContent?key=' + API_KEY;
 
  var payload = {
    contents: [
      {role: "user", parts: [{text: userMessage}]}
    ]
  };

  var options = {
    'method': 'POST',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload),
    'muteHttpExceptions': true
  };

  try {
    var response = UrlFetchApp.fetch(url, options);
    var data = JSON.parse(response.getContentText());
    if (response.getResponseCode() !== 200) throw new Error(data.error.message);
    // 假設回應格式中,回覆存在 data.candidates[0].content.parts[0].text
    return data.candidates[0].content.parts[0].text;
  } catch (error) {
    return '抱歉,出現錯誤:' + error.message;
  }
}


三、部署成 Google Apps Script Web App

  1. 進入您的 Apps Script 專案,點擊 部署 → 新部署
  2. 部署類型選擇 「網路應用程式(Web App)」
  3. 設定執行身份與存取權:
    • 建議「執行身份」為「我(您的帳號)」
    • 「誰可以存取」可根據需求選擇「任何擁有此網址的人」
  4. 點擊 部署,完成後您會得到一個 Web App 的 URL,例如:

    https:
    //script.google.com/macros/s/xxxx/exec
  5. "question": "3x + 5 = 14,求 x" Apps Script 就會回傳 Gemini AI 的解題建議,您便可在前端或其他系統中呈現結果。

四、擴充與進階應用

  1. 多回合對話

    • 若要讓數學家教機器人記住上一回合的內容並做更深入解題,可以在程式中維護一個「對話紀錄」,每次傳入前幾回合的對話形成新的 prompt。
  2. 數學符號轉譯

    • 可以利用 LaTeX\LaTeX、KaTeX 或 MathJax 等套件,將機器人的文字中出現的公式,轉譯成優美的數學排版,增進可讀性。
  3. 學生等級識別

    • 在前端預先讓使用者選擇「國小、國中或高中」等級,或自動偵測問題中的關鍵字,透過 if/else 來切換更貼切的 prompt,引導機器人用不同深度來回答。
  4. 學習分析

    • 可將使用者每次發問與機器人回答的資料紀錄在 Google 試算表 (Spreadsheet)、或其他資料庫(Firestore / MongoDB),進行後續的數據分析,觀察常見錯誤、解題行為等。

五、範例影片嵌入







六、結論

透過本文介紹的範例,您可以大致掌握如何使用 Google Apps Script + Gemini API 打造一個簡易的 「數學家教代理機器人」。當然,實務中還需根據正式的 API 規範與授權方式進行串接,也要考慮錯誤處理、API 速率限制、資料隱私等議題。

但只要先完成這個基礎架構,就能進一步升級為更智慧、更具互動性與教學深度的數學家教系統,協助學生快速解決問題、同時培養數學思維與邏輯。祝您開發順利,也期待看到更多結合 AI 與教育的精彩應用!


延伸閱讀:

以上內容若有需要進一步調整或補充,歡迎再提出問題或回饋!希望本文能幫助您順利完成數學家教代理機器人的初步開發。