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

Spring AI介绍(一)

什么是Spring AISpring AI是面向 Java 和 Spring 生态的原生生成式人工智能框架。它不是简单地将 Python 中的 LangChain 或 LlamaIndex 移植到 Java而是依据 Spring 的设计理念——如依赖注入、POJO、模块化和可配置——重构生成式 AI 的全流程。通过 Spring Boot 的自动装配机制开发者可以像调用数据库或 Web API 一样轻松地接入聊天、嵌入、图像生成、语音处理等 AI 能力并且能够毫不费力地将企业内部数据与 AI 模型关联起来如同 RAG 检索增强生成中常用的数据注入方式。Spring AI 倡导“一套接口多种实现”开发者无须为不同 AI 提供商逐一适配而是可以通过统一抽象实现轻松切换比如 OpenAI、Anthropic、Bedrock、Hugging Face、Vertex AI、Ollama 等服务。Spring AI 官网地址https://spring.io/projects/spring-aiSpring AI 文档地址https://docs.spring.io/spring-ai/reference/index.htmlSpring AI 中文文档地址https://spring-ai.spring-doc.cn/docs/1.0.0/index.htmlSpring AI 特点Spring AI 功能模块丰富涵盖AI应用开发的各个环节具备如下特点1. 多供应商模型支持支持主流的AI模型提供商例如Anthropic、OpenAI、Microsoft、Amazon、Google、Ollama 等模型服务。通过这些模型可以实现聊天、文本嵌入、文生图、音频转录、文本转语音、内容审核等多种能力。2. 统一抽象API提供如 ChatClient, EmbeddingModel, ImageModel 等统一接口无论切换到哪家 AI 平台调用方式一致同时支持同步与流式调用也能够访问模型特定功能。3. Spring Boot集成以 Starter 和自动装配方式支持 AI 模型、向量数据库、ETL 工具等开发者可通过 Initializr 快速上手。4. 结构化输出与类型安全模型的响应可解析并映射到 Java POJO保证后续处理的类型安全与可维护性。5. 向量存储与RAG集成了主流向量数据库PostgreSQL/pgvector、Pinecone、Qdrant、Redis、Weaviate 等及其元数据过滤通过内置的 ETL 文档处理流程结合检索增强生成RAG实现文档问答和聊天检索。6. Tool/Function Calling支持模型发起函数调用类似 OpenAI Function Calling可以注册 Spring Bean 作为可调用工具从而访问实时业务系统或执行外部操作。7. 可观测性与评估内建对于 AI 调用的监控指标与日志、模型评估工具可用于检测响应准确性、防止“幻觉”。Spring AI 快速上手环境要求Spring AI构建在Spring Boot 3.x之上Spring Boot 3.x系列最低Java要求版本是JDK17不支持Java8/11/16等低于17的版本推荐使用Maven3.6及以上版本。我们后续使用Spring AI 时对应环境版本如下SpringBoot 3.5.0版本JDK17版本Maven3.9.9版本这里在Windows中下载并安装JDK17。使用如下链接下载JDK 17后进行安装这里安装在D盘“D:\Program Files\Java\jdk17\jdk”中不需要配置环境变量只需要在相应的SpringBoot项目中设置使用的JDK17版本即可。JDK17下载地址https://www.oracle.com/cn/java/technologies/downloads/#java17Deepseek对话案例下面以Spring AI中通过与Deepseek模型对话为例演示Spring AI相关配置。1) 创建SpringBoot项目命名为“SpringAIQuickStart”2) 配置项目pom.xml?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.5.0/version relativePath/ !-- lookup parent from repository -- /parent groupIdcom.example/groupId artifactIdSpringAIQuickStart/artifactId version0.0.1-SNAPSHOT/version nameSpringAIQuickStart/name descriptionSpringAIQuickStart/description properties java.version17/java.version /properties !-- 导入 Spring AI BOM用于统一管理 Spring AI 依赖的版本 引用每个 Spring AI 模块时不用再写 version只要依赖什么模块 Mavens 自动使用 BOM 推荐的版本 -- dependencyManagement dependencies dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-bom/artifactId version1.0.0-SNAPSHOT/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-starter-model-deepseek/artifactId /dependency /dependencies !-- 声明仓库 用于获取 Spring AI 以及相关预发布版本-- repositories repository idspring-snapshots/id nameSpring Snapshots/name urlhttps://repo.spring.io/snapshot/url releases enabledfalse/enabled /releases /repository repository nameCentral Portal Snapshots/name idcentral-portal-snapshots/id urlhttps://central.sonatype.com/repository/maven-snapshots//url releases enabledfalse/enabled /releases snapshots enabledtrue/enabled /snapshots /repository /repositories /project3) 配置resources/application.propertiesspring.application.nameSpringAIQuickStart server.port8080 #配置 Deepseek的基础URL、密钥和使用模型 spring.ai.deepseek.base-urlhttps://api.deepseek.com spring.ai.deepseek.api-keysk-81bxxx62c6a821 spring.ai.deepseek.chat.options.modeldeepseek-chat # 介于0和2之间0表示随机性最小2表示随机性最大。 spring.ai.deepseek.chat.options.temperature0.84) 创建controller包并创建ChatController.java文件import org.springframework.ai.deepseek.DeepSeekChatModel; import org.springframework.beans.factory.annotation.Autowired; 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; RestController RequestMapping(/ai) public class ChatController { Autowired private DeepSeekChatModel chatModel; GetMapping(/generate) public String generate(RequestParam(value message, defaultValue 给我讲个笑话) String message) { System.out.println(收到消息message); String result chatModel.call(message); //模型返回的内容 System.out.println(result); return result; } }5) 启动项目并测试启动项目后浏览器输入“http://localhost:8080/ai/generate?message你是谁”可以看到输出内容如下我是DeepSeek Chat由深度求索公司DeepSeek开发的智能AI助手✨ 我可以帮你解答问题、提供建议、陪你聊天还能处理各种文本、文档等内容。无论是学习、工作还是日常生活中的疑问都可以来问我哦 有什么我可以帮你的吗为了更好的可视化与Deepseek模型聊天我们还可以在项目的“resources/static”目录下创建“index.html”实现聊天可视化index.html内容如下!-- src/main/resources/static/index.html -- !DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleAI 聊天/title script srchttps://cdn.jsdelivr.net/npm/marked/marked.min.js/script style body { font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: 0 auto; } h1 { text-align: center; color: #333; } textarea { width: 100%; padding: 10px; font-size: 16px; border: 1px solid #ccc; border-radius: 4px; margin-bottom: 10px; box-sizing: border-box; } button { width: 100%; padding: 10px; font-size: 16px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; } button:hover { background-color: #0056b3; } #response { margin-top: 20px; padding: 10px; border: 1px solid #ccc; border-radius: 4px; background-color: #f9f9f9; } /* Loading Spinner */ #loading { display: none; margin: 20px auto; border: 4px solid #f3f3f3; border-top: 4px solid #3498db; border-radius: 50%; width: 50px; height: 50px; animation: spin 2s linear infinite; } keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /style /head body h1与 AI 聊天/h1 textarea iduserMessage rows4 placeholder请输入您的问题.../textareabrbr button onclicksendMessage()发送/button div idloading/div div idresponse/div script function sendMessage() { const message document.getElementById(userMessage).value; if (!message) { alert(请输入消息); return; } // 显示加载动画 document.getElementById(loading).style.display block; fetch(/ai/generate?message${encodeURIComponent(message)}) .then(response response.text()) .then(data { // 隐藏加载动画 document.getElementById(loading).style.display none; document.getElementById(response).innerHTML marked.parse(data); }) .catch(error { console.error(请求失败:, error); alert(请求失败请稍后再试); // 隐藏加载动画 document.getElementById(loading).style.display none; }); } /script /body /html重启Springboot项目后直接访问“http://localhost:8080”可以直接访问到resource/static/index.html进行可视化与模型对话

