JAVA系统如何调用本地部署的DeepSeek
安装完成后,打开命令提示符(CMD),输入 ollama 命令。如果有输出信息,则表示安装成功;如果显示“不是内部命令”,则需要配置环境变量。打开 Ollama 首页,点击 DeepSeek-R1 模型。根据电脑的硬件配置选择合适的模型参数量,复制安装命令,在命令提示符中执行命令。前往 Ollama 主页,点击下载,选择对应操作系统进行下载。下载完成后打开安装程序,按照提示完成安装。配置完成后,重
·
一、下载部署DeepSeek
1.下载ollama
前往 Ollama 主页,点击下载,选择对应操作系统进行下载。下载完成后打开安装程序,按照提示完成安装。
安装完成后,打开命令提示符(CMD),输入 ollama 命令。如果有输出信息,则表示安装成功;如果显示“不是内部命令”,则需要配置环境变量。
配置环境变量以及更改ollama模型路径
以 Windows 10 系统为例:
- 右键点击“此电脑”,选择“高级系统设置”。
- 在“高级”选项卡中,点击“环境变量”按钮。
- 在“系统变量”区域,找到并选择“Path”变量,点击“编辑”按钮。
- 点击“新建”,输入 ollama 的安装路径(默认为 C:\Users\XX\AppData\Local\Programs\ollama),然后点击“确定”保存更改。
- 如果需要更改模型存储路径,可以在“系统变量”区域点击“新建”,输入变量名 OLLAMA_MODELS,变量值为希望存储模型的路径(如 D:\ollama\models)。
配置完成后,重启电脑,再次打开命令提示符,输入 ollama 命令,查看是否输出成功。
2.下载DeepSeek-R1模型并启动
打开 Ollama 首页,点击 DeepSeek-R1 模型。根据电脑的硬件配置选择合适的模型参数量,复制安装命令,在命令提示符中执行命令。
安装完成后,模型会自动启动。可以通过以下命令管理模型:
- ollama list:查看已安装的模型。
- ollama ps:查看正在运行的模型。
- ollama run 模型名称:启动指定模型。
- ollama rm 模型名称:卸载指定模型。
二、JAVA项目接入DeepSeek —— 使用JBoltAI框架
- 引入JBoltAI依赖
在项目的pom.xml文件中引入JBoltAI的依赖:
<dependency>
<groupId>com.jbolt</groupId>
<artifactId>jbolt-ai-core</artifactId>
<version>1.0.0</version>
</dependency>
- 注册DeepSeek模型资源
通过ResourceCenter类注册DeepSeek模型资源:
import com.jbolt.ai.core.resource.ResourceCenter;
import com.jbolt.ai.core.model.AIModel;
public class Main {
public static void main(String[] args) {
// 注册DeepSeek模型资源
ResourceCenter.registerAI("deepseek", AIModel.DEEPEEK, "your_api_key")
.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 11434)));
}
}
- 调用聊天接口
使用JBoltAI.chat()方法调用DeepSeek模型进行聊天:
import com.jbolt.ai.core.event.AIChatEvent;
import com.jbolt.ai.core.model.AIModel;
public class ChatExample {
public static void main(String[] args) {
// 调用DeepSeek模型进行聊天
AIChatEvent chatEvent = JBoltAI.chat()
.setModelName("deepseek") // 设置使用的模型
.prompt("你好,你能帮我介绍一下JBoltAI框架吗?") // 设置聊天内容
.setStream(false) // 设置是否流式响应
.onSuccess((event, msg) -> {
System.out.println("大模型返回了:" + msg.getContent());
}) // 设置成功回调
.onFail((event, error) -> {
System.out.println("发生异常:" + error.getMsg());
}); // 设置失败回调
// 发布事件
chatEvent.publish().await();
}
}
- 实现复杂的业务流程
通过事件链实现复杂的业务流程,例如根据用户提问生成数据库查询语句:
import com.jbolt.ai.core.chain.EventChainNode;
import com.jbolt.ai.core.chain.BooleanChainNode;
import com.jbolt.ai.core.event.AIChatEvent;
import com.jbolt.ai.core.model.AIModel;
public class BusinessProcessExample {
public static void main(String[] args) {
// 模拟用户提问
String userQuestion = "张三下了几个单?";
// 创建一个提问的节点
EventChainNode askNode = new EventChainNode(chain -> {
AIChatEvent askEvent = JBoltAI.chat()
.setModelName("deepseek")
.prompt("请判断用户的提问是否和订单查询有关,如果有关,请直接返回true,无关直接返回false。\n" +
"以下是用户的提问:`{}`", userQuestion)
.onSuccess((e, msg) -> {
System.out.println("大模型返回了:" + msg.getContent());
chain.setData("isOrderSearch", msg.getContent());
})
.onFail((e, error) -> {
System.out.println(error.getMsg());
});
return askEvent;
});
// 创建一个判断节点
BooleanChainNode judgeNode = new BooleanChainNode(chain -> {
String isOrderSearch = chain.getData("isOrderSearch");
boolean result = StrUtil.contains(isOrderSearch, "true");
System.out.println("判断是否是和订单查询有关:" + result);
return result;
});
// 创建一个提取关键词的节点
EventChainNode sqlNode = new EventChainNode(chain -> {
AIChatEvent sqlEvent = JBoltAI.chat()
.setModelName("deepseek")
.prompt("请根据用户的提问,生成一个mysql数据库的订单查询语句,然后请直接输出语句,不要输出其他说明性文字。订单表的结构为:\n" +
"CREATE TABLE `order` (\n" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',\n" +
" `userName` varchar(40) COMMENT '用户名',\n" +
" `sn` varchar(40) COMMENT '订单号',\n" +
" PRIMARY KEY (`id`)\n" +
") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n" +
"以下是用户的提问:`{}`", userQuestion)
.onSuccess((e, msg) -> {
System.out.println("大模型生成的查询语句:" + msg.getContent());
chain.setData("searchSql", msg.getContent());
})
.onFail((e, error) -> {
System.out.println(error.getMsg());
});
return sqlEvent;
}).addPrevWhenTrue(judgeNode);
// 构建并运行链条
EventChainNode root = new EventChainNode();
root.addNext(askNode).addNext(judgeNode).addNext(sqlNode);
root.run();
}
}
更多推荐
所有评论(0)