Spring AI / Observability
Spring AI参考可观测性Spring AI 构建于 Spring 生态系统的可观测性特性之上以提供对 AI 相关操作的洞察。它为其核心组件提供指标和追踪能力ChatClient包括 Advisor、ChatModel、EmbeddingModel、ImageModel 和 VectorStore。请参阅 Spring Boot 指标和 Spring Boot 追踪文档以在您的应用中启用指标和追踪支持。低基数键将被添加到指标和追踪中而高基数键将仅被添加到追踪中。Chat Client当调用ChatClient的call()或stream()操作时会记录spring.ai.chat.client观测数据。它们测量执行调用所花费的时间并传播相关的追踪信息。表 1. 低基数键名称描述gen_ai.operation.name始终为framework。gen_ai.system始终为spring_ai。spring.ai.chat.client.stream聊天模型响应是否为流式 -true或falsespring.ai.kindSpring AI 中的框架 API 类型chat_client。表 2. 高基数键名称描述spring.ai.chat.client.advisors已配置的聊天客户端顾问列表。spring.ai.chat.client.conversation.id使用聊天记忆时的会话标识符。spring.ai.chat.client.tool.names传递给聊天客户端的工具名称。提示和补全数据ChatClient 的提示和补全数据通常较大且可能包含敏感信息。因此默认情况下不会导出。Spring AI 支持记录提示和补全数据以帮助调试和故障排查。属性描述默认值spring.ai.chat.client.observations.log-prompt是否记录聊天客户端的提示内容。falsespring.ai.chat.client.observations.log-completion是否记录聊天客户端的补全内容。false如果启用聊天客户端提示和补全数据的日志记录存在暴露敏感或私人信息的风险。请谨慎操作Chat Client Advisors当执行 advisor 时会记录spring.ai.advisor观测数据。它们测量在 advisor 中花费的时间包括在内部 advisor 上花费的时间并传播相关的追踪信息。表 3. 低基数键名称描述gen_ai.operation.name始终为framework。gen_ai.system始终为spring_ai。spring.ai.advisor.nameAdvisor 的名称。spring.ai.kindSpring AI 中的框架 API 类型advisor。表 4. 高基数键名称描述spring.ai.advisor.orderAdvisor 在顾问链中的顺序。Chat ModelOpenAI 和 Anthropic 聊天模型都会发出 HTTP 层观测数据chat-model 层 HTTP 层但流式调用有一个限制。HTTP 层观测数据携带 HTTP 方法、URI、状态码并将traceparent通过线路传播到下游服务AI 网关、代理、兼容 OpenAI 的推理服务器。对于同步调用okhttp.requestsspan 正确地嵌套在gen_ai.client.operationspan 下。对于流式调用HTTP span 会被记录但不会作为 chat-model span 的父级——SDK 的异步流式路径在调用 Spring AI 的 HTTP 客户端之前会跳转到ForkJoinPool.commonPool()从而在该边界丢失调用线程的观测上下文。有关详细信息请参阅 OpenAI 聊天文档和 Anthropic 聊天文档。当调用ChatModel的call或stream方法时会记录gen_ai.client.operation观测数据。它们测量方法完成所花费的时间并传播相关的追踪信息。gen_ai.client.token.usage指标测量单次模型调用所使用的输入和输出令牌数量。表 5. 低基数键名称描述gen_ai.operation.name正在执行的操作的名称。gen_ai.system由客户端仪表化标识的模型提供商。gen_ai.request.model请求所指向的模型名称。gen_ai.response.model生成响应的模型名称。表 6. 高基数键名称描述gen_ai.request.frequency_penalty模型请求的频率惩罚设置。gen_ai.request.max_tokens模型为请求生成的最大令牌数。gen_ai.request.presence_penalty模型请求的存在惩罚设置。gen_ai.request.stop_sequences模型将用于停止生成更多令牌的序列列表。gen_ai.request.stream请求是否以流式模式发出。仅当为true时存在。gen_ai.request.temperature模型请求的温度设置。gen_ai.request.top_k模型请求的 top_k 采样设置。gen_ai.request.top_p模型请求的 top_p 采样设置。gen_ai.response.finish_reasons模型停止生成令牌的原因对应于收到的每个生成结果。gen_ai.response.idAI 响应的唯一标识符。gen_ai.usage.cache_creation.input_tokens写入提供商管理缓存的输入令牌数。gen_ai.usage.cache_read.input_tokens从提供商管理缓存提供的输入令牌数。gen_ai.usage.input_tokens模型输入提示中使用的令牌数。gen_ai.usage.output_tokens模型输出补全中使用的令牌数。gen_ai.usage.total_tokens模型交换中使用的总令牌数。spring.ai.model.request.tool.names请求中提供给模型的工具定义列表。对于测量用户令牌上表列出了观测追踪中存在的值。使用由 ChatModel 提供的指标名称gen_ai.client.token.usage。聊天提示和补全数据聊天提示和补全数据通常较大且可能包含敏感信息。因此默认情况下不会导出。Spring AI 支持记录聊天提示和补全数据对故障排查场景很有用。当追踪可用时日志将包含追踪信息以便更好地关联。属性描述默认值spring.ai.chat.observations.log-prompt记录提示内容。true或falsefalsespring.ai.chat.observations.log-completion记录补全内容。true或falsefalsespring.ai.chat.observations.include-error-logging在观测中包含错误日志记录。true或falsefalse如果启用聊天提示和补全数据的日志记录存在暴露敏感或私人信息的风险。请谨慎操作Tool Calling在聊天模型交互的上下文中执行工具调用时会记录spring.ai.tool观测数据。它们测量工具调用完成所花费的时间并传播相关的追踪信息。表 7. 低基数键名称描述gen_ai.operation.name正在执行的操作的名称。始终为execute_tool。gen_ai.system负责该操作的提供商。始终为spring_ai。spring.ai.kindSpring AI 执行的操作类型。始终为tool_call。spring.ai.tool.definition.name工具的名称。spring.ai.tool.type工具的类型。默认情况下为function。表 8. 高基数键名称描述spring.ai.tool.definition.description工具的描述。spring.ai.tool.definition.schema用于调用工具的参数的架构。spring.ai.tool.call.id由聊天模型标识的工具调用 ID。spring.ai.tool.call.arguments工具调用的输入参数。仅在启用时spring.ai.tool.call.result工具调用执行的结果。仅在启用时工具调用参数和结果数据默认情况下不会导出工具调用的输入参数和结果因为它们可能具有潜在的敏感性。Spring AI 支持将工具调用参数和结果数据导出为 span 属性。属性描述默认值spring.ai.tools.observations.include-content在观测中包含工具调用内容。true或falsefalse如果启用在观测中包含工具调用参数和结果存在暴露敏感或私人信息的风险。请谨慎操作EmbeddingModel可观测性特性目前仅支持来自以下 AI 模型提供商的 EmbeddingModel 实现Mistral AI、Ollama 和 OpenAI。其他 AI 模型提供商将在未来版本中得到支持。在嵌入模型方法调用时会记录gen_ai.client.operation观测数据。它们测量方法完成所花费的时间并传播相关的追踪信息。gen_ai.client.token.usage指标测量单次模型调用所使用的输入和输出令牌数量。表 9. 低基数键名称描述gen_ai.operation.name正在执行的操作的名称。gen_ai.system由客户端仪表化标识的模型提供商。gen_ai.request.model请求所指向的模型名称。gen_ai.response.model生成响应的模型名称。表 10. 高基数键名称描述gen_ai.request.embedding.dimensions生成的输出嵌入所具有的维度数。gen_ai.usage.input_tokens模型输入中使用的令牌数。gen_ai.usage.total_tokens模型交换中使用的总令牌数。对于测量用户令牌上表列出了观测追踪中存在的值。使用由 EmbeddingModel 提供的指标名称gen_ai.client.token.usage。Image Model可观测性特性目前仅支持来自以下 AI 模型提供商的 ImageModel 实现OpenAI。其他 AI 模型提供商将在未来版本中得到支持。在图像模型方法调用时会记录gen_ai.client.operation观测数据。它们测量方法完成所花费的时间并传播相关的追踪信息。表 11. 低基数键名称描述gen_ai.operation.name正在执行的操作的名称。gen_ai.system由客户端仪表化标识的模型提供商。gen_ai.request.model请求所指向的模型名称。表 12. 高基数键名称描述gen_ai.request.image.response_format返回生成图像的格式。gen_ai.request.image.size要生成的图像大小例如 1024x1024。gen_ai.request.image.style要生成的图像风格。图像提示数据图像提示数据通常较大且可能包含敏感信息。因此默认情况下不会导出。Spring AI 支持记录图像提示数据对故障排查场景很有用。当追踪可用时日志将包含追踪信息以便更好地关联。属性描述默认值spring.ai.image.observations.log-prompt记录图像提示内容。true或falsefalse如果启用图像提示数据的日志记录存在暴露敏感或私人信息的风险。请谨慎操作Vector StoresSpring AI 中的所有向量存储实现都通过 Micrometer 进行了仪表化以提供指标和分布式追踪数据。在与向量存储交互时会记录db.vector.client.operation观测数据。它们测量查询、添加和删除操作所花费的时间并传播相关的追踪信息。表 13. 低基数键名称描述db.operation.name正在执行的操作或命令的名称。可选值add、delete或query。db.system由客户端仪表化标识的数据库管理系统DBMS产品。可选值pg_vector、azure、cassandra、chroma、elasticsearch、milvus、neo4j、opensearch、qdrant、redis、typesense、weaviate、pinecone、oracle、mongodb、gemfire、simple。spring.ai.kindSpring AI 中的框架 API 类型vector_store。表 14. 高基数键名称描述db.collection.name数据库中集合表、容器的名称。db.namespace数据库的名称在服务器地址和端口内完全限定。db.search.similarity_metric相似性搜索中使用的度量标准。db.vector.dimension_count向量的维度。db.vector.field_name向量的名称字段例如字段名称。db.vector.query.content正在执行的搜索查询的内容。db.vector.query.filter搜索查询中使用的元数据过滤器。db.vector.query.response.documents相似性搜索查询返回的文档。可选。db.vector.query.similarity_threshold接受所有搜索分数的相似性阈值。阈值为 0.0 表示接受任何相似性或禁用相似性阈值过滤。阈值为 1.0 表示需要精确匹配。db.vector.query.top_k查询返回的最相似的 top-k 个向量。响应数据默认情况下不会导出向量搜索响应数据因为它通常较大且可能包含敏感信息。Spring AI 支持记录向量搜索响应数据对故障排查场景很有用。当追踪可用时日志将包含追踪信息以便更好地关联。属性描述默认值spring.ai.vectorstore.observations.log-query-response记录向量存储查询响应内容。true或falsefalse如果启用向量搜索响应数据的日志记录存在暴露敏感或私人信息的风险。请谨慎操作更多指标参考本节记录了 Spring AI 组件在 Prometheus 中出现的指标。指标命名约定Spring AI 使用 Micrometer。基础指标名称使用点号例如gen_ai.client.operationPrometheus 导出时使用下划线和标准后缀计时器 →base_seconds_count、base_seconds_sum、base_seconds_max以及当支持时base_active_count计数器 →base_total单调递增下表显示了基础指标名称如何扩展为 Prometheus 时间序列。基础指标名称导出的时间序列gen_ai.client.operationgen_ai_client_operation_seconds_countgen_ai_client_operation_seconds_sumgen_ai_client_operation_seconds_maxgen_ai_client_operation_active_countdb.vector.client.operationdb_vector_client_operation_seconds_countdb_vector_client_operation_seconds_sumdb_vector_client_operation_seconds_maxdb_vector_client_operation_active_count参考OpenTelemetry — 生成式 AI 语义约定概述Micrometer — 指标命名Chat Client 指标指标名称类型单位描述gen_ai_chat_client_operation_seconds_sumTimer秒ChatClient 操作call/stream花费的总时间gen_ai_chat_client_operation_seconds_countCounter计数已完成的 ChatClient 操作数gen_ai_chat_client_operation_seconds_maxGauge秒ChatClient 操作的最大观测持续时间gen_ai_chat_client_operation_active_countGauge计数当前正在进行的 ChatClient 操作数活跃与已完成active_count显示正在进行的调用_seconds系列仅反映已完成的调用。Chat Model 指标模型提供商执行指标名称类型单位描述gen_ai_client_operation_seconds_sumTimer秒执行聊天模型操作的总时间gen_ai_client_operation_seconds_countCounter计数已完成的聊天模型操作数gen_ai_client_operation_seconds_maxGauge秒聊天模型操作的最大观测持续时间gen_ai_client_operation_active_countGauge计数当前正在进行的聊天模型操作数Token 用量指标名称类型单位描述gen_ai_client_token_usage_totalCounter令牌消耗的总令牌数按令牌类型标记标签标签含义gen_ai_token_typeinput发送给模型的提示令牌gen_ai_token_typeoutput模型返回的补全令牌gen_ai_token_typetotal输入 输出Vector Store 指标指标名称类型单位描述db_vector_client_operation_seconds_sumTimer秒向量存储操作add/delete/query花费的总时间db_vector_client_operation_seconds_countCounter计数已完成的向量存储操作数db_vector_client_operation_seconds_maxGauge秒向量存储操作的最大观测持续时间db_vector_client_operation_active_countGauge计数当前正在进行的向量存储操作数标签标签含义db_operation_name操作类型add、delete、querydb_system向量数据库/提供商redis、chroma、pgvector 等spring_ai_kindvector_store理解活跃与已完成活跃*_active_count—— 正在进行中的操作的瞬时仪表化并发/负载。已完成*_seconds_sum|count|max—— 已结束操作的统计信息_seconds_sum / _seconds_count→ 平均延迟_seconds_max→ 自上次抓取以来的最高水位线受注册表行为影响

