
最近在因緣際會下做了一個有意思的 side project—— 一個偵測詐騙訊息的 line 機器人,想藉著這篇文章整理做法、思考路徑和途中碰到的問題。會以偏向故事的形式來紀錄而不是一篇正式教學。
之所以會想做,是因為我想投一家電商公司在徵專做 fraud 的 Data Scientist,這個題目很少見,又很有生活感,覺得很有意思,所以決定動手做做看。
首先我對 fraud detection 是一無所知,所以先用 Deep Research 生成了一篇報告,讓我可以先有初步的了解。我請他比較了五家大型電商如 Walmart, Amazon, Shopee 會碰到的問題,以及相關的社群論壇作為實際資料佐證。接著請他告訴我對於每種問題,每一家公司會用到哪些技術來解決。
電商平台會遇到的問題比我原本想像的更多,我把 AI 的回答大致再分為五類:
- 假評論
- 賣家惡意
- 買家惡意
- 支付詐欺
- 平台外詐騙
其中我個人比較有感的是假評論和買家惡意退貨。假評論基本上可以想像成業配,如果一家商店裡的評價都是靠業配評論衝高星數,那表示該評價是不真實的。買家惡意退貨的問題倒是讓我開了眼界,例如有人會收到貨之後,故意把原本是好的貨換成壞的然後要求退貨。
惡意退貨問題需要有用戶紀錄比較好建模,但網路上我比較沒有看到相關資料集;假評論問題雖然有 Amazon fake review dataset 可以玩,但是總覺得就算做完也僅止於一篇報告。如果真的要做 side project ,我還是想做可以更有真實感一點的。
後來,剛好想到我加入的不少 line 群組,都會遇到點進來發廣告或釣魚的詐騙,想著如果可以解決這類問題的話應該很好玩,有真實感、也算是跟原本的職缺算是有扯上一點邊(雖然不到 100%)。
接下來就是動手做。
文章大綱
動手做(vibe coding)
首先我直接選擇 vibe coding,雖然自己寫會比較有成就感,但是因為是要投職缺,有一定的時間限制,所以還是直接請 AI 寫。只能說,AI 對於開發這種小工具真的是方便到不行。
一開始的 prompt 非常簡單:
幫我寫一個 line 的反詐騙機器人。 如果有缺少任何需要的資訊,請提出問題和我討論。
於是他提出了一大堆問題來釐清,就像一個顧問一樣,例如要用什麼語言?要用 ML 還是關鍵字過濾?需要多語系支援嗎?……等等,有很多是我在開始做之前完全沒想過的,但是在他給我的選項下,我很容易就可以做出選擇。
經過釐清問題之後,他就寫好了第一版。從這邊開始,我幾乎都把所有時間花在部署上。其中我有遇到值得分享的一些點。
line-bot-sdk 的預設寫法是用 v2 而非最新的 v3。這是 vibe coding 的常見問題,如果沒有在 prompt 裡特別註明,AI 常常預設會用比較舊的寫法。是後來手動查了比較新的教學文,才看到知道原來現在已經到 v3 了。有時候新版不一定比舊版好,不過這是 vibe coding 一個需要注意的地方。
部署 + debug 花了非常多時間。開發 line bot 需要先把 webhook 部署完成,才能用平常習慣的聊天室做測試。 然後因為我沒辦法用 ngrok 部署在本地,只好每次都用 cloud run 部署。雖然檔案很少但是 build 還是滿花時間的。
Few-shot detection
稍微談一下我覺得最好玩的地方,是第一次實做了 Few-shot detection 的方法。
第一版是用關鍵字偵測,是為了先讓機器人有基本功能,確認部署沒問題。在部署完之後,我想要讓它至少有一點能讀自然語言的功能,於是我想到 Few-shot detection。
這個方法是建立一個「詐騙資料庫」,用 transformer 把這些訊息轉成 embedding 之後存起來。每當有新的訊息出現在聊天室,機器人就會檢查這個新訊息與資料庫的詐騙訊息是否相似,如果很像就判定為詐騙。
會想到要用 Few-shot detection 的思想來自指紋辨識。指紋辨識是怎麼做的呢?手機只需要記得你的指紋長怎樣就可以了,如果有一個沒看過的指紋,很明顯跟已有的指紋不一樣,那手機就知道不對勁了。而詐騙資料庫的概念也是相同的。
這樣做的好處,是不需要大量的資料,反而只需要幾筆少量、已確認的詐騙資料,就可以做到偵測自然語言的效果,甚至不用自行建模。
唯一遇到的問題是用來做 embedding 的 sentence_transformer 的 library 很大,即使特別只裝 torch-cpu,還是讓我不得不把記憶體加到 4G 才能成功部署。這中間應該有值得再優化的地方,不過我沒有再往下解決了。

感想
在成功讓他動起來之後,有一些感想:
AI 可以寫程式,但還沒辦法在部署幫上太多忙。AI 在幾秒之內就可以寫完程式,但是部署需要自己來。部署和環境變數真的是惡夢,也許 MCP 的出現可以為部署帶來一點新的曙光……
記憶體好貴。雖然升規格的時候多少有預感,不過看到兩個禮拜扣掉免費額度後仍付了 300 台幣還是嚇了一跳。後來看了 billing 才知道,是閒置的記憶體花了最多,開發過程中的 build 其實沒花什麼錢。
看到朋友跟反詐騙博士的互動,覺得挺有趣也有成就感。(雖然也只有一個人)
最後這個職缺很可惜的沒有上(面試官甚至連問都沒問)。不過藉著這次機會,也算累積了一次line 機器人的半實作經驗,也體會了簡易的 Few-shot detection 流程。
這個服務已經暫時關起來了,不過想看程式碼的朋友可以看這裡。