介绍
提供AI可观测基础能力,包括 metric, log, trace,其后需接ai-proxy插件,如果不接ai-proxy插件的话,则需要用户进行相应配置才可生效。
运行属性
插件执行阶段:默认阶段
插件执行优先级:200
配置说明
插件默认请求符合openai协议格式,并提供了以下基础可观测值,用户无需特殊配置:
- metric:提供了输入token、输出token、首个token的rt(流式请求)、请求总rt等指标,支持在网关、路由、服务、模型四个维度上进行观测
- log:提供了 input_token, output_token, model, llm_service_duration, llm_first_token_duration 等字段
用户还可以通过配置的方式对可观测的值进行扩展:
名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
---|
attributes | []Attribute | 非必填 | - | 用户希望记录在log/span中的信息 |
Attribute 配置说明:
名称 | 数据类型 | 填写要求 | 默认值 | 描述 |
---|
key | string | 必填 | - | attrribute 名称 |
value_source | string | 必填 | - | attrribute 取值来源,可选值为 fixed_value , request_header , request_body , response_header , response_body , response_streaming_body |
value | string | 必填 | - | attrribute 取值 key value/path |
rule | string | 非必填 | - | 从流式响应中提取 attrribute 的规则,可选值为 first , replace , append |
apply_to_log | bool | 非必填 | false | 是否将提取的信息记录在日志中 |
apply_to_span | bool | 非必填 | false | 是否将提取的信息记录在链路追踪span中 |
value_source
的各种取值含义如下:
fixed_value
:固定值
requeset_header
: attrribute 值通过 http 请求头获取,value 配置为 header key
request_body
:attrribute 值通过请求 body 获取,value 配置格式为 gjson 的 jsonpath
response_header
:attrribute 值通过 http 响应头获取,value 配置为header key
response_body
:attrribute 值通过响应 body 获取,value 配置格式为 gjson 的 jsonpath
response_streaming_body
:attrribute 值通过流式响应 body 获取,value 配置格式为 gjson 的 jsonpath
当 value_source
为 response_streaming_body
时,应当配置 rule
,用于指定如何从流式body中获取指定值,取值含义如下:
first
:多个chunk中取第一个有效chunk的值
replace
:多个chunk中取最后一个有效chunk的值
append
:拼接多个有效chunk中的值,可用于获取回答内容
配置示例
如果希望在网关访问日志中记录ai-statistic相关的统计值,需要修改log_format,在原log_format基础上添加一个新字段,示例如下:
空配置
监控
日志
链路追踪
配置为空时,不会在span中添加额外的attribute
从非openai协议提取token使用信息
在ai-proxy中设置协议为original时,以百炼为例,可作如下配置指定如何提取model, input_token, output_token
监控
日志
此配置下日志效果如下:
链路追踪
链路追踪的 span 中可以看到 model, input_token, output_token 三个额外的 attribute
配合认证鉴权记录consumer
举例如下:
记录问题与回答
进阶
配合阿里云SLS数据加工,可以将ai相关的字段进行提取加工,例如原始日志为:
使用如下数据加工脚本,可以提取出question和answer:
提取后,SLS中会添加question和answer两个字段,示例如下: