目录
Ollama是一个用于部署和运行各种开源大模型的工具,能够帮助用户快速在本地运行各种大模型,极大地简化了大模型在本地运行的过程。对用户来说,只需要通过执行几条命令就能在本地运行开源大模型,如Llama 2等。
官网地址:Ollama
Ollama具备如下特点和优势
接下来演示如何在本地的windows系统上安装Ollama,根据你的实际情况,也可以选择Linux系统进行部署
进入网站之后,点击右上角的 Download按钮,根据个人的实际情况,选择不同类型的安装包进行部署,我这里选择的是Windows的版本;
注意,Ollama部署的时候,对服务器或机器是有一定要求的,所以需要根据你的机器配置情况进行选择,在Ollama的官网通过github的链接点进去,可以看到如下的相关参数指导说明,在这里,你部署的大模型参数越多,理论上来说,对机器的配置要求就越高,目前先关注这一点即可。
这里选择下载的是windows版本
Ollama的安装比较简单,双击执行这个exe文件,等待安装完成即可
安装完成之后,点击开始进入下面的shell窗口
cmd窗口输入Ollama,即可了解常用的Ollama命令
如何理解本机部署的这个Ollama呢?如果使用过Docker的同学对docker部署一些中间件应该不陌生,比如使用docker中部署mysql或redis,只需要运行一段docker命令即可完成,非常方便,类比于Ollama,是一个大模型的部署管理工具,只需要使用Ollama的命令,也可以快速部署起一个本地的大模型进行使用。
如果你需要使用Ollama部署大模型,可以在Ollama官网进行搜索,类似于你使用docker search 镜像名一样
如下,进入到某个大模型中,拷贝命令到shell窗口中执行即可
上面演示了基于本地windows操作系统搭建Ollama过程,下面我们使用Ollama部署一个大模型,这里使用Ollama部署千问大模型。
“通义千问大模型”是阿里云推出的一个超大规模的语言模型,具有强大的归纳和理解能力,可以处理各种自然语言处理任务,包括但不限于文本分类、文本生成、情感分析等。此模型能够极大地提高了自然语言处理的效率和准确性,给用户提供了一种新的、简便的工具。
在Ollama中搜索关键字qwen,然后选择一个参数相对较少(对本地的空间和资源占用减小)的进行运行
使用下面的命令运行
ollama run qwen:0.5b-chat
然后等待模型下载完成运行起来之后就可以使用了,下面这个进度窗口是不是与docker部署中间件很相像
然后就可以输入文本,与千问大模型进行对话,而后,就可以基于部署的模型应用于实际工作或业务中进行结合使用
由于本地搭建了Ollama,并且在Ollama上安装了千问大模型,就可以将千问大模型当GPT一样使用进行交流,参考下面具体的对接步骤。
本地提前搭建一个springboot工程,然后引入Ollama核心依赖
-
-
org.springframework.ai -
spring-ai-ollama-spring-boot-starter -
配置文件中添加Ollama相关的配置信息,注意的是,Ollama本地端口为11434
- 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地址
Ollama聊天API的核心对象为OllamaChatClient,与上述的spring ai中提供的client对象类似,在程序中可以直接调用其api,如下,传入一个msg参数,返回响应的文本内容
- 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进行参数传递,看下面的接口
- @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对象,里面传入更多的参数选项做控制
- //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对接,更详细和深入的可以参阅官网资料进一步学习,本文到此结束谢谢观看。