今天我们不聊虚的,直接手把手带你玩转 Spring AI

以前我们开发 AI 应用总觉得 Python 是唯一选择,但现在,Spring AI 的出现彻底改写了游戏规则。它让 Java 开发者能像调用普通 Service 一样,优雅地集成 OpenAI、Ollama、甚至本地的大模型。

一、 为什么选 Spring AI?

  • 统一抽象:换个模型只需改一行配置,代码不用动。

  • 原生集成:完美契合 Spring Boot 生态(自动装配、流式输出、函数调用)。

  • 本地+云端双修:既能白嫖本地的 Ollama (Llama 3/DeepSeek),也能对接 OpenAI/Claude


二、 核心环境准备

  1. JDK 17+(Spring AI 的强制要求)。

  2. Spring Boot 3.2+

  3. Ollama(如果你想在本地免费跑模型,请去 ollama.com 下载并运行 ollama run llama3.1)。


三、 实战:3分钟搭建 AI 对话系统

1. 引入依赖 (pom.xml)

我们需要添加 Spring AI 的仓库和 Starter。

<dependencies>
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots><enabled>false</enabled></snapshots>
    </repository>
</repositories>

2. 核心配置 (application.yml)

只需几行,告诉 Spring 连哪个模型。

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: llama3.1  # 或者 deepseek-r1
          temperature: 0.7 # 随机性,越大越有创意

3. 编写 Controller 代码

这是最爽的地方——ChatClient 就像 RestTemplate 一样简单。

@RestController
public class AiController {

    private final ChatClient chatClient;

    // 使用 Builder 模式构建,方便后续添加 Memory (记忆) 或 Tools (工具)
    public AiController(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }

    /**
     * 普通对话:输入问题,直接返回答案
     */
    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        return chatClient.prompt()
                .user(message)
                .call()
                .content();
    }

    /**
     * 流式对话 (SSE):像 ChatGPT 一样一个字一个字蹦出来
     */
    @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> streamChat(@RequestParam String message) {
        return chatClient.prompt()
                .user(message)
                .stream()
                .content();
    }
}

四、 进阶:如何集成 OpenAI?

如果你有 API Key,只需把依赖换成 spring-ai-openai-spring-boot-starter,然后在配置文件中设置:

spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: gpt-4o

代码一行都不用改! 这就是 Spring AI 抽象层的强大之处。


五、 总结与展望

通过上面的代码,你已经实现了一个高性能的 AI 接口。Spring AI 还能做更多:

  • RAG (检索增强生成):读取你的 PDF、数据库,让 AI 回答私有知识。

  • Function Calling:让 AI 自动调用你的 Java 方法(比如查天气、查库存)。

  • Multimodal:图片识别、音频转文字。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