ai-agent框架spring ai/alibaba原理源码分析(八)观测II spring ai观测 ChatClient
简介saa是java的ai agent框架本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理不仅可以指导agent的开发更可以改造框架增加新特性系列内容系列(一)架构完成系列(三)调用I工具完成II MCP1 MCP MCP能力工具资源Promptssampling。。。springboot自动配置完成2分布式 MCP3 MCP securityIII skills完成系列(四) RAG完成I知识库文档读取分块嵌入向量storeII检索增强生成模块化混合检索融合重排系列(二) I模型 model模型 chat模型chat clientadvisor组件系列(五) graphI图结构节点和边StateGraph外部介入完成推理框架 graph映射: ReActrelectionCoTPlan-And-ExecuteII图编译 CompiledGraph扁平化图结构邻接表结构完成III图执行检查点回溯/回放中断和恢复容错系列(六) agent及组件 ReactAgentAgentLlmNodeAgentToolNode钩子和拦截器记忆结构化输出完成系列(七) MASI MAS模式 flow模式编排器-子智能体智能体团队简单了解 agentic模式消息总线共享状态数据交接II分布式MAS远程通讯负载均衡注册发现容错系列(八)观测I观测组件(micrometer-observation), langfuseII spring ai观测观测组件ChatClientChatModelIII spring ai alibaba观测图观测系列(九)评估 langfuse本文分析spring ai观测以chatclient观测为例langfuse观测平台based spring ai v1.1.1.2关键词低基数Low-Cardinality标签值组合有限且数量可控的指标数据如HTTP方法(GET/POST/DELETE)、状态码(200/404)等。高基数High-Cardinality标签值可能无限多的数据比如请求ID (requestId)、用户ID (userId)等缩写spring ai缩写saspring ai alibaba本文缩写saa参考资料概览 | Spring AI Alibaba spring ai alibaba官网文档https://docs.spring.io/spring-ai/reference/index.html spring ai官方文档SAA概览上图是saa原理源码分析场景视图每个包对应着saa/sa组件或特性是本文分析的目录model大模型的封装模型包括Chat嵌入audioimage等类型其中chat模型包括advisor组件提示词记忆等agent/graphagent和图紧密相关可以认为agent是一种既定的”图”形开发人员可以使用graph底层api直接构建graph使用agent获得既定的图形简化agent的开发外部调用(calling)工具MCPskillsRAG检索增强生成MASMAS模式 flow模式 编排器-子智能体智能体团队数据交接studio简易的agent管理工具嵌入到agent带有agent面板列表agent提供chat界面用于调试agent是开发agent的便利工具admin管理台 agent的发布列表管理执行提示词工程评估和数据集观测观测微服务监控常用Prometheus Zipkin/SkyWalking微服务与AI Agent的可观测性相同的核心3要素, 日志指标和链路跟踪但ai agent的监控有其特性langfuse 在监控维度、数据结构和工程闭环上对agent有着深度的定制与扩展微服务监控优化的是性能与可用性系统跑得更快、更稳。langfuse优化效率与智能不仅要看Agent“慢不慢”更关心它“好不好”质量和“贵不贵”成本最终目的是让这个AI系统变得越来越“聪明” 关注agent的思考过程决策逻辑和token消耗观测点-ChatClient上文分析的观测组件opentelemetry组件组合一起的技术架构打通观测链本文结合源码分析使用观测组件实现chatclient观测上图是chatclient的观测类图基于上面micrometer-observation组件和观测技术架构设计启动和自动配置ChatClientAutoConfiguration spirng ai的自动配置这个类在系列-模型分析过负责构建ChatClient本文分析构建ChatClient的观测组件部分创建TracingAwareLoggingObservationHandler依赖ObservationAutoConfiguration构建的Tracer,该类有2个实例分别包装ChatClientCompletionObservationHandler和 ChatClientPromptContentObservationHandler用于记录大模型返回文本和提示词日志大模型返回文本和提示词日志内容很多需手动设置激活spring.ai.chat.client.observations.log-prompt和spring.ai.chat.client.observations.log-completionTracingAwareLoggingObservationHandler作用是在onStop时传递tracing信息给包装的处理器使用用于构成日志内容观测上下文和处理ChatClientObservationContext继承Observation.Context持有ChatClientRequestChatClientResponse Advisors 3个业务对象这些都是观测处理器用来计算/获取指标TracingAwareLoggingObservationHandler上面介绍过还有2个默认的handlerDefaultTracingObservationHandler和TracingAwareMeterObservationHandler技术架构介绍过分别构建span和计算span时长观测点key和约定观测点可以与观测值对应ChatClientObservationDocumentationchatclient的ObservationDocumentation实现定义了观测点的名称Name以及低基数LowCardinality和高基数HighCardinality的键名Key Names确保了监控指标命名的标准化DefaultChatClientObservationConvention ObservationConvention 实现ObservationDocumentation定义观测keyObservationConvention负责找到key的值形成KeyValues。源码分析观测点key和约定上图是ChatClientObservationDocumentation实现为enum是一种单例实现方式上图红框展示低基/高基的key上面两个典型的观测keyValues上方chatclient advisors列表名称通过上下文的advisors属性获取下方是spring ai类型值是枚举获取keyValues的两种来源。观测handler下面以ChatClientCompletionObservationHandler为例子分析handler的处理原理上图ChatClientCompletionObservationHandler在onStop生成completion日志接收ChatClientObservationContext参数使用其属性ChatResponse计算大模型返回文本ChatResponse怎么来DefaultCallResponseSpec doGetObservableChatClientResponse调用大模型的方法Observation的observe调用大模型的代码往ChatClientObservationContext set执行结果responseChatClientCompletionObservationHandler是直接继承ObservationHandler可归类为日志型handlermeter handler继承TracingObservationHandler拥有有MeterRegistry属性构建CounterGauge等指标注册到MeterRegistrytracing handler继承TracingObservationHandler拥有Tracer属性通常onStart创建spanonStop结束span。spring ai的ChatModelMeterObservationHandler继承ObservationHandler其实是meter handler带MeterRegistry属性负责生成Token Usage指标。handler结构本节分析一下观测handler结构了解handler结构对自定制观测很重要。agent模块chatclientchatmodeladvisortool等共用ObservationAutoConfiguration的ObservationRegistryPostProcessor和ObservationRegistry观测handlers注册到ObservationRegistry的ObservationConfig也就是agent全局一套观测handlers。ObservationRegistryPostProcessor用PostProcessor为ObservationRegistry注入handler其内部的ObservationHandlerGrouping将meter和tracing类型的观测handlers分组其他直接继承ObservationHandler不参与分组各自独立。meter组和tracing组各使用FirstMatchingCompositeObservationHandler(实现CompositeObservationHandler接口)*包装起来作为一个handler使用内部getFirstApplicableHandler方法选择使用那个handler选择的依据是第一个匹配Observation.Context结构如下图如上图所示meter handler1和meter handler4可以匹配ContextAObservation事件通知将选出meter handler1处理上图只有一个ObservationHandlerGrouping的情况ObservationHandlerGrouping有多个情况更复杂自定义观测需要耐心规划。*还有一个CompositeObservationHandler实现AllMatchingCompositeObservationHandler选择所有匹配的Observation.Context的handlers观测示例spring ai langfuse本节演示spring ai 的langfuse观测用debug”观测”观测组件示例使用saa的observability-langfuse-example下图展示handler的结构tracing分组meter分组其他3个继承ObservationHandler是日志相关tracing分组两个Propagating*用于远程服务间调用观测的衔接chatclient调用上图chatclient的观测的tracing图节点简要描述Web 入口层 (http get /observability/chat)用户发起的原始 HTTP GET 请求Spring MVCFlux过滤器链产生的异步的观测点Spring AI chatclient (spring_ai chat_client)上图是chatclient观测LLM 交互层 (call - chat qwen-plus)call 节点代表通用的模型调用动作 chat qwen-plus 显示具体的模型是通义千问 PlusToken 指标 Token 消耗数据 14 - 792 (Σ 806)这意味着本次对话输入了 14 个 Token模型输出了 792 个 Token总计消耗 806 个 Token这对于成本核算和性能分析至关重要网络传输层 (http post - POST)chatclient调用-带工具上图是chatclient带工具调用的观测tracing图使用魔搭的bing 搜索mcp工具上图是搜索工具观测观测选项设置include-content: true搜索的内容返回示例改为同步看起来层次比较明显原代码是用stream方式层次不明显总结langfuse 结合 Spring AI 的观测机制解决 AI Agent 开发中的主要痛点隐秘、不可控的模型思考过程、工具执行细节、Token开销转化为了可视化、结构化、可调试的业务指标。对于AI Agent 工程化落地的开发者来说这是必不可少的“眼睛”。NEXTspring ai alibaba graph 观测langfuse实例

