面向客戶的對話式 AI 助手並非憑空而來,而是嵌入在定義明確的業務流程中。正因如此,這些系統才需要可靠且一致地引導使用者完成預定工作流程的每個步驟。
然而,現有的利用工具呼叫或函式呼叫概念與系統(例如 API 或資料庫)互動的代理框架往往無法實現這一目標。它們缺乏企業級應用程式所需的穩健性、可控性以及對複雜流程的內建支援。
在本文中,我們將探討其原因,並介紹一種替代方法:流程呼叫。這種方法可以建立可靠、流程感知且易於除錯的對話式代理。我們還將分享程式碼示例,並指導您如何開始使用 Rasa 平臺。
為什麼選擇流程呼叫而不是工具呼叫?
在當前正規化中,AI 代理配備了工具,使其能夠解決特定任務。這些工具通常執行原子操作,例如呼叫 API 讀取或寫入資料、更新或從資料庫獲取資料或類似操作。這種方法的侷限性在於它通常缺乏狀態,這使得 AI 代理變得不可預測,有時甚至不可靠,原因如下:
- 丟失對話上下文:代理無法記住之前的對話或決策,導致響應冗餘或不一致。
- 業務流程執行不力:如果沒有狀態跟蹤,代理可能會跳過必需的步驟或以錯誤的順序執行步驟。
- 重複任務執行不一致:相同的任務可能會產生不同的結果,從而違背使用者的期望並降低信任度。
另一方面,企業擁有完善的流程,AI 助手應該遵循這些流程,而不是即興發揮或自行建立。為客戶服務部署的對話式 AI 代理必須瞭解使用者的需求,將他們與正確的公司流程連線起來,清晰地解釋它如何提供幫助,並引導他們完成每個步驟以實現目標——所有這些都需要保持流暢自然的對話流程。
這就是流程呼叫的作用所在。透過流程呼叫,LLM 可以呼叫有狀態的流程並與之協作。使用者向助手提出問題,LLM 會預測將觸發哪個特定的、已定義的業務流程。該流程與 LLM 協同工作,推動對話向前發展。
讓我們深入探討如何在實踐中使用流程呼叫方法構建可靠的 AI 助手。我們將開發一個能夠處理簡單流程的銀行 AI 代理,包括轉賬、開設儲蓄賬戶、回覆常見問題 (FAQ) 以及處理非主題請求。
如何使用Rasa構建對話式AI代理?
Rasa 平臺是一個對話式 AI 框架,提供構建 AI 助手的端到端解決方案。Rasa 平臺的核心是 CALM(基於語言模型的對話式 AI),它是 Rasa 的 AI 驅動型對話編排引擎。CALM 旨在將業務邏輯與自適應對話管理相結合。CALM 的核心功能包括對話理解、對話管理器和上下文響應複述器。
使用 Rasa,您可以構建企業級、流暢的文字和語音 AI 助手。讓我們設定環境,開始構建您的 AI 銀行助手。
設定環境
首先,您需要在此處獲取免費的開發者版金鑰。一封確認郵件將傳送到您提供的電子郵件地址,您需要從該郵件中複製您的令牌。
有兩種方法可以開始使用 Rasa:
- 使用 GitHub Codespaces
- 使用 Python 進行本地安裝
在本教程中,我們將使用 GitHub Codespaces,因為它允許您直接在瀏覽器中構建代理,無需本地安裝。此選項非常適合初學者和任何 Rasa 新手。
您需要:
- 一個 GitHub 帳戶
- 一個 Rasa 開發者版金鑰 – 點選此處獲取。
建立您的第一個對話式AI代理
要使用 Rasa 建立您的第一個 AI 代理,請執行以下步驟:
- 前往 Rasa Codespaces GitHub,然後點選“Create codespace on main”。這將在您的瀏覽器中開啟一個新的 Codespace。
- Codespace 準備就緒後,開啟 .env 檔案並新增一個新的環境變數:
RASA_PRO_LICENSE="your-rasa-pro-license-key"
- 然後,在終端中執行以下命令:
使用以下命令載入環境變數:
source .env
要啟用虛擬環境:
source .venv/bin/activate
使用 Rasa 提供的教程模板建立您的第一個代理。在整個安裝過程中,請按 Enter 鍵或對每個問題回答“是”。
在終端中執行以下命令:
rasa init --template tutorial
一個包含 Rasa 檢查器的新標籤頁將會開啟。嘗試向您的代理詢問幾個問題,例如:
- 您好,您好嗎?
- 您可以做什麼?
您也可以嘗試以下命令:
- “Help me transfer money.”
轉賬是事務流的一個例子,其中代理遵循預定義的操作序列,例如詢問缺失資訊、呼叫 API、更新資料庫中的記錄等。
構建流程
還記得我們一開始討論過如何構建可靠、確定性的業務邏輯執行嗎?您可以使用流程在 Rasa 中建立這樣的流程。我們將為代理新增開設儲蓄賬戶的功能,以演示流程呼叫在實踐中的工作原理。
流程允許您構建一個預定義的步驟序列,必須遵循這些步驟才能實現特定結果。當然,在銀行開設真正的儲蓄賬戶會涉及更多步驟,例如驗證使用者身份、檢查賬戶資格等等。所有這些都可以在 Rasa 中使用自定義操作(本質上是 Python 函式)來實現。
我們將構建一個簡化版本,在使用者開設新的儲蓄賬戶之前,我們會要求使用者提供一些額外資訊:
- The name
- The currency
- The term length
一旦定義了這些步驟,AI 代理就會始終遵循這些步驟並按照規定執行業務邏輯,同時提升 LLM 的能力,使其能夠更好地理解對話。
新增儲蓄賬戶流程
現在,我們將透過編輯資料目錄中的 flows.yml 檔案將此流程新增到我們的助手中:
open_savings_account: description: Collect details to open a savings account. steps: - collect: account_name description: The name the user wants to give their savings account. - collect: currency description: The currency for the savings account. - collect: duration description: The amount of time (e.g., months or years) for the savings account. - action: utter_confirm_savings_account_opened
如您所見,流程以 YAML 格式編寫。如果您想了解流程的語法,可以閱讀 Rasa Docs 上的官方文件。
接下來,更新 domain.yml 檔案以定義必要的 slots 和 responses。將 domain.yml 視為您的對話式 AI 助手的整個世界:每當您新增新的插槽或響應時,都需要將它們新增到此處,以便您的助手瞭解它們。
將新插槽新增到 slots 部分:
account_name: type: text mappings: - type: from_llm currency: type: text mappings: - type: from_llm duration: type: text mappings: - type: from_llm
在回覆部分新增新的回覆:
utter_ask_account_name: - text: "What would you like to call your new account?" utter_ask_currency: - text: "Which currency would you like to use?" utter_ask_duration: - text: "How many months or years would you like to save for?" utter_confirm_savings_account_opened: - text: "Your savings account '{account_name}' has been successfully opened."
最後,執行以下命令來訓練你的助手並開啟 Rasa Inspector:
rasa train rasa inspect
您現在可以透過與代理商聊天並說類似的話來測試新的儲蓄賬戶流程:
I want to open a savings account
助手將按照您定義的流程逐步收集所需的詳細資訊。
使用流程的優勢
使用流程的優勢包括:
- 將複雜的流程分解為可重複使用的部分
- 將流程連結在一起以構建更高階的互動
- 可擴充套件性——您可以擴充套件助手的功能,同時保持流程的井然有序
- 控制力——您可以精確定義助手在特定場景下的行為方式
流程使管理結構化對話變得更加容易,尤其是在您需要一致且可靠地執行業務邏輯時。
處理資訊型問題
現在您已經瞭解如何新增流程,您可以擴充套件代理的功能以處理任意數量的任務,每個任務都根據您的指示精確執行。無論您有 10 個還是 100 個流程,Rasa 都會利用 LLM 的強大功能來觸發正確的流程。
但是,如果使用者詢問的是資訊型問題而不是事務型問題,該怎麼辦?
您肯定不想為每個問題(例如“轉賬需要多長時間?”)建立專用的流程。或“國際轉賬的佣金是多少?”
為了處理此類問題,Rasa 包含一個名為“企業搜尋”的元件。您可以透過多種方式在 Rasa 中使用企業搜尋,並讓使用者與您的文件進行互動:
- 將文件直接新增到您的專案目錄並使用 FAISS 向量儲存
- 使用受支援的外部向量資料庫之一,例如 Qdrant 或 Milvus
- 連線您選擇的任何其他向量資料庫
在本教程中,我們將使用第一個選項:FAISS 向量儲存。以下是讓您的 AI 代理理解資訊查詢的步驟:
預設情況下,企業搜尋使用 OpenAI 作為預設的 LLM 提供程式,因此您需要將您的 OPENAI_API_KEY
新增到 .env 檔案中。
準備 .txt 格式的資料並將其新增到 docs/faq.txt,以便您的 AI 代理可以根據提供的資料回答任何問題,而無需進行明確的程式設計。
接下來,在您的 config.yml 中,取消註釋 EnterpriseSearchPolicy
:
- name: EnterpriseSearchPolicy
編輯 data
資料夾中的 patterns.yml
檔案以包含以下搜尋模式:
pattern_search: description: Flow for handling knowledge-based questions name: pattern search steps: - action: action_trigger_search
重新訓練並重新執行您的代理。現在您可以測試事務性查詢和資訊性查詢了。
處理超出範圍的問題
我們最後要介紹的是,當使用者提出的問題無法透過流程或企業搜尋回答時該怎麼辦。
Rasa 中有一個預設模式 pattern_chitchat
,旨在處理這種情況。所有超出範圍的查詢都會被路由到那裡,您有以下幾種選擇:
- 使用預定義訊息進行回覆,例如“我不確定如何回答這個問題”。
- 使用 LLM 和自定義提示來生成更多樣化、更自然的回覆。
pattern_chitchat: description: Handles off-topic or general small talk name: pattern chitchat steps: - action: action_handle_chitchat
然後,您可以將 action_handle_chitchat
定義為靜態響應,也可以使用它連線到 LLM 進行動態回覆。
這可確保您的助手始終能夠優雅地響應,即使問題超出其核心業務邏輯或知識庫。
小結
在本文中,我們探討了對話式 AI 框架 Rasa,以及如何使用它來構建一個可靠且可擴充套件的 AI 代理,該代理嚴格遵循明確定義的業務流程。我們演示瞭如何實現流程呼叫方法,以確保可預測性、控制力以及與實際業務需求的一致性。
您學習瞭如何:
- 在 GitHub Codespaces 中設定環境並啟動 Rasa
- 建立交易流程,例如轉賬和開立儲蓄賬戶
- 使用企業搜尋處理資訊查詢
- 使用回退模式處理超出範圍和常規問題
現在,您擁有了構建 AI 助手所需的所有工具,這些助手可以在明確定義的業務邏輯內自信地執行。立即嘗試一下,獲取您的開發者版許可證金鑰,並建立您的第一個助手。
評論留言