設計對話機器人 (ChatGPT-style Chatbot)

Hard★★★★Draft

FromGenerative AI System Design Interview

Convention: read the requirements & constraints first, sketch your own design, then expand the reference to compare.

📚 From the Books

設計對話機器人 (ChatGPT-style Chatbot)ProblemHardGenAI & LLM

給一段文字提示,生成相關且符合上下文的回應。難點不在流量,而在如何把一個語言模型訓練成有幫助、安全、對齊人類偏好的聊天機器人,並在推論時守住安全。

📋 Requirements

🧠 Core Ideas

TIP

這是語言生成任務,由大型語言模型(LLM)處理。架構選用僅解碼器 Transformer(decoder-only Transformer);訓練分三階段:預訓練 → SFT → RLHF,逐步把「會接話的基礎模型」變成「有幫助又安全的聊天機器人」。

機器學習目標是下一個 token 預測(next-token prediction),用交叉熵損失衡量預測與正確 token 的差異。上下文遠長於單句,因此位置編碼要能同時捕捉 token 位置與相對關係——書中比較絕對、相對,以及被 Llama 3 採用的 RoPE(旋轉位置嵌入)

⚖️ Reference Design

資料準備
  • 預訓練資料主要爬自網路,需大量清理:內容擷取與解析、URL/網域過濾、語言辨識、內容品質過濾。
  • 通用清理:移除不當內容、PII 匿名化、移除低品質資料、去重複、移除無關資料。
  • 分詞用子詞演算法,例如 Byte-Pair Encoding (BPE)
三階段訓練
  • 預訓練:在大規模語料庫(Common Crawl、C4、GitHub、Wikipedia、Books、ArXiv、Stack Exchange 等)上訓練,產出具廣泛語言理解的基礎模型(如 Llama-1 用了約 1.4 兆個 token)。運算昂貴——常需數千張 GPU、數百萬美元、數個月。
  • SFT(監督式微調 / 指令微調):在較小但高品質的**(提示, 回應)示範資料**上微調,讓模型學會回應而非只延續文字。
  • RLHF(對齊):先用**(提示, 勝出, 落敗)偏好對訓練獎勵模型**,再以 PPO 等強化學習演算法優化 SFT 模型,強化高分回應。
取樣(Sampling)
  • 確定性方法(貪婪搜尋、束搜尋)適合短而可預測的輸出,開放式對話易重複或次優。
  • 隨機性方法引入隨機性:多項式取樣、Top-kTop-p(核心取樣);先進 LLM 廣用 Top-p。
  • 溫度(temperature) 縮放 logits 控制隨機性,重複懲罰 抑制重複序列。
評估
  • 離線:傳統指標(困惑度 perplexity)不足,需搭配任務特定評估(常識推理、世界知識、閱讀理解、數學、程式碼、MMLU 等綜合基準)、安全性評估(毒性、偏見與公平、真實性、隱私、對抗穩健性)與人工評估。
  • 線上:使用者回饋與評分、參與度、轉換率、線上排行榜(如 Chatbot Arena)。
推論流程

即時互動的關鍵元件依序為:安全過濾(先擋有害查詢)→ 提示增強器(展開縮寫、糾錯、補上下文)→ 回應生成器(以 Top-p 取樣呼叫 LLM)→ 回應安全評估器(展示前的最後防線)→ 拒絕回應生成器(不安全時禮貌說明);會話管理維護聊天歷史與追問上下文。

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading