現代語意機器人架構:Rasa 與大型語言模型的混合策略
隨著 LLM 技術成熟,語意機器人不再僅限 FAQ,企業可導入混合式策略,提升互動層級與回應品質。在開發企業級語意機器人時,單純的規則型對話或意圖分類模型往往無法滿足複雜多變的對話需求。本專案 aisensebot-enterprise 提出了一個現代化的混合式架構,結合了傳統的 自然語言理解(NLU)框架 與 大型語言模型(LLM),旨在實現高效能、高準確性與高度可擴展性的對話系統。
您可以透過以下 GitHub 連結檢閱本專案的原始碼:https://github.com/BpsEason/aisensebot-enterprise.git
本文將深入探討這個專案的微服務架構設計,特別關注如何無縫整合 Rasa 作為意圖識別引擎,以及 OpenAI GPT 作為智慧回應生成器。
1. 架構核心:微服務化的混合策略
我們的架構由四個主要微服務組成,每個服務各司其職:
Backend (FastAPI):作為 API Gateway,負責處理所有前端請求,並透過 WebSocket 提供即時雙向通訊。它協調各個服務之間的資料流,並處理使用者身分驗證。
NLU (Rasa):專注於意圖識別與實體提取。對於常見、高頻率的對話意圖(例如:問候、道別、查詢產品),Rasa 的模型能夠提供快速且精確的結果。
Response Engine:這是一個獨立的微服務,負責處理複雜或非預期的對話。當 Rasa 無法識別出明確的意圖時,它會將使用者的原始訊息傳送給 OpenAI GPT-3.5,利用其強大的生成能力來產生自然且上下文相關的回應。
Frontend (Vue.js):提供使用者友善的聊天介面,透過 WebSocket 與後端進行即時通訊。
2. 核心技術整合:Rasa 與 GPT 的協同工作
我們的核心設計思想是讓 Rasa 處理「已知的對話流程」,而 GPT 則處理「未知的對話內容」。這種分工可以有效平衡成本、延遲與回應品質。
模組邊界與 API 定義
微服務之間的 API 協定清晰,確保了各個模組的獨立運作。
Backend 與 NLU 的 API 互動:
Backend 會發送一個包含使用者訊息的 POST 請求給 Rasa。
Rasa 處理後,會回傳一個包含意圖(
intent)、信賴度(confidence)和實體(entities)的 JSON 物件。API 範例:
{"text": "我想買手機", "intent": {"name": "ask_about_product", "confidence": 0.95}, "entities": [{"entity": "product", "value": "手機"}]}
Rasa 與 Response Engine 的 API 互動:
Rasa Action Server 透過 Webhook 呼叫 Response Engine。
WebhookRequest的next_action為"action_default_fallback",tracker包含整個對話的歷史資訊,包括使用者訊息。Response Engine 接收此請求後,會解析
tracker以取得當前對話內容,並構建 Prompt。
Fallback Decision 邏輯:Rasa 的信賴度閾值
後備機制的觸發時機至關重要。我們採用動態調整的信賴度(confidence threshold)邏輯,而非固定的閾值。
設計考量:對於像
greet或goodbye這類簡單且信賴度通常很高的意圖,我們可以設定較高的閾值(例如0.8)。但對於更模糊或更專業的意圖,則可以適度降低閾值。應用:如果 Rasa 識別的最高信賴度意圖低於預設閾值,則觸發
action_default_fallback。例如,當使用者輸入「請介紹一下你們的雲端服務」時,如果沒有一個明確的意圖匹配,則會啟動後備機制,將請求轉交給 GPT。
Prompt Engineering 方法學
為了讓 GPT 的回應既準確又符合企業語氣,我們設計了一套 Prompt 範本。
System Message:在每次 API 呼叫中,我們會加入一個
system message,明確定義 GPT 的角色、語氣和行為。例如:「你是一個專業、熱情的客服機器人,擅長用友善的語氣回答問題。」對話歷史拼接:為了維持上下文記憶,我們會將最近幾輪的對話歷史(包含使用者和機器人的對話)拼接在 Prompt 中。這能讓 GPT 更好地理解使用者當前的問題。
範本化 Prompt:
prompt_templates/目錄下存放了不同情境的 Prompt 範本。例如,在觸發後備時,我們會使用一個通用範本;而在特定情境下(如產品查詢),則會使用更精準的範本。
3. 架構優勢與部署考量
這種混合式微服務架構帶來了多項優勢:
高效能與低成本:高頻率的簡單對話由輕量級的 Rasa 處理,避免不必要的 GPT API 呼叫,從而降低延遲和營運成本。
高靈活性:當新的對話意圖出現時,可以先訓練 Rasa 模型來處理;對於需要高度彈性的對話,則完全依賴 GPT。
可擴展性:每個服務都可以獨立擴展。例如,如果 NLU 處理量大增,我們可以只增加 Rasa 服務的實例。
易於維護:各個服務職責單一,使得開發、測試和部署變得更加簡單。
結論
透過將 Rasa 的意圖識別能力與大型語言模型的生成能力巧妙結合,我們建立了一個既穩定又靈活的企業級語意機器人。這種架構不僅能夠處理常見的客戶問題,也能在面對意料之外的對話時提供有用的回覆,為企業提供了一個強大且可客製化的 AI 聊天解決方案。未來,我將探索多輪記憶與少樣本學習的整合,提升機器人自適應能力。
沒有留言:
張貼留言