keyboard-warrior 為
Google DevFest Taipei 2025 的實作結果:以在地中文社群語言文化(例如 PTT 鄉民風格)為訓練主題,從零訓練一個輕量級地端模型,使其能模擬「鍵盤酸民」語氣。目的是提供研究者/開發者一個工具,用於探索語言風格、多樣化對話行為,以及測試模型對「非建設性」、偏情緒化語言的回應與穩定性。
當下雖然已有強大的大型模型(例如「Gemini 3」)可供使用,但這些模型的設計與語言風格往往偏向中立、禮貌或經過過濾,不一定符合某些在地中文社群(例如臺灣 BBS 社群/匿名論壇)中常見的「鍵盤酸民」語言習慣。為了彌補這個差距,我們從零開始打造一個專屬自己的地端模型 —— 透過蒐集臺灣本地社群對話資料(如 PTT),讓模型能學習並模仿那種帶有諷刺、激烈、挑釁、情緒化的回覆風格。同時,我們把這個模型設計成輕量級(270M 參數),方便在本地、私有環境中運行,而不是依賴雲端或外部 API。Just for fun!🍻
本模型旨在生成模仿臺灣網路社群中「鍵盤酸民」語言風格的回覆,包括諷刺、挑釁、否定與情緒性批評等語氣特徵。模型的設計目的並非鼓勵攻擊性言論,而是在研究與實驗情境中,提供可用於毒性語言偵測、對抗測試(red-teaming)及安全性對照實驗的語料來源。
本模型可作為基礎模型(base model),經由微調(fine-tuning)或整合至更大型系統後,用於與「鍵盤酸民語言風格」相關的研究、測試與系統開發。其下游應用仍以安全性研究與對抗性測試為主,而非直接服務一般使用者。
本模型並非設計為一般用途的對話助理,也不適合在真實社群環境中模擬或參與對話。本模型的主要目的是支持研究、測試與安全性相關工作,超出此範疇的使用方式可能導致不預期的風險或傷害。
以下情境均屬於超出模型預期範疇,不建議或明確禁止使用:
本模型旨在模仿臺灣網路匿名社群中常見的「鍵盤酸民」語言風格,因此在訓練資料與生成內容中,可能涉及特定文化脈絡下的語言偏見與負面表達方式。使用者在評估本模型時,應理解其語言模式不代表客觀事實,亦不代表所有社群使用者的行為。
Use the code below to get started with the model.
1# Load model directly
2from transformers import AutoTokenizer, AutoModelForCausalLM
3
4tokenizer = AutoTokenizer.from_pretrained("lianghsun/keyboard-warrior")
5model = AutoModelForCausalLM.from_pretrained("lianghsun/keyboard-warrior")
6messages = [
7 {"role": "user", "content": "這次威力彩頭獎上看10億耶,好想中喔!"},
8]
9inputs = tokenizer.apply_chat_template(
10 messages,
11 add_generation_prompt=True,
12 tokenize=True,
13 return_dict=True,
14 return_tensors="pt",
15).to(model.device)
16
17outputs = model.generate(**inputs, max_new_tokens=40)
18print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:]))
1@misc{gemma3_ptt_keyboard_warrior_2025,
2 title = {Gemma-3-270M PTT Keyboard Warrior Reply Model},
3 author = {Liang Hsun Huang},
4 howpublished = {\url{https://huggingface.co/keyboard-warrior}},
5 year = {2025},
6 note = {Supervised fine-tuning on Taiwanese PTT keyboard warrior style dataset},
7 keywords = {LLM, Gemma, PTT, Taiwan, Keyboard Warrior, Toxic Language, Safety, Alignment}
8}