相关文章:

Spring AI介绍(一)

什么是Spring AI Spring AI是面向 Java 和 Spring 生态的原生生成式人工智能框架。它不是简单地将 Python 中的 LangChain 或 LlamaIndex 移植到 Java,而是依据 Spring 的设计理念——如依赖注入、POJO、模块化和可配置——重构生成式 AI 的全流程。通过 Spring Bo…...

Axon:极简AI代理命令行工具,无缝集成自动化工作流

1. 项目概述:一个极简主义的AI代理命令行工具如果你和我一样,对市面上那些动辄需要复杂环境配置、依赖一大堆库、启动缓慢的AI代理工具感到疲惫,那么Axon的出现,绝对会让你眼前一亮。它不是一个运行在后台的守护进程,也…...

在taotoken用量看板中清晰追踪每个项目的模型消耗

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在taotoken用量看板中清晰追踪每个项目的模型消耗 对于依赖大模型进行开发的团队或个人而言,成本控制与预算管理是项目…...

从科幻到现实:波色量子18.4亿融资背后,量子计算在多领域应用大突破!

【导语:科幻电影《流浪地球2》中智能量子计算机“MOSS”令人印象深刻,如今量子计算已从实验室走向商业化。波色量子成立三年获11轮融资共18.4亿,其量子计算在多领域展现出巨大应用潜力。】波色量子:资本竞逐中的宠儿按照“十五五规…...

