本系列以 Backend 工程師視角,使用 Python、FastAPI 與 Azure AI 生態,實作一個 production-minded GenAI backend。內容從 Azure OpenAI 整合、RAG 到 Agent 架構,並涵蓋 API 設計、測試、觀測性與成本控管等 production 議題,聚焦怎麼把 GenAI 從 demo 做成能在真實場景長期運作的系統。
Day 1 說過 LLM 是你接過最不守規矩的下游依賴,但前十天我們其實只讓它用訓練時學到的知識回答問題。問它「你們家的退貨政策是什麼」,模型沒有這份專有資料;...
Day 11 把 RAG 拆成兩條 pipeline,並說 indexing 那條的失敗會「污染之後每一次查詢」。今天要動工的就是這條線。 「決定改不了」這個說...
上一篇把語料切好、算完向量、schema 也定了,但一次都還沒真的查過。這篇要處理「怎麼找回來」。第一件要拆掉的直覺是:檢索看起來像一個動作,實際上是三段各自獨...
Day 13 結尾留了一個問題:語料裡沒有答案的時候,要怎麼讓系統說「我不知道」——因為分數已經證明它不會自己說。這篇把查詢管線接成 POST /api/v1/...
Day 14 結尾承認了一件事:這條 RAG 管線對所有人一視同仁——誰來問,檢索都在整個 index 上跑。公司內部知識庫的第一個現實剛好相反:財務的薪資文件...
「把它做成 Agent」在需求討論裡出現的頻率,大概只輸「加個 AI」。但這個系列走到 Day 15,chat、streaming、多輪對話、prompt 管理...
Day 16 花了一整篇決定「要不要做 agent」,這天開始動手。最先花時間的卻是搞清楚:我裝的這個東西到底是誰、它替我做了哪些事——因為 agent 框架的...
Day 17 結束時,agent 還是一支 demo 腳本:跑得起來、有斷言,但沒有 API 面;收尾還留了兩題沒解——一個 agent run 在 token...
Day 15 收尾時留了一句話等著兌現:X-Tenant-Id 這些 trusted headers 是「信任 gateway 的 impersonation...
Day 19 把呼叫端的身份收掉了:進來的每個 request 都對應一個驗過簽章的 tid 與 oid。但往外看,這支 API 自己呼叫 Azure Open...