SpringAI介绍及SpringBoot+SpringAI+DeepSeek实现案例

一、SpringAI介绍

1.1 定义

Spring AI是Spring官方社区项目,旨在简化Java AI应用程序开发,让Java开发者像使用Spring开发普通应用一样开发AI应用。它将人工智能能力无缝集成到Spring生态系统中,为Java开发者提供了一套工具和框架,使得在Spring应用程序中使用AI技术变得更加简单和高效。

1.2 特点

  • 统一的API抽象:支持多种主流AI服务,如OpenAI、Anthropic、Hugging Face、DeepSeek、Google、Microsoft、Amazon等,开发者可通过标准化接口调用,无需关注不同服务差异,降低代码复杂性,提高可维护性和可移植性,便于在不同AI服务间切换。例如,调用不同模型的聊天功能时,只需使用Spring AI提供的统一的ChatClient接口。
  • 丰富的模型支持:涵盖多种类型的AI模型,包括聊天、文生图、嵌入式模型等。在聊天模型方面,支持OpenAI的ChatGPT系列、Anthropic的Claude等;文本到图像模型中,支持OpenAI的DALL - E、Stability AI等;还提供音频转录和文本到语音模型支持,以及嵌入模型用于将文本或多模态内容转换为向量表示,满足不同领域和场景的应用需求。
  • 低代码集成:借助Spring Boot Starter依赖,实现低代码集成AI服务。开发者只需在项目中添加相应依赖,并在配置文件中配置好AI服务的相关参数,如API Key、基础URL等,即可快速接入AI服务。以接入OpenAI服务为例,在Maven项目中添加spring - ai - openai - spring - boot - starter依赖,然后在application.yml文件中配置OpenAI的API Key和基础URL,就可在代码中直接使用其模型服务。
  • 结构化数据输出:能够将模型的响应直接映射为Java对象,实现结构化数据输出。通过提供OutputParser接口,可根据预定义规则将AI模型返回的自然语言响应解析为结构化的Java对象,如POJO,方便后续的数据处理和存储。例如,在诗歌生成应用中,可将AI模型返回的诗歌文本解析为包含作者、朝代、标题、内容等字段的Java对象。
  • 流式数据响应:支持Flux流式输出,适用于实时对话等高并发场景。在实时对话系统中,用户与聊天机器人交互时,可实现逐字生成响应内容,提升用户体验。
  • 多模态支持:不仅支持文本处理,还能轻松处理图像、音频等多模态数据,API设计保持一致性。例如,可将图片等资源添加到消息对象中,一起发送给AI进行处理。
  • 向量存储增强与RAG框架:提供更完善的向量存储抽象,支持Pinecone、Milvus、Weaviate等主流向量数据库。内置完整的RAG(检索增强生成)框架,让构建企业知识库变得更加简单。
  • 提示工程工具集:引入强大的提示工程工具,让提示模板更灵活。开发者可通过配置模板并填充变量,生成特定的提示内容,提高与AI模型交互的效果。
  • 模型评估与监控:新增模型评估框架,提供与Spring Boot Actuator的无缝集成,可对AI应用运行状况进行监控,包括模型延迟、token使用情况、工具调用和检索等关键指标,方便开发者进行故障排除和性能优化。

1.3 核心功能

  • 机器学习(Machine Learning):支持与主流机器学习框架(如TensorFlow、PyTorch)的集成,提供模型训练、评估和部署的工具,支持分布式训练和推理。
  • 自然语言处理(NLP):提供文本分类、情感分析、命名实体识别等功能,支持与现有NLP库(如spaCy、Hugging Face Transformers)的集成,支持生成式AI模型(如GPT、LLaMA)的调用。
  • 计算机视觉(Computer Vision):支持图像分类、目标检测、图像分割等任务,提供与OpenCV、TensorFlow等计算机视觉库的集成。
  • AI模型管理:提供模型版本控制、部署和监控功能,支持模型的生命周期管理。
  • 云AI服务集成:支持与主流云AI服务(如AWS SageMaker、Google AI Platform、Azure Machine Learning)的集成,提供统一的API来调用云端AI功能。