GIS制图必备:GlobalMapper 20制作1:100万标准图幅的完整指南与命名规则详解

GIS制图实战:GlobalMapper 20标准图幅生成与命名规范全解析 在测绘与地理信息行业,标准图幅不仅是数据管理的基石,更是跨部门协作的通用语言。当我们面对1:100万比例尺的地形图分幅时,每一个经纬网格的划分、每一组编号的生成&…...

3个为什么让Windows Cleaner成为你的C盘救星?深度体验报告

3个为什么让Windows Cleaner成为你的C盘救星?深度体验报告 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是不是也遇到过这样的情况?电…...

E-Hentai下载器:免费漫画批量下载工具完整指南

E-Hentai下载器:免费漫画批量下载工具完整指南 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 你是否曾经为了收藏喜欢的漫画而一页一页手动保存&#xff1…...

局域网监控软件评测:从数据主权视角看企业效能工具的取舍

很多管理者在巡视办公室时,看到员工手指在键盘上飞速跳动,屏幕上代码或表格交织,心中却往往悬着一块石头:他们是在攻克项目难关,还是在处理私人兼职?这种管理上的“黑盒状态”,不仅是效率的损耗…...

oneClaw:现代化命令行工具集的设计哲学与工程实践

1. 项目概述与核心价值最近在折腾一些自动化脚本和轻量级工具链时,发现了一个挺有意思的项目,叫myersguo/oneClaw。乍一看这个名字,可能会联想到“一只爪子”,感觉有点神秘。实际上,这是一个专注于单点、高效、可复用的…...

【鸿蒙PC三方库移植适配框架解读系列】第五篇:完整流程图与角色职责

系列导读:本文是 Lycium 适配系列的第五篇,通过一张完整的流程图展示适配者、Lycium 框架和 OHOS SDK 三者之间的交互关系,并总结各环节的角色职责。 欢迎加入【开源鸿蒙PC社区】,一起共建鸿蒙化C/C三方库生态。 前言 项目说明m…...

CoPaw:打造本地优先的AI工作台,兼顾隐私与效率

1. 项目概述:一个真正属于你的本地AI工作台如果你和我一样,对AI助手既爱又恨——爱它的效率,恨它的隐私风险和数据不可控——那么今天分享的这个项目,你一定会感兴趣。最近我在GitHub上发现了一个名为CoPaw的开源桌面应用&#xf…...

《jEasyUI 取得选中行数据》

《jEasyUI 取得选中行数据》 引言 jEasyUI 是一个基于 jQuery 的易于使用的开源 UI 库,它为网页开发者提供了丰富的 UI 组件,如表格、表单、菜单、对话框等。在 jEasyUI 的众多组件中,表格组件(Datagrid)是使用频率非常…...

阴阳师自动化脚本终极指南:如何用OnmyojiAutoScript一键托管你的日常游戏

阴阳师自动化脚本终极指南:如何用OnmyojiAutoScript一键托管你的日常游戏 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 还在为阴阳师繁琐的日常任务而烦恼吗&#…...

网页项目之大五人格测试:认识真实的自己

大五人格测试:认识真实的自己 你是否曾好奇,自己的人格特质是什么?为什么有些人天生善于社交,有些人却更喜欢独处?为什么有人总是追求完美,有些人却随性自在? 心理学研究表明,人格的…...

ComfyUI-WanVideoWrapper:AI视频生成的全新创作革命

ComfyUI-WanVideoWrapper:AI视频生成的全新创作革命 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 在AI技术飞速发展的今天,ComfyUI-WanVideoWrapper作为一款强大的AI视…...

SRWE:Windows窗口实时编辑器的专业应用指南

SRWE:Windows窗口实时编辑器的专业应用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 在数字内容创作和游戏开发领域,分辨率限制常常成为技术瓶颈。传统Windows窗口管理系统缺乏灵活…...

Raw Accel终极指南:Windows鼠标加速的完整解决方案

Raw Accel终极指南:Windows鼠标加速的完整解决方案 【免费下载链接】rawaccel kernel mode mouse accel 项目地址: https://gitcode.com/gh_mirrors/ra/rawaccel 你是否厌倦了Windows系统自带的鼠标加速功能?是否在游戏和设计工作中需要更精准的鼠…...

短视频矩阵运营方法论——不同平台多账号协同的底层逻辑与避坑指南

