本文为您介绍如何在部署服务时增加链路追踪功能。
使用限制
本方案仅支持基于LangChain、Llama-index或Dashscope开发的LLM应用类型。
仅支持在华东1(杭州)、华东2(上海)、华北2(北京)、华北6(乌兰察布)和华南1(深圳)地域使用链路追踪功能。
前提条件
准备工作
示例代码
您可以选择使用预先构建好的自定义镜像,或根据服务需求自行创建新的镜像,具体操作,请参见服务部署:自定义镜像。
示例一个简单的预测服务,该代码是基于Dashscope API开发的一个简单预测服务。它使用了Flask框架来构建一个Web服务,并通过Dashscope的Generation.call
方法调用模型来进行文本生成。在首次使用Dashscope前,请先完成开通流程并获取API-KEY,详情请参见首次调用通义千问API。随后,在部署服务时,将DASHSCOPE_API_KEY设置为环境变量,以便正确访问API服务。其代码文件为app.py:
import os
import json
import flask
import dashscope
app = flask.Flask(__name__)
def run_query(query):
"""run a query."""
response = dashscope.Generation.call(
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen-plus",
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': query}
],
result_format='message'
)
return response
@app.route('/api/trace_demo', methods=['POST'])
def query():
"""
post data example:
{
"query": "capital of china"
}
"""
data = flask.request.get_data("utf-8")
query = json.loads(data).get('query', '')
response = run_query(query)
return response.output.choices[0].message.content
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
安装Python探针
使用链路追踪功能,您需要安装Python探针,ARMS即可开始监控Python应用。支持以下两种安装探针的方法,如需了解更多配置详情,请参见手动安装Python探针。
方法一:准备自定义镜像时,在Dockerfile中添加安装探针和使用ARMS Python探针启动应用的相关命令,如下所示。
RUN pip3 install aliyun-bootstrap && aliyun-bootstrap -a install CMD ["aliyun-instrument","python","app.py"]
方法二:在部署服务时,配置安装探针和使用ARMS Python探针启动应用的相关命令。其中关键配置说明如下,更多配置详情,请参见部署EAS服务。
参数
描述
运行命令
aliyun-bootstrap -a install && aliyun-instrument python app.py
三方库配置
在文本框中输入
aliyun-bootstrap
。
本方案以在部署服务过程中安装Python探针为例,进行说明。
部署EAS服务
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
单击部署服务,然后在自定义模型部署区域,单击自定义部署。
在自定义部署页面,配置以下关键参数,其他参数配置详情,请参见服务部署:控制台。
参数
描述
基本信息
标签
单击
,添加以下标签。该标签用于指示前端是否需要展示链路追踪页签。
标签键:EnableTrace
标签值:true
环境信息
部署方式
选择镜像部署。
镜像配置
在镜像地址页签,输入已准备的自定义镜像。
运行命令
配置为
aliyun-bootstrap -a install && aliyun-instrument python app.py
。该命令用于安装探针和使用ARMS Python探针启动应用,其中app.py是您自定义镜像里配置的用于提供预测服务的主文件。三方库配置
配置为
aliyun-bootstrap
,用于从PyPI仓库下载探针安装器。环境变量
单击添加按钮,配置环境变量。链路追踪功能所需的环境变量如下:
ARMS_APP_NAME:ARMS接入应用名称,需要与EAS服务名称保持一致。
ARMS_REGION_ID:ARMS应用所在地域ID。例如华东1(杭州)为cn-hangzhou。更多地域ID配置说明,请参见公共云。
ARMS_LICENSE_KEY:通过调用DescribeTraceLicenseKey接口获取。
ENABLE_FASTAPI:输入false。
ENABLE_FLASK:输入false。
ENABLE_DJANGO:输入false。
ENABLE_REQUESTS:输入false。
ENABLE_AIOHTTPCLIENT:输入false。
ENABLE_HTTPX:输入false。
根据您的镜像需求,您也可以自行添加额外的环境变量。例如,本方案示例镜像需要添加DASHSCOPE_API_KEY环境变量。
专有网络
专有网络(VPC)
使用链路追踪功能必须配置专有网络。请选择该地域下的VPC、交换机和安全组。
说明EAS服务内部默认与公网不通,如果您有EAS服务访问公网的需求,请参照配置公网连接进行配置。
交换机
安全组名称
参数配置完成后,单击部署。
在模型在线服务(EAS)页面,查看服务部署状态。
在ARMS控制台应用列表页面,查看接入的应用。
查看链路追踪
调用EAS服务后,系统将在链路追踪页签自动生成一条Trace记录,您可以通过Trace来评估模型效果。
调用EAS服务
以在线调试为例,您也可以通过API调用EAS服务,详情请参见如何使用API进行模型推理。
在模型在线服务(EAS)页面,单击目标服务操作列下的
>在线调试。
在Body页签中,根据您定义的预测服务,向指定地址发送请求数据。
本方案使用上文app.py文件中定义的服务接口,示例结果如下:
查看链路信息
切换到链路追踪页签,查看Trace链路信息。
单击目标Trace操作列下的查看链路,进入Trace详情页面。
该页面提供的Trace数据支持您查看服务的输入和输出信息,以及相关日志信息。