70 個群都來問我的 AI 日報,是這麼做的。

米开朗基杨發表於2024-11-25

最近我給 FastGPT 使用者交流群裡接入了 AI 日報,每天早上 10 點會自動向群裡推送 AI 日報,讓群裡的小夥伴們第一時間瞭解到昨天 AI 領域都發生了哪些大事。

效果大概是這個樣子的:

如果你對 FastGPT 感興趣,可以直接掃碼入群:

除此之外,我還同步一份到公司的飛書群裡,這樣公司的小夥伴們也能及時瞭解到 AI 領域的最新動態。

每一條資訊除了提供標題和概要之外,還附上了相關連結,方便大家進一步瞭解。

你以為這就完了?

我還給公司飛書群裡每天傳送一份 AI 領域的最新論文摘要,幫助研發同學汲取最新的科研成果。

為什麼我要做這麼一個日報呢?

因為現在 AI 領域的發展速度實在是太快了,每天都有新的論文、新的技術、新的產品釋出,如果不持續關注,真的很容易被時代拋棄。

但是網上的資訊量實在是太多太雜了,往往讀上幾十分鐘都感覺沒啥收穫,但是又怕自己錯過什麼資訊。

所以我就想,如果能開發個機器人,自動爬取並總結一些最新的資訊,將簡化後的資訊每天定時發給我,如果感興趣可以再進一步搜尋,這樣我就能每天都能高效獲取到有價值的資訊了。

有了需求之後,再進一步分析,可以發現這個需求主要的難點有兩個:

  1. 寫一個爬蟲,爬取對應網站的資訊
  2. 將獲取到的資訊,透過工作流編排總結歸納

恰好這兩個需求分別可以被兩個工具快速解決。

建立爬蟲

首先,我需要建立一個爬蟲,爬取對應網站的資訊。

這就需要用到一個牛叉的開源專案 Crawl4ai

這個專案效能超快,還能輸出適合大語言模型的格式,比如 JSON、清理過的 HTML 和 markdown。它還支援同時爬取多個網址,能提取所有媒體標籤 (圖片、音訊、影片),以及所有內外部連結。目前 star 數已經超過 1.5k。

問題來了,這個專案是基於 Python 開發的,而我既不懂 Python,也不會寫爬蟲

這個倒是難不倒我,我可以用 Cursor 嘛,讓它幫我寫就好了。

但是我一想到寫完之後還要打包部署,以及配置域名解析、申請 SSL 證書等各種繁瑣的事情,瞬間就頭大。

嘿嘿,這個問題也可以解決,直接用 Sealos Devbox 就好了,Devbox 直接摒棄了各種繁瑣的配置,開箱即用,讓你寫完爬蟲就能直接上線,啥都不需要配置

我用 Devbox 和 Cursor 半個小時就寫完了爬蟲並且上線了,你就說快不快吧?

直接來看步驟。

建立開發環境

首先進入 Sealos 桌面,然後開啟 Debox 應用,建立一個新專案。Devbox 支援多種主流語言與框架,這裡我們需要開發爬蟲服務,所以直接選擇 Python 作為執行環境。

點選建立,幾秒鐘即可啟動開發環境。

接下來在操作選項中點選 Cursor,將會自動開啟本地的 Cursor 程式設計 IDE。

接著會提示安裝 Devbox 外掛,安裝後即可自動連線開發環境。

Cursor 開啟開發環境之後,執行 ./entrypoint.sh 就能看到專案成功跑起來了。

是不是非常簡單?直接省略了配置域名解析、申請 SSL 證書,配置閘道器等與開發無關的繁瑣操作,爽!

開發爬蟲

接下來,我們就可以開始寫爬蟲了。

整個開發過程 Cursor 都可以全權代理,你只需要告訴他你要做什麼,Cursor 就能幫你完成。

可以看到 Cursor 已經幫我們寫好了 crawler 這個基礎函式,只要填上需要爬取的地址,就能自動爬取。

它甚至還幫我們想好了下一步應該做什麼,即新增一個新的路由來處理請求。

於是我順著他的話繼續往下問。

它也是非常快速地幫我們修改出了路由,這樣我們就可以透過請求某個介面實現對應網站的爬取了。

接下來我想最佳化一下效能,便直接讓它在程式碼上改,也是很快地幫我們最佳化好了。

最終爬取的效果如下:

有標題,有內容,有時間,有連結,這不就齊活了嘛。

整個開發過程我一行程式碼都沒有寫,都是 Cursor 幫我寫的,包括爬蟲庫的使用、路由介面的編排、效能的最佳化等等,你說爽不爽?

上線爬蟲

這個爬蟲服務不需要一直執行,只需要每天定時執行一會兒,等我發完了日報就可以關閉了。最重要的是這樣省錢啊,每天執行一小會兒,一個月下來也沒多少錢,比自己買伺服器划算多了。

而 Sealos 正好是按量付費的,執行多長時間就花多長時間的錢,用多少資源就花多少資源的錢,非常划算。

我們需要往 entrypoint.sh 這個檔案中寫入專案的啟動命令 (因為 Devbox 專案釋出之後的啟動命令就是執行 entrypoint.sh 指令碼)。

指令碼修改完並儲存之後,點選【釋出版本】:

填寫完資訊後點選【發版】。

