- Python(3.9+,建議使用 3.10 ~ 3.12)
- Discord 伺服器(具管理員或擁有者的權限)
- Discord Bot(擁有 Token,並將它拉進 Discord 伺服器中)
- (可選)Ruff
不會建立 Bot 的話,可以依這條影片來操作
- 請先把本專案 clone 下來後,建立一個 Venv
- 使用以下指令安裝依賴
pip install -r requirements.txtcp BERT_training_data.example.xlsx BERT_training_data.xlsx
cp bot_token.example.env bot_token.env
cp server_channel.example.json server_channel.json若使用 Windows 系統,請改用
copy而非cp
以上三個檔案皆屬於敏感資訊,請勿上傳至公開的 GitHub
複製後,請到被複製的兩個文件中,依提示填上相應的資訊
執行 emo_cla.py,待訓練完成後,可以看到終端機輸出的 train_loss 值是多少,它代表訓練損失,愈低表示愈準
若覺得 train_loss 過高,可以試著:
- 重新訓練(直接重新執行
emo_cla.py) - 增加或調整訓練資料(
BERT_training_data.xlsx) - 調整
emo_cla.py中,training_args變數的值:num_train_epochs:訓練輪數(資料愈多,此值愈小,一般在 10 以內)learning_rate:學習率(一般在 1e-5 ~ 5e-5 間,可以試著用 2e-5 或 3e-5)
若修改了訓練資料,請重新執行
emo_cla.py來生成新的模型檔(.pth)
若你是在自己電腦上跑 Discord Bot,直接執行 math_bot.py 即可讓機器人上線
python math_bot.py若機器人跑在 Render 環境,它會自動維持上線狀態,Render 和 UptimeRobot 的設定方式如下(以全都用免費方案為主):
- 將
bert_emotion_model資料夾和bert_emotion_model.pth模型檔一起選取,並以 ZIP 加壓縮 - 重新命名壓縮檔為
model.zip - 到 HuggingFace,點擊 New Dataset(Visibility 設為 Public) → Files and versions → Contribute → Upload files,將剛才的
model.zip拖進去並 Commit - 上傳完成後,回到 Files and versions,對著
model.zip的下載鈕點右鍵並複製連結網址 - 到 Render 創建一個 Web Service
- 選擇機器人的 GitHub Repo(可先 Fork 此 Repo)
- 回到 Render,填入以下設定
- Runtime:
Python3 - Build Command:
pip install -r requirements.txt - Start Command:
python math_bot.py - Environment Variables(兩個)
- 填入名稱
DISCORD_BOT_TOKEN以及具體的 Discord Bot Token 進去 - 填入名稱
MODEL_URL並貼上剛才複製的模型下載連結
- 填入名稱
- Advanced
- Secret Files:
Filename填入server_channel.json、File Contents填入該 JSON 檔內容 - Health Check Path:
/(預設為/healthz)
- Secret Files:
- Runtime:
- 最後點擊
Deploy Web Service - 至 UptimeRobot:創建 HTTP / website monitoring 並填入 Render 中該 Bot 的網址
- 人數統計語音頻道
- 總人數(
TOTAL_PPL) - 真人(
REAL_PPL) - 機器人(
BOT_PPL)
- 總人數(
- 出入提示
- 人員加入提示訊息(
JOIN) - 人員離開提示訊息(
LEAVE) - 測試加入/離開訊息(
TEST_IO)!test_join:測試加入訊息(須管理員或擁有者權限)!test_leave:測試離開訊息(須管理員或擁有者權限)
- 人員加入提示訊息(
- 機器人上線(更新)提示訊息(
UPDATE) - 情緒判識(
CHAT)👍:正向情緒👎:負向情緒- 無 emoji 反應:中立情緒/無情緒/未辨識出情緒
- 數學計算斜線指令(
COMMAND)- 於頻道中輸入
/即可使用,指令下方附帶說明 - 所有使用者皆可使用
- 於頻道中輸入
括號表示
server_channel.json的對應頻道
此 Bot 未製作
!help指令,使用後的輸出結果可能不如預期