相关新闻

2026 佛山建材商家|短视频矩阵搭建,记录产品工艺科普素材

2026 佛山建材商家|短视频矩阵搭建,记录产品工艺科普素材

📢 摘要在如今的数字化时代,短视频已经成为企业营销的重要工具。对于佛山建材商家来说,通过搭建短视频矩阵,不仅可以提升品牌曝光度,还能有效传达产品的工艺和科普知识。本文将为你详细介绍如何利用佛山独角兽科技的AI…

2026/6/27 20:42:01阅读更多 →
RADIUS 经 F5 VIP 后真实地址回包问题分析笔记

RADIUS 经 F5 VIP 后真实地址回包问题分析笔记

RADIUS 经 F5 VIP 后真实地址回包问题分析笔记 1. 结论摘要 本次抓包中,锐捷 S5310 交换机 100.0.0.204 向 F5 虚拟地址 100.0.177.12 发起 RADIUS/802.1X 认证请求,但响应报文由后端真实地址 100.0.14.1 直接回给交换机。 测试时交换机配置为&#xff1…

2026/6/27 20:42:01阅读更多 →
openEuler/git-basics:10分钟学会Git配置与仓库管理的终极指南

openEuler/git-basics:10分钟学会Git配置与仓库管理的终极指南

openEuler/git-basics:10分钟学会Git配置与仓库管理的终极指南 【免费下载链接】git-basics This reposiroty will provide the content of Git basic usage Course. 项目地址: https://gitcode.com/openeuler/git-basics 前往项目官网免费下载:h…

