SpringAI 大模型应用开发篇-SpringAI 项目的新手入门知识

SpringAI 大模型应用开发篇-SpringAI 项目的新手入门知识
🔥博客主页: 【小扳_-ZEEKLOG博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 SpringAI 概述

        1.1 大模型的使用

        2.0 SpringAI 新手入门

        2.1 配置 pom.xml 文件

        2.2 配置 application.yaml 文件

        2.3 配置 ChatClient

        2.4 同步调用

        2.5 流式调用

        2.6 System 设定

        2.7 日志功能

        2.8 会话记忆功能

        2.8.1 ChatMemory

        2.8.2 添加会话记忆功能


        1.0 SpringAI 概述

        目前大模型应用开发最常见的框架就是 LangChain,然而 LangChain 是基于 Python 语言,虽然有 LangChain4j,但是对于大量使用 Spring 生态的应用来说,适配性就稍微差了些。

        而 Spring 公司推出的 SpringAI 框架,充分利用了 Spring 框架中 AOP、IOC 的能力,可以与现有的 Java 项目无缝融合,非常方便。

        当然,SpringAI 要求的 JDK 版本至少是 JDK17,SpringBoot 也必须是 3.x 的版本才可以,所以如果想要使用 SpringAI,必须先升级 JDK 和 SpringAI 版本才行。

        如果是比较老的项目,也可以使用 LangChain4j,它要求的最低 JDK 版本为 JDK8。

        1.1 大模型的使用

        首先要明确一点,大模型应用开发并不是在浏览器中跟 AI 聊天。而是通过访问模型对外暴露的 API 接口,实现与大模型的交互。

        因此,企业首先需要有一个可访问的大模型,通常有三种选择:

        1)使用开放的大模型 API;

        本次演示的都是使用开放的大模型 API,只需要选择自己合适的大模型,创建出自己的 API Key 就能免费使用很长时间了:

        2)在云平台部署稀有大模型;

        3)在本地服务器部署稀有大模型;

        2.0 SpringAI 新手入门

        2.1 配置 pom.xml 文件

        首先,在 SpringBoot 项目中引入 SpringAI 起步依赖:

        接着,在项目 pom.xml 中添加 SpringAI 的版本信息:

        然后,添加 SpringAI 的依赖管理项:

        最终,完整 pom.xml 依赖如下:

        除了以上 SpringAI 的依赖之外,我还额外引入了在之后的项目开发中所用到的依赖。

        2.2 配置 application.yaml 文件

        我们现在使用的是开放大模型的 API,需要添加以下内容:

        2.3 配置 ChatClient

代码解读:
    ChatClient.builder: 会得到一个 ChatClient.Builder 工厂对象,利用它可以自由选择模型、添加各种自定义配置。

        2.4 同步调用

        接下来,我们定义一个 Controller,在其中接收用户发送的提示词,然后把提示词发送给大模型,交给大模型处理,拿到结果后返回。

        注意,基于 call() 方法的调用属于同步调用,需要所有响应结果全部返回后才能返回给前端。

启动项目,在浏览器中访问:http://localhost:8080/ai/chat?prompt=你好

        2.5 流式调用

        同步调用需要等待很长时间页面才能看到结果,用户体验不好。为了解决这个问题,我们可以改进调用方式为流式调用。

        在 SpringAI 中使用了 WebFlux 技术实现流式调用。

        重启测试,再次访问:

        2.6 System 设定

        可以发现,当我们询问 AI 你是谁的时候,它回答自己是 DeepSeek-R1,这是大模型底层的设定。如果我们希望 AI 按照新的设定工作,就需要给它设置 System 背景信息。

        在 SpringAI 中,设置 System 信息非常方便,不需要在每次发送时封装到 Message,而是创建 ChatClient 时指定即可:

        2.7 日志功能

        默认情况下,应用于 AI 的交互时不记录日志的,我们无法得知 SpringAI 组织的提示词到底长什么样,有没有问题。这样不方便我们调试。

        SpringAI 基于 AOP 机制实现与大模型对话过程的增强、拦截、修改等功能。所有的增强通知都需要实现 Advisor 接口。

        Spring 提供了一些 Advisor 的默认实现,来实现一些基本的增强功能:

        1)SimpleLoggerAdvisor:日志记录的 Advisor。
        2)MessageChatMemoryAdvisor:会话记忆的 Advisor。
        3)QuestionAnswerAdvisor:实现 RAG 的 Advisor。

        只需要在配置 ChatClient  添加日志记录 Advisor:

        接下来,修改日志级别:

        重启项目,再次和 AI 聊天就可以在控制台上看到 AI 的日志输出了。

        2.8 会话记忆功能

        现在,我们的 AI 聊天机器人是没有记忆功能的,上一次聊天的内容,下一次就忘掉了。我们之前说过,让 AI 有会话记忆的方式就是把每一次历史对话内容拼接到 Prompt 中,一起发送过去。是不是还挺麻烦的。别担心,好消息是,我们并不需要自己来拼接,SpringAI 自带了会话记忆功能,可以帮我们把历史会话保存下来,下一次请求 AI 时会自动拼接,非常方便。

        2.8.1 ChatMemory

        会话记忆功能同样是基于 AOP 实现,Spring 提供了一个 MessageChatMemoryAdvisor 的通知,我们可以像之前添加日志通知一样添加到 ChatClient 即可。

        不过,要注意的是,MessageChatMemoryAdvisor 需要指定一个 ChatMemory 实例,也就是会话历史保存的方式。

