<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GCP on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/gcp/</link><description>Recent content in GCP on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 05 Jun 2026 15:00:00 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/gcp/feed.xml" rel="self" type="application/rss+xml"/><item><title>AI Forward Deployed Engineer 必備技能指南（三）：企業級 AI 整合與部署策略</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/ai-fde-essential-guide-part3-zh/</link><pubDate>Tue, 26 May 2026 17:01:52 +0900</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/ai-fde-essential-guide-part3-zh/</guid><description>前言 企業級 AI 整合與部署是 AI FDE 最具挑戰性的工作之一。需要處理複雜的企業架構、安全合規要求、數據整合與系統可靠性問題。本文將深入探討雲端平台部署策略、企業安全框架、RAG 架構設計與數據管道建構等核心技術。
1. 雲端平台部署策略 Google Cloud Platform (GCP) 深度整合 Vertex AI 生產部署：
1from google.cloud import aiplatform 2from google.cloud.aiplatform import gapic 3import yaml 4 5class GCPAIDeploymentManager: 6 def __init__(self, project_id: str, region: str = &amp;#34;us-central1&amp;#34;): 7 self.project_id = project_id 8 self.region = region 9 10 # 初始化 Vertex AI 11 aiplatform.init( 12 project=project_id, 13 location=region, 14 staging_bucket=f&amp;#34;gs://{project_id}-ml-staging&amp;#34; 15 ) 16 17 def deploy_custom_model(self, model_config: dict): 18 &amp;#34;&amp;#34;&amp;#34;部署客製化模型到 Vertex AI&amp;#34;&amp;#34;&amp;#34; 19 20 # 創建容器映像 21 container_spec = { 22 &amp;#34;image_uri&amp;#34;: model_config[&amp;#34;container_image&amp;#34;], 23 &amp;#34;env&amp;#34;: [ 24 {&amp;#34;name&amp;#34;: &amp;#34;MODEL_NAME&amp;#34;, &amp;#34;value&amp;#34;: model_config[&amp;#34;model_name&amp;#34;]}, 25 {&amp;#34;name&amp;#34;: &amp;#34;MODEL_VERSION&amp;#34;, &amp;#34;value&amp;#34;: model_config[&amp;#34;version&amp;#34;]}, 26 {&amp;#34;name&amp;#34;: &amp;#34;BATCH_SIZE&amp;#34;, &amp;#34;value&amp;#34;: str(model_config.</description></item><item><title>FDE 面試準備指南（二十六）：顧問實戰——「我們現在用 OpenAI，為什麼要換 Vertex AI？」</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part26-competitive-positioning-zh/</link><pubDate>Thu, 04 Jun 2026 19:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part26-competitive-positioning-zh/</guid><description>這是 FDE RKK 最常被忽略的題型。
不是考你技術，是考你能不能站在客戶的問題面前，
用他聽得懂、信得過的語言，說清楚為什麼這條路值得走。
說不清楚，再好的架構都沒用。
面試情境 面試官：「你去拜訪一家金融科技客戶，他們的 CTO 開場就說：『我們已經在用 OpenAI GPT-4o，整個團隊很熟悉，工程師也不想換。你能說服我為什麼要考慮 Vertex AI 嗎？』你怎麼回應？」
一、核心錯誤：不要打規格戰 大多數人聽到這個問題，第一反應是拿出比較表：
❌ 錯誤的回應方式： 「Vertex AI 支援 Gemini 1.5 Pro，context window 有 2M token， 比 GPT-4o 的 128K 大很多，而且...」 問題： ├── CTO 不在乎規格，他在乎的是業務風險和遷移成本 ├── 規格比較是零和遊戲，你說 A 強，對方說 B 強，沒有結論 └── 即使你贏了規格戰，他還是可以說「那我等 GPT-5 出來再看」 正確框架：從客戶的場景出發，而不是從產品規格出發。
二、FDE 的定位對話框架：SCQA 面對競品比較，用 SCQA（Situation → Complication → Question → Answer） 結構引導對話：
S（Situation）：確認客戶目前的狀況 「您現在用 GPT-4o 主要在跑什麼工作負載？」 C（Complication）：找出他們已有或潛在的痛點 「在這個過程中，有沒有遇到什麼讓你們比較頭痛的地方？ 比如成本、合規、延遲，或是跟現有系統的整合？」 Q（Question）：把問題聚焦到一個具體的關鍵問題 「如果把這些問題解決了，對你們的業務影響是什麼？」 A（Answer）：這時候才開始說 Vertex AI 能怎麼幫他 「基於你說的這些，我想跟你分享 Google 在這塊是怎麼做的.</description></item><item><title>FDE 面試準備指南（二十七）：顧問實戰——如何在 45 分鐘內把模糊需求變成 POC 計畫</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part27-poc-scoping-zh/</link><pubDate>Thu, 04 Jun 2026 19:30:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part27-poc-scoping-zh/</guid><description>客戶說：「我想用 AI 讓客服更好。」
工程師說：「好的，你們的資料在哪裡？」
FDE 說：「我想先了解，你說的『更好』，是指回答速度、準確率，還是人工成本降低？然後我們來看三週能做到什麼。」
這個差距，就是 FDE 面試在測的東西。
面試情境 面試官：「你剛到客戶現場，客戶的 VP of Engineering 說：『我們想用 AI Agent 改造我們的客服流程，你能幫我們做嗎？』你有 45 分鐘的會議時間。你怎麼引導這個對話，讓它結束時有一個可執行的 POC 計畫？」
一、為什麼 Scoping 是 FDE 最核心的顧問技能 沒有 Scoping 的後果： 客戶說「改造客服」 ↓ 你直接開始設計 架構圖越來越大 ↓ 工程師開始做 ↓ 三週後客戶說「這不是我要的」 ↓ FDE 被認為不理解業務需求 → 影響客戶關係 有 Scoping 的流程： 45 分鐘 Discovery → 明確的 POC Scope → 雙方簽字確認 ↓ 工程師做對的事 ↓ 三週後 Demo 符合預期 ↓ FDE 建立信任 → 後續擴大合作 二、45 分鐘 Discovery 會議的完整流程 時間分配： 0:00 - 0:05 開場 + 議程設定（5 分鐘） 0:05 - 0:20 業務現狀 Discovery（15 分鐘） 0:20 - 0:35 技術現狀 Discovery（15 分鐘） 0:35 - 0:42 POC Scope 提案（7 分鐘） 0:42 - 0:45 確認 Next Step（3 分鐘） 三、業務現狀 Discovery：你要問的 5 個問題 這 5 個問題的目的，是找出一個最小的、有明確價值的切入點。</description></item><item><title>FDE 面試準備指南（二十八）：顧問實戰——生產事故診斷與客戶溝通語言</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part28-incident-communication-zh/</link><pubDate>Thu, 04 Jun 2026 20:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part28-incident-communication-zh/</guid><description>技術問題，工程師能解。
但客戶打電話來的時候，他不想聽技術。
他想知道：這個問題嚴不嚴重？會影響我的業務嗎？你什麼時候能修好？
FDE 要能同時給工程師一個診斷計畫，給客戶一個聽得懂的答案。
面試情境 面試官：「你的客戶在生產環境上部署了一個 RAG-based 問答 Agent。上線三週後，客戶的工程師傳訊息說：每天凌晨 2 點到 4 點，P95 延遲從平常的 800ms 跳到 4 秒，然後自己恢復正常。這個問題已經發生三天了，今天下午客戶的 CTO 要開檢討會。你怎麼處理？」
一、FDE 在這個場景中要做兩件事 事情 1：技術診斷 ├── 找出根因假設（2 小時內） ├── 確認診斷路徑（不停機） └── 給工程師可執行的排查步驟 事情 2：客戶溝通 ├── 在 CTO 會議前準備好說法 ├── 用業務語言描述問題嚴重性 └── 給出有承諾的 Next Step（不是「我們在看」） 兩件事要同時跑。不能只顧技術，忘了客戶在等； 也不能只顧安撫客戶，卻說不出診斷計畫。 二、技術診斷：系統化的假設樹 看到「特定時間窗延遲飆高，自動恢復」這個 Pattern，要有一個系統化的思考框架：
延遲異常 Pattern 分類： Pattern A：週期性（固定時間，固定症狀） → 最常見原因：排程任務衝突、快取過期、Token Refresh → 本題特徵符合：凌晨 2-4 點，每天發生 Pattern B：隨機性（不定時，難以復現） → 最常見原因：資源爭用、External API 不穩定 Pattern C：累積性（越用越慢，重啟恢復） → 最常見原因：記憶體洩漏、連線池耗盡 本題是 Pattern A。先排查週期性原因。</description></item><item><title>FDE 面試準備指南（二十九）：顧問實戰——AI 系統 TCO 估算與 ROI 說服框架</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part29-tco-roi-zh/</link><pubDate>Thu, 04 Jun 2026 20:30:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part29-tco-roi-zh/</guid><description>工程師說：「這個架構非常優雅。」
財務長說：「一個月要多少錢？」
FDE 說：「我來幫你們算。如果這個系統每個月省下 X 小時的人力，
以你們現在的薪資結構，大概幾個月可以回收建置成本。」
這個對話，決定了 POC 之後有沒有預算繼續做。
面試情境 面試官：「客戶問你：我們要在 Vertex AI 上部署一個 RAG-based 客服 Agent，每天大概 10,000 個 query，一個 query 平均 2,000 input token 和 500 output token。一個月的 API 成本是多少？如果我們加了一個 Embedding 服務和向量資料庫，總體的 TCO 是什麼？我要拿這個數字去說服 CFO。」
一、為什麼 FDE 必須會算成本 技術架構決定成本結構： 你選 Gemini 1.5 Pro vs Gemini 1.5 Flash → 成本差 5 倍 你選 Vertex AI Vector Search vs pgvector → 成本和維護方式不同 你選 Cloud Run vs GKE → Infra 成本和工程複雜度不同 如果 FDE 說不出成本，客戶只能靠自己估算。 自己估出來的數字通常是錯的（太高或太低）， 都可能導致預算批不下來，或者上線後超支被投訴。 FDE 的價值之一，就是幫客戶算出一個可信的數字， 並且告訴他怎麼優化。 二、AI 系統的 TCO 三個層次 Layer 1：LLM API 成本（最容易算） ├── Input token 成本 ├── Output token 成本 └── Embedding token 成本 Layer 2：Infra 成本（第二容易算） ├── Vector Database（託管服務 or 自建） ├── Compute（Cloud Run / GKE for orchestration） ├── Storage（GCS for documents） └── Network（Egress fees） Layer 3：人力成本（最容易被忽略） ├── 建置成本（Engineer 時間） ├── 維護成本（每月運維時間） └── Prompt 維護成本（調整和迭代） 三、實際試算：10,000 queries/day RAG Agent Step 1：LLM API 成本 Gemini 1.</description></item><item><title>FDE 面試準備指南（三十）：顧問實戰——Constraint-First 架構設計：VPC 限制下的 GCP AI 系統</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part30-constraint-driven-architecture-zh/</link><pubDate>Thu, 04 Jun 2026 21:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part30-constraint-driven-architecture-zh/</guid><description>大多數的架構設計課程從「最優解」出發。
但 FDE 的真實工作，是從「客戶的限制」出發。
「所有資料不能出 VPC」、「模型不能用 SaaS API」、「每個 API call 都要有審計日誌」——
這些限制不是問題，是你設計的起點。
面試情境 面試官：「你的客戶是一家銀行。他們的 IT 安全政策規定：所有含有客戶 PII 的資料不能傳送到外部網路，所有 API 呼叫必須在私有網路內完成，並且每個 AI 模型的調用都要有審計日誌。他們想在這個條件下部署一個 RAG-based 合約審閱 Agent。你的架構是什麼？」
一、FDE 面對限制的第一步：分類 收到限制條件，先做分類，不要立刻開始設計架構：
限制分類框架： 類型 1：資料主權限制（Data Residency） 「資料不能離開特定地理區域」 → GCP Region 選擇問題 → 影響：model endpoint 必須在指定 Region 類型 2：網路隔離限制（Network Isolation） 「API 呼叫必須在私有網路內」 → VPC 架構問題 → 影響：需要 Private Service Connect / VPC-SC 類型 3：資料分類限制（Data Classification） 「PII 不能傳給外部服務」 → 資料流設計問題 → 影響：需要 PII detection + 資料遮罩 pipeline 類型 4：審計與合規限制（Audit &amp;amp; Compliance） 「所有 AI 調用要有 audit log」 → Observability 架構問題 → 影響：Cloud Audit Logs + SIEM 整合 本題的限制：類型 2 + 3 + 4，三個同時 二、核心技術：VPC Service Controls（VPC-SC） 這是 Google Cloud 上的金融/政府客戶必備知識：</description></item><item><title>FDE 面試準備指南（三十二）：RKK 實戰——Vertex AI 產品棧全解析：Agent Builder、Vertex AI Search、Gemini API 與部署架構</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part32-vertex-ai-stack-zh/</link><pubDate>Fri, 05 Jun 2026 10:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part32-vertex-ai-stack-zh/</guid><description>FDE 的面試不是考「你知不知道 Vertex AI 有哪些產品」。
是考「當客戶描述一個場景，你能不能說清楚——
在 Google 的產品棧裡，他應該用哪個，不應該用哪個，以及為什麼。」
這個判斷能力，才是 Google FDE 和一般 AI 工程師的差距。
面試情境 面試官：「客戶想部署一個企業內部知識庫問答系統。他們的 IT 主管問：Google 有 Agent Builder，也有 Vertex AI Search，我自己也可以用 Gemini API 搭 RAG。這三條路有什麼差別？我應該選哪個？如果要上 Production，我的架構應該長什麼樣子？」
一、產品棧的 Build vs Buy 決策框架 先建立一個選擇框架，而不是直接說「選這個」：
┌────────────────────────────────────────────────────────────────────┐ │ Vertex AI AI 產品選擇矩陣 │ │ │ │ 高 ┌─────────────────────────────────────────┐ │ │ 客 │ │ │ │ 製 │ 自建（Gemini API + ADK） │ │ │ 化 │ 完全控制，最大彈性 │ │ │ 需 │ 需要 AI 工程師維護 │ │ │ 求 └─────────────────────────────────────────┘ │ │ ┌─────────────────────────────────────────┐ │ │ │ │ │ │ 中 │ Vertex AI Search / Agent Builder │ │ │ │ Google 管 Infra，你管業務邏輯 │ │ │ │ 需要懂 API 和配置 │ │ │ └─────────────────────────────────────────┘ │ │ ┌─────────────────────────────────────────┐ │ │ 低 │ │ │ │ │ Vertex AI Agent Builder（低代碼） │ │ │ │ UI 配置，最快上線 │ │ │ │ 彈性最低 │ │ │ └─────────────────────────────────────────┘ │ │ 低 → 高 │ │ 規模 / 複雜度 │ └────────────────────────────────────────────────────────────────────┘ 面試的正確回答方向： 不說哪個最好，說「在什麼條件下選哪個」。</description></item><item><title>FDE 面試準備指南（三十七）：RKK 實戰——企業 AI 的「連接組織」：Legacy 系統整合、API 橋接與安全邊界設計</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part37-legacy-integration-zh/</link><pubDate>Fri, 05 Jun 2026 15:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/fde-interview-guide-part37-legacy-integration-zh/</guid><description>Demo 時 Agent 很漂亮。
到客戶現場才發現：資料在 SAP（文件很爛）、Oracle（只有 DB 直連）、
還有一個每天凌晨 2 點才匯出的 CSV 檔案。
「連接組織」，是 FDE 和 AI 工程師最核心的差距之一。
面試情境 面試官：「客戶是一家有 30 年歷史的製造業。資料在三個地方：SAP ERP（有 REST API 但文件很爛）、Oracle 資料庫（只有 DB 直連）、一個每天從 mainframe 匯出的 CSV。他們希望 AI 能回答：庫存狀況、哪個供應商交期有問題。你怎麼設計這個整合層？」
一、問題本質：Legacy 整合的三種挑戰 Demo 的 Tool： def get_inventory(item_id: str) -&amp;gt; dict: return requests.get(f&amp;#34;https://api.example.com/inventory/{item_id}&amp;#34;) 客戶現場的現實： SAP API： ├── 認證：OAuth + Client Certificate（文件在某個 Confluence 頁面，過期了） ├── Rate Limit：10 req/sec per user（AI 可能觸發 100 并發） ├── 回傳格式：200 欄位的 XML（Agent 只需要 5 個） └── 錯誤碼：自定義的 SAP 錯誤碼（不是標準 HTTP） Oracle DB： ├── 沒有 API，只能 JDBC/ODBC 直連 ├── 沒有任何文件，Schema 要靠 DBA 解釋 └── 有 SQL Injection 和 full table scan 的風險 Mainframe CSV： ├── 每天凌晨 2 點才有新資料（不是即時） ├── 格式偶爾會改變（沒有版本控制） └── 直接讀大 CSV 到 context = token 爆炸 這三個資料來源，需要三種不同的整合模式。 二、整合模式選型框架 選型決策矩陣： 資料來源特性 → 建議整合模式 ────────────────────────────────────────────────────────────── 有 API，但設計複雜 → API 橋接層 （認證複雜、格式冗餘、Rate Limit） ────────────────────────────────────────────────────────────── 只有 DB 直連，沒有 API → 資料庫查詢層（Stored Procedure） ────────────────────────────────────────────────────────────── 批次檔案（CSV、Excel） → 批次攝取 Pipeline（GCS → BigQuery） ────────────────────────────────────────────────────────────── 即時串流資料 → Pub/Sub → BigQuery → Agent Query ────────────────────────────────────────────────────────────── 三種模式的系統特性對比： 模式 延遲 資料新鮮度 設計複雜度 適用場景 ────────────────────────────────────────────────────────────── API 橋接層 低（ms） 即時 高 SAP 庫存查詢 ────────────────────────────────────────────────────────────── DB 查詢層 中（ms） 即時 中 Oracle 訂單狀態 ────────────────────────────────────────────────────────────── 批次攝取 Pipeline 秒-分 T+1（次日） 低 Mainframe 月報 ────────────────────────────────────────────────────────────── 製造業客戶的對應： SAP → API 橋接層 Oracle → DB 查詢層 Mainframe CSV → 批次攝取 Pipeline 三、模式一：API 橋接層設計 設計目標：隱藏 SAP API 的所有複雜性， 讓 Agent Tool 看到的是簡單、穩定的介面。 架構： ┌──────────────────────────────────────────────────────────────┐ │ ADK Agent │ │ def get_inventory(item_id, warehouse) → dict │ │ （Agent 只看到這個簡單函數） │ └──────────────────────────┬───────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────┐ │ SAP Adapter Service（你寫的橋接層） │ │ │ │ ├── 認證管理 │ │ │ Secret Manager 取 OAuth token + Client Certificate │ │ │ Token 自動更新（expiry 前 5 分鐘刷新） │ │ │ │ │ ├── Rate Limiting（Token Bucket，10 req/sec） │ │ │ 超過上限的請求排隊等待，設定 queue timeout = 5s │ │ │ │ │ ├── 格式轉換 │ │ │ 200 欄位 XML → 5 欄位 JSON │ │ │ {available_qty, unit, location, last_updated, status} │ │ │ │ │ ├── Response Cache（Redis，TTL 5 分鐘） │ │ │ 相同 item_id+warehouse 的查詢，5 分鐘內走 Cache │ │ │ │ │ └── 錯誤處理 │ │ HTTP 429 / SAP-specific 錯誤碼 → 統一轉換成 Retry 或 │ │ 結構化錯誤訊息（Agent 能理解的格式） │ └──────────────────────────┬───────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────┐ │ SAP REST API（原始系統） │ │ 認證複雜、格式冗餘、Rate Limit 10 req/sec │ └──────────────────────────────────────────────────────────────┘ Cache 的效益： 假設有 80% 的查詢是重複的相同 item_id： SAP API 實際呼叫量降低 80%，Rate Limit 問題基本消失。 對 SAP 系統的壓力大幅降低，減少影響生產系統的風險。 四、模式二：資料庫查詢層（Stored Procedure） 核心安全問題：Agent 不能直接生成 SQL 並執行。 風險分析： ❌ 直接讓 Agent 生成 SQL： Agent: SELECT * FROM orders WHERE supplier = &amp;#39;{user_input}&amp;#39; 攻擊者輸入：&amp;#39; OR 1=1; DROP TABLE orders; -- → SQL Injection，資料庫損毀 ❌ 直接 SELECT *： 對大型 Oracle 表的 full table scan 可能讓生產資料庫效能崩潰 ✅ 正確設計：Stored Procedure 層 架構： ADK Agent Tool def get_supplier_delivery(supplier_id, date_from, date_to) │ │ 呼叫預定義的 Stored Procedure ▼ Oracle DB EXEC sp_GetSupplierDelivery(?</description></item></channel></rss>