Java新手5分钟接AI:Spring AI Alibaba实战

Java新手5分钟接AI:Spring AI Alibaba实战

一、你是不是也觉得Java接AI很难?

"AI这么火,我想在Java项目里用大模型,但不知道从哪开始。"

这话说出了多少Java开发者的心声。

看看隔壁Python,OpenAI SDK一行代码就能调用GPT。再看看Java,什么Spring AI、什么阿里Spring AI Alibaba、什么DeepSeek接入...文档一大堆,版本号满天飞,光是选型就让人头大。

更让人崩溃的是网上的教程。要么是"Maven配置+YAML"就没了,代码呢?要么是上来就讲RAG、向量数据库、Agent架构------我只想调用个AI对话而已,用得着这么复杂吗?

我懂这种感觉。去年我第一次尝试在Spring Boot项目里接入AI,光是解决版本冲突就折腾了两天。

但今天我要告诉你一个真相:Java接AI,其实5分钟就能跑通第一个对话

二、真相:5分钟跑通AI对话

Spring AI在2025年发布了1.0正式版,不再是那个三天两头改API的预览版了。

更重要的是,阿里推出了Spring AI Alibaba,专门针对国内开发者优化。支持通义千问、DeepSeek等国产大模型,开箱即用。

你不需要:

  • 不需要懂AI原理
  • 不需要学Python
  • 不需要配置复杂的模型推理环境
  • 不需要买显卡

你只需要:

  • JDK 17
  • Maven
  • 一个IDE(IDEA或Eclipse都行)
  • 一个DeepSeek账号(新用户送10元额度)

就这些。下面我们直接上代码,复制就能跑。

三、准备工作:三件套就够了

3.1 确认JDK版本

打开终端,运行:

bash 复制代码
java -version

看到17或更高版本就行。如果还是JDK 8或11,去Oracle官网或者用SDKMAN装一个JDK 17。

bash 复制代码
# 用SDKMAN安装JDK 17
curl -s "https://get.sdkman.io" | bash
sdk install java 17.0.9-tem

3.2 确认Maven

bash 复制代码
mvn -version

能输出版本信息就行。没有的话去官网下载,解压,配环境变量。

3.3 获取DeepSeek API Key

这是唯一需要"操作"的一步:

  1. 打开 https://platform.deepseek.com/
  2. 注册账号(支持微信登录)
  3. 充值10元(够你玩很久)
  4. 进入API Keys页面,创建一个Key

重要: Key只在创建时显示一次,马上复制保存。丢了只能重新创建。

四、实战:Spring AI Alibaba接DeepSeek

Step 1:创建项目

用IDEA新建一个Maven项目,或者直接在现有项目里加依赖。

完整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.4.5</version>
        <relativePath/>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>spring-ai-demo</artifactId>
    <version>1.0.0</version>
    <name>Spring AI DeepSeek Demo</name>

    <properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0</spring-ai.version>
        <spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.version>
    </properties>

    <dependencies>
        <!-- Spring Boot Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Spring AI OpenAI Starter(兼容DeepSeek) -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-openai</artifactId>
        </dependency>

        <!-- Lombok(可选,简化代码) -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

关键点说明:

  • spring-boot-starter-parent 3.4.5:Spring AI要求Spring Boot 3.2以上
  • spring-ai-starter-model-openai:Spring AI官方OpenAI启动器,兼容DeepSeek
  • JDK版本必须是17或更高

Step 2:配置API Key

src/main/resources/application.yml 中添加:

yaml 复制代码
spring:
  application:
    name: spring-ai-demo
  
  ai:
    openai:
      # API Key从环境变量读取,不要硬编码!
      api-key: ${DEEPSEEK_API_KEY}
      # DeepSeek的API地址(不是OpenAI的!)
      base-url: https://api.deepseek.com
      chat:
        options:
          # 使用的模型
          model: deepseek-chat
          # 温度参数,0-2,越高越随机
          temperature: 0.7

为什么用环境变量?