ChatMemory 接口声明如下:

        可以看到,所有的会话记忆都是与 conversationid 有关联的,也就是会话 Id,将来不同会话 id 的记忆自然是分开管理的。

        目前,在 SpringAI 中有两个 ChatMemory 的实现:
        1)InMemoryChatMemory:会话历史保存在内存中
        2)CassandraChatMemory:会话保存在 Cassandra 数据库中(需要引入额外依赖,并且绑定了向量数据库,不够灵活)

        2.8.2 添加会话记忆功能

        首先注册 chatMemory 对象:

        然后添加到 ChatClient 中:

        最后在和 AI 聊天的时候,为了区分每一个用户对应着不同的会话记录,因此需要传入用户 ID 进行区分:

Read more

前端国际化实现:别再只支持中文了

前端国际化实现:别再只支持中文了

前端国际化实现:别再只支持中文了 毒舌时刻 这代码写得跟网红滤镜似的——仅供参考。 各位前端同行,咱们今天聊聊前端国际化。别告诉我你的应用只支持中文,那感觉就像只卖一种口味的冰淇淋——单调又无趣。 为什么你需要国际化 最近看到一个项目,所有文本都硬编码在代码里,要支持英文时傻眼了,我差点当场去世。我就想问:你是在开发应用还是在开发中文专用软件? 反面教材 // 反面教材:硬编码文本 function LoginForm() { return ( <form> <h1>登录</h1> <input placeholder="请输入邮箱" /> <input placeholder="请输入密码" type="password"

Qwen3-VL-WEBUI实战案例:图文理解与GUI操作完整步骤详解

Qwen3-VL-WEBUI实战案例:图文理解与GUI操作完整步骤详解 1. 背景与技术定位 随着多模态大模型的快速发展,视觉-语言理解能力已成为AI代理系统的核心竞争力。阿里云推出的 Qwen3-VL 系列模型,作为Qwen系列迄今为止最强大的视觉语言模型,在文本生成、图像理解、空间推理和GUI交互等方面实现了全面升级。 其中,Qwen3-VL-WEBUI 是一个基于开源项目构建的本地化推理界面工具,内置了 Qwen3-VL-4B-Instruct 模型,专为开发者和研究人员提供开箱即用的图文理解与图形用户界面(GUI)操作能力。该WEBUI支持从图像识别到自动化任务执行的端到端流程,尤其适用于需要“看图决策+操作反馈”的智能代理场景。 本篇文章将围绕 Qwen3-VL-WEBUI 的实际应用,详细介绍其部署方式、核心功能演示以及在图文理解与GUI自动化中的完整实践路径。 2. 核心功能解析 2.1 视觉代理能力:真正的“看得懂、做得对” Qwen3-VL 最具突破性的能力之一是其 视觉代理(Visual Agent)功能,能够直接观察并理解PC或移动设备的GUI界

不会代码也能玩转AI抠图?这个WebUI镜像太友好了

不会代码也能玩转AI抠图?这个WebUI镜像太友好了 1. 为什么说这款抠图工具特别适合普通人? 你有没有遇到过这种情况:想做个电商主图,但模特照片背景太乱;想换个微信头像,可头发丝儿和背景粘在一起分不清;或者公司要发宣传册,上百张产品图等着去底……传统修图靠手动抠图,费时又费力,PS用得还不熟练。 现在,有个叫 cv_unet_image-matting图像抠图 webui二次开发构建by科哥 的AI镜像,彻底改变了这件事。它最大的亮点是——不需要写一行代码,点几下鼠标就能完成高质量抠图,连批量处理都安排得明明白白。 我试用了几天,最直观的感受就是: “以前花半小时抠一张人像,现在3秒搞定,发丝边缘都很干净。” 这背后其实是U-Net模型在发力,但它已经被封装得极其友好,打开网页就能用。无论你是运营、设计师、小店店主,还是完全不懂技术的小白,都能轻松上手。 2. 快速启动与界面初体验 2.1 如何快速运行这个镜像? 整个过程非常简单,只需要一条命令: /bin/bash /root/run.

vue3:实现H5免费人脸识别与活体检测插件及完整示例源码(包括人脸核身、人脸对比等案例) vue3 h5端人脸识别功能前端免费不依赖服务器或第三方接口纯前端方案【手机移动端H5网页+微信公众号网页】

vue3:实现H5免费人脸识别与活体检测插件及完整示例源码(包括人脸核身、人脸对比等案例) vue3 h5端人脸识别功能前端免费不依赖服务器或第三方接口纯前端方案【手机移动端H5网页+微信公众号网页】

说明介绍 vue3项目(H5端+微信公众号网页) 纯前端免费人脸识别功能,包括人脸核身、活体检测、人脸对比等示例代码,调用手机摄像头进行识别并处理(以及浏览器摄像头权限问题处理),以及张嘴摇头等指引动作,提供示例源码兼容安卓与苹果IOS手机,功能可适用于大部分人脸识别项目需求! 支持Vue3和Vue2,新手拷贝代码运行! 😃 付费后没解决问题直接找我+指导你解决为止 完整源码