返回博客

Java 也能玩转大模型 | Spring AI 七大核心概念全解,附中转站接入实战

人工智能9621
Java 也能玩转大模型 | Spring AI 七大核心概念全解,附中转站接入实战

系列导语 本文是【大模型API中转站】系列篇。本系列致力于用最低的成本、最清晰的方法,帮你打通多模型 API 的任督二脉。建议先收藏,随用随查。 这一期换个视角:调用方不再是 Python,而是 Java。 Spring 官方亲儿子 Spring AI 已经 1.0 GA,把大模型能力塞进了 Spring 生态。本期一次性讲透:Spring AI 到底解决什么、七大核心概念怎么理解、国内开发者怎么用中转站把它跑起来。

先给最忙的人一句话结论:AI 应用开发不是 Python 的专利。 Spring AI 用 Spring 开发者最熟的那套(依赖注入、Starter、自动配置)封装了 Model / Prompt / Embedding / RAG / Function Calling 全链路,你会写 Spring Boot,就会写 AI 应用。 唯一的坑在国内:它默认连 OpenAI 官方端点,网络和计费都别扭——往下看第 5 节,改一个 base-url 指向 4SAPI,OpenAI、Claude、国产开源全用同一套 Spring AI 代码调。


1. 开篇:AI 开发,凭什么只能是 Python?

提到大模型应用,绝大多数人第一反应是 Python + LangChain。于是一个尴尬的现实摆在无数 Java 团队面前:核心业务系统是 Spring 写的、跑了好几年、稳如老狗,可一沾 AI 就得另起一个 Python 服务,两套技术栈、两套运维、两套部署。

Spring AI 就是来终结这件事的。它是 Spring 官方推出的 AI 集成框架,核心目标只有一句话:

把企业的数据和 API,跟 AI 模型连起来——用 Spring 开发者本来就会的方式。

它不重新发明轮子,而是把 AI 能力做成你熟悉的 Starter + 自动配置 + XxxClient。换模型?改配置。换提供商?换 Starter。这就是"Java 智能新利器"的真正含义——不是教 Java 干新活,是让 AI 这件新活落进 Java 的老框架里。


2. 核心速查:Spring AI 七大概念,一张表看懂

这是本期的核心表,把官方文档里最该懂的七个概念,用人话 + Java 视角讲清(适用 Spring AI 1.0 GA):

概念一句话本质Java 开发者要记住的点
Models 模型从海量数据学规律、做预测的算法Spring AI 用统一接口屏蔽了底层模型差异,换模型不改业务代码
Prompts 提示引导模型输出的语言输入多段文本 + 角色(system 定上下文 / user 是用户输入);用 PromptTemplate 做模板化
Embeddings 嵌入把文本/图/视频转成浮点数向量向量长度=维度;算向量间距离=判相似度,RAG 的地基
Tokens 令牌模型计费和处理的最小单位输入切成 token、输出再拼回单词;计费按 token,成本账全看它
Structured Output 结构化输出模型默认吐 String,哪怕你要 JSON1.0 起可直接用 entity(Xxx.class) 把输出自动映射成 Java 对象,不用手撸解析
Function Calling 函数调用让模型调你的本地方法/外部 API把数据和能力"喂"给模型的三板斧之一,Spring AI 用 @Bean 注册工具极其顺手
RAG 检索增强生成把相关资料塞进提示再回答ETL 流程:读非结构化文档 → 转换 → 写向量库 → 检索增强

几个最容易被坑/被忽略的点:

  1. "要 AI 输出 JSON" ≠ "你拿到了 JSON"。模型本质只会吐字符串,你说"请返回 JSON",它给的也只是"长得像 JSON 的字符串"。Spring AI 1.0 的 Structured Output 把这步包了,call().entity(Order.class) 直接给你 Java 对象——这是它比裸调 API 最香的地方之一。
  2. 给模型"补数据"有三条路,别只会一条。微调(Fine Tuning,改权重、最烧钱)、提示填充(Prompt Stuffing,把数据塞进 prompt)、函数调用(Function Calling,连外部系统)。绝大多数业务场景,Prompt Stuffing + RAG + Function Calling 就够,不用动微调。
  3. RAG 不是玄学,是 ETL。读文档 → 切块/向量化 → 写向量库 → 查询时检索相关块塞进 prompt。Spring AI 把这套做成了 DocumentReader / EmbeddingModel / VectorStore 标准件,会写批处理就会写 RAG。

3. 选型对比:Spring AI vs 裸调 vs LangChain4j

Java 接 AI 不止 Spring AI 一条路。把三种主流姿势摆一起(标场景胜负):

维度裸调 HTTP/SDKSpring AILangChain4j赢家
上手成本自己拼 JSON、管重试Starter 即插即用概念偏多🟢 Spring AI
与 Spring 生态融合手动接原生 DI / Boot / Actuator一般🟢 Spring AI
多模型切换每家重写一遍统一接口,换 Starter支持🟡 平
RAG / 向量库全自己搭内置标准件内置丰富🔵 LangChain4j 略多
结构化输出手撸解析entity() 自动映射支持🟢 Spring AI
官方背书 / 长期维护——Spring 团队亲儿子社区🟢 Spring AI

读法(看你团队落哪行)


4. 成本:Spring AI 不要钱,要钱的是它背后那个模型

很多人忽略一件事:Spring AI 框架本身免费开源(Apache 2.0),真正花钱的是它替你调的那个大模型。 所以成本账=token 账,和你选哪个模型强相关。把主流模型的按 token 价摆出来(每百万 Token,2026 年 6 月):

