在应用流开发完成后,您可以将其部署为EAS服务。EAS提供自动扩缩容和全面的运维监控等功能,能够确保应用灵活应对业务需求的变化和增长,提升系统的稳定性与性能,从而更好地支持生产环境的需求。
前提条件
已创建应用流,并完成调试。详情请参见应用流开发。
部署应用流
进入LangStudio,选择工作空间后,在应用流页签下单击已调试完的应用流,然后在页面右上角单击部署(仅当运行时启动时才可进行部署)。关键参数说明:
参数 | 描述 |
参数 | 描述 |
资源部署 | |
资源类型 | |
实例数 | 配置服务实例数。在生产阶段,建议配置多个服务实例,以降低单点故障的风险。 |
部署资源 | 如果仅作为业务流调度使用,您可以根据业务流复杂程度选择合适的CPU资源。相对于GPU资源,CPU资源通常更加经济实惠。部署后会产生EAS相关的资源费用,计费详情请参见模型在线服务(EAS)计费说明。 |
专有网络:由于部署应用流实际上是将其部署为EAS服务,为确保服务部署后客户端能正常访问EAS在线服务,您可以选择专有网络连通方案,将客户端与EAS服务间的网络连通。需要注意的是,EAS服务内部默认与公网不通,如果您有EAS服务访问公网的需求,需配置具备公网访问能力的VPC,详情请参见配置网络连通。 如果应用流中包含向量数据库连接(如Milvus),请确保配置的专有网络与向量数据库实例所在的专有网络一致,或确保两者网络互通。 | |
对话历史 | |
开启对话历史 | 仅适用于“对话型”应用流的配置,开启后支持存储和传递多轮对话的历史消息,需要配合服务请求头参数使用。 |
对话历史存储 | 本地存储不支持多实例部署,如果您部署的服务为生产使用,建议使用外部存储,如阿里云数据库RDS。详情请参见附录:对话历史。 采用本地存储方案时,不支持多实例部署,也不支持单实例扩容到多实例,否则会导致对话历史功能出现异常。 |
链路追踪:开启后,可在服务部署完成后查看Trace详情,以评估应用流的效果。 |
更多参数配置说明,请参见服务部署:控制台。
调用服务
在线调试
部署成功后,跳转到PAI-EAS,在在线调试页签下配置并发送请求。请求Body中的Key与应用流中“开始节点”中的参数“对话输入”字段一致,本文使用默认字段question
。
API调用
在概览页签下获取调用服务的Endpoint和Token。
发送API请求。支持以下三种API调用方式:
cURL命令Python脚本SSE部署的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>"
HTTP头部信息。其中
<your_token>
需要替换为步骤1中获取的Token。-d '{"question": "who are u?"}'
请求的主体数据。格式为JSON对象,包含一个Key-Value对,即问题字符串。其中Key需要与应用流中“开始节点”中的参数“对话输入”字段一致,此处为默认字段
question
。"<your_endpoint>"
请求的目标URL。其中
<your_endpoint>
需要替换为步骤1中获取的Endpoint。以下示例展示了如何使用
requests
库向应用流服务发送一个POST请求。请确保您已安装该库;如果尚未安装,可以通过运行pip install requests
命令来进行安装。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
请求的目标URL。其中
<your-endpoint-here>
需要替换为步骤1中获取的Endpoint。token
HTTP头部信息。其中
<your-token-here>
需要替换为步骤1中获取的Token。data
请求的主体数据。格式为JSON对象,包含一个Key-Value对,即问题字符串。其中Key需要与应用流中“开始节点”中的参数“对话输入”字段一致,此处为默认字段
question
。通过Server-Sent Events(SSE,服务器发送事件)技术,服务器能够实时将数据推送至浏览器,适用于实时对话等场景,例如LangStudio的大模型应用流中的对话场景。在使用SSE调用API时,客户端(如浏览器)通常会建立一个HTTP长连接请求,服务器则通过该连接持续向客户端推送数据,直到连接关闭或出现错误。
仅当LLM节点作为应用流的输出节点时(结束节点的直接输入必须是LLM节点),才支持流式调用。
应用流部署的服务支持SSE,您可以使用Python通过SSE调用带有Endpoint、Token及参数的接口。示例代码如下:
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
请求的目标URL。其中
<your-endpoint-here>
需要替换为步骤1中获取的Endpoint。token
HTTP头部信息。其中
<your-token-here>
需要替换为步骤1中获取的Token。data
请求的主体数据。格式为JSON对象,包含一个Key-Value对,即问题字符串。其中Key需要与应用流中“开始节点”中的参数“对话输入”字段一致,此处为默认字段
question
。
查看Trace
在调用服务后,系统会自动生成一条Trace记录。您可以在链路追踪页签下单击指定链路操作列的查看链路,通过查看Trace详情进行应用流效果的评估。
该Trace数据支持您查看应用流中各个节点的输入和输出信息,如向量数据库召回的结果,或LLM节点的输入和输出信息等。
附录:对话历史
对于“对话型”应用流,LangStudio提供了多轮对话的历史消息存储功能。您可以选择使用本地存储或外部存储来保存对话历史。
存储类型
本地存储:服务将利用本地磁盘,在部署应用流的EAS实例上自动创建一个名为chat_history.db的SQLite数据库来保存对话历史记录,默认存储路径为
/langstudio/flow/
。需要注意,本地存储方案不支持多实例部署。请定期检查本地磁盘的使用情况,您也可以通过下文提供的API接口进行对话历史数据的查询和删除操作。当EAS实例被移除时,相关的对话历史数据也将一并被清除。外部存储:目前支持使用RDS MySQL进行存储。您需要在部署服务时,为对话历史存储配置一个RDS MySQL连接,具体配置方法请参见服务连接配置-数据库。服务将在您配置的RDS MySQL数据库中自动创建以服务名称为后缀的表,例如
langstudio_chat_session_<服务名称>
和langstudio_chat_history_<服务名称>
,分别用于存储对话Session及对话历史消息。
Session/User支持
每一次对应用流服务的对话请求都是无状态的,当您希望多次请求被当作是同一个对话时,需要通过手动配置请求头的方式完成。服务请求方式详情请参见API调用。
请求头名称 | 数据类型 | 说明 | 备注 |
请求头名称 | 数据类型 | 说明 | 备注 |
Chat-Session-Id | String | 会话ID,每一次对服务的请求,系统会自动向本次会话分配唯一标识符,用以区分不同会话,并通过Response Header中 | 支持使用自定义会话ID,为了保证唯一性,会话ID规范为长度为32-255个字符,支持大小写字母、数字、下划线(_)、中划线(-)、英文冒号(:)。 |
Chat-User-Id | String | 用户ID,标识对话所属用户。系统不会自动分配,支持用户自定义。 | - |
对话历史API
应用流服务还提供了对话历史数据管理API,您可以方便地通过API来查看和删除这些数据。只需通过GET请求访问 {Endpoint}/openapi.json
,即可获取完整的API Schema。该Schema基于Swagger标准构建,为了更直观地理解和探索这些API,建议您使用Swagger UI进行可视化操作,使操作更加简单明了。
- 本页导读 (1)
- 前提条件
- 部署应用流
- 调用服务
- 在线调试
- API调用
- 查看Trace
- 附录:对话历史
- 存储类型
- Session/User支持
- 对话历史API