AI普惠时代的技术革新
在生成式AI技术快速发展的今天,大模型的高效部署与低成本应用成为企业智能化转型的核心挑战。国产大模型 DeepSeek LLM
凭借其轻量化设计、开源生态和高性价比优势,结合 Spring AI Alibaba
框架与 Ollama
本地化部署能力,为开发者提供了一条“平民化”AI应用的可行路径。
什么是 Spring AI
Spring AI 是由 Spring 官方维护的 AI 开发框架,旨在简化企业级 AI 应用构建。
Spring AI 借鉴了 Python 生态的 LangChain 等工具的设计理念,但并非直接移植,而是专注于解决 Java 开发者面临的 AI 集成核心难题——将企业数据/API 与 AI 模型无缝连接
,突破 Python 生态垄断,推动生成式 AI 应用向多语言生态扩展。
什么是 Spring AI Alibaba?
Spring AI Alibaba
是阿里云
为 Java
开发者打造的开源 AI 开发框架,基于 Spring AI
深度集成通义系列模型,提供标准化接口和高阶抽象能力。
Spring AI Alibaba
简化 AI 应用开发流程,支持以 Spring Boot 开发范式快速接入大模型能力,深度整合阿里云通义系列模型及百炼平台,提供模型部署到运维的最佳实践;
关键能力:
-
统一 API 抽象(支持聊天/多模态模型、同步/流式调用、跨模型无缝切换);
-
智能体开发工具集(函数调用、对话记忆、RAG 全链路支持);
-
工程化增强(结构化输出映射 POJO、向量数据库集成、离线文档处理工具)。
-
相较于原生 API 调用,该框架通过 Fluent API 设计显著降低开发复杂度,使开发者聚焦业务逻辑而非底层模型交互细节。
API认知
在 Spring AI Alibaba
框架中, 提供了 Chat Client
和 Chat Model
两类不同层次的组件,分别对应不同的开发场景需求。
-
Chat Model(聊天模型)
: 直接与 AI 大模型(比如通义系列模型)打交道的“电话听筒”。你可以把它想象成直接拨通大模型的电话,告诉它你的问题,然后接收它的原始回答。 -
Chat Client(智能体代理客户端)
: 封装好的“智能助手”。它不仅帮你拨通大模型的电话,还会自动帮你处理对话流程、记忆上下文、调用工具函数(比如查机票信息)等复杂操作。
下面我们详细看看
对话模型(Chat Model)
Chat Model 通过标准化 API 抽象,降低多模态大模型集成复杂度,使开发者聚焦业务逻辑,快速实现智能交互功能。
输入/输出形式 支持多模态交互(文本、语音、图片、视频),输入为消息序列(Message
),输出为聊天消息(ChatMessage
)。
角色区分 消息中可标记角色(如 user
、system
、assistant
),帮助模型理解上下文来源(用户指令、系统提示或模型回复)。
特点
模型适配 :集成通义系列大模型服务(如通义千问、通义万象),支持以下功能:
-
文本交互(
ChatModel
):文本输入 → 格式化文本输出 -
文生图(
ImageModel
):文本输入 → 生成图片 -
文生语音(
AudioModel
):文本输入 → 合成语音 -
语音转文本(如语音输入解析)。
开发集成
-
复用 Spring AI 的
Model API
,通过spring-ai-alibaba-starter
自动配置默认实例。 -
支持直接注入
ChatModel
、ImageModel
等 Bean,亦可自定义模型实例。
API 核心逻辑
交互流程:Prompt
(输入) → 模型处理 → ChatResponse
(输出)
-
输入:用户提供的
Prompt
或部分对话上下文。 -
输出:模型生成的自然语言响应,可呈现给用户或用于后续处理。
底层原理 模型基于训练数据解析输入语义,结合上下文生成连贯、符合逻辑的响应。
对话客户端(Chat Client)
Chat Client
通过标准化流程和 Fluent API 提升开发效率,适合需快速落地的通用 AI 场景;
作用:提供与 AI 模型交互的 Fluent API,简化多组件协作流程(如提示词模板、聊天记忆、模型、解析器等)。
定位:类似应用程序的 服务层,封装底层复杂性,快速实现端到端 AI 交互流程。
特点
-
编程模型:支持 同步 与 反应式(Reactive) 调用。
-
开发效率:通过链式调用(Fluent API)减少样板代码,避免手动协调组件(如 RAG、函数调用等)。
-
功能集成:内置输入输出处理、参数配置等通用逻辑,开箱即用。
基础功能
功能 | 说明 |
---|---|
输入定制(Prompt) | |
动态组装用户输入,支持模板化参数填充(如变量替换)。 |
|
| 结构化输出解析 |
将模型返回的非结构化文本转换为结构化数据(如 JSON、对象)。
|
| 交互参数调整 |
通过 ChatOptions
动态配置模型参数(如温度、最大 Token 数、Top-P 等)。
|
-
聊天记忆(Chat Memory) 维护多轮对话上下文,支持短期记忆(内存)和长期记忆(持久化存储)。
-
工具/函数调用(Function Calling) 模型根据输入动态调用外部服务或函数(如查询天气、调用 API),并整合结果至响应。
-
RAG(检索增强生成) 集成检索组件,通过向量数据库增强模型知识,生成基于业务数据的精准回答。
开发Demo
ollama 运行 deepseek-r1
启动服务
PS C:\Users\liruilong> ollama serve 2025/03/06 10:33:23 routes.go:1186: INFO server config env="map[CUDA_VISIBLE_DEVICES: GPU_DEVICE_ORDINAL: ................................
运行模型测试
PS C:\Users\liruilong> ollama run deepseek-r1 >>> 1+1=? <think> </think> 1 + 1 = **2** >>> Send a message (/? for help)
Spring AI Alibaba AI 应用开发
添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-ollama-spring-boot-starter</artifactId> </dependency>
配置大模型相关配置
server: port:10005 spring: application: name:spring-ai-alibaba-ollama-demo ai: ollama: base-url:http://localhost:11434 chat: model:deepseek-r1:latest
克隆项目Demo
git clone --depth=1 https://github.com/springaialibaba/spring-ai-alibaba-examples.git
chat model
@RestController @RequestMapping("/ollama/chat-model") publicclass OllamaChatModelController { privatestaticfinal String DEFAULT_PROMPT = "你好,介绍下你自己吧。请用中文回答。"; privatefinal ChatModel ollamaChatModel; public OllamaChatModelController(ChatModel chatModel) { this.ollamaChatModel = chatModel; } /** * 最简单的使用方式,没有任何 LLMs 参数注入。 * * @return String types. */ @GetMapping("/simple/chat") public String simpleChat() { return ollamaChatModel.call(new Prompt(DEFAULT_PROMPT)).getResult().getOutput().getContent(); } /** * Stream 流式调用。可以使大模型的输出信息实现打字机效果。 * * @return Flux<String> types. */ @GetMapping("/stream/chat") public Flux<String> streamChat(HttpServletResponse response) { // 避免返回乱码 response.setCharacterEncoding("UTF-8"); Flux<ChatResponse> stream = ollamaChatModel.stream(new Prompt(DEFAULT_PROMPT)); return stream.map(resp -> resp.getResult().getOutput().getContent()); } /** * 使用编程方式自定义 LLMs ChatOptions 参数, {@link OllamaOptions}。 * 优先级高于在 application.yml 中配置的 LLMs 参数! */ @GetMapping("/custom/chat") public String customChat() { OllamaOptions customOptions = OllamaOptions.builder().topP (0.95D).temperature (0.7D).numPredict (1024).build(); return ollamaChatModel.call(new Prompt(DEFAULT_PROMPT, customOptions)).getResult().getOutput().getContent(); } }
调用接口测试
PS C:\Users\liruilong> curl http://localhost:10005/ollama/chat-model/simple/chat <think> 您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。 </think> 您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。 PS C:\Users\liruilong> curl http://localhost:10005/ollama/chat-model/stream/chat <think> 您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。 </think> 您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。
下面为自定义模型参数调用
PS C:\Users\liruilong> curl http://localhost:10005/ollama/chat-model/custom/chat <think> 您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。 </think> 您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。 PS C:\Users\liruilong>
chat client
@RestController @RequestMapping("/ollama/chat-client") publicclass OllamaClientController { privatestaticfinal String DEFAULT_PROMPT = "你好,介绍下你自己!请用中文回答。"; privatefinal ChatClient ollamaiChatClient; public OllamaClientController(ChatModel chatModel) { this.ollamaiChatClient = ChatClient.builder(chatModel) .defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory())) .defaultAdvisors(new SimpleLoggerAdvisor()) .defaultOptions( OllamaOptions.builder ().topP (0.95D).temperature (0.7D).numPredict (1024).build() ).build(); } /** * ChatClient 简单调用 */ @GetMapping("/simple/chat") public String simpleChat() { return ollamaiChatClient.prompt(DEFAULT_PROMPT).call().content(); } /** * ChatClient 流式调用 */ @GetMapping("/stream/chat") public Flux<String> streamChat(HttpServletResponse response) { response.setCharacterEncoding("UTF-8"); return ollamaiChatClient.prompt(DEFAULT_PROMPT).stream().content(); } }
Demo 代码可以看到 chatModel
都是通过自动装配注入的,不需要显示 new
,client
在 model
的基础上重新构造。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
大模型&AI产品经理如何学习
求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。
1.学习路线图
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方图片前往获取
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