当前位置: 首页 > news >正文

springboot+springai调用deepseek实现与大模型对话聊天

引言

在当今时代,人工智能发展迅速,国内外出现了许多大模型研究公司,如openai的chatgpt,深度求索的deepseek,阿里的通义千问等等。大模型的出现极大方便了开发者的工作,而deepseek作为目前国内大模型语言的领头羊,拥有强大性能和丰富功能,在自然语言处理领域展现出了卓越的能力。在如今大模型横行的时代,spring官方为迎接人工智能潮流,推出了springai,springai集成了openai、olloma等多家大模型语言公司的模型,为开发者提供了便捷、高效的 AI 调用方式。本文将详细介绍如何通过 springboot整合springai调用deepseek实现智能聊天帮助开发者快速上手并利用这两者的优势构建强大的 AI 应用。

一、SpringAI与DeepSeek介绍

1.SpringAI介绍

Spring AI 是 Spring 官方团队在 2023 年底推出的新项目,旨在简化在 Spring 应用中集成生成式 AI(如 OpenAI、Hugging Face 等大语言模型)的开发流程。它提供了统一的 API 接口,使得开发者可以方便地与各种 AI 服务进行交互,包括大语言模型、图像识别、语音识别等。Spring AI 的核心优势在于其与 Spring 框架的无缝集成,以及对多种 AI 服务的广泛支持,能够大大提高开发效率,降低开发成本。

2.DeepSeek介绍

DeepSeek 是一款具有高度智能化和高性能的大语言模型。它基于先进的深度学习架构,经过大规模数据的训练,能够处理多种自然语言处理任务,如文本生成、问答系统、文本分类等。DeepSeek 在中文处理方面表现尤为出色,具有优秀的语言理解和生成能力,能够满足不同场景下的需求。此处提供一个可以使用的国内deepseek密钥获取,不会出现服务异常情况,相对比较稳定。硅基流动官网 新用户注册即可获取14元,充值也相对比较便宜,可以避免现在deepseek无法充值的情况。

二、项目的创建与配置

1.环境准备

springboot是主流Java框架,使用springboot前需要准备好Java环境,建议使用JDK17及以上版本,输入一行命令即可查看自己JDK版本。

java -version

如果没有下载JDK,可以到 Oracle官网自行下载安装。

2.创建springboot项目

目前主流的Java开发工具IDEA,我们使用IDEA new一个springboot项目,填写好项目名字,保存位置,类型选择maven,包名等信息后点击next。


看到这个页面后,springboot版本保持默认,依赖我们暂时只选择Spring Web依赖,然后点击create。

创建出来的项目长这样

然后我们打开pom.xml文件,手动导入springAI的依赖坐标。

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        </dependency>

如果发现导入坐标依赖非常慢或者导不进来可以使用阿里云镜像

    <repositories>
        <repository>
            <id>aliyun</id>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>

3.apikey获取

我们推荐使用第三方硅基流动官方网站(https://cloud.siliconflow.cn),注册账号会免费给2000万token。

接下来我们创建apikey,这个apikey后续在配置中会用到。

三、核心代码实现

1.apikey配置

在application.yaml中配置

spring:
  ai:
    openai:
      base-url: https://api.siliconflow.cn/
      api-key: your-api-key-here
      chat:
        options:
          model: deepseek-ai/DeepSeek-V3

2.人设设定

可以自主配置大模型的预设,用户每次询问都会默认加上这句话。

@Configuration
public class AIConfig {

    @Bean
    ChatClient chatClient(ChatClient.Builder builder){
        return builder.defaultSystem("你现在是一名智能机器人,你的名字叫DeepSeek,你是由中国深度求索公司自主研发训练。").build();
    }
}

3.流式对话

流式对话就是,ai不会一次性加载完响应,而是以流的方式,一两个字的响应。

@RestController
public class ChatAIController {

    @Resource
    private ChatClient chatClient;

    @GetMapping(value = "/chat/stream", produces ="text/event-stream;charset=utf-8")
    public Flux<ServerSentEvent<String>> streamChat(@RequestParam("message") String message) {

        return chatClient.prompt(message)
                .stream().content().map(content -> ServerSentEvent.builder(content).event("message").build())
                .concatWithValues(ServerSentEvent.builder("[DONE]").build())
                .onErrorResume(e -> Flux.just(ServerSentEvent.builder("Error: " + e.getMessage()).event("error").build()));
    }

}

4.响应结果 

相关文章:

  • Log4j2漏洞攻略
  • H.264视频编解码:从原理到应用
  • 【日志队列】log日志实时写入队列,流式输出
  • 【Java 基础(人话版)】进制转换
  • 【区块链】以太坊
  • 什么是云原生?
  • 前端主题切换架构设计方案
  • 蓝耘携手通义万象 2.1 图生视频:开启创意无限的共享新时代
  • 【软设中级】软件设计师中级专题复习:(专题二)程序语言部分
  • 从AI产品经理视角深度剖析Manus:技术、定位与商业化的三重跃迁
  • 如何快速检测光模块内部光纤裂纹?
  • C++ primer plus 类和对象下
  • 从头开始学C语言第二十三天——指针概念
  • MFC控件按钮的使用
  • 深入浅出消息队列 (MQ)
  • Java 断言(Assert)机制
  • pgAdmin 4汉化,设置界面为中文
  • 机器学习(七)
  • 太速科技-636-基于FMC的Kintex XCKU060高性能PCIe载板
  • LVI-SAM、VINS-Mono、LIO-SAM算法的阅读参考和m2dgr数据集上的复现(留作学习使用)
  • 讲座|消逝之钟:《红楼梦》与《布登勃洛克一家》中的时间观
  • 共建医学人工智能高地,上海卫健委与徐汇区将在这些方面合作
  • 上海制造佳品汇大阪站即将启幕,泡泡玛特领潮出海
  • 澎湃·镜相第二届非虚构写作大赛初选入围名单公示
  • 92岁上海交大退休教师捐赠百万元给学校,其父也曾设奖学金
  • 杨文庄当选中国人口学会会长,曾任国家卫健委人口家庭司司长