发布时间:2026/9/2 21:10:32
Spring AI + Ollama + Qwen3.5,快速搭建一个ai应用 零成本不联网一台普通办公本就能跑。你需要准备JDK 178GB 以上内存4G以上显卡虽然ollama可以用cpu但是token吞吐太慢了第一步装 Ollama拉模型ollama.com 下载安装然后ollama pull qwen3.5:0.8b500MB几分钟下完。验证一下ollama run qwen3.5:0.8b 你好能回你继续。如果出现错误参考我上一篇文章第二步版本别搞错我一开始就搞错版本了总是包找不到Spring BootSpring AI3.4.x1.0.x3.5.x1.1.x4.0.x2.0.x本文用Spring Boot 3.4.4 Spring AI 1.0.8。第三步贴代码pom.xmlparent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.4.4/version /parent properties java.version17/java.version spring-ai.version1.0.8/spring-ai.version /properties dependencyManagement dependencies dependency groupIdorg.springframework.ai/groupId artifactIdspring-ai-bom/artifactId version${spring-ai.version}/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-ollama-spring-boot-starter/artifactId /dependency /dependenciesapplication.ymlspring: ai: ollama: base-url: http://localhost:11434 #默认端口 chat: model: qwen3.5:0.8b options: temperature: 0.7AiConfig.javaConfiguration public class AiConfig { Bean public ChatClient chatClient(ChatClient.Builder builder) { return builder .defaultSystem(用简洁中文回答。) //指令 .build(); } }ChatController.javaRestController public class ChatController { private final ChatClient chatClient; public ChatController(ChatClient chatClient) { this.chatClient chatClient; } GetMapping(/chat) public String chat(RequestParam String msg) { return chatClient.prompt().user(msg).call().content(); } }业务代码就一行。StreamController.java流式RestController public class StreamController { private final ChatClient chatClient; public StreamController(ChatClient chatClient) { this.chatClient chatClient; } GetMapping(value /chat/stream, produces MediaType.TEXT_EVENT_STREAM_VALUE) public FluxString stream(RequestParam String msg) { return chatClient.prompt().user(msg).stream().content(); } }第四步跑起来mvn spring-boot:run日志看到这行就对了Ollama chat model initialized with model: qwen3.5:0.8b第五步测试# 对话 curl http://localhost:8080/chat?msg用Java写个冒泡排序 # 翻译 curl http://localhost:8080/chat?msg把今天天气真好翻译成英文 # 流式浏览器打开看逐字输出 http://localhost:8080/chat/stream?msg写一首五言绝句踩坑速查报错解决Connection refused: 11434Ollama 没启动model not foundollama pull qwen3.5:0.8bNoClassDefFoundError版本没对上回第二步查表响应慢正常CPU 推理 0.8B 就这速度快来试一试把快速搭建属于自己的AI应用项目结构ai-demo/ ├── pom.xml ├── src/main/java/com/example/demo/ │ ├── DemoApplication.java │ ├── config/AiConfig.java │ └── controller/ │ ├── ChatController.java │ └── StreamController.java └── src/main/resources/application.yml

相关新闻

2026/9/1 21:21:05

C++ if语句深度解析:从基础语法到实战避坑指南

1. 从“开关”到“大脑”:为什么C的if语句是程序逻辑的基石如果你刚开始接触C,可能会觉得if语句不就是个简单的“如果...就...”吗?这有什么好讲的?我刚开始学的时候也这么想,直到后来在项目里踩了无数个坑&#xff0c…

2026/9/1 17:43:13

UML 2.5 类图实战:6种关系代码实现与3个典型业务场景解析

UML 2.5 类图实战:6种关系代码实现与3个典型业务场景解析在面向对象编程的世界里,UML类图就像建筑师手中的蓝图,它能清晰地描绘出系统中各个类之间的关系。对于开发者而言,掌握类图中六种核心关系的代码实现,就如同获得…

2026/9/2 21:06:20

群晖DS223j NAS实战教程:从装盘入门到私有云存储配置

数据越来越多之后,很多人第一反应是“再买一块移动硬盘”,但用一段时间就会发现:硬盘越买越多,文件散落在各个设备里,想要跨设备读取、备份手机相册、多人共享资料,反而越来越麻烦。这篇文章就以群晖 DS223…

2026/9/2 21:06:20

PHP图书管理系统源码详解:从数据库设计到借还书业务闭环

简介:一份基于PHP与MySQL的图书管理系统源代码,面向正在学习Web开发的初学者或需要完成课程设计的学生,帮助理解从用户登录、图书分类检索到借阅归还的完整业务流程。压缩包共112个文件,其中包含50个php后端脚本、11组frm/myd/myi…

2026/9/2 21:06:20

GIS矢量数据处理实战:从中国沙漠黄土分布数据到空间分析

简介:本资源是一套面向地理信息系统(GIS)学习者、科研人员及环境遥感分析从业者的中国沙漠与黄土高原空间分布基础矢量数据集,解决区域地貌类型空间定位、叠加分析与制图表达等核心需求。压缩包共14个文件,包含shp主文…

2026/9/2 21:01:20

Node系列 · Express:登录与认证

Node系列 Express:登录与认证 登录与认证是后端最常见的需求。本章从登录接口设计到鉴权中间件,把完整流程串起来——session 与 JWT 两种方案都会讲,后续章节单独展开。 一、登录与认证的核心流程 数据库服务器客户端数据库服务器客户端#me…

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/2 9:00:32

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/2 8:41:06

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/2 0:03:41

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/2 0:03:41

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

这次我们来看一个很实用的 DeepSeek 落地场景:用 DeepSeek 把英文视频字幕自动翻译成中文。具体案例是《恶魔君》1989 年第 28 集的英转中字幕任务,标题写得很直白,但背后其实是一整套可以复用的技术流程:字幕解析、模型调用、批量…

2026/9/2 0:03:41

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

当你家里摆着一台天猫精灵,却总希望语音助手偶尔“不正经”一点,不用官方腔回答问题,而是张口就接几句搞笑段子,会是什么体验?我最近动手验证了一下这个想法——没有去改装任何市面上现有的智能音箱,而是直…

2026/9/2 1:15:22

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/2 1:15:22

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/2 1:15:20

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…