一、简介

官网:https://spring.io/projects/spring-ai
2025年5⽉20⽇SpringAI官⽅宣布1.0GA(GeneralAvailability)版本正式发布,这是Spring官⽅推出的⾸个稳定版⼈⼯智能(AI)集成框架.旨在帮助Java/Spring开发者更便捷地在企业级应⽤中集成AI能⼒(如⼤语⾔模型、机器学习、向量数据库、图像⽣成等).它的发布标志着Spring⽣态正式进⼊AI时代,为Java开发者提供了标准化的AI开发⼯具链,AI技术正式进⼊Spring⽣态的核⼼⼯具链。

Spring AI 是⼀个AI⼯程领域的应⽤框架,它的⽬标是将Spring⽣态系统的设计原则(如可移植性和模块化设计)应⽤于AI领域,并促进使⽤POJO作为AI领域应⽤程序的构建块.

Spring AI 提供以下功能:

  • ⽀持主要的AI模型提供商,⽐如Anthropic、OpenAI、Microsoft、Amazon、Google和Ollama,⽀持的模型种类也⾮常多,⽐如:聊天模型,嵌⼊模型,图像模型,⾳频模型,内容审核等。
  • 跨AI提供商的可移植API⽀持.⽀持聊天(Chat),⽂本到图像(text-to-image)和嵌⼊(Embedding) 模型的统⼀接⼝,同时提供同步和流式API选项.⽀持访问模型特定功能。

SpringAI为⾮AI专家的开发者也能快速调⽤⼤语⾔模型,提供了构建AI应⽤的基础抽象层,允许开发⼈员通过极少的代码修改即可轻松替换组件.简化集成AI功能的应⽤程序开发,避免不必要的复杂性。

二、术语

2.1 模型

模型:旨在处理和⽣成信息的算法,通常模仿⼈类的认知功能。通过从⼤型数据集中学习模式和洞察,这些模型可以进⾏预测、⽣成⽂本、图像或其他输出,从⽽增强各个⾏业的各种应⽤。⽐如ChatGPT、⽂⼼⼀⾔、通义千问等等.每种模型能⼒不同,适合的任务也不同。

可以简单理解为模型是⼀个"超级加⼯⼚",这个⼯⼚是经过特殊训练的,训练师给它看了海量的例⼦(数据),并告诉它该怎么做。通过看这些例⼦,它⾃⼰摸索出了⼀套规则,学会了完成某个"特定任务".模型就是⼀套学到的"规则"或者"模式",它能根据你给的东西,产⽣你想要的东西.

我们给的东西就称之为:输⼊
模型产出的结果,就称之为输出

模型就相当于我们大量做题,我们自己总结出的做题方法,输入就是题目,输出就是答案。

2.2 LLM

LLM(Large LanguageModel), ⼤语⾔模型,也称⼤型语⾔模型,是⼈⼯智能模型中专⻔处理⽂本的⼀种类型,属于语⾔模型的范畴.LLM的特点是规模庞⼤,包含数⼗亿的参数,在⼤量的⽂本数据上进⾏训练,学习语⾔数据中的复杂模式,旨在理解和⽣成⼈类语⾔.可以执⾏⼴泛的任务,包括⽂本总结、翻译、情感分析等.

简单介绍⼏种⽬前主流的⼤语⾔模型(LLM).

  • GPT-5(OpenAI)
    • ⽀持128K⻓上下⽂,在多轮复杂推理、创意写作中表现突出
  • DeepSeekR1(深度求索)
    • 开源,专注于逻辑推理与数学求解,⽀持128K⻓上下⽂和多语⾔(20+语⾔),在科技领域表现突出
  • Qwen2.5-72B-Instruct (阿⾥巴巴)
    • 通义千问开源模型家族重要成员,擅⻓代码⽣成结构化数据(如JSON)处理⻆⾊扮演对话等,尤其适合企业级复杂任务,⽀持包括中⽂英⽂法语等29种语⾔
  • Gemini2.5Pro(Google)
    • 多模态融合标杆,⽀持图像/代码/⽂本混合输⼊,适合跨模态任务(如图⽂⽣成、技术⽂档解析)

2.3 提示词

提⽰词是⽤⼾或系统提供给⼤语⾔模型(LLM)的指令或⽂本,⽤于引导模型⽣成特定输出.可以理解为模型的输⼊,⽆论是⼀个单词、⼀个问题、⼀段描述,还是结构化指令,都可视为提⽰词.

从⼯程视觉来看,提⽰词分为⽤⼾提⽰词和系统提⽰词

