Spring Boot集成Spring Ai框架【详解 搭建Spring Ai项目,以及简单的ai大模型智能体应用,附有图文+示例代码】

article/2025/8/15 10:19:27

文章目录

  • 一.Spring Ai介绍
    • 1.0 认识Spring Ai
    • 1.1 特征
    • 1.1 大模型专业名字介绍
      • 1.1.1 RAG(检索增强生成)
        • RAG 的基本原理
        • RAG 的关键技术
        • RAG 的优势
        • RAG 的应用场景
      • 1.1.2 fine-tuning(微调)
      • 1.1.3 function-call(函数调用)
    • 1.2 创建简单的Spring Ai项目
  • 二.Spring Ai简单的智能应用
    • 2.1 智能提问实现
    • 2.2 角色预设
    • 2.3 流式响应
    • 2.4 ChatClient和ChatMode区别
    • 2.5 文生图(gpt-4模型和deepseek-r1模型)
    • 2.6 文生语音
    • 2.7 语音翻译
    • 2.8 多模态
    • 2.9 function-call请求
    • 持续待更新...........

一.Spring Ai介绍

Spring Ai 官方:https://spring.io/projects/spring-ai

1.0 认识Spring Ai

Spring AI 是一个用于 AI 工程的应用程序框架。 其目标是将 Spring 生态系统设计原则(如可移植性和模块化设计)应用于 AI 领域,并将使用 POJO 作为应用程序的构建块推广到 AI 领域。

在这里插入图片描述

Spring AI 的核心是解决了 AI 集成的根本挑战:将您的企业数据和 APIAI 模型连接起来。

1.1 特征

Spring AI 提供以下功能:

  • 支持所有主要的 AI 模型提供商,例如 Anthropic、OpenAI、Microsoft、Amazon、Google 和 Ollama。支持的模型类型包括:
    • 聊天完成
    • 嵌入
    • 文本到图像
    • 音频转录
    • 文本到语音
    • 适度
  • 支持跨 AI 提供商对同步和流式处理 API 选项的可移植 API 支持。此外,还可以访问特定于模型的特征。
  • 结构化输出 - AI 模型输出到 POJO 的映射。
  • 支持所有主要的矢量数据库提供商,例如 Apache Cassandra、Azure Vector Search、Chroma、Milvus、MongoDB Atlas、Neo4j、Oracle、PostgreSQL/PGVector、PineCone、Qdrant、Redis 和 Weaviate
  • 跨 Vector Store 提供商的可移植 API,包括一种新颖的类似 SQL 的元数据过滤器 API。
  • 工具/函数调用 - 允许模型请求执行客户端工具和函数,从而根据需要访问必要的实时信息。
  • 可观察性 - 提供对 AI 相关作的见解。
  • 用于数据工程的文档注入 ETL 框架。
  • AI 模型评估 - 帮助评估生成的内容并防止幻觉响应的实用程序。
  • ChatClient API - 用于与 AI 聊天模型通信的 Fluent API,惯用性类似于 WebClient 和 RestClient API。
  • Advisors API - 封装重复的生成式 AI 模式,转换发送到和传出语言模型 (LLM) 的数据,并提供跨各种模型和用例的可移植性。
  • 支持 Chat Conversation Memory and Retrieval Augmented Generation (RAG)。
  • Spring Boot 所有 AI 模型和向量存储的自动配置和启动器 - 使用 start.spring.io 选择所需的模型或向量存储。

上述内容摘自:Spring Ai 官网。

1.1 大模型专业名字介绍

1.1.1 RAG(检索增强生成)

在这里插入图片描述

大致思路:假如有个智能客服,它会优先去查询向量数据中数据,将查到的相关数据给 prompt对象 ,然后通过大模型响应给应用程序。

RAG 的基本原理

RAG 主要由 两个阶段 组成:

  1. 检索阶段(Retrieval)

    • 在生成文本之前,模型会从一个 外部知识库(如向量数据库、文档集合等)检索出相关的信息。
    • 这种检索通常使用 向量搜索(如 FAISS、Milvus)或基于搜索引擎(如 Elasticsearch)。
  2. 生成阶段(Generation)

    • 结合检索到的内容,大语言模型(如 GPT、LLaMA)使用这些外部信息来生成更准确、符合事实的回答。
    • 这种方式可以减少幻觉(hallucination),让生成的内容更加可信。
