「Release 只是幻覺,真正的 CI/CD 是人生。」
欸,先說,我寫這篇的時候,手邊咖啡冷掉了三次,Slack 一直閃,腦袋裡跑的不是 bug,就是人生。
但無論如何,今天不是結束,而是新的開始。
三十天,從抓 Arxiv 論文,到做 RAG,再到監控系統、Alertmanager、Langfuse,我的生活就像被 Prefect 排程了一樣——每天都有 task,但誰在乎你的情緒。
AI 生成的,我自己都不敢這樣說 XD
你知道嗎?工程師的人生很像一個永遠跑不完的 pipeline:
欸,別笑,這就是 Day 30 的真相——技術堆疊好了,人生還是 messy。
至少在技術世界,你可以用 Prefect、FastAPI、Qdrant、PostgreSQL、MinIO 把一切流程自動化。
人生呢?沒有 Task Retry,沒有 Prefect UI,只有你自己對著鏡子說:「幹,今天又掛了」。
先回顧一下三十天前的冒險:RAG(Retrieval-Augmented Generation)。
簡單講,就是「你問問題 → 模型先去找資料 → 再給你答案」。
from fastapi import FastAPI
from pydantic import BaseModel
class Query(BaseModel):
question: str
app = FastAPI()
@app.post("/rag/")
async def rag_endpoint(query: Query):
retrieved_docs = retriever.retrieve(query.question)
answer = generator.generate(retrieved_docs)
# ⚠️ Warning: AI 給出的答案比前任還亂
if not retrieved_docs:
print("💀 沒有資料,生成答案就是廢話")
return {"answer": answer}
AI 也會犯人生錯,RAG 就像你的人生選擇坐標系,資料對了,人生才順。
欸,看起來很簡單對吧?
現實是我 debug 了三天,才發現 retriever 回來的 docs 裡,有些是空的,generator 給出的答案居然比我前任還糟——完全亂套。
所以啊,RAG 不是萬能,它只是一個知識坐標系。沒有正確資料,你問再多 prompt engineering,也只會拿到一堆廢話。
💡 小結:資料才是英雄
就像人生,別指望努力就有好結果。資料對了,AI 才能給你答案。人生呢?你只能自己整理資料。
說到 infra,這 30 天,我學會了三個字:監控很重要。
看起來像是 nerd 玩具,但我告訴你,沒有它們,你就會在凌晨三點看到:
🔥 Database exploded again # 💔 心碎值 +1
⚡ CPU 99% # 💀 心臟跳速 2x
💾 Disk 0% # 😱 絕望指數 9000
欸,這感覺跟被前任半夜罵你一樣,心臟都快跳出來。
而 Grafana Dashboard 就是你的精神安慰師:把所有 log、metrics、health check 都化成彩色圖表。
看著 Grafana紅 Panel 就像看到前任訊息:緊張、心跳加速,但你知道得 fix,不能 crash。
這完全就是我的人生縮影:總是在修錯誤,然後假裝自己掌控一切。
三十天前,我做了 Email Pipeline。
目的很簡單:把 Arxiv 上的最新論文,摘要生成 → 翻譯 → 美化 → 自動寄送給訂閱者。
flow = Flow("daily_digest")
with flow:
papers = fetch_papers_task()
chunks = process_pdfs_task(papers)
embeddings = embed_docs_task(chunks)
send_email_task(embeddings)
欸,這個 pipeline 的精神其實很像人生規劃:
人生也是 pipeline:整理、嵌入、發送,但別人可能不理你;pipeline 仍然跑,人生也是 ><,偶爾 log 會告訴你,世界還活著。
FastAPI 的安全設計:CORS、Trusted Host、Rate Limiting。
這三個東西,其實可以套到人生:
如果缺了它們,你的 API 就像無人管理的自助餐廳:人人都來亂吃,最後蛋糕被踩爛。
人生也是,沒有邊界,你會被踩到心力枯竭。
欸,我說 Makefile 沒有很潮,但超耐用。
每次敲 make deploy
,看到:
🚀 Deploying... ✅ Done!
內心都冒出一絲小確幸。
當然,如果人生也有 Makefile 就好了:
make deploy
make happy # ⚠️ 還沒被發明
make love # 🔥 自行意會
你就知道,工程師的夢想清單裡,最想要的還是自動化人生。
最後,我要講 Langfuse。
不是教你怎麼 debug 系統,而是教你怎麼 debug 人生。
看著 embedding_span、retrieval_span、rerank_span、generation_span,
我彷彿在 replay 自己的一天:
欸,你看著 trace 會發現:AI 的錯誤,其實也是你自己一天決策的縮影。
所以,觀測不只是為了找 bug,而是理解自己。
三十天寫下來,我深深覺得:
欸,明天起床,我會再 deploy 一個版本的自己。
反正世界還沒爆,我也還活著。
💭 小結
欸,好啦,這就是 Day 30 的全部。
三十天的旅程,不是結束,而是新的部署——人生的持續交付。