尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

13. Spring AI 的观测性 - Rainbow

13. Spring AI 的观测性 - Rainbow
📅 发布时间:2026/6/20 5:17:33

13. Spring AI 的观测性

@

目录
  • 13. Spring AI 的观测性
    • 观测性
      • 为什么Spring AI应用急需可观测性?
        • AI服务成本失控的痛点
        • Spring AI可观测性的价值
      • 实战演练:构建可观测的Spring AI翻译应用
        • 第一步:Spring AI项目初始化
        • 第二步:Spring AI客户端配置
        • 第三步:构建Spring AI翻译服务
        • 第四步:Spring AI翻译API测试
      • Spring AI监控指标深度解析
        • 核心指标1:Spring AI操作性能监控
        • 核心指标2:Spring AI Token使用量精准追踪
  • 最后:

观测性

为什么Spring AI应用急需可观测性?

AI服务成本失控的痛点

在企业级AI应用中,使用DeepSeek、OpenAI、Google Gemini或Azure OpenAI等服务时,成本控制是一个严峻挑战:

  • Token消耗不透明:无法精确了解每次AI调用的成本
  • 费用增长失控:大规模应用中,AI服务费用可能呈指数级增长
  • 性能瓶颈难定位:AI调用链路复杂,问题排查困难
  • 资源使用不合理:缺乏数据支撑的优化决策

Spring AI可观测性的价值

Spring AI的可观测性功能为这些痛点提供了完美解决方案:

  • ✅精准Token监控:实时追踪输入/输出Token消耗,精确到每次调用
  • ✅智能成本控制:基于使用统计制定成本优化策略
  • ✅深度性能分析:识别AI调用瓶颈,优化响应时间
  • ✅完整链路追踪:端到端记录请求在Spring AI应用中的完整流转

实战演练:构建可观测的Spring AI翻译应用

第一步:Spring AI项目初始化

在start.spring.io[1]创建Spring Boot项目,集成Spring AI核心依赖:

Maven依赖配置(Spring AI BOM管理):

<!--百炼-->
<dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency> 
<!-- Spring Boot Actuator 监控 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--web-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

第二步:Spring AI客户端配置

主应用类配置:

@SpringBootApplication
publicclassSpringAiTranslationApplication {publicstaticvoidmain(String[] args) {SpringApplication.run(SpringAiTranslationApplication.class, args);}@Beanpublic ChatClient chatClient(ChatClient.Builder builder) {return builder.build();}
}

Spring AI配置文件:

# Spring AI 可观测性配置
management:
endpoints:web:exposure:include:"*"
endpoint:health:show-details:always
metrics:export:prometheus:enabled:truespring:
threads:virtual:enabled:true
ai:deepseek:api-key:${DEEPSEEK_API_KEY}chat:options:model:deepseek-chattemperature: 0.8

环境变量设置:

export DEEPSEEK_API_KEY=your-deepseek-api-key

第三步:构建Spring AI翻译服务

智能翻译控制器:

@RestController
@RequestMapping("/api/v1")
@RequiredArgsConstructor
@Slf4j
public class SpringAiTranslationController {private final ChatModel chatModel;@PostMapping("/translate")public TranslationResponse translate(@RequestBody TranslationRequest request) {log.info("Spring AI翻译请求: {} -> {}", request.getSourceLanguage(), request.getTargetLanguage());String prompt= String.format("作为专业翻译助手,请将以下%s文本翻译成%s,保持原文的语气和风格:\n%s",request.getSourceLanguage(),request.getTargetLanguage(),request.getText());String translatedText= chatModel.call(prompt);return TranslationResponse.builder().originalText(request.getText()).translatedText(translatedText).sourceLanguage(request.getSourceLanguage()).targetLanguage(request.getTargetLanguage()).timestamp(System.currentTimeMillis()).build();}
}@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
class TranslationRequest {private String text;private String sourceLanguage;private String targetLanguage;
}@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
class TranslationResponse {private String originalText;private String translatedText;private String sourceLanguage;private String targetLanguage;private Long timestamp;
}

第四步:Spring AI翻译API测试

curl -X POST http://localhost:8080/api/v1/translate  
-H "Content-Type: application/json"  
-d '{"text": "Spring AI makes AI integration incredibly simple and powerful","sourceLanguage": "英语","targetLanguage": "中文"
}'# 响应示例
{"originalText": "Spring AI makes AI integration incredibly simple and powerful","translatedText": "Spring AI让AI集成变得极其简单而强大","sourceLanguage": "英语","targetLanguage": "中文","timestamp": 1704067200000
}

Spring AI监控指标深度解析

核心指标1:Spring AI操作性能监控

指标端点:/actuator/metrics/spring.ai.chat.client

{"name":"spring.ai.chat.client.operation","description":"Spring AI ChatClient操作性能指标","baseUnit":"seconds","measurements":[{"statistic":"COUNT","value":15},{"statistic":"TOTAL_TIME","value":8.456780293},{"statistic":"MAX","value":2.123904083}],"availableTags":[{"tag":"gen_ai.operation.name","values":["framework"]},{"tag":"spring.ai.kind","values":["chat_client"]}]
}

业务价值:

  • 监控Spring AI翻译服务调用频次
  • 分析Spring AI响应时间分布
  • 识别Spring AI性能瓶颈

核心指标2:Spring AI Token使用量精准追踪

指标端点 /actuator/metrics/gen_ai.client.token.usage

{"name":"gen_ai.client.token.usage","description":"Spring AI Token使用量统计","measurements":[{"statistic":"COUNT","value":1250}],"availableTags":[{"tag":"gen_ai.response.model","values":["deepseek-chat"]},{"tag":"gen_ai.request.model","values":["deepseek-chat"]},{"tag":"gen_ai.token.type","values":["output","input","total"]}]
}

成本控制价值:

  • 精确计算Spring AI服务成本
  • 优化Prompt设计降低Token消耗
  • 制定基于使用量的预算策略

最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

相关新闻

  • Elasticsearch8.4.1升级Elasticsearch9.1.5 - 实践
  • 工具成瘾——黑客为何痴迷工具与AI(及如何开始用脑思考)
  • 完整教程:Flask入门教程——李辉 第5章: 数据库 关键知识梳理

最新新闻

  • CANN/ge获取HCCL跟随流数量
  • RxJavaSample高级技巧:10个实用方法解决回调地狱和复杂异步问题
  • 终极指南:快速解决跨平台中文显示不一致的PingFangSC字体配置方案
  • MiniCPM-V 4.6端侧部署实战:RTX 4070上稳定运行多模态推理
  • M3U8视频下载器:5分钟掌握跨平台高效下载工具
  • 如何用图像识别技术实现《鸣潮》的智能自动化体验

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号