相关新闻

自媒体运营数据分析:数据可视化探索方法与实证研究

自媒体运营数据分析:数据可视化探索方法与实证研究

一、实验目的基于实验7-1、实验7-2 输出的目标表,使用助睿BI完成多维度可视化分析,搭建综合仪表盘,并撰写数据驱动的运营优化报告。通过本实验,学生应掌握:使用助睿BI的聚合功能(计数、求和、平均、分组&am…

2026/7/6 13:21:25阅读更多 →
性价比高的区域教育一体化管理平台哪个更经济

性价比高的区域教育一体化管理平台哪个更经济

在当今信息化时代,教育行业的数字化转型已成为大势所趋。随着学校规模的不断扩大和管理需求的日益复杂,如何选择一个性价比高、功能全面且易于使用的区域教育一体化管理平台成为了许多学校和教育局的重要课题。本文将从多个维度对比分析市场上的几个主流…

2026/7/6 13:16:25阅读更多 →
LeagueAkari自动启动功能:一键启动英雄联盟客户端的终极指南

LeagueAkari自动启动功能:一键启动英雄联盟客户端的终极指南

LeagueAkari自动启动功能:一键启动英雄联盟客户端的终极指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 想要快速进入游戏&…

2026/7/6 13:16:25阅读更多 →
零基础看懂 VLA 动作生成:Action Head 四大实现路线、真机落地全流程、完整 PyTorch 工程代码

零基础看懂 VLA 动作生成:Action Head 四大实现路线、真机落地全流程、完整 PyTorch 工程代码

目录 一、前言:解开VLA落地的核心难题——从“看懂”到“能动” 二、VLA完整闭环架构:动作生成的底层运行逻辑 2.1 VLA四大核心输入维度 2.2 VLA标准执行链路 2.3 机器人动作空间的三种标准化定义 三、四大Action Head核心实现路线(原理+优缺点+适配场景) 3.1 路线一…

2026/7/6 14:26:31阅读更多 →
5分钟解锁WPS-Zotero插件:让文献管理变得像聊天一样简单

5分钟解锁WPS-Zotero插件:让文献管理变得像聊天一样简单

5分钟解锁WPS-Zotero插件:让文献管理变得像聊天一样简单 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 还在为学术写作中的文献引用烦恼吗?WPS-Zote…

2026/7/6 14:26:31阅读更多 →
全面掌握PL-2303旧版芯片驱动安装:Windows 10兼容性终极解决方案

全面掌握PL-2303旧版芯片驱动安装:Windows 10兼容性终极解决方案

全面掌握PL-2303旧版芯片驱动安装:Windows 10兼容性终极解决方案 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 在Windows 10系统上部署PL-2303旧版芯片驱…

2026/7/6 14:26:31阅读更多 →
YOLOv11【第九章:可视化、论文复现与写作篇·第9节】科研绘图实战:使用 Visio/PPT 绘制 CVPR 风格的 YOLOv11 改进结构图!

YOLOv11【第九章:可视化、论文复现与写作篇·第9节】科研绘图实战:使用 Visio/PPT 绘制 CVPR 风格的 YOLOv11 改进结构图!

🏆本文收录于专栏 《YOLOv11实战:从入门到深度优化》。 本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。 整体坚持 持续更新 + 深度解…

2026/7/6 14:26:31阅读更多 →
RTX Spark超级芯片:重新定义AI PC,开启本地大模型与智能体时代

RTX Spark超级芯片:重新定义AI PC,开启本地大模型与智能体时代

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 最近几年,AI PC的概念炒得火热,但很多用户拿到手后感觉“换汤不换药”——无非是加了个AI助手快捷键&#xff…

2026/7/6 14:26:31阅读更多 →
HoRain云--Claude Code 入门教程

HoRain云--Claude Code 入门教程

Claude Code 是 Anthropic 官方 CLI 级智能体工具。 Claude Code 定位不是聊天,而是 在本地代码仓库中执行高权限、可上下文感知的工程任务。 Claude Code 是 Agent,不是 Chat。 详细教程参见:Claude Code 教程 | 菜鸟教程 核心能力&#xf…

2026/7/6 14:21:31阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →