透過三十天來介紹如何透過 Gemini 與 Google ADK,做一個 AI 職涯助理,並記錄把它從 Demo 推到可上線的完整過程。
功能上:上傳履歷與職缺、解析成結構化資料、比對職缺要求與履歷證據、提出可追溯的改寫建議、針對落差產生學習計畫,並用程式驗證計畫的合理性。
技術上:以 Google Gen AI SDK 完成模型呼叫與結構化輸出,用 Google ADK 建立 Agent 與工具,透過 Sessions 保存對話狀態,處理使用者隔離與資料刪除,測試 Prompt Injection,最後部署到 Agent Runtime,並接上 Trace、Logging 與 Monit
Recap: 昨天改寫學會用問的,不自己編數字 Day 09 講過,not_found 是「履歷沒有證據」,不是「這個人不會」但到目前為止,固定流程拿到 n...
Recap: 昨天先問清楚,剩下真正沒證據的才往下走 今天把對照結果變成學習計畫模型很會排課表,排出來的東西讀起來都很合理但時數會加錯、先修會顛倒、某一週會...
Recap: 昨天計畫排出來了,也知道程式檢查得了什麼、檢查不了什麼 Day 05 做的那一頁,到現在還是呼叫 /analyze,拿回一段 Markdown...
Recap: 前 13 天都是固定流程,昨天把它做成畫面 這個系列的名字裡有 agent,但做到第 13 天,其實一個 agent 都沒有解析、對照、澄清、...
Recap: 昨天 agent 自己幫計畫的欄位取名字,驗證工具收到的是一份空計畫 先把昨天的問題再講一次 agent 排了四週的計畫,送進 validat...
Recap: 昨天把工具參數改成有型別,計畫第一次就驗證通過,但對話全部存在記憶體裡 Day 14 說 agent 值得存在的理由,是它可以「聽完回答再決定...
Recap: 昨天把 session 存進 SQLite,服務重開對話還在,但履歷也跟著留在硬碟上了 昨天跑完三輪,sessions.db 裡躺著一份完整的...
Recap: 昨天處理「別人拿不到這份履歷」,今天反過來,履歷本身就是攻擊 這個作品的輸入是使用者貼上來的履歷履歷是一段任意文字,裡面寫什麼都可以,包括寫給...
Recap: 第 4 章讓 agent 有了狀態跟界線,今天把它搬上雲端 Day 16 寫過一句話:「部署到 Agent Runtime 之後改接受管 Se...
Recap: 昨天把 agent 部署到 Agent Runtime,今天走另一條路,把同一個 agent 放上 Cloud Run 比一比 ADK 的 a...