可观测性
Spring AI 基于 Spring 生态系统中的可观测性特性,为 AI 相关操作提供洞察。
Spring AI 为其核心组件提供了指标和追踪功能:ChatClient
(包括 Advisor
)、
ChatModel
、EmbeddingModel
、ImageModel
和 VectorStore
。
低基数键将添加到指标和追踪中,而高基数键将只添加到追踪中。 |
1.0.0-RC1 破坏性变更 以下配置属性已重命名,以更好地反映其用途:
-
spring.ai.chat.client.observations.include-prompt
→spring.ai.chat.client.observations.log-prompt
-
spring.ai.chat.observations.include-prompt
→spring.ai.chat.observations.log-prompt
-
spring.ai.chat.observations.include-completion
→spring.ai.chat.observations.log-completion
-
spring.ai.image.observations.include-prompt
→spring.ai.image.observations.log-prompt
-
spring.ai.vectorstore.observations.include-query-response
→spring.ai.vectorstore.observations.log-query-response
聊天客户端
当调用 ChatClient 的 call()
或 stream()
操作时,会记录 spring.ai.chat.client
观测数据。
它们测量执行调用所花费的时间并传播相关的追踪信息。
名称 | 描述 |
---|---|
|
始终为 |
|
始终为 |
|
聊天模型响应是否为流 - |
|
Spring AI 中框架 API 的类型: |
名称 | 描述 |
---|---|
|
通过聊天客户端发送的提示内容。可选。 |
|
顾问参数映射。对话 ID 现在包含在 |
|
配置的聊天客户端顾问列表。 |
|
使用聊天记忆时的对话标识符。 |
|
聊天客户端系统参数。可选。已被 |
|
聊天客户端系统文本。可选。已被 |
|
启用的工具函数名称。已被 |
|
配置的聊天客户端函数回调列表。已被 |
|
传递给聊天客户端的工具名称。 |
|
聊天客户端用户参数。可选。已被 |
|
聊天客户端用户文本。可选。已被 |
提示内容
ChatClient
的提示内容通常很大,可能包含敏感信息。
因此,默认情况下不导出。
Spring AI 支持记录提示内容,以帮助调试和故障排除。
属性 | 描述 | 默认值 |
---|---|---|
|
是否记录聊天客户端提示内容。 |
|
如果您启用聊天客户端提示内容的日志记录,则存在暴露敏感或私人信息的风险。请务必小心!
输入数据(已弃用)
spring.ai.chat.client.observations.include-input
属性已弃用,由 spring.ai.chat.client.observations.log-prompt
取代。请参阅 _prompt_content。
ChatClient
的输入数据通常很大,可能包含敏感信息。
因此,默认情况下不导出。
Spring AI 支持记录输入数据,以帮助调试和故障排除。
属性 | 描述 | 默认值 |
---|---|---|
|
是否在观测中包含输入内容。 |
|
如果您启用在观测中包含输入内容,则存在暴露敏感或私人信息的风险。请务必小心!
聊天客户端顾问
当执行顾问时,会记录 spring.ai.advisor
观测数据。
它们测量在顾问中花费的时间(包括在内部顾问中花费的时间)并传播相关的追踪信息。
名称 | 描述 |
---|---|
|
始终为 |
|
始终为 |
|
顾问在请求处理中应用其逻辑的位置, |
|
Spring AI 中框架 API 的类型: |
名称 | 描述 |
---|---|
|
顾问的名称。 |
|
顾问链中顾问的顺序。 |
聊天模型
可观测性功能目前仅支持来自以下 AI 模型提供商的 |
当调用 ChatModel 的 call
或 stream
方法时,会记录 gen_ai.client.operation
观测数据。
它们测量方法完成所花费的时间并传播相关的追踪信息。
gen_ai.client.token.usage
指标测量单个模型调用使用的输入和输出令牌数量。
名称 | 描述 |
---|---|
|
正在执行的操作的名称。 |
|
由客户端仪表识别的模型提供商。 |
|
发出请求的模型名称。 |
|
生成响应的模型名称。 |
名称 | 描述 |
---|---|
|
模型请求的频率惩罚设置。 |
|
模型为请求生成的最大令牌数。 |
|
模型请求的存在惩罚设置。 |
|
模型将用于停止生成更多令牌的序列列表。 |
|
模型请求的温度设置。 |
|
模型请求的 top_k 采样设置。 |
|
模型请求的 top_p 采样设置。 |
|
模型停止生成令牌的原因,对应于收到的每个生成。 |
|
AI 响应的唯一标识符。 |
|
模型输入(提示)中使用的令牌数量。 |
|
模型输出(完成)中使用的令牌数量。 |
|
模型交换中使用的总令牌数量。 |
|
发送给模型的完整提示。可选。 |
|
从模型接收到的完整响应。可选。 |
|
请求中提供给模型的工具定义列表。 |
为了测量用户令牌,上表列出了观测追踪中存在的值。
使用 |
聊天提示和完成数据
聊天提示和完成数据通常很大,可能包含敏感信息。 因此,默认情况下不导出。
Spring AI 支持记录聊天提示和完成数据,这对于故障排除场景非常有用。当追踪可用时,日志将包含追踪信息以实现更好的关联。
属性 | 描述 | 默认值 |
---|---|---|
|
记录提示内容。 |
|
|
记录完成内容。 |
|
|
在观测中包含错误日志。 |
|
如果您启用聊天提示和完成数据的日志记录,则存在暴露敏感或私人信息的风险。请务必小心!
工具调用
spring.ai.tool
观测数据在聊天模型交互的上下文中执行工具调用时记录。它们测量工具调用完成所花费的时间并传播相关的追踪信息。
名称 | 描述 |
---|---|
|
正在执行的操作的名称。始终为 |
|
负责操作的提供商。始终为 |
|
Spring AI 执行的操作类型。始终为 |
|
工具的名称。 |
名称 |
描述 |
|
工具的描述。 |
|
用于调用工具的参数模式。 |
|
工具调用的输入参数。(仅当启用时) |
|
用于调用工具的参数模式。(仅当启用时) |
嵌入模型
可观测性功能目前仅支持来自以下 AI 模型提供商的 |
当调用嵌入模型的 gen_ai.client.operation
方法时,会记录观测数据。
它们测量方法完成所花费的时间并传播相关的追踪信息。
gen_ai.client.token.usage
指标测量单个模型调用使用的输入和输出令牌数量。
名称 | 描述 |
---|---|
|
正在执行的操作的名称。 |
|
由客户端仪表识别的模型提供商。 |
|
发出请求的模型名称。 |
|
生成响应的模型名称。 |
名称 | 描述 |
---|---|
|
生成的输出嵌入的维度数量。 |
|
模型输入中使用的令牌数量。 |
|
模型交换中使用的总令牌数量。 |
为了测量用户令牌,上表列出了观测追踪中存在的值。
使用 |
图像模型
可观测性功能目前仅支持来自以下 AI 模型提供商的 |
当调用图像模型的 gen_ai.client.operation
方法时,会记录观测数据。
它们测量方法完成所花费的时间并传播相关的追踪信息。
gen_ai.client.token.usage
指标测量单个模型调用使用的输入和输出令牌数量。
名称 | 描述 |
---|---|
|
正在执行的操作的名称。 |
|
由客户端仪表识别的模型提供商。 |
|
发出请求的模型名称。 |
名称 | 描述 |
---|---|
|
生成图像的返回格式。 |
|
要生成的图像的大小。 |
|
要生成的图像的样式。 |
|
AI 响应的唯一标识符。 |
|
生成响应的模型名称。 |
|
模型输入(提示)中使用的令牌数量。 |
|
模型输出(生成)中使用的令牌数量。 |
|
模型交换中使用的总令牌数量。 |
|
发送给模型的完整提示。可选。 |
为了测量用户令牌,上表列出了观测追踪中存在的值。
使用 |
向量存储
Spring AI 中的所有向量存储实现都已进行仪表化,以通过 Micrometer 提供指标和分布式追踪数据。
当与向量存储交互时,会记录 db.vector.client.operation
观测数据。
它们测量 query
、add
和 remove
操作所花费的时间并传播相关的追踪信息。
名称 | 描述 |
---|---|
|
正在执行的操作或命令的名称。 |
|
由客户端仪表识别的数据库管理系统 (DBMS) 产品。 |
|
Spring AI 中框架 API 的类型: |
名称 | 描述 |
---|---|
|
数据库中的集合(表、容器)名称。 |
|
数据库的名称,在服务器地址和端口中完全限定。 |
|
记录标识符(如果存在)。 |
|
相似性搜索中使用的指标。 |
|
向量的维度。 |
|
向量的名称字段(例如字段名称)。 |
|
正在执行的搜索查询的内容。 |
|
搜索查询中使用的元数据过滤器。 |
|
相似性搜索查询返回的文档。可选。 |
|
接受所有搜索分数的相似性阈值。阈值 0.0 表示接受任何相似性或禁用相似性阈值过滤。阈值 1.0 表示需要精确匹配。 |
|
查询返回的 top-k 最相似向量。 |
更多指标参考
本节记录了 Spring AI 组件在 Prometheus 中显示的指标。
指标命名约定
Spring AI 使用 Micrometer。基本指标名称使用点(例如,gen_ai.client.operation
),Prometheus 会将其导出为下划线和标准后缀:
-
计时器 →
<base>_seconds_count
、<base>_seconds_sum
、<base>_seconds_max
,以及(如果支持)<base>_active_count
-
计数器 →
<base>_total
(单调)
以下显示了基本指标名称如何扩展为 Prometheus 时间序列。
|
参考
-
OpenTelemetry — 生成式 AI 的语义约定(概述)
-
Micrometer — 命名仪表
聊天客户端指标
指标名称 | 类型 | 单位 | 描述 |
---|---|---|---|
|
计时器 |
秒 |
ChatClient 操作(调用/流)的总耗时 |
|
计数器 |
次数 |
完成的 ChatClient 操作次数 |
|
测量仪 |
秒 |
ChatClient 操作的最大观测持续时间 |
|
测量仪 |
次数 |
当前正在进行的 ChatClient 操作次数 |
活跃与完成:active_count
显示正在进行的调用;_seconds
系列仅反映已完成的调用。
聊天模型指标(模型提供商执行)
指标名称 | 类型 | 单位 | 描述 |
---|---|---|---|
|
计时器 |
秒 |
执行聊天模型操作的总时间 |
|
计数器 |
次数 |
完成的聊天模型操作次数 |
|
测量仪 |
秒 |
聊天模型操作的最大观测持续时间 |
|
测量仪 |
次数 |
当前正在进行的聊天模型操作次数 |