EAS(Elastic Algorithm Service)是PAI针对在线推理场景提供的模型在线服务平台。您可以将调试好的应用流一键部署至EAS,作为生产环境使用。本文为您详细介绍应用流的部署过程。
前提条件
已创建应用流,并完成调试。详情请参见应用流开发。
部署服务
按照以下操作步骤,将应用流部署为EAS服务:
登录PAI控制台,在右侧选择目标工作空间后,单击进入LangStudio。
在应用流页签,单击已调试完成的应用流名称,进入应用流详情页面。
单击应用流详情页面右上方的部署按钮。
说明仅当应用流的运行时已启动时,才能单击部署按钮,将其部署为在线服务。
在部署配置面板中,配置以下关键参数,其他参数配置说明,请参见服务部署:控制台。
参数
描述
资源部署信息
资源组种类
实例数
建议配置多个服务实例,以避免单点部署带来的风险。
资源配置选择
建议您选择至少4核8 GB的机器规格部署应用流服务。如果您开发的应用流的代码对资源要求比较高,可以按需选择更高规格的配置。
专有网络配置
VPC
由于EAS在线服务部署在EAS资源组上,为确保服务部署后客户端能正常访问EAS在线服务,您可以选择专有网络连通方案,将客户端与部署服务的资源组间的网络连通,详情请参见配置网络连通。EAS服务内部默认与公网不通,如果您有EAS服务访问公网的需求,请参照公网连接及白名单配置进行配置。
说明当在应用流中使用向量数据库连接时,请确保所配置的专有网络与相应的实例保持一致,或保证网络连通。
交换机
安全组名称
参数配置完成后,单击部署,并按照控制台操作指引部署应用流。
说明部署应用流会产生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节点的输入和输出信息。
相关文档
部署及运行服务会产生EAS相关的资源费用,计费详情请参见模型在线服务(EAS)计费说明。