2026/6/27 20:42:01阅读更多 →
15年外贸推广,我见过最可惜的一种网站

15年外贸推广,我见过最可惜的一种网站

做外贸推广这行十五年,我见过太多企业花了大价钱建站,最后网站却像个摆设。但最让我觉得可惜的,不是那种一眼就能看出问题的网站,而是那种——产品不错、供应链稳定、业务员也努力,偏偏网站本身拖了后腿,让…

2026/6/27 22:02:12阅读更多 →
VS Code 中 Python 相对路径失效?从 `FileNotFoundError` 深入理解当前工作目录问题

VS Code 中 Python 相对路径失效?从 `FileNotFoundError` 深入理解当前工作目录问题

目录VS Code 中 Python 相对路径失效?从 FileNotFoundError 深入理解当前工作目录问题1. 问题背景2. 问题的本质:相对路径不是相对于 py 文件,而是相对于“当前工作目录”3. 为什么 PyCharm 里经常没问题,而 VS Code 容易出问题&a…

2026/6/27 22:02:12阅读更多 →
Windows PDF处理新范式:Poppler预编译包如何彻底改变开发体验

Windows PDF处理新范式:Poppler预编译包如何彻底改变开发体验

Windows PDF处理新范式:Poppler预编译包如何彻底改变开发体验 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 你是否曾为在Windows平台…

