在阿里云上,您可以通過人工智能平臺PAI快速部署一個大模型RAG對話系統。通過AppFlow的集成,您可以將該對話系統集成到釘釘群聊或微信等各種場景中,讓您隨時隨地使用您的智能客服。本文將以微信公眾號為例,為您介紹PAI RAG+AppFlow的部署方案。
方案概覽
將RAG對話系統集成到微信公眾號,具體方案只需以下幾步:
|
1. 部署PAI RAG應用
首先您需要部署一個大模型RAG對話應用,用于實現AI助手。具體操作步驟如下:
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。
在模型在線服務(EAS)頁面,單擊部署服務,然后在場景化模型部署區域,單擊大模型RAG對話系統部署。
在部署大模型RAG對話系統頁面,配置以下關鍵參數。
基本信息
參數
描述
服務名稱
自定義服務名稱,例如pai_rag_test1。
模型來源
本方案選擇開源公共模型。
您也可以選擇自持微調模型,但需提前準備好您的私有模型。通過分布式訓練(DLC)完成模型訓練后,您可以將模型訓練結果導入阿里云對象存儲OSS或文件存儲NAS中,詳情請參見在DLC訓練任務中使用云存儲。
模型類別
本方案選擇Qwen1.5-1.8b。
資源配置
資源配置選擇:選擇模型類別后,系統會自動推薦適合的資源規格,無需您進行配置。如果更換至其他資源規格,可能會導致模型服務啟動失敗。
向量檢索庫設置
RAG支持通過Faiss(Facebook AI Similarity Search)、阿里云Elasticsearch、Milvus、Hologres、OpenSearch-向量檢索版或RDS PostgreSQL構建向量檢索庫。本方案以FAISS為例,參數配置說明如下。您也可以選擇使用其他向量檢索庫,如何準備向量檢索庫以及相關配置項,請參見向量檢索庫設置。
參數
描述
版本類型
選擇FAISS。
OSS地址
選擇當前地域下已創建的OSS存儲路徑,用來存儲上傳的知識庫文件。如果沒有可選的存儲路徑,您可以參考控制臺快速入門進行創建。
說明如果您選擇使用自持微調模型部署服務,請確保所選的OSS存儲路徑不與自持微調模型所在的路徑重復,以避免造成沖突。
參數配置完成后,單擊部署。
查看PAI RAG應用服務Token。
在模型在線服務(EAS)頁面,單擊目標服務名稱。
在基本信息區域單擊查看調用信息,并在調用信息對話框的公網地址調用頁簽,獲取Token。
2. 創建微信公眾號連接流
AppFlow可以讓您在不寫代碼的情況下,通過界面配置將PAI RAG應用和微信公眾號連接起來。您可以通過預置的AppFlow模板創建一個微信公眾號連接流。
如果您的微信公眾號已經完成認證,您可以使用微信客戶消息回復用戶在公眾號的咨詢,如果您沒有完成認證,只能使用被動回復消息功能回復用戶,該功能將消息響應時間限制為 5 秒,超時將無法回復。
是否完成認證可以在微信公眾號后臺,在左側菜單選擇 ,在賬號設置頁面中查看。您可以根據認證情況選擇下面的創建方案。
未認證公眾號
使用AppFlow模板創建連接流,單擊立即使用進入創建流程。
訪問微信公眾號后臺,在左側菜單選擇 。選擇基本配置頁簽,獲取 AppID。
在連接流的賬戶授權配置向導頁,在選擇憑證下拉列表中單擊添加新憑證,然后在授權頁面填入AppID,單擊授權并在新的頁面使用微信掃描完成授權。授權后,Appflow會自動幫您配置公眾號,您無需任何操作。授權完成后,您需要回到連接流的賬戶授權配置向導頁,選擇剛剛授權的微信公眾號。
在連接流的賬戶授權配置向導頁,在選擇憑證下拉列表中單擊添加新憑證,在創建憑證對話框中,填入步驟1獲取的RAG應用Token,并設置一個自定義憑證名稱。
在執行動作配置向導頁,填寫RAG應用的區域、工作空間ID和服務名稱,完成后單擊下一步。
在基本信息配置向導頁,填寫連接流名稱和連接流描述(建議保持默認),完成后單擊下一步。
界面提示流程配置成功,單擊發布。
進入連接流頁面查看已發布成功的連接流。
已認證公眾號
使用AppFlow模板創建連接流,單擊立即使用進入創建流程。
訪問微信公眾號后臺,在左側菜單選擇 。選擇基本配置頁簽,獲取 AppID。
在連接流的賬戶授權配置向導頁,在選擇憑證下拉列表中單擊添加新憑證,然后在授權頁面填入AppID,單擊授權并在新的頁面使用微信掃描完成授權。授權后,Appflow會自動幫您配置公眾號,您無需任何操作。授權完成后,您需要回到連接流的賬戶授權配置向導頁,選擇剛剛授權的微信公眾號。
在連接流的賬戶授權配置向導頁,在選擇憑證下拉列表中單擊添加新憑證。在創建憑證對話框中,填入步驟1獲取的RAG應用Token,并設置一個自定義憑證名稱。
在執行動作配置向導頁,填寫RAG應用的區域、工作空間ID和服務名稱,完成后單擊下一步。
在基本信息配置向導頁,填寫連接流名稱和連接流描述(建議保持默認),完成后單擊下一步。
界面提示流程配置成功,單擊發布。
進入連接流頁面查看已發布成功的連接流。
3. 為PAI RAG應用增加私有知識
以上傳開源項目EasyRec的知識庫文檔為例,當您提出與EasyRec相關的問題時,能夠獲得更準確的回答。
登錄PAI控制臺,在頁面上方選擇目標地域,并在右側選擇目標工作空間,然后單擊進入EAS。
在模型在線服務(EAS)頁面,單擊目標服務的服務方式列下的查看Web應用。
在Upload頁簽,上傳知識庫文件。例如source.zip,解壓后通過Directory上傳。
4. 測試公眾號上的智能客服
您可以在微信公眾號中發送與EasyRec相關的問題,來檢驗智能客服回答效果。
常見問題
公眾號開啟服務器配置后,自定義菜單無法使用怎么辦?
當您在公眾號后臺開啟服務器配置后,因為微信公眾號的限制,您之前配置的自定義菜單會因為沖突而關閉。如果您未完成微信認證,則無法同時開啟服務器配置和自定義菜單。如果您是服務號或訂閱號完成了微信認證,這時您可以參考如下步驟通過接口配置自定義菜單:
1. 獲取access_token。您可以參考獲取 access_token 文檔。通過訪問下面的微信接口,獲取access_token。您可以訪問微信公眾號后臺,在左側菜單選擇 。獲取 AppID 和 AppSecret,并替換下面的您的AppID
與您的AppSecret
。
curl "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=您的AppID&secret=您的AppSecret"
2. 調用菜單接口。你可以參考創建菜單文檔,通過執行下面的代碼,替換代碼中ACCESS_TOKEN
,并設定你需要的菜單數據,創建自定義的菜單。
curl "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"button":[
{
"type":"click",
"name":"首頁",
"key":"home"
},
{
"name":"菜單",
"sub_button":[
{
"type":"view",
"name":"文檔",
"url":"http://bestwisewords.com/zh/model-studio/getting-started/what-is-model-studio"
}]
}]
}'
配置完成后,與公眾號對話沒有反應,如何排查問題?
如果您是在 AppFlow 控制臺點擊運行一次進行測試時沒有返回內容,是因為運行一次功能未包含內容輸入,所以會報錯。如果您是在微信與微信公眾號對話時,沒有返回內容,可以按照以下步驟進行排查:
訪問AppFlow控制臺,在表格操作列點擊運行日志,跳轉到執行日志頁面查看日志。
在執行日志頁面,點擊詳情查看錯誤日志詳情。查看運行失敗的步驟,通過失敗信息分析原因。
常見的原因有:
PAI RAG應用Token配置錯誤,Token未正確配置PAI RAG 應用Token或配置時存在前后空格。Token可以參考步驟1查看并和配置比對。
微信公眾號未完成認證,但采用了已完成認證的工作流。需要重新配置工作流,選擇沒有認證的公眾號對應的工作流。
微信公眾號憑證配置錯誤,可在AppFlow控制臺連接憑證頁面,查看微信公眾號配置,與微信公眾號后臺進行比對。
微信公眾號未配置白名單 IP。可在AppFlow控制臺連接憑證頁面,查看微信公眾號配置,獲取白名單 IP。
微信公眾號未完成認證,RAG應用回答超過5秒,導致觸發微信限制,未能成功回復。建議完成微信認證,使用已經完成認證的工作流。如果無法完成認證,可以在PAI-RAG WebUI中修改prompt,并添加”請總是給出簡短的回答,不要講太多“。或選擇更小規格的大模型來提升模型回復速度,但此方法會降低模型回答效果。
微信報錯“當前填寫的URL存在嚴重安全風險,無法設置”如何解決
當您在微信公眾號后臺配置服務器配置時,報錯提示“當前填寫的URL存在嚴重安全風險,無法設置”時,您可以采用最新的服務商授權方式重新創建微信公眾號連接流。如果您不想要使用服務商方式,也可以參考下面的方式綁定自有域名。
如果您的域名已在阿里云備案,您可以提交工單,聯系我們客服人員,提供連接流 ID、自定義域名,幫您配置并使用您企業的自有域名。然后您需要為自定義域名配置CNAME解析到連接流的WebhookUrl。
如果您的域名沒有在阿里云備案,您可以在服務器配置中配置URL為您自有的域名,并在您自有域名對外提供服務的Nginx上配置轉發規則,將請求轉發到連接流的WebhookUrl。