注意:發版會暫時停止 Devbox,發版後會自動啟動,請先儲存好專案避免丟失資料。

稍等片刻,即可在版本列表中找到發版資訊,點選上線後會跳轉到部署頁面,點選部署應用即可部署到生產環境。

CPU 和記憶體可以根據自己的專案情況進行調整。

生產環境分配的 HTTPS 域名與開發環境獨立,部署後即可透過生產環境域名訪問這個爬蟲的介面。

接入 FastGPT 工作流

現在有了爬蟲介面,獲取了資訊資訊,就可以藉助 AI 來總結提煉其中的核心資訊了。

使用 AI 最簡單的方式就是 FastGPT 工作流。

FastGPT 國內版
FastGPT 國際版

以我們要抓取的一個網站為例,直接使用 HTTP 節點接入即可。

在 HTTP 節點中,我們使用 GET 方法請求爬蟲介面,並且設定超時時長為三分鐘 (防止資訊過多)。

因為爬蟲介面的原始響應就是一個文章陣列,所以我們可以不用自定義輸出欄位,直接將原始響應傳送給 AI 對話節點即可。

這裡用到的是李繼剛老師研究的結構化提示詞,以 lisp 語言的形式極簡高效地實現了對 AI 的提示,我實測下來效果相當不錯。

然後進行二次排版,將前面獲取到的多個來源的文章總結進行進一步的整合和排版,便於輸出。

最後呼叫 FastGPT 的飛書機器人外掛,將整合好後的資訊輸出到公司的飛書群。

接下來配置一下工作流的定時執行,那麼每天十點,早報機器人就會自動執行,總結過去 24h 發生的科技大事,然後以簡潔準確的報告形式傳送到工具群。

整體的工作流大致如下:

省錢

既然 Sealos 是按量付費,那我幹嘛要一直執行著爬蟲服務?

我只需要每天早上十點執行一次,然後爬取資訊,總結資訊,傳送資訊,然後就可以關閉服務了。

這樣每天執行爬蟲服務的時間也就幾分鐘,太省錢了哈哈 😄

那麼該如何定時開機關機爬蟲服務呢?

哈哈,我直接寫到 FastGPT 的工作流裡,在工作流的最前面和最後面分別接入一個 HTTP 節點,這樣就可以在每天執行工作流之前和之後分別執行爬蟲服務,然後關閉爬蟲服務,我真是太有才了!

具體的步驟如下。

首先從 Sealos 桌面下載 kubeconfig 檔案。

然後執行以下命令,將輸出的內容作為請求介面時的 Authorization Header 值:

cat kubeconfig.yaml | jq -sRr @uri

在 FastGPT 工作流的最前面接入一個 HTTP 節點,URL 填入 Sealos【應用管理】的 API 介面地址:

https://applaunchpad.hzh.sealos.run/api/v1alpha/updateReplica

請求方法選擇 POST。

在 Header 中新增 Authorization 欄位,值為上一步獲取到的內容。

然後在 Body 中輸入以下內容 (在 x-www-form-urlencoded 中填入引數):

其中 appName 是你的爬蟲服務名稱,可以在【應用管理】中檢視:

而 replica 就是你的服務需要啟動的例項數量,一般設定為 1 即可。

下面點選【除錯】來測試一下:

搞定!

下面再接入一個 HTTP 節點,URL 填入以下地址:

https://applaunchpad.hzh.sealos.run/api/getAppPodsByAppName

這個介面可以獲取到當前爬蟲服務執行的 Pod 資訊,然後我們就可以根據 Pod 資訊來判斷爬蟲到底有沒有啟動成功

請求方法選擇 GET。

在 Header 中新增 Authorization 欄位,值和前面一樣。

然後在 Params 中輸入以下內容:

其中 name 是你的爬蟲服務名稱。

輸出欄位新增一個變數 data[0].status.containerStatuses[0].state.running,型別為 String。

再新增一個沒用的【變數更新】節點,然後再接到【判斷器】節點。

  • 如果變數 data[0].status.containerStatuses[0].state.running 存在,則表示爬蟲服務還沒執行成功,則接回到前面的【獲取爬蟲服務狀態】節點,繼續獲取服務狀態。
  • 如果變數 data[0].status.containerStatuses[0].state.running 不存在,則表示爬蟲服務已經執行成功,則接入後面的 HTTP 節點開始呼叫爬蟲服務。

最後傳送完日報後,再接入一個 HTTP 節點來關閉爬蟲服務。引數和前面的【自動開啟爬蟲服務】節點一樣,只需要把 replica 設定為 0 即可。

這樣就搞定了,每天早上十點,爬蟲服務會自動執行,傳送完日報後會自動關閉,爽!

總結

好啦!到這裡我們就完成了一個自動化的爬蟲服務,它會在每天早上十點準時上班 (啟動),完成工作 (傳送日報) 後就自動下班 (關閉),比我們還自覺呢!😂

如果你也想搭建一個這樣的 “自動打工人”,可以參考以下資源:

  • 爬蟲原始碼:https://github.com/newfish-cmyk/crawl
  • 完整工作流:https://pan.quark.cn/s/019132869eca

快去試試吧,讓 AI 幫你完成這些重複性的工作,解放雙手享受生活!🎉

相關文章