RAG 的关键技术

向量数据库

  • 用于存储和检索文本嵌入(text embeddings)。
  • 常见的向量数据库:
    • FAISS(Facebook AI Similarity Search)
    • Milvus
    • Pinecone
    • Weaviate

文本嵌入(Embedding)

  • 使用模型(如 OpenAI Embeddings、BERT、Sentence-BERT)将文本转换为向量,便于相似度搜索。

检索策略

  • 稠密检索(Dense Retrieval):基于神经网络(如 DPR、ColBERT),效果更优,但计算成本较高。
  • 稀疏检索(Sparse Retrieval):如 BM25,传统的基于关键词的检索方法。
RAG 的优势
  • 减少幻觉:模型基于真实检索到的内容生成回答,降低胡编乱造的概率。
  • 增强知识:即使预训练数据缺乏某些信息,模型仍可动态检索外部知识库。
  • 实时更新:相比 LLM 需要重新训练,RAG 只需更新知识库,适用于动态领域(如法律、医学等)。
  • 更精准回答:相比纯 LLM,RAG 结合检索数据,可提供更精确的参考来源。
RAG 的应用场景
  • 智能问答系统(如企业知识库问答、金融/法律咨询)
  • 代码自动补全(检索 GitHub 代码库,提高准确性)
  • 医疗辅助诊断(结合医学文献,提高生成答案的专业性)
  • 法律法规检索(查询法律条文,生成更符合规范的解读)
  • 客服机器人(实时检索 FAQ,提升客服效率)

1.1.2 fine-tuning(微调)

在这里插入图片描述

1.1.3 function-call(函数调用)

在这里插入图片描述

1.2 创建简单的Spring Ai项目

  • 官方提示:Spring AI 支持 Spring Boot 3.2.x 和 3.3.x
  • jdk17+
    (☞本地安装多个JDK版本自由切换)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二.Spring Ai简单的智能应用

(延续使用1.2中创建的Spring Ai 应用。)

2.1 智能提问实现

【yml配置】

spring:ai:openai:api-key: you_api_keybase-url: 你的api_key的请求路径chat:options:model: gpt-3.5-turbo  # 调用的哪个模型名称

由于调用 的是国外的open ai 大模型,需要“魔法”,所以我这里搞了中转站,请求中转站的 api-key和base-url,具体的做法 淘宝 搜 open api key

【controller】

package com.hz.controller;import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Value;
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;/*** @Author: weiyi* @Description:* @Date 2025/2/28 21:24* @ClassName AiController* @Version 1.0*/@RestController
@RequestMapping("/ai")
public class AiController {//智能对话的客户端private final ChatClient chatClient;public AiController(ChatClient.Builder chatClientBuilder) {this.chatClient = chatClientBuilder.build();}@GetMapping("/ai01")public String generation(@RequestParam(value = "message", defaultValue = "给我讲个笑话")String message) {return this.chatClient.prompt()  // prompt:提示词.user(message) // message:用户输入的信息.call() // 调用大模型 远程请求大模型.content(); // 获取大模型的返回结果}
}

上述代码是 参考的spring Ai 官方文档

在这里插入图片描述

【测试】

http://localhost:8080/ai/ai01?message=列出spring中的重点概念

在这里插入图片描述

这个场景模拟的是在大模型如deepseek等对话窗口的提问。

2.2 角色预设

假如你希望是一个特定场景下的智能体对话,可以进行角色预设。

在项目中的config包中创建AiConfig配置类

/*** @Author: weiyi* @Description:* @Date 2025/2/28 21:40* @ClassName AiConfig* @Version 1.0*/
@Configuration
public class AiConfig {@BeanChatClient chatClient(ChatClient.Builder builder) {return builder.defaultSystem("你现在不是 chat gpt 了," +"你是一个精通古代诗人的智能助手,有个诗人叫维一,知识渊博").build();}}

【修改controller】

在这里插入图片描述

