1. Spring AI 版本选择

从 1.0.0-M6 开始,正式版本已经发布到 Maven Central 仓库,可以直接通过 Maven/Gradle 引入依赖,无需额外配置仓库地址或修改构建文件。之前的版本则有所区别,所以网上一些博客的代码直接copy运行maven会报错,这里以1.0.0版本为例简单讲一下怎么配置及简单使用。

1.1 Step1-在pom.xml文件中添加如下配置
<!-- 添加快照存储库 -->
<repositories>
  <repository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <releases>
      <enabled>false</enabled>
    </releases>
  </repository>
  <repository>
    <name>Central Portal Snapshots</name>
    <id>central-portal-snapshots</id>
    <url>https://central.sonatype.com/repository/maven-snapshots/</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

<!-- Spring AI 依赖关系管理 -->
<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>

如果需要全局生效,可以在maven的setting.xml中进行配置

1.2 Step2-修改maven的settings.xml
<mirror>
    <id>my-mirror</id>
    <!-- 修改<mirrorof>即可,其他的保持你原本的配置就好 -->
    <mirrorOf>*,!spring-snapshots,!central-portal-snapshots</mirrorOf>
    <url>https://my-company-repository.com/maven</url>
</mirror>

当 Maven 尝试从某个仓库下载依赖时,会检查 mirrorOf规则,如果匹配,则请求会被重定向到镜像地址。*表示 ​​所有仓库请求​​ 都会被重定向到你的镜像。如果你的镜像仓库(如 https://my-company-repository.com/maven)​​没有同步 Spring 快照仓库​​,Maven 将无法从原始地址(如 https://repo.spring.io/snapshot)下载依赖,导致构建失败。这里的配置作用就是排除 Spring 存储库,允许 Maven 直接访问 Spring 快照存储库。

2. DeepSeek API
2.1 注册账号

DeepSeek开放平台官网注册。

2.2 创建API keys

名字随便填一个即可。这里需要注意,创建好后先复制保存,×掉以后就不能查看和复制完整的API keys了。一定不能泄露这个API keys到网上。
在这里插入图片描述

2.3 充值

随便充点先玩玩即可。
在这里插入图片描述

3. SpringBoot项目中使用
3.1 创建SprintBoot项目

首先在IDEA中创建一个基本的SpringBoot项目,按照上面说的配置好Spring AI。

3.2 配置application.yml
spring:
  ai:
    deepseek:
      api-key: "yuor-API-keys"  # 替换为你的 OpenAI API 密钥
	  # base-url: "api.deepseek.com"    # 默认值,通常无需修改/
      chat:
        options:
          model: "deepseek-chat"                # 默认模型
          temperature: 0.8                      # 生成文本的随机性控制
3.3 测试Demo
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.prompt.SystemPromptTemplate;
import org.springframework.ai.deepseek.DeepSeekChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import java.util.List;
import java.util.Map;

@RestController
public class ChatController {

    private final DeepSeekChatModel chatModel;

    @Autowired
    public ChatController(DeepSeekChatModel chatModel) {
        this.chatModel = chatModel;
    }

	/*
	极简写法
	*/
    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", chatModel.call(message));
    }
    
	/*
	可以自定义prompt进行调用,比如这实现的功能是对用户发送的MySQL建表语句进行评审。
	*/
    @GetMapping("/ai/generate_by_prompt")
    public Map generateByPrompt(@RequestBody Map<String, String> requestBody) {
    	String SQL_AUDIT_PROMPT = """
            您是软件工程专家,我刚刚发送了数据库设计DDL语句,请对数据库表结构设计进行评审反馈建议,参考: 数据模型评审(实体完整性:检查是否所有实体都已正确定义,
            并且主键和外键关系正确无误。属性完整性:确保每个属性的数据类型、长度和约束(如非空、唯一性)都符合业务
            需求。关系完整性:检查实体之间的关系是否正确,包括一对一、一对多、多对多关系。)
            """;
    	
        // 从请求体中获取用户消息,也就是你补充的数据
        String userMsg = requestBody.get("userMsg");

        // 创建系统消息,也就是预设的提示词模板
        SystemMessage systemMessage = new SystemMessage(SQL_AUDIT_PROMPT);

        // 构造 Prompt(包含系统提示和用户消息)
        Prompt prompt = new Prompt(
                List.of(
                        new UserMessage(userMsg),  // 用户消息
                        systemMessage              // 系统消息
                )
        );

        // 调用 DeepSeek 接口并返回结果
        return Map.of("generation", chatModel.call(prompt));
    }
}

启动项目后,使用Postman之类的进行测试,这里我用的Reqable

URL​​: GET http://localhost:8080/ai/generate_by_prompt

​​Body (JSON)​​:
{
  "userMsg": "CREATE TABLE user (user_id INT, username VARCHAR(20), password VARCHAR(20), email VARCHAR(255), registration_date TIMESTAMP, PRIMARY KEY (username));"
}

测试结果如下:
在这里插入图片描述
更多细节,可以参考Spring AI文档

Logo

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

更多推荐