3. Ollama 安装,流式输出,多模态,思考模型
3. Ollama 安装,流式输出,多模态,思考模型
@
接入ollama本地模型
ollama是大语言模型的运行环境 , 支持将开源的大语言模型以离线的方式部署到本地,进行私有化部署。 这也是企业中常用的方案, 因为本地化部署能保证企业级的数据安全, 降低企业使用成本。
可以将我们的 ollama 理解为是我们的 Docker 容器(Docker 拉取的是镜像),而 Ollama 拉取的就是大模型的镜像,同时运行大模型
本地大模型安装
点击下载, 一直下一步即可非常简单

- 安装完后运行cmd --> ollama list 查看已安装的大模型(开始肯定什么都没有)
- 拉取模型 ollama run qwen3:4b
https://ollama.com/library/qwen3



1. 这里的4b=40亿参数 对应gpu显存差不多是4G ,当然8B也可以只是比较卡
- 测试

基于spring-ai使用 上我们在 Ollama 本地模型部署的大模型
- 添加依赖(添加 ollama 的 SDK 依赖)
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>
- 配置(配置 ollama 的配置,注意:ollama 是不需要配置 api_key 的,因为只有云端大模型才需要根据你的 api_key 计费算钱,授权。本地大模型是不需要的)。ollama 的默认端口 11434 。
ollama 是可以拉取配置运行多个本地大模型的,所以这里需要配置指明我们使用的是 ollama 本地当中的那个大模型
ollama list # 查看 ollama 当前含有配置拉取的有那些大模型
spring.ai.ollama.base-url= http://localhost:11434 # 默认端口是:11434
spring.ai.ollama.chat.model= qwen3:4b
- 测试
/**
* @author
*/
@SpringBootTest
public class OllamaTest {
@Test
public void testChat(
// 自动装配了 OllamaChatModel 配置类
@Autowired OllamaChatModel ollamaChatModel) {
String text = ollamaChatModel.call("你是谁");
System.out.println(text);
}
}

关闭 thingking
因为我们的 qwen3 大模型是一个思考模型(存在一个深度思考的过程),所以可能会思考的比较久,这里我们可以关闭 ollama 当中的大模型思考(深度思考)模式

可以通过 在提示词结尾加入“/no_think” 指令
String text = ollamaChatModel.call("你是谁/no_think"); // 你的提示词上加上 /no_think 软关闭,深度思考过程
System.out.println(text);
但是依然有标签, 暂时可以前端单独处理下

ollama 0.9.0 支持了关闭think。但是在spring1.0版本还不兼容。(就是 ollama 虽然关闭了深度思考,但是我们项目的 Spring 1.0 还不兼容,所以是无效的。就是 OllamaOptions.builder().think()没有这个配置项,应该后面的 Spirng 1.1.x 就可能会有了)
ollama run qwen3:4b # 进入到对应要不关闭深度思考的大模型
/set nothink # 关闭该大模型的深度思考
https://ollama.com/blog/thinking
ollama 流式输出
stream + tools BUG 修复 spring ai 1.0 ollama 修改了
springai 1.0 小 BUG 使用stream + tools ,会报一个 #3372

@Test
public void testStream(@Autowired OllamaChatModel chatModel) {
Flux<String> stream = chatModel.stream("你是谁/no_think");
// 阻塞输出
stream.toIterable().forEach(System.out::println);
}
ollama 0.8.0之前的版本不支持 stream+ollama
https://ollama.com/blog/streaming-tool 0.8.0+支持stream+ollama . 但是和springai1.0有兼容问题:https://github.com/spring-projects/spring-ai/issues/3369
多模态
注意:多模态是识别,多中不同文件的内容,理解不同文件的内容,而不是生成。

目前ollama支持的多模态模型:
这里我们使用 ollama 拉取一个 gemma3:1b 的大模型测试:附上地址
/**
* 多模态 图像识别, 采用的gemma3
* @param ollamaChatModel
*/
@Test
public void testMultimodality(@Autowired OllamaChatModel ollamaChatModel) {
// 指定读取文件的路径
var imageResource = new ClassPathResource("gradle.png");
// 指定大模型的配置项,这里使用 ollama 拉取当中的 gemma3 大模型
OllamaOptions ollamaOptions = OllamaOptions.builder()
.model("gemma3")
.build();
// 说明读取的是那个类型的多模态文件类型,这里是图片 img
Media media = new Media(MimeTypeUtils.IMAGE_PNG, imageResource);
ChatResponse response = ollamaChatModel.call(
new Prompt(
UserMessage.builder().media(media)
.text("识别图片").build(), // 写明提示词
ollamaOptions
)
);
System.out.println(response.getResult().getOutput().getText());
}