模型输入输出在 Spring AI 里怎么接
GPT-5.5$5$30spring-ai-openai-spring-boot-starter
Claude Opus 4.8$5$25OpenAI 兼容端点直接走
MiniMax M3$0.30(促销)$1.20(促销)同上,改 model 即可
GLM-5.1~$0.80~$2.40同上
Kimi K2.7-Code$0.95$4.00同上

关键洞察:因为 Spring AI 用统一接口屏蔽了模型差异,你完全可以"框架不变、模型随便换"。 开发期用便宜的国产开源跑通逻辑,上线前压测决定哪个模型性价比最高——全程只改一个 model 配置项。

💡 算笔账:同一个 RAG 问答服务,用 GPT-5.5 和用 MiniMax M3,代码一行不改,成本差 16 倍。Spring AI 的统一抽象让"按场景选模型"从"重写工程"变成"改配置"。这就是抽象层的价值。


5. 实战:Spring AI + 中转站,国内 5 分钟跑通

Spring AI 默认指向 OpenAI 官方端点,国内会遇到网络不通 + 计费发票麻烦两座大山。解法和这个系列一贯的主张一样:把 base-url 指向中转站,一个 Key、一个端点,OpenAI 格式全兼容。 下面以 4SAPI 为例。

5.1 引依赖(Maven)

xml
<!-- 1. 先导 Spring AI BOM 统一版本 -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.ai</groupId>
      <artifactId>spring-ai-bom</artifactId>
      <version>1.0.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<!-- 2. OpenAI 兼容 Starter(中转站走的就是 OpenAI 格式) -->
<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

5.2 配置(核心就改两行:base-url + key)

yaml
# application.yml
spring:
  ai:
    openai:
      api-key: sk-你的中转Key
      base-url: https://api.4sapi.com   # 关键:指向中转站,而非 openai 官方
      chat:
        options:
          model: glm-5.1                # 想换模型?改这一行就行
          temperature: 0.2

5.3 一个 Controller 跑通对话

java
@RestController
public class ChatApiController {

    private final ChatClient chatClient;

    // Spring AI 自动注入,构造器拿一下就行
    public ChatApiController(ChatClient.Builder builder) {
        this.chatClient = builder
            .defaultSystem("你是一名资深后端工程师,回答简洁、健壮。")
            .build();
    }

    @GetMapping("/api/v1/chat")
    public String chat(@RequestParam(defaultValue = "用 Java 写个带重试的 HTTP 客户端") String msg) {
        return chatClient.prompt()
                .user(msg)
                .call()
                .content();   // 直接拿到字符串结果
    }
}

5.4 进阶:结构化输出,直接拿 Java 对象

这是 Spring AI 比裸调最爽的地方——模型吐的字符串自动映射成你的 Java 类,不用手写 JSON 解析:

java
public record CodeReview(String summary, int score, List<String> issues) {}

@GetMapping("/api/v1/review")
public CodeReview review(@RequestParam String code) {
    return chatClient.prompt()
            .user(u -> u.text("审查这段代码并打分:\n{code}").param("code", code))
            .call()
            .entity(CodeReview.class);   // 一行:String → Java 对象
}

5.5 按场景路由模型(框架不变,改配置)

承接第 3、4 节的选型表,生产里成熟做法是按任务路由模型。Spring AI 里用 mutate() 临时覆盖 options,一个方法搞定:

java
public ChatClient pick(String taskType) {
    String model = switch (taskType) {
        case "long_context", "multimodal" -> "minimax-m3"; // 1M 上下文 + 多模态
        case "tool_agent"                 -> "kimi-k2.7";   // 密集工具调用
        case "code_gen", "chat"           -> "glm-5.1";     // 结构化代码 / 通用
        default                           -> "gpt-5.5";     // 兜底要最强闭源
    };
    return chatClient.mutate()
            .defaultOptions(OpenAiChatOptions.builder().model(model).build())
            .build();
}

中转站对 Java 团队最实在的价值就在这:模型选型、灰度对比、降级容灾,全收敛到一个 base-url + 一个 switch,闭源开源混着路由也是改一行的事。


6. 选型决策表 + 合规提示

该怎么用?

你的场景推荐姿势理由
已有 Spring Boot 项目要加 AISpring AI + 中转站零学习曲线,DI/Starter 全复用
要做企业知识库问答Spring AI RAG 三件套DocumentReader → VectorStore 标准流程
要 AI 调用业务方法/外部接口Function Calling@Bean 注册工具,模型自动调
要 AI 返回可直接用的结构化数据call().entity(X.class)自动映射,告别手写解析
国内网络/计费别扭base-url 指向中转站一个 Key,OpenAI 格式全兼容

风险与合规提示


7. 总结与系列导航

一句话总结

AI 应用开发不是 Python 的专利。 Spring AI 把 Model / Prompt / Embedding / Tokens / 结构化输出 / Function Calling / RAG 七大能力,做成了 Spring 开发者最熟的 Starter + 自动配置——你会写 Spring Boot,就会写 AI 应用。 国内落地唯一的坎是网络和计费,把 base-url 指向中转站即可一键抹平,框架不变、模型随便换。

对 Java 团队来说,通过 4SAPI 这类中转站接入 Spring AI,等于用一套 Spring 代码 + 一个 Key,握住 OpenAI / Claude / 国产开源全家桶——改个 model 配置就横跳,既不用学 Python 那套,也省掉自建模型服务的天价账单。这笔账,Java 团队怎么算都划算。

标签:Spring AIJava大模型API中转站4SAPIRAG

推荐阅读

探索更多前沿洞察与行业干货。