应用流部署

EAS(Elastic Algorithm Service)是PAI针对在线推理场景提供的模型在线服务平台。您可以将调试好的应用流一键部署至EAS,作为生产环境使用。本文为您详细介绍应用流的部署过程。

前提条件

已创建应用流,并完成调试。详情请参见应用流开发

部署服务

按照以下操作步骤,将应用流部署为EAS服务:

  1. 登录PAI控制台,在右侧选择目标工作空间后,单击进入LangStudio

  2. 应用流页签,单击已调试完成的应用流名称,进入应用流详情页面。

  3. 单击应用流详情页面右上方的部署按钮。

    说明

    仅当应用流的运行时已启动时,才能单击部署按钮,将其部署为在线服务。

    image

  4. 部署配置面板中,配置以下关键参数,其他参数配置说明,请参见服务部署:控制台

    参数

    描述

    资源部署信息

    资源组种类

    选择公共资源组或您创建的专属资源组

    实例数

    建议配置多个服务实例,以避免单点部署带来的风险。

    资源配置选择

    建议您选择至少48 GB的机器规格部署应用流服务。如果您开发的应用流的代码对资源要求比较高,可以按需选择更高规格的配置。

    专有网络配置

    VPC

    由于EAS在线服务部署在EAS资源组上,为确保服务部署后客户端能正常访问EAS在线服务,您可以选择专有网络连通方案,将客户端与部署服务的资源组间的网络连通,详情请参见配置网络连通。EAS服务内部默认与公网不通,如果您有EAS服务访问公网的需求,请参照公网连接及白名单配置进行配置。

    说明

    当在应用流中使用向量数据库连接时,请确保所配置的专有网络与相应的实例保持一致,或保证网络连通。

    交换机

    安全组名称

  5. 参数配置完成后,单击部署,并按照控制台操作指引部署应用流。

    说明

    部署应用流会产生EAS相关的资源费用,计费详情请参见模型在线服务(EAS)计费说明

    应用流服务部署成功后,默认会添加以下6个标签。后续,您可以在EAS服务列表中,通过默认标签查询应用流对应的模型服务;也可以在LangStudio列表页面,通过FlowIdFlowName查看该服务对应的应用流详情。

    • CreatedBy: LangStudio

    • DeployMode: SERVING

    • FlowId : flow-***

    • FlowName: ***

    • FlowServiceId: snap-***

    • SnapshotId: snap-***。

调用服务

在线调试

服务部署成功后,您可以通过在线调试功能,验证模型服务是否运行正常,具体操作步骤如下:

  1. 进入模型在线服务页面,然后在推理服务页签,单击LangStudio应用流服务操作列下的在线调试

  2. 在线调试请求参数区域,配置以下参数,调用模型服务。image

    Body页签,配置请求参数。请求参数中字典的Key需要和应用流中的Inputs定义一致。

  3. 参数配置完成后,单击发送请求

API调用

  1. 查询服务EndpointToken。

    1. 进入模型在线服务页面,单击目标服务名称,进入服务详情页面。

    2. 基本信息区域,单击查看调用信息,然后在公网地址调用页签,获取服务EndpointToken。

  2. 向服务发送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来评估应用流效果。

  1. 模型在线服务(EAS)页面,单击LangStudio应用流服务名称,进入服务详情页面。

  2. 切换到链路追踪页签,查看服务下所有的Trace。image

  3. 单击目标Trace操作列下的查看链路,进入Trace详情页面。

    image

    该页面提供的Trace数据支持您查看应用流中各个节点的输入和输出信息(例如向量数据库召回的结果),以及LLM节点的输入和输出信息。

相关文档

部署及运行服务会产生EAS相关的资源费用,计费详情请参见模型在线服务(EAS)计费说明