可观测性
Spring AI 基于 Spring 生态系统中的可观测性特性,为 AI 相关操作提供洞察。Spring AI 为其核心组件提供了指标和追踪能力:ChatClient
(包括 Advisor
)、ChatModel
、EmbeddingModel
、ImageModel
和 VectorStore
。
低基数键将添加到指标和追踪中,而高基数键将仅添加到追踪中。 |
聊天客户端
当调用 ChatClient 的 call()
或 stream()
操作时,会记录 spring.ai.chat.client
可观测项。它们测量执行调用所花费的时间并传播相关的追踪信息。
名称 | 描述 |
---|---|
|
总是 |
|
总是 |
|
聊天模型响应是否为流 - |
|
Spring AI 中框架 API 的类型: |
名称 | 描述 |
---|---|
|
通过聊天客户端发送的 Prompt 内容。可选。 |
|
顾问参数 Map。对话 ID 现在包含在 |
|
配置的聊天客户端顾问列表。 |
|
使用聊天记忆时的对话标识符。 |
|
聊天客户端系统参数。可选。已由 |
|
聊天客户端系统文本。可选。已由 |
|
已启用的工具函数名称。已由 |
|
配置的聊天客户端函数回调列表。已由 |
|
传递给聊天客户端的工具名称。 |
|
聊天客户端用户参数。可选。已由 |
|
聊天客户端用户文本。可选。已由 |
Prompt 内容
ChatClient
的 Prompt 内容通常很大,并可能包含敏感信息。因此,默认情况下不导出它。
Spring AI 支持将 Prompt 内容导出为跨所有追踪后端 Span 属性/事件。
属性 | 描述 | 默认值 |
---|---|---|
|
是否在可观测项中包含聊天客户端 Prompt 内容。 |
|
如果启用在可观测项中包含聊天客户端 Prompt 内容,则存在暴露敏感或私人信息的风险。请小心谨慎! |
输入数据 (已弃用)
属性 spring.ai.chat.client.observations.include-input 已弃用,由 spring.ai.chat.client.observations.include-prompt 替代。请参阅 Prompt 内容。 |
ChatClient
的输入数据通常很大,并可能包含敏感信息。因此,默认情况下不导出它。
Spring AI 支持将输入数据导出为跨所有追踪后端 Span 属性/事件。
属性 | 描述 | 默认值 |
---|---|---|
|
是否在可观测项中包含输入内容。 |
|
如果启用在可观测项中包含输入内容,则存在暴露敏感或私人信息的风险。请小心谨慎! |
聊天客户端顾问
当顾问执行时,会记录 spring.ai.advisor
可观测项。它们测量在顾问中花费的时间(包括内部顾问花费的时间)并传播相关的追踪信息。
名称 | 描述 |
---|---|
|
总是 |
|
总是 |
|
顾问在请求处理中应用其逻辑的位置,可以是 |
|
Spring AI 中框架 API 的类型: |
名称 | 描述 |
---|---|
|
顾问名称。 |
|
顾问链中的顾问顺序。 |
聊天模型
当前仅支持来自以下 AI 模型提供商的 ChatModel 实现的可观测性特性:Anthropic, Azure OpenAI, Mistral AI, Ollama, OpenAI, Vertex AI, MiniMax, Moonshot, QianFan, Zhiu AI。额外的 AI 模型提供商将在未来版本中支持。 |
调用 ChatModel 的 call
或 stream
方法时,会记录 gen_ai.client.operation
可观测项。它们测量方法完成所花费的时间并传播相关的追踪信息。
gen_ai.client.token.usage 指标测量单次模型调用使用的输入和输出 Token 数量。 |
名称 | 描述 |
---|---|
|
正在执行的操作名称。 |
|
客户端工具识别的模型提供商。 |
|
请求所用的模型名称。 |
|
生成响应的模型名称。 |
名称 | 描述 |
---|---|
|
模型请求的频率惩罚设置。 |
|
模型为请求生成的最大 Token 数量。 |
|
模型请求的存在惩罚设置。 |
|
模型将用于停止生成进一步 Token 的序列列表。 |
|
模型请求的温度设置。 |
|
模型请求的 top_k 采样设置。 |
|
模型请求的 top_p 采样设置。 |
|
模型停止生成 Token 的原因,对应于收到的每个生成结果。 |
|
AI 响应的唯一标识符。 |
|
模型输入 (Prompt) 中使用的 Token 数量。 |
|
模型输出 (Completion) 中使用的 Token 数量。 |
|
模型交互中使用的总 Token 数量。 |
|
发送给模型的完整 Prompt。可选。 |
|
从模型接收到的完整响应。可选。 |
为了测量用户 Token,上表列出了可观测追踪中存在的值。使用由 ChatModel 提供的指标名称 gen_ai.client.token.usage 。 |
名称 | 描述 |
---|---|
|
包含聊天 Prompt 内容的事件。可选。 |
|
包含聊天 Completion 内容的事件。可选。 |
聊天 Prompt 和 Completion 数据
聊天 Prompt 和 Completion 数据通常很大,并可能包含敏感信息。因此,默认情况下不导出它。
如果使用 OpenTelemetry 追踪后端,Spring AI 支持将聊天 Prompt 和 Completion 数据导出为 Span 事件;如果使用 OpenZipkin 追踪后端,数据则导出为 Span 属性。
此外,Spring AI 支持记录聊天 Prompt 和 Completion 数据,这对于故障排除场景非常有用。
属性 | 描述 | 默认值 |
---|---|---|
|
在可观测项中包含 Prompt 内容。 |
|
|
在可观测项中包含 Completion 内容。 |
|
|
在可观测项中包含错误日志记录。 |
|
如果启用在可观测项中包含聊天 Prompt 和 Completion 数据,则存在暴露敏感或私人信息的风险。请小心谨慎! |
嵌入模型
当前仅支持来自以下 AI 模型提供商的 EmbeddingModel 实现的可观测性特性:Azure OpenAI, Mistral AI, Ollama, 和 OpenAI。额外的 AI 模型提供商将在未来版本中支持。 |
在调用嵌入模型方法时,会记录 gen_ai.client.operation
可观测项。它们测量方法完成所花费的时间并传播相关的追踪信息。
gen_ai.client.token.usage 指标测量单次模型调用使用的输入和输出 Token 数量。 |
名称 | 描述 |
---|---|
|
正在执行的操作名称。 |
|
客户端工具识别的模型提供商。 |
|
请求所用的模型名称。 |
|
生成响应的模型名称。 |
名称 | 描述 |
---|---|
|
生成的输出嵌入的维度数量。 |
|
模型输入中使用的 Token 数量。 |
|
模型交互中使用的总 Token 数量。 |
为了测量用户 Token,上表列出了可观测追踪中存在的值。使用由 EmbeddingModel 提供的指标名称 gen_ai.client.token.usage 。 |
图像模型
当前仅支持来自以下 AI 模型提供商的 ImageModel 实现的可观测性特性:OpenAI。额外的 AI 模型提供商将在未来版本中支持。 |
在调用图像模型方法时,会记录 gen_ai.client.operation
可观测项。它们测量方法完成所花费的时间并传播相关的追踪信息。
gen_ai.client.token.usage 指标测量单次模型调用使用的输入和输出 Token 数量。 |
名称 | 描述 |
---|---|
|
正在执行的操作名称。 |
|
客户端工具识别的模型提供商。 |
|
请求所用的模型名称。 |
名称 | 描述 |
---|---|
|
返回生成的图像的格式。 |
|
要生成的图像大小。 |
|
要生成的图像风格。 |
|
AI 响应的唯一标识符。 |
|
生成响应的模型名称。 |
|
模型输入 (Prompt) 中使用的 Token 数量。 |
|
模型输出 (生成) 中使用的 Token 数量。 |
|
模型交互中使用的总 Token 数量。 |
|
发送给模型的完整 Prompt。可选。 |
为了测量用户 Token,上表列出了可观测追踪中存在的值。使用由 ImageModel 提供的指标名称 gen_ai.client.token.usage 。 |
名称 | 描述 |
---|---|
|
包含图像 Prompt 内容的事件。可选。 |
向量存储
Spring AI 中的所有向量存储实现都已进行工具化,通过 Micrometer 提供指标和分布式追踪数据。
与向量存储交互时,会记录 db.vector.client.operation
可观测项。它们测量在 query
、add
和 remove
操作上花费的时间并传播相关的追踪信息。
名称 | 描述 |
---|---|
|
正在执行的操作或命令名称。可以是 |
|
客户端工具识别的数据库管理系统 (DBMS) 产品。可以是 |
|
Spring AI 中框架 API 的类型: |
名称 | 描述 |
---|---|
|
数据库中的集合(表、容器)名称。 |
|
数据库名称,在服务器地址和端口内完全限定。 |
|
如果存在,则为记录标识符。 |
|
相似性搜索中使用的度量标准。 |
|
向量维度。 |
|
向量的名称字段(例如,字段名称)。 |
|
正在执行的搜索查询内容。 |
|
搜索查询中使用的元数据过滤器。 |
|
相似性搜索查询返回的文档。可选。 |
|
接受所有搜索分数的相似性阈值。阈值为 0.0 表示接受任何相似性或禁用相似性阈值过滤。阈值为 1.0 表示需要完全匹配。 |
|
查询返回的 Top-k 最相似向量。 |
名称 | 描述 |
---|---|
|
包含向量搜索响应数据的事件。可选。 |