目录
[1.1 什么是Ollama](#1.1 什么是Ollama)
[1.2 Ollama特点与优势](#1.2 Ollama特点与优势)
[2.1 版本选择](#2.1 版本选择)
[2.2 下载安装包](#2.2 下载安装包)
[2.3 执行安装](#2.3 执行安装)
[2.4 Ollama常用命令](#2.4 Ollama常用命令)
[3.1 千问大模型介绍](#3.1 千问大模型介绍)
[3.2 部署过程](#3.2 部署过程)
[4.1 引入Ollama依赖](#4.1 引入Ollama依赖)
[4.2 添加配置文件](#4.2 添加配置文件)
[4.3 使用Ollama聊天api](#4.3 使用Ollama聊天api)
一、Ollama介绍
1.1 什么是Ollama
Ollama是一个用于部署和运行各种开源大模型的工具,能够帮助用户快速在本地运行各种大模型,极大地简化了大模型在本地运行的过程。对用户来说,只需要通过执行几条命令就能在本地运行开源大模型,如Llama 2等。
官网地址:Ollama
1.2 Ollama特点与优势
Ollama具备如下特点和优势
- 功能齐全
- Ollama将模型权重、配置和数据捆绑到一个包中,定义成Modelfile。它优化了设置和配置细节,包括GPU使用情况,从而提高了模型运行的效率。
- 轻量级
- Ollama的代码简洁明了,运行时占用资源少。这使得它能够在本地高效地运行,不需要大量的计算资源。此外,它还支持热加载模型文件,无需重新启动即可切换不同的模型,这使得它非常灵活多变。
- 易用性
- Ollama提供了多种安装方式,支持Mac和Linux平台,并提供了Docker镜像。用户只需按照安装指南进行操作即可完成安装,无需具备专业的技术背景。
- 捆绑模型组件
- 它将模型权重、配置和数据捆绑到一个包中,称为 Modelfile,这有助于优化设置和配置细节,包括 GPU 使用情况。
- 支持多种模型
- Ollama 支持多种大型语言模型,如 Llama 2、Code Llama、Mistral、Gemma 等,并允许用户根据特定需求定制和创建自己的模型。
- 跨平台支持
- 支持 macOS 和 Linux 平台,Windows 平台的预览版也已发布。安装过程简单,用户只需访问 Ollama 的官方网站下载相应平台的安装包即可。
二、Ollama本地部署
接下来演示如何在本地的windows系统上安装Ollama,根据你的实际情况,也可以选择Linux系统进行部署
2.1 版本选择
进入网站之后,点击右上角的 Download按钮,根据个人的实际情况,选择不同类型的安装包进行部署,我这里选择的是Windows的版本;
注意,Ollama部署的时候,对服务器或机器是有一定要求的,所以需要根据你的机器配置情况进行选择,在Ollama的官网通过github的链接点进去,可以看到如下的相关参数指导说明,在这里,你部署的大模型参数越多,理论上来说,对机器的配置要求就越高,目前先关注这一点即可。
2.2 下载安装包
这里选择下载的是windows版本
2.3 执行安装
Ollama的安装比较简单,双击执行这个exe文件,等待安装完成即可
安装完成之后,点击开始进入下面的shell窗口
2.4 Ollama常用命令
cmd窗口输入Ollama,即可了解常用的Ollama命令
如何理解本机部署的这个Ollama呢?如果使用过Docker的同学对docker部署一些中间件应该不陌生,比如使用docker中部署mysql或redis,只需要运行一段docker命令即可完成,非常方便,类比于Ollama,是一个大模型的部署管理工具,只需要使用Ollama的命令,也可以快速部署起一个本地的大模型进行使用。
如果你需要使用Ollama部署大模型,可以在Ollama官网进行搜索,类似于你使用docker search 镜像名一样
如下,进入到某个大模型中,拷贝命令到shell窗口中执行即可
三、使用Ollama部署千问大模型
上面演示了基于本地windows操作系统搭建Ollama过程,下面我们使用Ollama部署一个大模型,这里使用Ollama部署千问大模型。
3.1 千问大模型介绍
"通义千问大模型"是阿里云推出的一个超大规模的语言模型,具有强大的归纳和理解能力,可以处理各种自然语言处理任务,包括但不限于文本分类、文本生成、情感分析等。此模型能够极大地提高了自然语言处理的效率和准确性,给用户提供了一种新的、简便的工具。
3.2 部署过程
在Ollama中搜索关键字qwen,然后选择一个参数相对较少(对本地的空间和资源占用减小)的进行运行
使用下面的命令运行
bash
ollama run qwen:0.5b-chat
然后等待模型下载完成运行起来之后就可以使用了,下面这个进度窗口是不是与docker部署中间件很相像
然后就可以输入文本,与千问大模型进行对话,而后,就可以基于部署的模型应用于实际工作或业务中进行结合使用
四、springboot接入Ollama
由于本地搭建了Ollama,并且在Ollama上安装了千问大模型,就可以将千问大模型当GPT一样使用进行交流,参考下面具体的对接步骤。
4.1 引入Ollama依赖
本地提前搭建一个springboot工程,然后引入Ollama核心依赖
java
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
4.2 添加配置文件
配置文件中添加Ollama相关的配置信息,注意的是,Ollama本地端口为11434
java
server:
port: 8088
spring:
application:
name: chat-001
ai:
ollama:
base-url: http://localhost:11434
chat:
options:
model: qwen:0.5b-chat
openai:
api-key: 你的apikey
base-url: openai地址
4.3 使用Ollama聊天api
Ollama聊天API的核心对象为OllamaChatClient,与上述的spring ai中提供的client对象类似,在程序中可以直接调用其api,如下,传入一个msg参数,返回响应的文本内容
java
import jakarta.annotation.Resource;
import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OllamaChatController {
@Resource
private OllamaChatClient ollamaChatClient;
//http://localhost:8088/ollama/chat?msg=大数据的技术栈有哪些
@GetMapping("/ollama/chat")
public String ollamaChat(@RequestParam String msg){
String resMsg = ollamaChatClient.call(msg);
return resMsg;
}
}
启动服务调用一下接口,可以看到响应的内容,通过这种方式,相当于是利用spring ai接入了本地的大模型进行对话聊天。
也可以使用Prompt进行参数传递,看下面的接口
java
@GetMapping("/ollama/chat/v2")
public Object ollamaChatV2(@RequestParam String msg){
Prompt prompt = new Prompt(msg);
ChatResponse chatResponse = ollamaChatClient.call(prompt);
return chatResponse;
}
返回结果如下,返回这种结构的数据在实际使用的时候,需要对json中的字段进行解析即可
spring ai官网中也提供了Ollama的相关文档,地址:Ollama Chat :: Spring AI Reference,在文档中,可以找到很多有关Ollama的详细的配置参数,这些配置参数,都可以在Prompt对象或者配置文件中进行合理的使用,达到最佳的实践效果
比如,在下面的接口中,仍然使用Prompt对象,里面传入更多的参数选项做控制
java
//http://localhost:8088/ollama/chat/v3?msg=中国排名前十的大学
@GetMapping("/ollama/chat/v3")
public Object ollamaChatV3(@RequestParam String msg){
Prompt prompt = new Prompt(
msg,
OllamaOptions.create()
.withModel("qwen:0.5b-chat")
.withTemperature(0.4F)
);
ChatResponse chatResponse = ollamaChatClient.call(prompt);
return chatResponse.getResult().getOutput().getContent();
}
再次调用一下接口,当然这个结果是否一定准确呢?对于结果的使用还需要做认真的鉴别
五、写在结尾
本文详细介绍了基于windows系统部署Ollama的过程,并演示了基于Ollama部署千问大模型的过程,以及如何与springboot对接,更详细和深入的可以参阅官网资料进一步学习,本文到此结束谢谢观看。