酒店大师MOD菜单版
178.49MB · 2025-12-09
@[toc]
在企业级AI应用中,使用DeepSeek、OpenAI、Google Gemini或Azure OpenAI等服务时,成本控制是一个严峻挑战:
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>
主应用类配置:
@SpringBootApplication
publicclassSpringAiTranslationApplication {
publicstaticvoidmain(String[] args) {
SpringApplication.run(SpringAiTranslationApplication.class, args);
}
@Bean
public 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: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
智能翻译控制器:
@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;
}
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
}
指标端点:/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"]
}
]
}
业务价值:
指标端点 /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"
]
}
]
}
成本控制价值:
178.49MB · 2025-12-09
150.85MB · 2025-12-09
270.34MB · 2025-12-09