13. Spring AI 的观测性

13. Spring AI 的观测性

文章目录

  • [13. Spring AI 的观测性](#13. Spring AI 的观测性)
    • 观测性
      • [为什么Spring AI应用急需可观测性?](#为什么Spring AI应用急需可观测性?)
      • [实战演练:构建可观测的Spring AI翻译应用](#实战演练:构建可观测的Spring AI翻译应用)
        • [第一步:Spring AI项目初始化](#第一步:Spring AI项目初始化)
        • [第二步:Spring AI客户端配置](#第二步:Spring AI客户端配置)
        • [第三步:构建Spring AI翻译服务](#第三步:构建Spring AI翻译服务)
        • [第四步:Spring AI翻译API测试](#第四步:Spring AI翻译API测试)
      • [Spring AI监控指标深度解析](#Spring AI监控指标深度解析)
        • [核心指标1:Spring AI操作性能监控](#核心指标1:Spring AI操作性能监控)
        • [核心指标2:Spring AI Token使用量精准追踪](#核心指标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管理):

xml 复制代码
<!--百炼-->
<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客户端配置

主应用类配置:

java 复制代码
@SpringBootApplication
publicclassSpringAiTranslationApplication {

    publicstaticvoidmain(String[] args) {
        SpringApplication.run(SpringAiTranslationApplication.class, args);
    }

    @Bean
    public ChatClient chatClient(ChatClient.Builder builder) {
        return builder.build();
    }
}

Spring AI配置文件:

yaml 复制代码
# Spring AI 可观测性配置
management:
endpoints:
    web:
      exposure:
        include:"*"
endpoint:
    health:
      show-details:always
metrics:
    export:
      prometheus:
        enabled:true

spring:
threads:
    virtual:
      enabled:true
ai:
    deepseek:
      api-key:${DEEPSEEK_API_KEY}
      chat:
        options:
          model:deepseek-chat
          temperature: 0.8

环境变量设置:

export DEEPSEEK_API_KEY=your-deepseek-api-key

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

智能翻译控制器:

java 复制代码
@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测试
json 复制代码
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

json 复制代码
{
  "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

json 复制代码
{
  "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消耗
  • 制定基于使用量的预算策略

最后:

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

相关推荐
-大头.1 小时前
SpringBoot 全面深度解析:从原理到实践,从入门到专家
java·spring boot·后端
Z_Easen1 小时前
Spring AI:Reactor 异步执行中的线程上下文传递实践
java·spring ai
合作小小程序员小小店1 小时前
web网页开发,在线%物流配送管理%系统,基于Idea,html,css,jQuery,java,ssh,mysql。
java·前端·css·数据库·jdk·html·intellij-idea
2501_941142931 小时前
基于区块链的数字身份管理:探索安全与隐私的未来
网络·数据库·人工智能
骑猪兜风2331 小时前
谷歌 AI IDE Antigravity 系统提示词分析
人工智能·ai编程·ai ide·gemini3·谷歌gemini3·antigravity
charlie1145141911 小时前
使用 Poetry + VS Code 创建你的第一个 Flask 工程
开发语言·笔记·后端·python·学习·flask·教程
aiopencode1 小时前
iOS 上架 App Store 全流程技术解读 应用构建、签名体系与发布通道的标准化方案
后端
Jing_jing_X1 小时前
ChatGPT 四种模式:普通对话、推理思考、深度研究、学习模式有什么区别?
人工智能·学习·chatgpt
汀、人工智能1 小时前
AI Compass前沿速览:Gemini 3、Grok 4.1、GPT-5.1、千问、Lumine-3D开世界AI智能体
人工智能·gemini 3·grok4.1·gpt 5.1