掘金 人工智能 06月01日 15:53
Spring AI 实战:用 Java 搞 AI,从此告别调参侠
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何使用 Spring AI 框架和 DeepSeek AI 模型,让 Java 程序员也能轻松开发 AI 应用。通过 Spring AI,开发者可以使用熟悉的 Spring 风格调用各种 AI 能力,例如聊天模型、文生图模型和 Embedding 模型。文章详细讲解了如何配置 Spring Boot 项目、DeepSeek API,并编写 AI 聊天接口、流式响应接口,以及自动生成 CRUD 代码的接口。Spring AI 的优势在于 Java 原生支持、统一接口和 Spring 生态整合,使得 AI 开发更加便捷高效。

✅Spring AI 是 Spring 官方推出的 AI 集成框架,它允许开发者使用熟悉的 Spring 风格来调用各种 AI 能力,例如聊天模型(ChatGPT、DeepSeek、Claude 等)、文生图模型(Stable Diffusion、DALL·E 等)和 Embedding 模型,甚至支持自定义 AI 模型。

🔑 使用 Spring AI 进行 AI 开发,开发者无需学习 Python,可以直接使用 Java 进行开发。Spring AI 提供统一的 API,更换 AI 模型只需修改配置即可,同时还能与 Spring 生态无缝整合,实现事务、缓存和安全等功能。

🤖 通过 Spring AI 和 DeepSeek,可以实现多种 AI 应用。例如,可以创建一个聊天接口,让 AI 自动回复消息,甚至自动拒绝产品经理的需求。还可以创建一个代码生成接口,输入表名,自动生成 Controller、Service 和 Repository 的全套 CRUD 代码。

⚙️ 在使用 Spring AI 时,可能会遇到一些问题,例如 API Key 无效、依赖冲突和 AI 胡说八道等。针对这些问题,可以采取相应的解决措施,例如检查 API Key 是否拼写错误、确保 Spring Boot 和 Spring AI 版本兼容,以及调整 temperature 参数来控制 AI 的输出风格。

大家好!我是你们的 Java 老司机,今天咱们不聊 MyBatisSpring Cloud,来点更刺激的——用 Spring AI 开发 AI 应用

以前搞 AI 得学 Python、调 TensorFlow、被 PyTorch 折磨……现在好了,Spring AI 来了,Java 程序员也能愉快玩 AI 了! 🎉

今天,我们就用 Spring AI + DeepSeek,手把手教你搞个能自动写代码、智能问答、甚至帮你怼产品经理的 AI 应用!


1. Spring AI 是啥?能吃吗?

Spring AI 是 Spring 官方推出的 AI 集成框架,让你能用熟悉的 Spring 风格调用各种 AI 能力,比如:

优点:
不用学 Python,Java 一把梭!
统一 API,换 AI 模型只需改配置
Spring 生态整合(事务、缓存、安全一把梭)


2. 先搞个 SpringBoot 项目

Spring Initializr(或 IDEA 直接生成),选:

pom.xml 关键依赖:

<dependencies>    <!-- SpringBoot Web -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <!-- Spring AI (核心) -->    <dependency>        <groupId>org.springframework.ai</groupId>        <artifactId>spring-ai-core</artifactId>        <version>0.8.0</version> <!-- 以最新版为准 -->    </dependency>    <!-- DeepSeek 支持(Spring AI 的 DeepSeek 模块) -->    <dependency>        <groupId>org.springframework.ai</groupId>        <artifactId>spring-ai-deepseek</artifactId>        <version>0.8.0</version>    </dependency></dependencies>

3. 配置 DeepSeek API(让 AI 干活)

application.yml 里配置 DeepSeek:

spring:  ai:    deepseek:      api-key: "你的-DeepSeek-API-KEY"  # 去官网申请      chat:        model: deepseek-chat  # 默认模型        temperature: 0.7      # 创意度 (0=保守, 1=放飞自我)

4. 写个 AI 聊天接口(自动怼产品经理)

直接上代码!

(1) 创建 ChatController

import org.springframework.ai.chat.ChatClient;import org.springframework.web.bind.annotation.*;@RestController@RequestMapping("/ai")public class ChatController {    private final ChatClient chatClient;  // Spring AI 自动注入    public ChatController(ChatClient chatClient) {        this.chatClient = chatClient;    }    @GetMapping("/chat")    public String chat(@RequestParam String message) {        return chatClient.call(message);  // 一句话调用 AI!    }    // 高级玩法:让 AI 自动拒绝产品需求    @GetMapping("/reject")    public String rejectRequirement() {        String prompt = """            产品经理说:“这个需求很简单,明天能上线吗?”            你作为资深程序员,请用专业但委婉的方式拒绝,            要求:带点幽默感,不超过 50 字            """;        return chatClient.call(prompt);    }}

测试效果:

curl "http://localhost:8080/ai/chat?message=用Java写个快速排序"# 输出:public class QuickSort { public static void sort(int[] arr) { ... }}curl "http://localhost:8080/ai/reject"# 输出:这个需求的时间复杂度是 O(梦想),目前服务器算力不支持~

(2) 流式响应(像 ChatGPT 一样逐字输出)

Spring AI 还支持 流式 API(适合长时间任务):

import org.springframework.ai.chat.StreamingChatClient;import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;@GetMapping("/stream")public SseEmitter streamChat(@RequestParam String message) {    SseEmitter emitter = new SseEmitter();    streamingChatClient.stream(message)        .subscribe(            chunk -> emitter.send(chunk.getContent()),  // 每块数据实时发送            error -> emitter.completeWithError(error), // 出错处理            emitter::complete                         // 完成        );    return emitter;}

5. 高级玩法:让 AI 自动写 CRUD 代码

场景:输入表名,自动生成 Controller -> Service -> Repository 全套代码!

import org.springframework.ai.prompt.PromptTemplate;@GetMapping("/gen-crud")public String generateCrud(@RequestParam String tableName) {    PromptTemplate prompt = new PromptTemplate("""        请用 SpringBoot 生成 {table} 表的完整 CRUD 代码,要求:        1. 使用 @RestController        2. 使用 JPA 实现        3. 包含 Swagger 注解        返回格式:Java 代码块        """);    prompt.add("table", tableName);    return chatClient.call(prompt.render());}

测试:

curl "http://localhost:8080/ai/gen-crud?tableName=User"

输出示例:

@RestController@RequestMapping("/api/users")@Tag(name = "用户管理")public class UserController {    @Autowired    private UserRepository userRepo;    @GetMapping    @Operation(summary = "查询所有用户")    public List<User> getAll() { return userRepo.findAll(); }    // 其他 CRUD 方法...}

6. 可能遇到的坑

🚨 API Key 无效 → 检查是否拼错,或去 DeepSeek 官网确认
🚨 依赖冲突 → 确保 Spring Boot 和 Spring AI 版本兼容
🚨 AI 胡说八道 → 调整 temperature 参数(调低更保守)


7. 总结

今天我们用 Spring AI + DeepSeek 实现了:
智能聊天/ai/chat
自动拒绝需求/ai/reject,打工人必备)
代码生成/ai/gen-crud,告别手写样板代码)

Spring AI 的优势:

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Spring AI DeepSeek AI开发 Java SpringBoot
相关文章