/*** @Author: weiyi* @Description:* @Date 2025/2/28 21:24* @ClassName AiController* @Version 1.0*/@RestController
@RequestMapping("/ai")
public class AiController {//智能对话的客户端@Autowiredprivate  ChatClient chatClient;// public AiController(ChatClient.Builder chatClientBuilder) {//     this.chatClient = chatClientBuilder.build();// }@GetMapping("/ai01")public String generation(@RequestParam(value = "message", defaultValue = "给我讲个笑话")String message) {// prompt:提示词return this.chatClient.prompt().user(message) // message:用户输入的信息.call() // 调用大模型 远程请求大模型.content(); // 获取大模型的返回结果}
}

测试

在这里插入图片描述

2.3 流式响应

通俗点说流式响应就是将生成的文本内容一个字一个字的显示出来。

/*** @description: 流式响应* @author: weiyi* @date: 2025/3/1 19:08* @param: [message]* @return: reactor.core.publisher.Flux<java.lang.String>**/@GetMapping(value = "/ai02", produces = "text/html;charset=utf-8")public Flux<String> generation02(String message){Flux<String> output = chatClient.prompt().user(message).stream().content();return output;}

如果不设置 produces = “text/html;charset=utf-8” 输出内容会出现中文乱码。

在这里插入图片描述

2.4 ChatClient和ChatMode区别

ChatClient Api 里是大模型通用的功能。

ChatMode Api 是大模型特有功能。假如用deepseek特有的模型功能需要用ChatMode Api

在这里插入图片描述

如:用open ai 下模型:

在这里插入图片描述

