效率革命:構建基於 Google Gemini 的模組化 AI 工作流
在 AI 驅動的開發範式中,我們不再是編寫每一行邏輯,而是建立一個「編排系統」(Orchestration System)。以下是利用 Google AI 技術實現「從內容生成到自動執行」的完整技術路徑。
一、 核心架構:AI 工作流的四層模型
一個健壯的 AI 工作流必須像微服務架構一樣,具備模組化與可觀測性。
感知層 (Ingestion):透過 Google Drive API 或 Vertex AI Vision 收集數據。
邏輯層 (Reasoning):由 Gemini 1.5 Pro 進行結構化思考與決策。
執行層 (Action):透過 Function Calling 串接 Google Workspace 或外部 API。
監控層 (Observability):利用 Google Cloud Logging 追蹤 AI 的決策路徑與 Token 消耗。
二、 技術實作路徑:從原型到生產環境
1. 模組化 Prompt 工程:結構化提示 (Structured Prompts)
在 Google AI Studio 中,不要使用長篇大論的敘述,應採用「變數化」設計。
System Instruction: 定義 AI 的角色與限制(例如:你是一位嚴謹的專案排程師)。
Input Variables: 使用
{{input_data}}標籤,便於後續在 Google Sheets 或程式碼中批次替換。Output Schema: 強制要求輸出為 JSON 格式。這是模組化的命脈——只有結構化數據,下一個模組(如自動發信程式)才能解讀。
// 預期的結構化輸出範例
{
"task_priority": "High",
"action_required": "Email_Supplier",
"reasoning": "Inventory levels for Item_A dropped below 15%."
}
2. 中間件轉發:Google Apps Script (低代碼路徑)
這是將 Google Sheets 變成「AI 指揮中心」最有效的方式。你可以撰寫一個簡單的腳本,將表格內容發送到 Gemini API,並將結果回填。
場景應用:當 Google 表單收到新的客戶需求,腳本自動觸發 Gemini 進行分類,並根據分類將任務派發到不同的 Trello 看板或 Gmail 轉發。
3. 進階執行力:Function Calling (函式調用)
這是 AI 從「說」到「做」的關鍵技術。Gemini API 允許你定義一系列工具(Tools),AI 會根據語境決定「何時」以及「如何」使用這些工具。
# 定義一個查詢庫存的工具函數
def get_inventory_stock(item_name: str):
"""查詢特定商品的即時庫存數量"""
# 這裡串接你的資料庫或 Google Sheets API
return db.query(item_name)
# 將工具傳遞給 Gemini
model = GenerativeModel("gemini-1.5-pro")
chat = model.start_chat()
response = chat.send_message("目前妖怪御守還有多少貨?", tools=[get_inventory_stock])
三、 實戰範例:自動化 Vlog 內容生產流水線
假設你要管理一個旅遊 Vlog 頻道,我們可以建立以下模組化流程:
| 模組名稱 | 使用技術 | 輸入內容 | AI 任務 | 輸出/執行動作 |
| 素材分析 | Vertex AI (Multimodal) | 原始錄影檔 | 識別關鍵畫面、語音轉文字 | 結構化分鏡腳本 |
| 文案轉化 | Gemini 1.5 Flash | 腳本與主題 | 撰寫標題、SEO 描述與社群貼文 | 多平台文案 JSON |
| 自動排程 | Google Calendar API | 發布計劃 | 尋找最佳發布時間點 | 自動佔用日曆時段 |
| 庫存/週邊管理 | Apps Script + Sheets | 銷售數據 | 監控週邊商品庫存 | 紅色警示與自動補貨提醒 |
四、 關鍵的 Trade-offs 與架構考量
身為架構師,在設計時必須權衡以下三點:
成本 (Cost):Gemini 1.5 Flash 速度快且便宜,適合處理簡單的分類與格式化;Pro 模型則留給需要複雜邏輯推理的環節。
延遲 (Latency):為了提升用戶體驗,應採用「非同步處理」(Asynchronous Processing)。不要讓用戶在前端等待 AI 生成,而是處理完後透過通知(Webhook)回傳。
安全性 (Safety):避免讓 AI 直接擁有「寫入」核心資料庫的最高權限。應設計一個「隔離區」(Staging Area),所有 AI 的執行動作需經過一層驗證邏輯或人工審核。
五、 總結:流程設計能力即資產
未來的技術競爭,在於誰能將 Gemini 的推理能力與 Google Workspace 的執行能力完美封裝成一個個獨立、可重複使用的「積木」。
「Prompt 是火花,工作流才是引擎。」
以下我為你撰寫了一段完整的 Google Apps Script。它具備以下特性:
結構化輸出:讓你可以自定義系統指令(System Instruction)。
錯誤攔截:當 API 失效或 Token 超限時會給出明確提示。
靈活性:你可以直接在試算表格格中使用
=GEMINI(A2, B2)。
第一步:獲取 API Key
前往
。Google AI Studio 點擊 "Get API key" 並複製該金鑰。
第二步:部署腳本
打開你的 Google Sheets。
點擊選單:延伸功能 > Apps Script。
刪除原有代碼,貼入以下內容:
/**
* 調用 Google Gemini API 的自定義函數
* * @param {string} prompt 使用者輸入的內容
* @param {string} systemInstruction (選填) 設定 AI 的角色或邏輯(例如:你是一位專業文案師)
* @return {string} AI 生成的結果
* @customfunction
*/
function GEMINI(prompt, systemInstruction = "你是一位專業的助手,請提供簡潔且結構化的回答。") {
// 1. 設定你的 API Key (建議將來存放在 Script Properties 中更安全)
const API_KEY = 'YOUR_API_KEY_HERE'; // <--- 請在此處貼上你的 API Key
const API_URL = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${API_KEY}`;
if (!prompt) return "錯誤:請輸入提示內容";
// 2. 構建請求載體 (Payload)
// 我們使用 Gemini 1.5 Flash,因為它速度快、成本低,非常適合批次處理表格數據
const payload = {
"contents": [
{
"role": "user",
"parts": [{ "text": prompt }]
}
],
"system_instruction": {
"parts": [{ "text": systemInstruction }]
},
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 800,
}
};
const options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload),
"muteHttpExceptions": true
};
try {
// 3. 發送請求
const response = UrlFetchApp.fetch(API_URL, options);
const json = JSON.parse(response.getContentText());
// 4. 解析結果
if (json.candidates && json.candidates[0].content && json.candidates[0].content.parts) {
return json.candidates[0].content.parts[0].text.trim();
} else {
return "錯誤分析:" + response.getContentText();
}
} catch (e) {
return "系統錯誤:" + e.toString();
}
}
第三步:在試算表中使用
現在回到你的 Google Sheets,你可以像使用 SUM() 一樣使用 AI 了:
| A 欄 (原始資料) | B 欄 (系統指令) | C 欄 (公式) |
| 客戶說:鞋子尺寸不合想退貨 | 你是一位客服專家,請判斷情緒並給出簡短回覆建議 | =GEMINI(A2, B2) |
| 健行筆記:今日攻頂玉山,雲海很美 | 你是一位 Vlog 攝影師,請幫這段文字生成 3 個吸睛的標題 | =GEMINI(A3, B3) |
💡 架構師的進階實戰建議:
批次處理的限制:Google Apps Script 的
UrlFetchApp在單次執行中有時間限制(通常是 6 分鐘)。如果你有幾千行資料,建議不要一次全部拉下公式,而是分批拖曳填充。安全存取:在生產環境中,不要把 API Key 直接寫在代碼裡。點擊 Apps Script 左側的「齒輪(專案設定)」,找到「指令碼屬性」,新增一個
GEMINI_API_KEY,然後在代碼中用PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY')來調用。結構化輸出的威力:
如果你希望 C 欄直接變成可用的 JSON。
在 B 欄(系統指令)加入:
"請嚴格以 JSON 格式回覆,包含 {'sentiment': '...', 'urgent': boolean}"。這樣你的下一個模組(例如自動發信腳本)就能直接讀取 C 欄的屬性。
這就是模組化工作流的基礎——你已經成功把 Gemini 的大腦,封裝進了一個標準化的 Excel 函數積木中!
沒有留言:
張貼留言