最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”
3. Ollama 安装,流式输出,多模态,思考模型的更多相关文章
- HttpURLConnection的流式输出的缺陷和解决方法
转自:http://www.mzone.cc/article/198.html 最近在用applet写文件上传控件的时候发现使用URLConnection来对服务器进行流式输出时的一些问题.我们通常要 ...
- 文件下载(StreamingHttpResponse流式输出)
文件下载(StreamingHttpResponse流式输出) HttpResponse会直接使用迭代器对象,将迭代器对象的内容存储成字符串,然后返回给客户端,同时释放内存.可以当文件变大看出这是一个 ...
- Spark流式编程介绍 - 编程模型
来源Spark官方文档 http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#programm ...
- DJANGO的HTTPRESPONSE流式输出
在项目当中遇到的问题,网上有样例代码,但都不行,后来,发现在了1.5版本之后,新的STREAMHTTPRESPONSE对象, 搞定. from django.http import HttpRespo ...
- Openresty的同步输出与流式响应
Openresty的同步输出与流式响应 默认情况下, ngx.say和ngx.print都是异步输出的,先来看一个例子: location /test { content_by_lua_block { ...
- 流式大数据计算实践(6)----Storm简介&使用&安装
一.前言 1.这一文开始进入Storm流式计算框架的学习 二.Storm简介 1.Storm与Hadoop的区别就是,Hadoop是一个离线执行的作业,执行完毕就结束了,而Storm是可以源源不断的接 ...
- 大数据入门第十六天——流式计算之storm详解(一)入门与集群安装
一.概述 今天起就正式进入了流式计算.这里先解释一下流式计算的概念 离线计算 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据 ...
- centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~/.bash_profile 2015-4-10 第十三节课
centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~ ...
- “流式”前端构建工具——gulp.js 简介
Grunt 一直是前端领域构建工具(任务运行器或许更准确一些,因为前端构建只是此类工具的一部分用途)的王者,然而它也不是毫无缺陷的,近期风头正劲的 gulp.js 隐隐有取而代之的态势.那么,究竟是什 ...
- Spark Streaming流式处理
Spark Streaming介绍 Spark Streaming概述 Spark Streaming makes it easy to build scalable fault-tolerant s ...
随机推荐
- flex横向对齐即两端有靠右
flex布局怎么再设置子元素两侧对其的情况下设置最后一行左对齐 .container { display: flex; flex-wrap: wrap; justify-content: space- ...
- Codeforces Round #706 (Div. 2) D. Let's Go Hiking 博弈 思维
思路:A要赢的大前提就是当前x是一个波峰. 因为如果是一个直线单调的话如1 2 3 4 5(或者5 4 3 2 1),不管A选哪个位置,B直接在他下一个位置封死,A就直接GG. 现在考虑波峰的时候,那 ...
- raspberry ssh 允许 root 登录
参考链接 csdn
- Win11专业版系统电脑无限重启的处理方法
最近有不少深度技术系统用户在电脑上安装了win11专业版.而小伙伴在升级了Windows11系统之后发现,自己的电脑不停的重启,导致电脑一直出现问题.那要怎么解决呢?下面深度官网小编就为大家分享具体的 ...
- JobSystem的使用场合
1. 大规模行为更新,比如什么呢,上万个AI移动 2.大数量级的for循环 上面代码是for循环1000万次开方运算所需要的时间 对大数量级的for循环优化非常明显!
- 神器 Trello Bug Tracker 使用介绍
https://blog.csdn.net/cyf649669121/article/details/105637064 可用于免费bug上报,或者数据分析
- lambda表达式一定要在内部捕获受检异常?
场景 以调用java.util.ArrayList#forEach方法为例,用不同的lambda表达式重写该Consumer接口. RuntimeException list中有两个元素,调用forE ...
- 备份和恢复Exchange 2010的SSL证书
一.备份Exchange 2010 SSL证书 (一)使用Exchange管理控制台(EMC)备份证书 1.打开Exchange管理控制台 以具有管理员权限的用户身份登录到安装有Exchange 20 ...
- 【攻防世界】Banmabanma
1. 首先下载附件,解压出来之后得到的是一张png图片. 2. 观察图片,我们发现这斑马的条纹还有粗有细,间隔也不一样,真正的斑马是这样的吗? 3. 这不禁让人联想到超市扫的那种条形码--额么么,好的 ...
- 图片和视频都可以去水印啦,ai去水印的简单两种方法
有时候我们希望移除视频中的水印,但又不擅长使用专业软件,结果反而花费了很多时间和精力.这种情况下该怎么办呢? 今天给大家推荐两个方法: 一.在线去水印 Photopea是一款在线图像编辑器,界面和功能 ...
