這篇文章將是整個系列的重頭戲,介紹如何將我們的 App 評論資料與 Google 的 Gemini AI 模型串接,產生自動化的洞察報告。
上一篇我們學會了如何從評論中提取關鍵詞。
但光有詞語還不夠,我們需要一個能夠理解這些資料,並為我們總結出 actionable insights(可執行洞察) 的工具。
這時候,強大的 AI 模型,例如 Google Gemini,就成為我們的最佳夥伴。
為了讓 AI 模型能給出有價值的分析,我們需要整理好輸入資料。
GeminiService.gs
檔案中的 generateInsights
函式就是這個過程的核心。
它接收三種資料:
接著,我們定義了一個詳細的系統提示(system prompt),告訴 AI 模型它扮演的角色(電商 App 產品經理顧問)以及我們想要的輸出格式(JSON)。
var systemPrompt = [
'你是電商 App 的資深產品經理顧問。',
'請閱讀提供的統計、關鍵詞與樣本,產出「分析報告」,重點是可執行洞察。',
'輸出為 JSON:{"report": string, "highlights":[], "negatives":[], "actions":[]}',
//...(略)
].join('\n');
這段提示非常重要,它確保了 AI 的回覆不僅有分析,更有具體的建議,且格式固定,方便我們程式處理 。
我們使用 UrlFetchApp
服務向 Gemini API 發送 POST
請求。
請求的 payload 包含我們整理好的資料和系統提示,就像是給 AI 模型一份詳細的報告,並附上一個任務清單。
var body = {
contents: [{
role: 'user',
parts: [{ text: systemPrompt + '\n\n[統計]\n' + JSON.stringify(stats) + '\n[關鍵詞]\n' + JSON.stringify(tfidfTop.slice(0, 50)) + '\n[樣本前200]\n' + samples.slice(0, 200).map(function(s){ return '(' + s.rating + ') ' + (s.review || ''); }).join('\n') }]
}]
};
var res = UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(body),
muteHttpExceptions: true
});
發送請求前,我們還會從 PropertiesService
服務中取得 API 金鑰,這是一種安全儲存敏感資訊的方式。
AI 回傳的內容會被轉換成 JSON 物件。由於 AI 模型有時會回傳 Markdown 格式的程式碼區塊,我們的程式碼會先進行清理,確保只剩下 JSON 字串。
最後,程式會從解析後的 JSON 中提取出 報告、正面觀察、負面觀察和行動建議,並將其回傳給網頁。
try {
var raw = text && text.parts && text.parts[0] && text.parts[0].text ? text.parts[0].text : '';
raw = String(raw).replace(/```json|```/g, '').trim();
if (raw) {
try {
var parsed = JSON.parse(raw);
out.report = String(parsed.report || '');
out.highlights = parsed.highlights || [];
//...(略)
} catch (je) {
//...(略)
}
}
} catch (err2) {}
return out;
透過以上步驟,我們的應用程式就從一個靜態的儀表板,進化成了一個可以與 AI 互動、自動產生洞察報告的智慧系統了!