2026/6/27 22:02:12阅读更多 →
WELearnHelper完整教程:如何高效使用智能助手轻松完成网课任务

WELearnHelper完整教程:如何高效使用智能助手轻松完成网课任务

WELearnHelper完整教程:如何高效使用智能助手轻松完成网课任务 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gi…

2026/6/27 22:02:12阅读更多 →
好用数据中台的供应商

好用数据中台的供应商

在当今数字化时代,数据中台成为了各类组织提升管理效率、优化决策的重要工具。对于教育行业来说,选择一个好用且可靠的数据中台供应商尤为关键。安徽晓窗教育科技有限公司(以下简称“晓窗”)凭借其深厚的行业经验和卓越的技术实力…

2026/6/27 22:02:12阅读更多 →
蓝牙SIM卡托技术原理解析:如何用BLE实现全球网络配置动态下发

蓝牙SIM卡托技术原理解析:如何用BLE实现全球网络配置动态下发

引言 作为一名从业十年的工程师,我对通信类硬件一直保持关注。最近深度使用了一款主动式智能通信卡托,并花了些时间研究其底层技术原理。本文从技术角度解析蓝牙SIM卡托的架构设计、通信协议和安全机制。 一、硬件架构 主动式智能通信卡托的硬件可以拆解…

2026/6/27 21:57:12阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/27 11:20:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/27 5:46:02阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/27 11:20:39阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →