本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
EAS(Elastic Algorithm Service)是PAI針對在線推理場景提供的模型在線服務平臺。您可以將調試好的應用流一鍵部署至EAS,作為生產環境使用。本文為您詳細介紹應用流的部署過程。
前提條件
已創建應用流,并完成調試。詳情請參見應用流開發。
部署服務
按照以下操作步驟,將應用流部署為EAS服務:
登錄PAI控制臺,在右側選擇目標工作空間后,單擊進入LangStudio。
在應用流頁簽,單擊已調試完成的應用流名稱,進入應用流詳情頁面。
單擊應用流詳情頁面右上方的部署按鈕。
說明僅當應用流的運行時已啟動時,才能單擊部署按鈕,將其部署為在線服務。
在部署配置面板中,配置以下關鍵參數,其他參數配置說明,請參見服務部署:控制臺。
參數
描述
資源部署信息
資源組種類
實例數
建議配置多個服務實例,以避免單點部署帶來的風險。
資源配置選擇
建議您選擇至少4核8 GB的機器規格部署應用流服務。如果您開發的應用流的代碼對資源要求比較高,可以按需選擇更高規格的配置。
專有網絡配置
VPC
由于EAS在線服務部署在EAS資源組上,為確保服務部署后客戶端能正常訪問EAS在線服務,您可以選擇專有網絡連通方案,將客戶端與部署服務的資源組間的網絡連通。EAS服務內部默認與公網不通,如果您有EAS服務訪問公網的需求,需經由VPC開通公網訪問。詳情請參見配置網絡連通。
說明當在應用流中使用向量數據庫連接時,請確保所配置的專有網絡與相應的實例保持一致,或保證網絡連通。
交換機
安全組名稱
對話歷史
開啟對話歷史
僅適用于對話型應用流的配置,提供多輪對話歷史消息的存儲與傳遞功能。
對話歷史存儲
如果您部署的服務為生產使用,建議使用外部存儲,如阿里云數據庫RDS。詳情請參見對話歷史
警告采用本地存儲方案,不支持多實例部署,也不支持單實例擴容到多實例,否則會導致對話歷史功能不正常。
參數配置完成后,單擊部署,并按照控制臺操作指引部署應用流。
說明部署應用流會產生EAS相關的資源費用,計費詳情請參見模型在線服務(EAS)計費說明。
應用流服務部署成功后,默認會添加以下6個標簽。后續,您可以在EAS服務列表中,通過默認標簽查詢應用流對應的模型服務;也可以在LangStudio列表頁面,通過FlowId或FlowName查看該服務對應的應用流詳情。
CreatedBy: LangStudio
DeployMode: SERVING
FlowId : flow-***
FlowName: ***
FlowServiceId: snap-***
SnapshotId: snap-***。
調用服務
在線調試
服務部署成功后,您可以通過在線調試功能,驗證模型服務是否運行正常,具體操作步驟如下:
進入模型在線服務頁面,然后在推理服務頁簽,單擊LangStudio應用流服務操作列下的在線調試。
在在線調試請求參數區域,配置以下參數,調用模型服務。
在Body頁簽,配置請求參數。請求參數中字典的Key需要和應用流中的Inputs定義一致。
參數配置完成后,單擊發送請求。
API調用
查詢服務Endpoint和Token。
進入模型在線服務頁面,單擊目標服務名稱,進入服務詳情頁面。
在基本信息區域,單擊查看調用信息,然后在公網地址調用頁簽,獲取服務Endpoint和Token。
向服務發送API請求。
支持使用以下三種方式:
cURL
部署的EAS應用流服務支持使用cURL命令進行遠程調用。示例命令如下:
curl -X POST \ -H "Authorization: Bearer <your_token>" \ -H "Content-Type: application/json" \ -d '{"question":"who are u?"}' \ "<your_endpoint>"
其中關鍵配置說明如下:
配置項
描述
-H "Authorization: Bearer <your_token>"
設置授權頭。其中<your_token>需要替換為應用流服務Token。
-d '{"question":"who are u?"}'
指定了POST請求的主體數據。是一個JSON對象,包含一個鍵值對,即問題字符串。其中Key需要和應用流中的Inputs定義一致。
"<your_endpoint>"
表示API的完整路徑。其中<your_endpoint>需要替換為應用流服務的Endpoint。
Python腳本
演示如何使用requests庫向應用流服務發送一個POST請求,首先確保已安裝該庫。如果未安裝,您可以通過運行
pip install requests
命令來進行安裝。參考以下代碼示例來實現請求,參數為"question": "who are you?"
。import requests import json url = "http://<your-endpoint-here>" token = "<your-token-here>" data = {"question": "who are u?"} # 設置請求頭,包含您的token headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } response = requests.post(url, json=data, headers=headers) if response.status_code == 200: print("請求成功,返回結果:") print(response.text) else: print(f"請求失敗,狀態碼: {response.status_code}")
其中:
url:請將<your-endpoint-here>配置為應用流服務的Endpoint。
token:配置為應用流服務的Token。
data:表示請求的主體數據。是一個JSON對象,包含一個鍵值對,即問題字符串。其中Key需要和應用流中的Inputs定義一致。
SSE
通過Server-Sent Events(SSE,服務器發送事件)技術,服務器可向瀏覽器實時推送數據,適用于實時對話等場景,例如LangStudio大模型應用流中的對話場景。使用SSE調用API時,客戶端(如瀏覽器)通常會建立一個HTTP長連接請求,服務器端則通過該連接持續地向客戶端推送數據,直到連接關閉或出現錯誤。
應用流部署的服務支持SSE,您可以使用Python實現通過SSE調用帶有Endpoint、Token以及參數的接口。示例代碼如下:
說明僅當LLM節點作為應用流的輸出節點時,才支持流式調用。
import requests import json url = "http://<your-endpoint-here>" token = "<your-token-here>" data = {"question": "who are u?"} # 設置請求頭,包含您的token headers = { "Authorization": f"Bearer {token}", "Accept": "text/event-stream", "Content-Type": "application/json" } if __name__ == '__main__': with requests.post(url, json=data, headers=headers, stream=True) as r: for line in r.iter_lines(chunk_size=1024): print(line)
其中:
url:請將<your-endpoint-here>配置為應用流服務的Endpoint。
token:配置為應用流服務的Token。
data:表示請求的主體數據。是一個JSON對象,包含一個鍵值對,即問題字符串。其中Key需要和應用流中的Inputs定義一致。
查看Trace
在調用服務后,系統將在鏈路追蹤頁面自動生成一條Trace記錄。您可以通過Trace來評估應用流效果。
在模型在線服務(EAS)頁面,單擊LangStudio應用流服務名稱,進入服務詳情頁面。
切換到鏈路追蹤頁簽,查看服務下所有的Trace。
單擊目標Trace操作列下的查看鏈路,進入Trace詳情頁面。
該頁面提供的Trace數據支持您查看應用流中各個節點的輸入和輸出信息(例如向量數據庫召回的結果),以及LLM節點的輸入和輸出信息。
對話歷史
對于“對話型”應用流,LangStudio提供了多輪對話的歷史消息存儲功能。您可以選擇使用本地存儲或外部RDS存儲來保存對話歷史。
存儲類型
本地存儲:服務將利用本地磁盤,在部署應用流的EAS實例上自動創建一個名為
chat_history.db
的SQLite數據庫來保存對話歷史記錄,其默認存儲路徑為/langstudio/flow/
。需要注意的是,在多實例部署環境中不支持此本地存儲方案。請定期檢查本地磁盤的使用狀況,同時您也可以通過下文提供的API接口進行對話歷史數據的查詢與刪除操作。當EAS實例被移除時,相關的對話歷史數據也將一并被清除。云端存儲:目前支持使用MySQL存儲,您需要在部署服務時,為對話歷史存儲配置一個MySQL Connection,具體的配置方式請查看:連接管理-阿里云RDS-MySQL。服務將在您配置的MySQL數據庫中自動創建以服務名稱為后綴的表,例如
langstudio_chat_session_<服務名稱>
和langstudio_chat_history_<服務名稱>
,用于分別存儲對話Session及對話歷史消息。
Session、User支持
每一次對應用流服務的對話請求都是無狀態的,當您希望多次請求被當作是同一個對話時,需要通過手動配置請求頭的方式完成。服務請求方式詳情請參見調用服務
請求頭名稱 | 數據類型 | 說明 | 備注 |
| String | 會話ID,每一次對服務的請求,系統會自動向本次會話分配唯一標識符,用以區分不同會話,并通過Response Header中 | 支持使用自定義會話ID,為了保證唯一性,會話ID規范為長度為32-255個字符,支持大小寫字母、數字、下劃線(_)、中劃線(-)、英文冒號(:)。 |
| String | 用戶ID,標識對話所屬用戶。系統不會自動分配,支持用戶自定義。 |
對話歷史API
服務也提供了對話歷史數據管理API,您可以通過API方便地查看和刪除這些數據。只需通過GET請求訪問 {Endpoint}/openapi.json
即可獲取完整的API Schema。該Schema是基于Swagger標準構建的,為了更直觀地理解和探索這些API,推薦您使用Swagger UI對其進行可視化,使操作更加簡單明了。
相關文檔
部署及運行服務會產生EAS相關的資源費用,計費詳情請參見模型在線服務(EAS)計費說明。