Spring AI 极简入门:Java 开发者快速上手 AI 开发

Spring AI 是 Spring 官方推出的 AI 应用开发框架,让 Java 开发者用熟悉的 Spring Boot 方式,快速对接大模型,不用再死记不同 AI 平台的复杂 API,一套代码适配 OpenAI、通义千问、讯飞星火等主流模型。

一、核心优势(3 句话记住)

  1. 统一接口:用 ChatClient 一套 API 调用所有大模型,切换模型只改配置,不动业务代码。
  2. 零门槛集成:基于 Spring Boot 自动配置,引入依赖、配个密钥就能用。
  3. 功能齐全:支持聊天对话、上下文记忆、向量嵌入、RAG 知识库、结构化输出,满足日常 AI 需求。

二、基础快速上手(5 分钟跑通)

1. Maven 基础依赖

复制代码
<!-- OpenAI通用启动器 -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>1.1.6</version>
</dependency>
<!-- 通义千问适配依赖 -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-alibaba-spring-boot-starter</artifactId>
    <version>1.1.6</version>
</dependency>
<!-- 内存向量库(本地测试用) -->
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-chroma-store-spring-boot-starter</artifactId>
    <version>1.1.6</version>
</dependency>

2. OpenAI 基础配置 application.yml

复制代码
spring:
  ai:
    openai:
      api-key: 你的OpenAI密钥
      chat:
        options:
          model: gpt-3.5-turbo

3. 基础对话接口

复制代码
@RestController
@RequestMapping("/ai")
public class AiController {
    private final ChatClient chatClient;

    public AiController(ChatClient.Builder builder) {
        this.chatClient = builder.defaultSystem("你是友好的AI助手").build();
    }

    // 单次无记忆对话
    @GetMapping("/chat")
    public String chat(@RequestParam String msg) {
        return chatClient.prompt().user(msg).call().content();
    }
}

三、扩展 1:上下文记忆(多轮对话,AI 记住历史聊天)

默认单次对话无记忆,每次请求都是全新会话,Spring AI 自带MessageChatMemory实现会话记忆。

改造 Controller

复制代码
@RestController
@RequestMapping("/ai")
public class AiController {
    private final ChatClient chatClient;
    // 内存会话存储,生产环境可换Redis持久化
    private final ChatMemory chatMemory = new InMemoryChatMemory();

    public AiController(ChatClient.Builder builder) {
        this.chatClient = builder
                .defaultSystem("你是友好的AI助手,记住我们之前的对话")
                .build();
    }

    // 带上下文多轮对话,sessionId区分不同用户会话
    @GetMapping("/chat/memory")
    public String chatWithMemory(@RequestParam String msg, @RequestParam String sessionId) {
        String res = chatClient.prompt()
                .user(msg)
                // 绑定会话记忆
                .chatMemory(chatMemory, sessionId)
                .call()
                .content();
        return res;
    }

    // 清空指定会话历史
    @DeleteMapping("/chat/clear")
    public String clearMemory(@RequestParam String sessionId) {
        chatMemory.clear(sessionId);
        return "会话" + sessionId + "历史已清空";
    }
}

使用示例

  1. 第一次请求:/ai/chat/memory?sessionId=user001&msg=我叫小明
  2. 第二次请求:/ai/chat/memory?sessionId=user001&msg=我叫什么名字? AI 会读取历史消息,正确回答你叫小明。

四、扩展 2:向量数据库 + RAG 知识库(本地文档问答)

场景:上传本地文档,AI 只基于文档内容回答,不胡说(RAG 检索增强生成)

1. 配置 Chroma 内存向量库

复制代码
spring:
  ai:
    chroma:
      client:
        host: localhost
        port: 8000

2. 向量工具类(文档入库、检索)

复制代码
@Service
public class RagService {
    private final VectorStore vectorStore;
    private final ChatClient chatClient;

    public RagService(VectorStore vectorStore, ChatClient.Builder builder) {
        this.vectorStore = vectorStore;
        this.chatClient = builder.defaultSystem("只根据提供的文档内容回答,不知道就说没有相关信息").build();
    }

    // 加载本地txt文档写入向量库
    public void loadDoc(File file) {
        DocumentReader reader = new TextReader(file);
        List<Document> docs = reader.get();
        // 文档切片
        TokenTextSplitter splitter = new TokenTextSplitter();
        List<Document> splitDocs = splitter.split(docs);
        // 存入向量库
        vectorStore.add(splitDocs);
    }

