iT邦幫忙

2025 iThome 鐵人賽

DAY 30
0
AI & Data

論文流浪記:我與AI 探索工具、組合流程、挑戰完整平台系列 第 33

Day30|這不是結束,而是新的部署:AI 工程師的持續交付人生 🚀

  • 分享至 

  • xImage
  •  

「Release 只是幻覺,真正的 CI/CD 是人生。」

欸,先說,我寫這篇的時候,手邊咖啡冷掉了三次,Slack 一直閃,腦袋裡跑的不是 bug,就是人生。
但無論如何,今天不是結束,而是新的開始。
三十天,從抓 Arxiv 論文,到做 RAG,再到監控系統、Alertmanager、Langfuse,我的生活就像被 Prefect 排程了一樣——每天都有 task,但誰在乎你的情緒


AI 生成的,我自己都不敢這樣說 XD


1. 開場碎念:工程師的人生 CI/CD

你知道嗎?工程師的人生很像一個永遠跑不完的 pipeline:

  • Build:起床喝咖啡、打開 IDE
  • Test:寫程式、debug、再 debug、再 debug,最後發現 commit 的只是少了一個分號
  • Deploy:把 code push 到 staging,看著 log 滿天飛 emoji 🔥
  • Monitor:系統掛了你要修,感情掛了你也只能修自己的心(沒有人幫你 alert)

欸,別笑,這就是 Day 30 的真相——技術堆疊好了,人生還是 messy
至少在技術世界,你可以用 Prefect、FastAPI、Qdrant、PostgreSQL、MinIO 把一切流程自動化。
人生呢?沒有 Task Retry,沒有 Prefect UI,只有你自己對著鏡子說:「幹,今天又掛了」。


2. RAG Pipeline:魔法與現實的交界

先回顧一下三十天前的冒險: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 才能給你答案。人生呢?你只能自己整理資料。


3. Infra + Monitoring:系統健康就是人生健康

說到 infra,這 30 天,我學會了三個字:監控很重要

  • Node Exporter → 監控 CPU、Memory、Disk
  • cAdvisor → 監控容器資源
  • Blackbox Exporter → 從外部測試 API 可用性
  • FastAPI Heartbeat → 應用端自我檢查

看起來像是 nerd 玩具,但我告訴你,沒有它們,你就會在凌晨三點看到:

🔥 Database exploded again   # 💔 心碎值 +1
⚡ CPU 99%                   # 💀 心臟跳速 2x
💾 Disk 0%                   # 😱 絕望指數 9000

欸,這感覺跟被前任半夜罵你一樣,心臟都快跳出來。

而 Grafana Dashboard 就是你的精神安慰師:把所有 log、metrics、health check 都化成彩色圖表。
看著 Grafana紅 Panel 就像看到前任訊息:緊張、心跳加速,但你知道得 fix,不能 crash。
這完全就是我的人生縮影:總是在修錯誤,然後假裝自己掌控一切。


4. Email Pipeline:自動化知識快遞 & 精神糧食

三十天前,我做了 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 的精神其實很像人生規劃:

  • 你投資時間整理知識
  • 結果你收到的 feedback 可能是「不想訂閱」或「已讀不回」
  • 但 pipeline 還是照做,不抱怨

人生也是 pipeline:整理、嵌入、發送,但別人可能不理你;pipeline 仍然跑,人生也是 ><,偶爾 log 會告訴你,世界還活著。


5. FastAPI 安全:給 API 積點防禦,也給自己一點尊嚴

FastAPI 的安全設計:CORS、Trusted Host、Rate Limiting。
這三個東西,其實可以套到人生:

  • CORS → 別人誰能靠近你?
  • Trusted Host → 誰是真朋友?誰只是流量?
  • Rate Limiting → 耐心值有限,別人不能用光你的生命

如果缺了它們,你的 API 就像無人管理的自助餐廳:人人都來亂吃,最後蛋糕被踩爛。
人生也是,沒有邊界,你會被踩到心力枯竭。


6. Makefile:懶人工程師的幸福小確幸

欸,我說 Makefile 沒有很潮,但超耐用。
每次敲 make deploy,看到:

🚀 Deploying... ✅ Done!

內心都冒出一絲小確幸。
當然,如果人生也有 Makefile 就好了:

make deploy
make happy # ⚠️ 還沒被發明
make love # 🔥 自行意會

你就知道,工程師的夢想清單裡,最想要的還是自動化人生。


7. Langfuse:觀測 RAG 也觀測自己

最後,我要講 Langfuse。
不是教你怎麼 debug 系統,而是教你怎麼 debug 人生

看著 embedding_span、retrieval_span、rerank_span、generation_span,
我彷彿在 replay 自己的一天:

  • embedding_span → 早上起床的掙扎
  • retrieval_span → 查資料、查人生意義
  • rerank_span → 思考選擇
  • generation_span → 講出口、行動

欸,你看著 trace 會發現:AI 的錯誤,其實也是你自己一天決策的縮影。
所以,觀測不只是為了找 bug,而是理解自己。


8. 尾聲:Day 30,不是結束,而是新的部署

三十天寫下來,我深深覺得:

  • 部署人生,比部署系統還難。
  • CI/CD,比你想像中更像生活節奏:寫、測、上線、監控、修 bug、repeat。
  • 系統崩掉,你可以 rollback;人生崩掉?喝咖啡、深呼吸、再重啟。

欸,明天起床,我會再 deploy 一個版本的自己。
反正世界還沒爆,我也還活著。


💭 小結

  1. RAG、Prefect、FastAPI、Qdrant、PostgreSQL、MinIO 都只是工具。
  2. 生活比任何 pipeline 都要 messy,但至少可以從系統裡偷學一些哲學。
  3. 當你看到「🔥 Database exploded again」,深呼吸,世界沒問題,你只是 debug 自己。

欸,好啦,這就是 Day 30 的全部。
三十天的旅程,不是結束,而是新的部署——人生的持續交付


上一篇
Day X|從黑箱到魔鏡:用 Langfuse 看懂你的 RAG 到底在幹嘛 🤯
系列文
論文流浪記:我與AI 探索工具、組合流程、挑戰完整平台33
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言