@Autowiredprivate ChatModel chatModel;@GetMapping(value = "/ai03", produces = "text/html;charset=utf-8")public String generation03(@RequestParam(value = "message",defaultValue = "给我讲个笑话") String message){ChatResponse response = chatModel.call(new Prompt(message, // new UserMessage(message)OpenAiChatOptions.builder().model("gpt-3.5-turbo").temperature(0.4)//让生成文字更有温度.build()));//等同于 .contentreturn response.getResult().getOutput().getText();}

在这里插入图片描述

2.5 文生图(gpt-4模型和deepseek-r1模型)

在这里插入图片描述
在这里插入图片描述

spring:ai:openai:api-key: xxxxxbase-url: xxxxxxchat:options:model: gpt-4-32k

@GetMapping(value = "/ai05")public String generation05(@RequestParam(value = "message",defaultValue = "画个龙") String message) {ImageResponse response = openaiImageModel.call(new ImagePrompt(message, // 图片提示词OpenAiImageOptions.builder().quality("hd") // 图片质量.withModel(OpenAiImageApi.DEFAULT_IMAGE_MODEL) // 图片模型.N(1) // 生成图片数量.height(1024).width(1024).build()));return response.getResult().getOutput().getUrl();}

会生成图片的url地址:

在这里插入图片描述

将生成的图片地址粘贴浏览器地址栏:
(这是调用gpt4模型生成的)
在这里插入图片描述
【换成deepseek-r1模型】
☞deepseek官网文档
在这里插入图片描述

在这里插入图片描述
这是调用deepseek-r1模型生成。
在这里插入图片描述

2.6 文生语音

持续待更新…

2.7 语音翻译

持续待更新…

2.8 多模态

持续待更新…

2.9 function-call请求

持续待更新…

持续待更新…


http://www.hkcw.cn/article/SSLMyGvxCf.shtml

相关文章

如何使用服务器训练AI模型

如何使用服务器训练模型 大家好&#xff0c;这里是肆十二&#xff0c;之前有小伙伴反馈说自己的电脑只有cpu&#xff0c;没有GPU&#xff0c;也想要体验一下使用gpu训练模型&#xff0c;或者有的小伙伴反馈说自己所在的实验室提供了linux的服务器&#xff0c;但是不怎么会用&a…

(4)ModalAI VOXL

文章目录 前言 4.1 购买什么 4.2 硬件设置 4.3 VOXL 摄像机配置 4.4 自动驾驶仪配置 4.4.1 使用 OpticalFlow 进行 EKF3 光源转换 4.5 视频 前言 本文介绍了如何将 ModalAI VOXL-CAM 与 ArduPilot 配合使用&#xff0c;以替代 GPS&#xff0c;从而实现 Loiter、PosHold…

Cursor —— AI编辑器 使用详解

Cursor - The AI Code Editor 一、Cursor 是什么&#xff1f; Cursor 是一款优秀的AI代码编辑器&#xff0c;它内置了 Deepseek-R1、GPT-4、Claude等 AI 模型。 简单说&#xff0c;就是&#xff1a;Cursor VS Code 编辑器 AI 大模型 Cursor 功能特性&#xff08;代码补全、…

开源免费!AI视频分析神器,智能识别画面,1秒提取关键帧!附详细教程

大家好&#xff01;我是羊仔&#xff0c;专注AI工具、智能体、编程。 在AI时代&#xff0c;每天都有各种各样的新鲜事物涌现&#xff0c;简直可以用“日新月异”来形容。 羊仔就是个喜欢在AI世界里瞎折腾的人&#xff0c;专门给大家伙儿挖掘那些好用又好玩的AI工具。 今天&am…

Browser-Use WebUI:让AI自动使用浏览器帮你查询信息执行任务

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

从零开始:如何用Python训练一个AI模型(超详细教程)

引言 人工智能&#xff08;AI&#xff09;——一个熟悉又神秘的词汇。我们常听说它可以生成诗歌、编写代码、创作艺术&#xff0c;甚至回答各种问题。然而&#xff0c;当你想亲手实现一个“AI 模型”时&#xff0c;却可能感到无从下手。这篇教程正是为你准备的&#xff0c;将带…

黄觉凭《藏海传》火出圈 反派角色引关注

《藏海传》中,平津侯庄芦隐成为火出圈的配角之一。这个角色贯穿整部剧,是核心反派,阴鸷多疑且心狠手辣。黄觉饰演的平津侯在剧中权倾朝野,是肖战饰演的男主藏海复仇计划的主要目标。他与多位演员有精彩的对手戏,无论是与藏海之间的对决还是与曹静贤之间的较量,都为观众带…

马斯克再度否认“吸毒成瘾” 澄清媒体报道不实

当地时间5月31日,马斯克在社交平台上回应了有关他“经常服用氯胺酮、摇头丸和迷幻蘑菇”以及“吸毒成瘾导致膀胱问题”的报道。他表示这些说法并不属实,并指责《纽约时报》的报道是胡编乱造。马斯克解释说,几年前他曾尝试过处方氯胺酮,并在X平台上公开谈论过此事。他认为这…

饲养员当大厨 大熊猫吃上美味粽子 创意粽情温暖国宝心

昨天是端午节,长沙生态动物园为大熊猫准备了特别的粽子。饲养员们发挥创意与爱心,为这些国宝打造了一场舌尖上的惊喜。为了让大熊猫吃得健康又开心,饲养员们在食材选择上费尽心思。新鲜的苹果、火龙果、青提、橙子、玉米、圣女果和胡萝卜等被精心挑选出来。粽叶经过严格的清…

专家:中国战机见证中巴友谊 体系化空战显神威

巴参谋长联席会议主席在接受采访时提到,歼-10CE和“枭龙”战机在体系化空战中表现出色。他表示,“阵风”和歼-10CE都是优秀的飞机,但体系化空战是取得胜利的关键。智能技术、网络技术等现代技术的应用对空战胜利起到了重要作用。他特别表扬了中国的歼-10CE和“枭龙”战机,称…

一分钟带你盘点粤港澳车展 七大展馆亮点纷呈

2025粤港澳大湾区国际汽车博览会的展位图已经公布,展会将于5月31日开幕,持续至6月8日,在深圳国际会展中心举行。本次车展设置了7个展馆,每个展馆都有各自的特色和看点。1号馆是比亚迪的专馆,包括比亚迪、腾势、仰望、方程豹等品牌将参展。此外,还将展示比亚迪的多项前沿技…

网友偶遇撒贝宁大喊我去过赛里木湖 美景让人直呼没白活

整理露营装备的北京摄影师小王突然抬头问我:“你见过凌晨五点的赛里木湖吗?”他蹲在帐篷前,手里握着三脚架,镜片上还沾着草屑。“去年我刷到撒老师那句‘白活论’,当天就订了机票。结果你猜怎么着?我在这湖边住了三天,每天换着角度拍,手机相册愣是没一张重复的风景!”…

比亚迪下一步的发展究竟会怎样 技术创新引领未来

在汽车江湖里,比亚迪无疑是一颗耀眼的新星。近年来,它在新能源汽车领域一路狂飙,让无数人为之侧目。那么,比亚迪未来3年的发展空间到底有多大呢?技术创新是比亚迪发展的强劲引擎。以刀片电池为例,凭借高安全性和长续航能力在市场上出尽风头。相关数据显示,搭载刀片电池的…

《折腰》编剧说刘宇宁就是魏劭的样子 铁血柔情的完美诠释

《折腰》的结局让人不舍,这部剧期待已久,突然开播带来了惊喜。短短半个月的追剧时光转瞬即逝,观众们又要从《折腰》的世界中抽离出来。刘宇宁饰演的男主魏劭是一个让人印象深刻的角色。终于迎来了一个不那么传统的古装角色,但他的命运依旧坎坷。坊间流传着关于魏劭的各种说…

专家谈中国新一代导弹技术布局 迈向全球领先

在印巴冲突发生前,非军迷朋友可能对我国的霹雳15E导弹并不熟悉。然而,5月7日印巴之间的一场空战让这款导弹名声大噪,其击落六架战斗机的优异战绩令人惊讶。人们这才意识到,这款起初不起眼的导弹已成为现役空空导弹中最强的存在之一。在我国,霹雳15E只是自用版霹雳15导弹的…

尊界S800意向车主家里都是什么车 华为科技颠覆豪车市场

经过长时间的预热,鸿蒙智行旗下的尊界S800于5月30日正式发布,售价从70.8万元起,最高配置可达111.8万元。此前,鸿蒙智行旗下已有问界、智界、享界三个品牌,分别在20万至60万的不同细分市场取得成功。其中,问界M9连续数月蝉联国内50万级豪华车销冠,对传统豪华品牌BBA造成冲…

24小时内俄3处铁路设施被毁 动脉切割引发恐慌

24小时内,俄罗斯西部交通网遭遇两起严重爆炸事件。5月31日晚,布良斯克州一座客运列车被桥体残骸砸中,造成7人死亡、47人受伤。紧接着在6月1日凌晨,库尔斯克州的一座货运列车也被掀翻,司机双腿受伤严重。俄紧急情况部的救援直升机在夜空中忙碌,俄侦委会将这些事件定性为恐…

51岁吴京获赛车冠军 跨界首战创佳绩

6月1日,爱跑2025中国环塔国际拉力赛圆满结束。随着赛车陆续返回喀什赛区麦盖提N39赛段终点,车手和领航员们激动地拥抱庆祝,他们在这场沙漠赛段中展现了坚持不懈的精神。影视演员吴京首次参赛即成功完赛,并在SS9赛段夺得T4组别冠军,成为比赛的一大亮点。赛后,吴京发文表示…

李东健承认新恋情 两人相差16岁 因戏生情再添一例

李东健,45岁的《新娘18岁》男主角,再次公开了他的恋情。在接受采访时,他承认正在与29岁的演员姜海琳恋爱,并表示:“谢谢大家的祝福,现在真的很幸福。”据韩媒报道,两人在5月29日被曝出交往消息,多次被拍到挽手、搂腰等亲密行为。李东健因戏生情的历史丰富,曾与多位女演…

徐艺洋表示自己婚纱还没选好 婚礼筹备中引发粉丝期待

内娱知名甜宠文CP黄子韬和徐艺洋在直播中透露了关于婚礼的细节。徐艺洋表示婚纱还未选好,黄子韬也说他还没有准备好。徐艺洋提议婚礼模式可以是拍摄视频并在大屏幕上播放,这样他们可以在台下边吃饭聊天边观看自己的婚礼,黄子韬对此表示赞同。此前,两人还提到会在婚礼上留两…