一、ollama安装
本文以linux安装为例(服务器主机ip:192.168.109.210)
1、自动安装(方式一)
curl -fsSL https://ollama.com/install.sh | sh
2、手动安装(方式二)
(1)下载二进制文件
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
(2)解压安装包
tar -C /usr -xzf ollama-linux-amd64.tgz
(3)启动ollama
配置环境变量,默认ollama服务只能本机访问,可通过配置开放HOST,指定ip访问
export OLLAMA_HOST=0.0.0.0:11434
export PATH=$OLLAMA_HOST:$PATH
启动服务
nohup ollama serve >> /var/logs/ollama.log 2>&1 &
查看启动日志
tail -f /var/logs/ollama.log
(4)验证服务
ollama -v
至此ollama服务安装完成。防火墙开放11434端口:
firewall-cmd --zone=public --add-port=011434/tcp --permanent
firewall-cmd --reload
浏览器访问http://192.168.109.210:11434
3、加入systemd自启服务
touch /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable ollama
此步骤不是必选项,仅为方便启动服务。
4、win环境安装(附录)
由于win安装坑太多,ollama默认将程序安装到c盘,将部署的大模型也下载到c盘,会造成c盘体积暴增,为了避坑。这里也附带记录一下。
安装指令cmd窗口,将ollama安装到指定的盘符目录下
OllamaSetup /DIR=D:\software\ollama
配置ollama的model环境变量
OLLAMA_MODELS =D:\software\ollama\models
二、deepseek部署
1、部署deepseek
访问官网查看安装指令https://ollama.com/library,由于笔记本硬件资源限制,此次选择安装8b的model。
ollama run deepseek-r1:8b
出现success表明本地大模型部署成功。接下来可以向大模型提问题了:
这种命令行窗口对于非开发人员使用显然很不友好,要是有个可视化的页面就完美了,当然,这种调用ui应用实在是太多了
此次选择open-webui
2、安装 open-webui
Open WebUI是由python开发的一个可扩展、功能丰富、用户友好的自托管WebUI,它支持各种LLM运行程序,包括Ollama和OpenAi兼容的API。直接使用docker安装即可:
docker run \
-d --name open-webui -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://192.168.109.210:11434 \
-v /home/wucf/open-webui/data:/app/backend/data \
--restart always ghcr.io/open-webui/open-webui:main \
访问192.168.109.210:3000即可
刚才在服务器上部署的deepseek 可以正常在ui 页面上加载
三、spring boot集成deepseek
市面目前调用大模型api的框架以python居多,java能用的脚手架不多,现在比较成熟的有langchain4j,spring官方的spring-ai。本次以spring-boot整合deepseek的api调用为例
1、springboot版本
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.3'
id 'io.spring.dependency-management' version '1.1.5'
}
2、大模型依赖
gradle配置以下依赖
// ollama依赖
implementation group: 'io.springboot.ai', name: 'spring-ai-ollama-spring-boot-starter', version: '1.0.3'
//spring-ai依赖
implementation group: 'org.springframework.ai', name: 'spring-ai-bom', version: '1.0.0-M6', ext: 'pom'
// deepseek整合
implementation group: 'io.github.pig-mesh.ai', name: 'deepseek-spring-boot-starter', version: '1.4.5'
3、deepseek配置
deepseek:
api-key: 官网申请填写至此
#base-url: https://api.deepseek.com/v1
#model: deepseek-chat
base-url: http:192.168.109.210:11434/v1
model: deepseek-r1:8b
4、接口编写
@GetMapping("/ai/ds/chat")
public String chatDeepSeek(String prompt){
ChatCompletionRequest request = ChatCompletionRequest.builder().addUserMessage(prompt).build();
ChatCompletionResponse response = deepSeekClient.chatCompletion(request).execute();
return response.content();
}
访问本地接口:http://127.0.0.1:8006/api/ai/ds/chat
至此就可以为前端提供访问大模型的接口,定制化的开发知识库。