    // RAG问答:先检索向量库再交给AI
    @GetMapping("/rag/query")
    public String ragQuery(@RequestParam String question) {
        // 相似度检索
        List<Document> similarDocs = vectorStore.similaritySearch(SearchRequest.query(question).withTopK(3));
        // 拼接检索到的文档内容
        String context = similarDocs.stream()
                .map(Document::getText)
                .collect(Collectors.joining("\n=====\n"));

        String prompt = """
                参考资料:
                {context}
                用户问题:{question}
                """;

        return chatClient.prompt()
                .user(u -> u.text(prompt).param("context", context).param("question", question))
                .call()
                .content();
    }
}

五、扩展 3:通义千问模型完整适配(阿里大模型切换)

1. application.yml 通义千问配置

复制代码
spring:
  ai:
    alibaba:
      api-key: 阿里云百炼获取的api-key
      chat:
        options:
          model: qwen-turbo # 可选 qwen-plus、qwen-max

2. 通义千问专用对话接口(自动切换模型,代码无需大改)

复制代码
@RestController
@RequestMapping("/ai/qwen")
public class QwenController {
    // 自动注入通义千问ChatClient,切换模型仅改配置
    private final ChatClient qwenChatClient;
    private final ChatMemory chatMemory = new InMemoryChatMemory();

    public QwenController(@Qualifier("alibabaChatClient") ChatClient.Builder builder) {
        this.qwenChatClient = builder.defaultSystem("你是通义千问AI助手").build();
    }

    // 通义千问多轮记忆对话
    @GetMapping("/chat")
    public String chat(@RequestParam String msg, @RequestParam String sessionId) {
        return qwenChatClient.prompt()
                .user(msg)
                .chatMemory(chatMemory, sessionId)
                .call()
                .content();
    }
}

多模型共存小技巧

项目同时引入 OpenAI 和通义千问依赖,通过@Qualifier("alibabaChatClient")区分模型客户端,一套项目同时调用多款大模型。

六、整体总结

  1. 上下文记忆 :依靠ChatMemory实现多轮对话,用 sessionId 隔离不同用户会话,生产可替换 Redis 持久化;
  2. 向量数据库 RAG:文档向量化存入向量库,提问时先检索相关文档,解决 AI 幻觉、私有知识库问答;
  3. 通义千问适配:Spring AI 阿里专用 starter,配置密钥即可切换国产大模型,业务代码几乎不用改动;

Spring AI 统一抽象层极大降低 Java 接入 AI 成本,先掌握基础对话,再拓展记忆、知识库、国产大模型,就能快速开发企业内部 AI 问答、智能客服、文档助手等业务。

补充小提示

  1. InMemoryChatMemory 仅适合测试,线上使用 RedisChatMemory 持久化会话;
  2. Chroma 适合本地开发,生产推荐 Milvus、PGVector 向量数据库;
  3. 阿里云通义千问 API Key 在「阿里云百炼」平台申请,免费额度可用于学习测试。
相关推荐
虹科网络安全5 小时前
使用艾体宝 IOTA 10 CORE+ 监控企业网络中的 AI 流量
网络·人工智能
朝阳资本论5 小时前
群核科技:从空间设计龙头到物理AI“卖水人”的升维之战
人工智能
七夜zippoe5 小时前
为什么 2026 年每个 Java 团队都该懂 AI Agent
java·开发语言·人工智能
举个栗子。5 小时前
SwarmForge:AI 智能体协同编程框架,让多个 Agent 在隔离工作区并行协作
人工智能·开源·ai编程
时凌云.5 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
AIGC小尼6 小时前
Windows 本地 AI 漫剧全自动生产线部署完整教程(零基础、全指令、带源码、模型配置、排错方案)
人工智能·windows·ai漫剧
合米AI SOP系统6 小时前
传统产线如何快速上马落地 AI 防错?合米科技 AI SOP 7天即可上线。
大数据·人工智能·科技
思录Echo6 小时前
什么决定具身智能的最终走向?多技术路线与落地现实辨析
大数据·人工智能
Despacito10066 小时前
Java后端性能探查工具速查表
java·开发语言
ShallWeL6 小时前
Orin 上多模型常驻与显存预算
人工智能·嵌入式硬件·nvidia·orin