类型 定义 核⼼功能 ⽰例
⽤⼾提⽰词 由终端⽤⼾直接输⼊,触发单次任务 传达即时需求(如提问、创作指令) ⽤⼾输⼊:“总结这篇论⽂的核⼼观点”
系统提⽰词 由开发者预设,嵌⼊系统后端 定义模型⻆⾊、⾏为规范、知识边界 预设:“你是⼀名严谨的学术助⼿,回答需引⽤权威⽂献”

系统提⽰词如同"操作系统",持续影响所有交互(如⻆⾊设定、安全过滤), ⽤⼾提⽰词如同"操作指令",驱动单次任务执⾏(如⽣成报告、翻译⽂本)

2.4 词元(Tokens)

词元是⼤语⾔模型(LLM)处理⽂本时的最⼩语义单位.⽤于将⽂本拆解为模型可理解的离散单元.

词元通过分词器将⽂本拆分⽽来,不同模型的分词规则不同,同⼀个词在不同模型中可能被拆分成不同词元.

模型的上下⽂窗⼝(如128K)实际是词元数量限制, API收费通常按词元数计费(词元=⾦钱),词元数越多,计算耗时和内存占⽤越⾼.所以在使⽤时,应尽量避免冗余词(如请,谢谢)

三、快速入门

3.1 环境要求

  • JDK
    • 最低要求:JDK17+(SpringBoot3.x强制要求)
    • 推荐版本:
      • JDK21(2023年LTS版本,⽀持虚拟线程/分代ZGC,性能提升显著)
      • JDK17(旧项⽬过渡⽅案)
  • SpringBoot
    • 最低要求:SpringBoot3.2+(SpringAI1.0.0起强制依赖)
    • 推荐版本:
      • SpringBoot3.4.x(最新稳定版,优化企业级特性)
      • SpringBoot3.3.x(部分旧项⽬兼容⽅案)

3.2 deepseek接入准备

DeepSeek以开源和⾼效推理为核⼼竞争⼒,主要模型包括:

  • DeepSeek-R系列(如R1):专注复杂推理的模型,数学、代码能⼒突出,⽀持深度思考模式(⾼智能推理状态)
  • DeepSeek-V系列(如V2,V3):通⽤语⾔模型,⽀持⽂本⽣成、多轮对话等任务,性能对标GPT-4Turbo4.
  • DeepSeek-Coder:专注于代码⽣成与补全,⽀持多语⾔编程(Python,Java等),强化学习优化,训练成本仅为同类模型的1/30.

DeepSeek的特点:

  • 完全开源:模型代码、权重公开,兼容OpenAIAPI接⼝
  • 极致性价⽐:推理成本仅为同类模型的1/7(如对⽐Llama3-70B),训练成本低⾄560万美元(仅为
    ⾏业平均的1/3)

申请DeepSeekAPIKeys:

  1. 点击[API开放平台],进⼊API开放平台,注册⽤⼾
  2. 注册之后,⾃⾏充值
    充值前需要先进⾏实名认证,根据词元进行收费。
  3. 创建APIKeys,记得复制保存

调用参考链接:https://api-docs.deepseek.com/zh-cn/

3.3 项目初始化

3.3.1 创建⽗⼯程

  1. 创建⼀个空的Maven项⽬,删除所有代码,只保留pom.xml
  2. 完善pom⽂件
    添加依赖,声明⽗⼯程的打包⽅式为pom
<?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>

    <groupId>org.example</groupId>
    <artifactId>spring-ai-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 声明⽗⼯程的打包⽅式为pom -->
    <packaging>pom</packaging>

    <!-- 完善依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

3.3.2 创建子项目

  1. 创建⼀个子Maven项⽬

  2. 声明项⽬依赖和项⽬构建插件
<?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.example</groupId>
        <artifactId>spring-ai-project</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <artifactId>spring-ai-demo</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
        <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
<build>
<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
</plugins>
</build>
</project>
  1. 构造必要文件

3.3.3 添加SpringAIBOM

官方参考链接:https://docs.spring.io/spring-ai/reference/getting-started.html

从1.0.0-M6 版本开始,发布版本已在MavenCentral提供.我们在构建时⽆需任何改动。 之前使用Snapshot版本,需要添加Snapshot仓库。

发布版本依赖管理:

Spring AI 提供了⼀个物料清单(BOM),⾥⾯声明了给定SpringAI版本所使⽤的依赖项的推荐版本. 它只包含依赖管理,不包含插件声明或对Spring或SpringBoot的直接引⽤.可以通过Parent继承,也可以通过 dependencyManagement 导⼊.

