Spring AI 实战:如何用 Java 快速集成大模型,打造智能对话应用
别再以为 AI 开发只能用 Python 了。Spring AI 让 Java 开发者也能轻松接入大模型,本文将带你从零搭建一个智能对话应用。
前言
最近两年,AI 大模型的热度居高不下。作为 Java 开发者,我一度觉得这场盛宴与自己无关——毕竟市面上大部分 AI 教程都是 Python 的。
直到我发现了 Spring AI——一个专为 Spring 生态设计的 AI 应用开发框架。它让我能用熟悉的 Java 语法,快速调用大模型 API,构建智能应用。
今天我就带你用 Spring AI + 智谱 AI,从零搭建一个智能对话应用。整个过程不到 20 行代码。
一、什么是 Spring AI?
Spring AI 是 Spring 官方推出的 AI 开发框架,它的设计理念和 Spring Data、Spring Cloud 一脉相承——统一抽象、降低复杂度。
Spring AI 的核心能力:
| 能力 | 说明 |
|---|---|
| 统一 API | 一套代码对接 OpenAI、智谱、文心、通义等多家大模型 |
| 提示词模板 | 支持模板化 Prompt,便于复用 |
| 结构化输出 | 可将模型输出自动映射为 Java 对象 |
| RAG 支持 | 内置文档加载、向量存储、检索增强 |
| 函数调用 | 支持 Tool Calling,让模型调用你的业务函数 |
简单说:用 Spring AI,你可以像写普通 Spring 代码一样开发 AI 应用。
二、环境准备
2.1 开发环境
-
JDK 17+
-
Maven 3.6+
-
IntelliJ IDEA
2.2 创建项目
访问 Spring Initializr,选择以下依赖:
-
Spring Web
-
Spring AI (需要添加 Spring Milestone 仓库)
或者直接使用我准备好的 pom.xml:
xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.0</version>
</parent>
<groupId>com.example</groupId>
<artifactId>spring-ai-demo</artifactId>
<version>1.0.0</version>
<properties>
<java.version>17</java.version>
<spring-ai.version>0.8.1</spring-ai.version>
</properties>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId>
<version>${spring-ai.version}</version>
</dependency>
</dependencies>
</project>
2.3 获取 API Key
去 智谱 AI 开放平台 注册账号,申请 API Key。新用户通常有免费额度,够你体验了。
三、配置与开发
3.1 配置文件
在 application.yml 中配置:
yaml
spring:
ai:
zhipuai:
api-key: YOUR_API_KEY_HERE
model: glm-4-flash
3.2 编写对话接口
创建一个 Controller:
java
package com.example.demo;
import org.springframework.ai.chat.ChatClient;
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/ai")
public class AiController {
@Autowired
private ChatClient chatClient;
@GetMapping("/chat")
public String chat(@RequestParam String message) {
// 直接调用大模型
ChatResponse response = chatClient.call(new Prompt(message));
return response.getResult().getOutput().getContent();
}
}
就这么简单!启动项目,访问:
text
http://localhost:8080/ai/chat?message=你好,请介绍一下自己
你的第一个 Spring AI 应用就跑起来了。
四、进阶:带记忆的智能对话
上面的例子每次都是独立请求,没有上下文记忆。我们来加上对话历史。
4.1 添加内存管理
java
@Component
public class ChatService {
private final ChatClient chatClient;
private final Map<String, List<Message>> sessionHistory = new ConcurrentHashMap<>();
public ChatService(ChatClient chatClient) {
this.chatClient = chatClient;
}
public String chat(String sessionId, String userMessage) {
// 获取或创建会话历史
List<Message> history = sessionHistory.computeIfAbsent(sessionId,
k -> new ArrayList<>());
// 添加用户消息
history.add(new Message("user", userMessage));
// 构建提示词(保留最近10轮对话)
List<Message> recent = history.stream()
.skip(Math.max(0, history.size() - 20))
.collect(Collectors.toList());
Prompt prompt = new Prompt(recent);
ChatResponse response = chatClient.call(prompt);
String aiMessage = response.getResult().getOutput().getContent();
// 保存 AI 回复
history.add(new Message("assistant", aiMessage));
return aiMessage;
}
record Message(String role, String content) {}
}
4.2 添加接口
java
@RestController
@RequestMapping("/ai")
public class AiController {
@Autowired
private ChatService chatService;
@GetMapping("/chat")
public String chat(@RequestParam String sessionId, @RequestParam String message) {
return chatService.chat(sessionId, message);
}
}
现在你可以实现多轮对话了:
text
GET /ai/chat?sessionId=user001&message=我叫小明 GET /ai/chat?sessionId=user001&message=我叫什么名字? // AI 会记得
五、实战案例:AI 编程助手
基于上面的框架,我们可以快速搭建一个 AI 编程助手,专门回答 Java 技术问题。
java
@Component
public class JavaAssistant {
private final ChatClient chatClient;
public JavaAssistant(ChatClient chatClient) {
this.chatClient = chatClient;
}
public String ask(String question) {
String systemPrompt = """
你是一个资深的 Java 技术专家,擅长 Spring Boot、微服务、并发编程等。
请用中文回答,尽量给出代码示例,回答要简洁实用。
""";
Prompt prompt = new Prompt(List.of(
new Message("system", systemPrompt),
new Message("user", question)
));
return chatClient.call(prompt).getResult().getOutput().getContent();
}
}
六、总结
本文带你完成了:
-
Spring AI 环境搭建 —— 5 分钟跑通第一个 AI 应用
-
对话记忆实现 —— 支持多轮对话
-
Java 编程助手 —— 垂直场景应用
如果你想系统学习 AI 应用开发(Java + Python 双方向),我们整理了一套完整的课程体系,涵盖 Spring AI、LangChain、RAG 等企业级实战项目。课程大纲和学员作品可以在探维世纪官网JavaAI课程页查看。
Spring AI 让 Java 开发者不再被 AI 浪潮“抛弃”。你可以用熟悉的 Spring 生态,快速构建智能客服、代码助手、文档问答等应用。
互动话题:你用 Java 开发过 AI 应用吗?遇到过哪些坑?欢迎评论区交流。
本文为技术分享,部分代码已脱敏处理。如需转载,请联系作者。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)