安全。代码会上传到Git仓库,API Key硬编码在里面等于把钥匙放在门口。万一泄露,别人能用你的额度刷爆账单。

设置环境变量:

macOS/Linux(终端):

bash 复制代码
export DEEPSEEK_API_KEY="你的API Key"

Windows(CMD):

cmd 复制代码
set DEEPSEEK_API_KEY=你的API Key

Windows(PowerShell):

powershell 复制代码
$env:DEEPSEEK_API_KEY="你的API Key"

或者在IDEA里配置:Run → Edit Configurations → Environment variables,添加 DEEPSEEK_API_KEY

Step 3:写第一个AI对话

创建主类 src/main/java/com/example/AiDemoApplication.java

java 复制代码
package com.example;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class AiDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(AiDemoApplication.class, args);
    }

    @Bean
    CommandLineRunner demo(ChatClient.Builder chatClientBuilder) {
        return args -> {
            // 构建ChatClient
            ChatClient chatClient = chatClientBuilder.build();
            
            // 发送消息并获取回复
            String response = chatClient
                .prompt("你好,请用一句话介绍Spring框架")
                .call()
                .content();
            
            System.out.println("AI回复:" + response);
        };
    }
}

代码解读:

  1. ChatClient.Builder 由Spring AI Alibaba自动注入,已经配置好DeepSeek连接
  2. .prompt("你的问题") 设置用户消息
  3. .call() 执行同步调用
  4. .content() 提取纯文本回复

Step 4:运行测试

在项目根目录执行:

bash 复制代码
mvn spring-boot:run

等几秒钟,控制台会输出类似这样的内容:

复制代码
AI回复:Spring是一个开源的Java企业级开发框架,提供了依赖注入、面向切面编程、事务管理等核心功能,帮助开发者快速构建可维护的企业级应用。

恭喜,你已经成功在Java里调用AI了!

实际效果:

  • 启动速度:约3秒
  • 首次响应:约1-2秒
  • Token消耗:约50 tokens(问+答)
  • 费用:约0.001元

是的,这一次对话的成本不到一分钱。

五、进阶:做成API服务

实际项目中,你需要把AI能力暴露成HTTP接口。我们加一个Controller。

创建 src/main/java/com/example/controller/ChatController.java

java 复制代码
package com.example.controller;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/chat")
public class ChatController {

    private final ChatClient chatClient;

    public ChatController(ChatClient.Builder chatClientBuilder) {
        this.chatClient = chatClientBuilder
            .defaultSystem("你是一个专业的技术助手,回答简洁准确。")
            .build();
    }

    @PostMapping
    public String chat(@RequestBody String message) {
        return chatClient
            .prompt(message)
            .call()
            .content();
    }

    @GetMapping("/stream")
    public String streamChat(@RequestParam String message) {
        StringBuilder result = new StringBuilder();
        chatClient
            .prompt(message)
            .stream()
            .content()
            .doOnNext(result::append)
            .blockLast();
        return result.toString();
    }
}

测试接口:

bash 复制代码
curl -X POST http://localhost:8080/api/chat \
  -H "Content-Type: text/plain" \
  -d "Java和Python的区别是什么?"

关键改进:

  1. defaultSystem() 设置系统提示词,定义AI的角色和行为
  2. 提供了两个接口:同步 /api/chat 和流式 /api/chat/stream
  3. 真正的服务端应用,可以被前端或其他服务调用

六、踩坑:我遇到的3个问题

问题1:版本兼容性地狱

现象: 启动报错,NoSuchMethodErrorClassNotFoundException

原因: Spring AI 1.0正式版和之前的Milestone版本API差异很大。很多教程还在用0.8或1.0-M3的写法。

解决:

统一使用正式版:

  • Spring AI 1.0.0
  • Spring AI Alibaba 1.0.0.2
  • Spring Boot 3.4.5

不要混用不同版本的依赖。

问题2:API Key配置错误

现象: 启动成功,但调用时报401 Unauthorized。