短视频矩阵运营已成为品牌获取规模化流量的核心手段,但多账号协同背后的平台算法逻辑、账号关联风险、内容差异化策略等复杂问题,常常导致运营者踩入“雷区”。本文基于抖音、微信视频号、小红书三大主流平台官方规则与公开算法解读,系统梳理…...

为什么 Promise 比 setTimeout 先执行?——JavaScript 事件循环与异步顺序完全指南

为什么 Promise 比 setTimeout 先执行?——JavaScript 事件循环与异步顺序完全指南 这是 JavaScript 异步中最经典也最容易困惑的问题之一。核心答案是: Promise 的回调属于 Microtask(微任务),setTimeout 属于 Macro…...

AI编程工具的内卷:Copilot、Cursor、通义灵码,谁能笑到最后?

当“内卷”的风吹到AI编程工具2026年,AI编程工具已不再是新鲜事物,而是开发者工具箱中的标配。从最初的代码补全,到如今的全栈智能体,这个赛道正经历着一场前所未有的“内卷”。GitHub Copilot、Cursor、通义灵码三足鼎立&#xf…...

感应照明技术:从工业到家用,一场技术降维的工程冒险

1. 项目概述:当感应照明技术走进寻常百姓家最近在整理一些老旧的行业资料时,翻到了2014年的一则新闻,讲的是当时一家初创公司“Finally Light Bulb Company”宣布要推出一款售价低于10美元的感应灯泡,用来替代传统的白炽灯。这让我…...

从RISC-V到SSITH:构建下一代硬件安全架构的开放之路

1. 项目概述:从“亡羊补牢”到“未雨绸缪”的硬件安全范式转移在智能设备无处不在的今天,我们正面临一个尴尬的现实:许多产品的安全设计,更像是在一栋已经建好的毛坯房里,见缝插针地安装防盗门和监控摄像头。这种“事后…...

横空出世!IDEA最强MyBatis插件来了,功能很全!

最近更新了IDEA 2026.1这个版本,发现之前使用的MyBaitsX这个插件没有兼容,启动就报错!于是就改用了MyBatisCodeHelper-Pro这个插件,体验了一把,提示很全,还有方便的MyBaits日志转SQL面板,这里分…...

彻底解放Windows 11任务栏:TranslucentTB透明化完全指南

彻底解放Windows 11任务栏:TranslucentTB透明化完全指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了Windows…...

LLamaSharp实战指南:在.NET应用中本地部署与集成大语言模型

1. 项目概述:LLamaSharp,一个让大语言模型在本地跑起来的C#利器 如果你是一名C#或.NET开发者,最近肯定被ChatGPT和各种大语言模型(LLM)刷屏了。但你是否想过,不依赖OpenAI的API,不担心网络延迟…...

RE3SIM系统:3D真实感仿真数据生成技术解析

1. RE3SIM系统概述:3D真实感仿真数据生成新范式在机器人操作领域,获取高质量训练数据一直是制约算法发展的瓶颈。传统基于真实环境的示教数据采集不仅需要昂贵硬件支持,还依赖专业操作人员,单次任务采集成本可达数千元。RE3SIM系统…...

claw-gatekeeper:构建稳定智能的数据抓取守护服务

1. 项目概述:一个守护数据抓取流程的“看门人”在数据驱动的时代,无论是市场分析、舆情监控还是学术研究,自动化数据抓取(爬虫)都扮演着至关重要的角色。然而,任何稍有规模的抓取任务,都绕不开几…...

TS-182快速打通Modbus干变温控箱与PROFINET PLC连接

项目背景:在电力配电系统中,干式变压器的安全运行离不开温控箱的实时监测与保护。作为变压器温控箱的生产厂商,您是否遇到过这样的困扰:客户现场的主控系统采用西门子S7-1500 PLC(PROFINET协议)&#xff0c…...

逆光也能精准识别人脸,门禁不再卡壳

人脸门禁普及的路上,安全质疑从未停止:照片能不能骗过摄像头?视频冒充会不会被放行?尤其在学校、幼儿园、医院等需要高度核验身份的场所,一丁点伪冒漏洞都可能酿成风险。ZUU中优云联ZU-YK751人脸识别门禁终端&#xff…...

若依框架菜单管理实战:手把手教你为列表页添加详情页(Vue+Element UI)

若依框架菜单管理实战:手把手教你为列表页添加详情页(VueElement UI) 在后台管理系统开发中,列表页与详情页的联动是基础但关键的功能需求。许多开发者在使用若依框架的代码生成器快速搭建项目后,常常面临一个典型问题…...