添加BOM到项⽬中

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>1.0.0-M6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

3.4 接入deepseek

Spring AI ⽣态专⻔为OpenAI及兼容API服务(如DeepSeek)设计了Starter spring-ai-openai-spring-boot-starter ,⽤于快速集成⼤语⾔模型能⼒到SpringBoot应⽤中。
核⼼价值包括:

  • 简化配置:⾃动封装OpenAIAPI的请求/响应等逻辑
  • 统⼀接⼝:提供ChatClient等标准化接⼝,⽀持⽆缝切换不同模型提供商
  • Spring⽣态集成:与SpringBoot的⾃动配置、依赖注⼊等特性深度整合

3.4.1 添加依赖

在子项目中pom文件中添加依赖:

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>1.0.0-M6</version>
</dependency>

3.4.2 配置API密钥

在applicaition.yml中配置

spring:
  ai:
    openai:
      api-key: sk-your-key
      base-url: https://api.deepseek.com
      chat:
        options:
          model: deepseek-chat
          temperature: 0.7
  • spring.ai.openai.api-key : 在DeepSeek开放平台申请的APIkey
  • spring.ai.openai.chat.options.temperature: 默认值0.8. ⽤于控制⽣成补全内容的多样性.值越⾼,输出越随机,值越低,结果越集中和确定.不建议在同⼀个补全请求中同时修改temperature和 top_p, 因为这两个设置的交互作⽤难以预测.
  • deepseek-chat 模型指向DeepSeek-V3-0324, 通过指定 model=‘deepseek-chat’ 调⽤。deepseek-reasoner 模型指向DeepSeek-R1-0528, 通过指定 model=‘deepseek-reasoner’ 调⽤.

更多配置参考链接:https://docs.spring.io/spring-ai/reference/api/chat/deepseek-chat.html
https://docs.springframework.org.cn/spring-ai/reference/api/chat/deepseek-chat.html

3.4.3 编写接⼝

Spring AI已经集成了OpenAI的API,因此我们不需要实现向OpenAI发送请求和接收响应的交互程序了, Spring AI已经实现了这⼀内容,我们只需要通过调⽤SpringAI为我们提供的接⼝即可

package com.spring.ai.controller;

import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/ds")
public class DeepSeekChatController {
    @Autowired
    private OpenAiChatModel openAiChatModel;
    @GetMapping("/chat")
    public String generate(String message) {
        return openAiChatModel.call(message);
    }
}

测试:http://127.0.0.1:8080/ds/chat?message=你是谁

3.5 接⼊ChatGPT

OpenAI是⼀个⼈⼯智能研究实验室和公司,致⼒于推动⼈⼯智能技术的安全发展和普惠应⽤.ChatGPT是OpenAI开发并发布的核⼼产品之⼀,是基于其⾃研的GPT系列模型构建的对话式AI应⽤.Spring AI ⽀持OpenAI的各种AI语⾔模型.

3.5.1 准备⼯作

⾸先需要使⽤OpenAI创建⼀个API来访问ChatGPT模型。

  1. 注册账号OpenAI注册⻚⾯:https://auth.openai.com/create-account
  2. 创建APIkeys,复制⽣成的APIkey,并保存
    访问APIKeys⻚⾯,创建APIKeys:https://platform.openai.com/account/api-keys

3.5.2 添加依赖

<dependency>
	<groupId>org.springframework.ai</groupId>
	<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

3.5.3 配置API密钥

spring:
  ai:
    openai:
      api-key: sk-your-key

3.5.4 编写接口

package com.spring.ai.controller;

import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/openai")
public class OpenAIChatController {
    @Autowired
    private OpenAiChatModel openAiChatModel;
    @RequestMapping("/chat")
    public String generate(String message) {
        return openAiChatModel.call(message);

    }
}

本地开发时,即使配置了代理,有时候也⽆法让你的SpringAI应⽤正常请求api,这通常是代理软件⽆法让你的整个系统实现全局代理造成的,你只需要 在启动类 中加⼊下述代码即可。

package com.spring.ai;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringAiApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringAiApplication.class,args);
        System.setProperty("http.proxyHost","127.0.0.1"); //修改为你代理服务器的 IP
        System.setProperty("https.proxyHost","127.0.0.1");
        System.setProperty("http.proxyPort","7897"); //修改为你代理软件的端⼝

        System.setProperty("https.proxyPort","7897"); //同理

    }
}

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