原因排查:

  1. 环境变量没设置或设置错误
  2. YAML配置里直接写了Key,但格式有问题(比如多了空格)
  3. DeepSeek账户余额不足

正确做法:

yaml 复制代码
# 正确
api-key: ${DEEPSEEK_API_KEY}

# 错误(直接写Key,且容易泄露)
api-key: sk-xxxxxxxxxxxxxx

# 错误(环境变量名写错)
api-key: ${DEEPSEEK_KEY}

验证环境变量是否生效:

java 复制代码
@SpringBootApplication
public class AiDemoApplication {
    public static void main(String[] args) {
        System.out.println("API Key: " + System.getenv("DEEPSEEK_API_KEY"));
        SpringApplication.run(AiDemoApplication.class, args);
    }
}

问题3:DeepSeek base-url写错

现象: 连接超时或404。

原因: Spring AI Alibaba默认配置的是通义千问的地址,需要手动改成DeepSeek的。

正确配置:

yaml 复制代码
spring:
  ai:
    openai:
      base-url: https://api.deepseek.com  # 必须写这个,不是OpenAI的地址

常见错误:

yaml 复制代码
# 错误1:用了OpenAI的地址
base-url: https://api.openai.com/v1

# 错误2:多写了/v1
base-url: https://api.deepseek.com/v1

# 错误3:协议写错
base-url: http://api.deepseek.com  # 应该是https

DeepSeek的API地址是 https://api.deepseek.com,不需要 /v1 后缀。

七、总结:Java开发者的AI上手路线图

5分钟跑通了,然后呢?

第一阶段:熟练使用ChatClient

  • 掌握prompt()、call()、stream()的用法
  • 学会设置系统提示词控制AI行为
  • 尝试不同的temperature参数,观察输出差异

第二阶段:接入业务场景

  • 客服机器人:结合知识库回答用户问题
  • 文档助手:总结、翻译、生成报告
  • 代码助手:代码审查、生成注释、重构建议

第三阶段:进阶能力

  • Function Calling:让AI调用你的Java方法
  • RAG:检索增强生成,让AI基于你的私有数据回答
  • Agent:多步骤任务编排,让AI自己规划执行

关键认知:

Java接AI不难,难的是选对工具、避开坑。

Spring AI Alibaba就是那个对的选择------官方维护、国产模型友好、API简洁。

不要被网上那些"AI从入门到放弃"的复杂教程吓到。先跑通第一个对话,再一步步深入。

毕竟,每个AI专家都是从调用一次API开始的。


本文涉及的所有代码已验证可运行,环境版本:

  • JDK 17
  • Spring Boot 3.4.5
  • Spring AI 1.0.0
  • Spring AI Alibaba 1.0.0.2
  • DeepSeek API(deepseek-chat模型)

有任何问题欢迎留言讨论。

相关推荐
开源情报局1 小时前
79%的企业在用AI Agent,但只有2%规模化落地——问题出在哪?
人工智能·python
YBAdvanceFu2 小时前
开源音乐生成新王炸!ACE-Step用Qwen3+扩散模型实现音色克隆,代码深度解析
人工智能·深度学习·机器学习·llm·数据科学·ace·ai时代
DarkAthena2 小时前
【YaShanDB】给YaShanDB开发R2DBC驱动
java·yashandb·r2dbc
ting94520002 小时前
PandaProbe 技术全解:开源智能体工程平台的可观测性实践
人工智能·开源
zhouwy1132 小时前
AI 编程工具结合 Figma MCP 实现前端设计高保真还原
前端·人工智能·figma
zhuiyisuifeng2 小时前
Gemini3.1Pro如何让团队效率飙升40%?
人工智能
新加坡内哥谈技术2 小时前
文本模式的谎言:为什么现代 TUI 对可访问性而言是一场噩梦
人工智能
傻啦嘿哟2 小时前
AI训练数据准备:用OpenClaw自动化下载海量图片,如何搭配隧道防封
人工智能