主要观点总结
本文主要介绍了Spring AI的应用及其与各种AI模型(如OpenAI、DeepSeek、通义千问等)的集成,以及如何通过Spring AI简化企业智能应用的开发,并介绍了如何通过监控来评估AI的效果。
关键观点总结
关键观点1: Spring AI的简介及其作用
Spring AI是Spring家族的新成员,用Java开发者最熟悉的方式,为他们打开AI应用开发的新世界大门。它是一个专注于AI工程的应用框架,旨在将Spring生态的设计原则引入AI领域,简化企业数据或API服务与大模型的集成。
关键观点2: 实战DeepSeek的API调用
详细介绍了如何手动和代码自动发起DeepSeek的API请求,包括API-KEY的获取、使用curl命令发起请求、创建Spring Boot工程并配置DeepSeek API key等步骤。
关键观点3: 流式响应的体验
通过Reactor框架实现流式输出,优化用户体验。介绍了如何在大模型的响应耗时较长的情况下,通过流式输出实现打字机效果。
关键观点4: OpenAI的starter兼容DeepSeek的原理
解释了Spring AI利用OpenAI的API规范进行可移植设计,使得一套代码可以适配不同的AI服务,包括DeepSeek等国内服务。
关键观点5: 生产环境必备的AI监控
介绍了如何通过添加监控依赖,实现AI效果的监控和评估。包括添加Spring Boot Actuator和Micrometer Prometheus等依赖,以及配置管理端点暴露和观察性等步骤。
正文
curl https:
-H "Content-Type: application/json" \
-H "Authorization: Bearer " \
-d '{
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "讲一个笑话"}
],
"stream": false
}'
{
"id": "0e8dd4b9-694e-417b-888a-7be54a77633f",
"object": "chat.completion",
"created": 1742744584,
"model": "deepseek-chat",
"choices":
[
{
"index": 0,
"message":
{
"role": "assistant",
"content": "当然!这是一个经典的笑话:\n\n有一天,小明去面试。面试官问他:“你有什么特长吗?”\n\n小明想了想,认真地说:“我会预测未来。”\n\n面试官笑了笑:“那你预测一下,你什么时候能被录用?”\n\n小明淡定地回答:“这个嘛……我预测我不会被录用。”\n\n面试官愣了一下,笑着说:“你被录用了!我们需要你这样的人才!”\n\n😄"
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage":
{
"prompt_tokens": 12,
"completion_tokens": 74,
"total_tokens": 86,
"prompt_tokens_details":
{
"cached_tokens": 0
},
"prompt_cache_hit_tokens": 0,
"prompt_cache_miss_tokens": 12
},
"system_fingerprint": "fp_3a5770e1b4_prod0225"
}
返回数据以
JSON
格式,解析格式中的
content
内容得到为大模型给我们讲的笑话。
创建第一个Spring AI工程
访问
https://start.spring.io/
按截图所示勾选依赖,生成代码框架。
Spring Boot 3.x
JDK 17+
spring-ai-openai-starter
(是的,它能兼容DeepSeek)
将生成的代码导入到IDEA中,启动应用。
很遗憾,竟然没有启动起来,出现一个
OpenAI API key must be set. Use the connection property: spring.ai.openai.api-key or spring.ai.openai.chat.api-key property
的错误。