1.4 应用场景

  • 智能客服系统:利用自然语言处理功能理解用户问题,并给出相应解答。通过Spring AI提供的自然语言处理工具处理用户输入的文本,利用机器学习模型预测用户问题的意图,最终给出回答。例如,电商平台的智能客服可快速响应用户关于商品信息、订单状态等问题。
  • 图像识别应用:在图像管理系统中,使用Spring AI集成图像识别模型,对上传的图片进行自动分类和标注。如安防领域可通过图像识别技术识别监控画面中的人物、物体等。
  • 数据分析与预测:在金融风险预测等应用里,借助Spring AI集成机器学习模型,对金融数据进行分析和预测,帮助企业做出决策。例如,银行可通过分析客户的信用数据、交易记录等,预测客户的违约风险。
  • 智能推荐系统:利用机器学习算法分析用户行为,提供个性化推荐。如电商平台根据用户的浏览历史、购买记录等,为用户推荐符合其兴趣的商品。
  • 自动文档处理:使用NLP技术自动提取和分析文档中的关键信息。例如,企业可自动处理合同、报告等文档,提取重要条款和数据。

二、搭建springboot+springAI+deepSeek实现案例

3.1 环境准备

  • JDK:JDK 17或更高版本,推荐使用JDK 21。可通过命令 java - version 检查JDK版本,若未安装,可从Oracle官网或OpenJDK官网下载安装。
  • 构建工具:Maven或Gradle。
  • DeepSeek API Key:可通过DeepSeek官网(DeepSeek )注册获取,可能需要购买才能访问

3.2 创建Spring Boot项目

  • 使用Spring Initializr:访问https://start.spring.io/ ,进行如下配置:
    • Project:选择Maven Project。
    • Language:选择Java。
    • Spring Boot Version:选择3.2.x及以上版本。
    • Dependencies:勾选Spring Web、Spring AI OpenAI Starter、Lombok(可选)、Spring Boot DevTools(可选,用于开发时的热部署)。
    • 点击“Generate”按钮下载项目压缩包,并解压到本地。
  • 使用IDEA:在IDEA中创建Spring Boot项目,填写项目名字、保存位置、类型选择Maven、包名等信息,在选择依赖时勾选上述相关依赖,然后点击“Create”。

3.3 添加依赖

在项目的pom.xml文件中添加以下依赖:

<properties>  
    <java.version>17</java.version>  
    <spring-ai.version>1.0.0</spring-ai.version> 
</properties> 
<dependencies> 
    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency>  
        <groupId>org.springframework.ai</groupId>  
        <artifactId>spring-ai-starter-model-deepseek</artifactId>  
    </dependency> 
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-test</artifactId>  
        <scope>test</scope>  
    </dependency> 
</dependencies> 
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.ai</groupId>
			<artifactId>spring-ai-bom</artifactId>
			<version>${spring-ai.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

3.4 配置文件

在application.yml中添加DeepSeek的配置信息:

server:  
  port: 8080 
spring:  
  ai:  
    deepseek:  
      api-key: sk - your - api - key  
      base-url: https://api.deepseek.com  
      chat:  
        options:  
          model: deepseek-chat

其中,api - key是在DeepSeek官网注册后获取的密钥,base - url是DeepSeek API的服务地址,model指定使用的模型版本。DeepSeek目前支持deepseek - chat(V3)适用于聊天机器人、智能客服、内容生成等;deepseek - reasoner(R1)专为复杂推理任务设计。

3.5 编写代码

创建一个控制器类,用于处理与DeepSeek的交互,示例代码如下:

package com.springaidemo.control;

import jakarta.annotation.Resource;
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.deepseek.DeepSeekChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

import java.util.Map;

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

    @Resource
    private DeepSeekChatModel chatModel;

    @GetMapping("/ai/generate")
    public Map<String, String> generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", chatModel.call(message));
    }

    @GetMapping("/ai/generateStream")
    public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        var prompt = new Prompt(new UserMessage(message));
        return chatModel.stream(prompt);
    }

}

在上述代码中,generate 方法用于处理普通的非流式请求,generateStream 方法支持流式响应,能够实时返回AI的推理结果。

3.6 运行项目

在IDE中右键点击项目的启动类,选择“Run”启动项目。项目启动后,可通过访问 http://localhost:8080/api/chat/ai/generate?message=你是谁 来获取响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值