在本地环境部署大型语言模型(LLM)并集成到现有系统中,已经成为许多开发者探索AI能力落地的首选方案。今天我将分享如何通过Ollama框架私有化部署DeepSeek模型,并实现与SpringBoot项目的无缝集成,最后还会介绍一个功能完善的UI界面解决方案。
Ollama作为一个专为本地运行大型语言模型设计的开源框架,具有以下优势:
而DeepSeek作为国产开源模型,在中文处理和多模态支持上表现优异,特别适合中文场景的应用开发。1.5b版本的模型在保持较好性能的同时,对硬件要求相对友好,适合大多数开发者的本地环境。
首先访问Ollama官网下载页面(https://ollama.com/download)获取最新版本的安装程序。如果下载速度不理想,可以考虑以下两种方案:
bash复制wget https://github.com/ollama/ollama/releases/download/v0.5.8-rc10/OllamaSetup.exe
提示:安装前请确保C盘有至少10GB可用空间,因为默认安装路径和模型存储都在C盘。
安装完成后,在CMD中执行ollama命令,如果看到usage提示信息,说明安装成功。注意首次运行后需要先关闭Ollama进程,因为默认安装后会立即启动服务。
为了避免C盘空间被大量占用,我们需要配置模型存储路径:
创建系统环境变量:
(可选)修改服务端口:
这个修改主要是为了与后续Web UI的默认端口保持一致
(可选)配置跨域访问:
访问Ollama模型库(https://ollama.com/library/deepseek-r1)选择适合的DeepSeek版本。对于大多数开发环境,1.5b版本是个不错的平衡点:
bash复制ollama run deepseek-r1:1.5b
下载过程会显示进度条,完成后会自动进入交互模式,你可以直接在这里测试模型是否正常工作。
对于Linux服务器环境,部署更加简单:
bash复制# 一键安装
curl -fsSL https://ollama.com/install.sh | sh
# 设置开机自启
sudo systemctl enable ollama
# 启动服务
sudo systemctl start ollama
# 检查状态
sudo systemctl status ollama
# 下载模型
ollama run deepseek-r1:1.5b
Ollama提供了完善的REST API(文档参考:https://github.com/ollama/ollama/blob/main/docs/api.md),我们主要使用生成接口:
创建一个OllamaUtil工具类,封装与模型的交互逻辑:
java复制package com.example.springtestdemo.ai.util;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class OllamaUtil {
private static String DOMAIN = "http://localhost:11434/api/generate";
public static String chatDeepSeek(String model, String question) {
String url = DOMAIN;
JSONObject body = new JSONObject();
body.put("model", model);
body.put("prompt", question);
body.put("stream", false);
String result = CommonUtil.postJson(url, body.toJSONString());
log.info("【ollama-请求】结果 {}", result);
try {
JSONObject resJson = JSONObject.parseObject(result);
return resJson.getString("response");
} catch (Exception e) {
log.error("【ollama-请求】异常", e);
return "请求处理失败";
}
}
}
创建REST控制器提供对外接口:
java复制package com.example.springtestdemo.ai.controller;
import com.example.springtestdemo.ai.util.OllamaUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AiController {
@PostMapping("/deepSeek")
public String deepSeek(@RequestBody QueryParam query) {
return OllamaUtil.chatDeepSeek("deepseek-r1:1.5b", query.getQuestion());
}
}
// 请求参数类
class QueryParam {
private String question;
// getter/setter省略
}
推荐使用"Ollama WebUI"插件(Edge商店地址:https://www.crxsoso.com/webstore/detail/jfgfiigpkhlkbnfnbobbkinehhfdhndo),它提供了:
安装后只需配置Ollama服务地址(如http://localhost:11434)即可开始使用。
如果想完全自主控制,可以考虑以下开源项目:
Chatbot UI:基于Next.js的简洁界面
bash复制git clone https://github.com/mckaywrigley/chatbot-ui
Open WebUI:功能全面的解决方案
bash复制docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
现象:下载过程中断或速度极慢
解决方案:
bash复制ollama pull --insecure-registry deepseek-r1:1.5b
现象:SpringBoot调用时出现连接超时
检查步骤:
ollama serve现象:模型加载失败或响应缓慢
优化建议:
bash复制export OLLAMA_MAX_MEMORY=8GB
Ollama支持基于已有模型的微调:
bash复制# 创建Modelfile
FROM deepseek-r1:1.5b
# 设置系统提示
SYSTEM """你是一个专业的AI助手"""
# 添加示例对话
MESSAGE user "你好"
MESSAGE assistant "您好,有什么可以帮您?"
# 构建自定义模型
ollama create my-deepseek -f Modelfile
查看已下载模型:
bash复制ollama list
删除不再需要的模型:
bash复制ollama rm deepseek-r1:1.5b
使用内置的metrics端点获取性能数据:
bash复制curl http://localhost:11434/api/version
生产环境部署:
敏感数据处理:
资源隔离:
在实际项目中,我建议先在小规模测试环境中验证整套方案的可行性,再逐步扩展到生产环境。对于企业级应用,可以考虑使用Kubernetes来管理Ollama服务的部署和扩缩容。