通过Ollama本地部署离线版deepseek,并通过JAVA程序调用实现对话功能
本文介绍了在Windows 11环境下安装和配置Ollama大模型的过程,以及如何通过Java接口调用该模型。首先,作者详细说明了从Ollama官网下载并安装Windows版本应用程序的步骤,包括验证安装和启动Ollama服务。接着,作者指导如何从Ollama模型库下载特定的大语言模型,并通过命令行运行模型进行交互式对话。最后,文章提到了使用Java接口调用Ollama模型的关键代码,为开发者提供
一、作者本地环境
操作系统:Windows11
开发工具:IntelliJ IDEA
JDK:JAVA1.8
大模型:ollama、deepseek-8b
作者电脑配置:

二、安装Ollama
- 下载 Ollama:访问Ollama 官方网站,点击 “Download” 下载应用程序,选择 Windows 版本进行下载。

2.安装 Ollama:双击下载的.exe文件,按照安装向导的提示完成安装。(不过多赘述)

3.验证安装:打开命令提示符(CMD)或 PowerShell,输入ollama --version,若显示 Ollama 的版本信息,则说明安装成功。

注,如果找不到,配置一下环境变量。
4.启动 Ollama 服务:在命令提示符或 PowerShell 中输入ollama serve,启动 Ollama 服务。
5.下载大语言模型:访问 Ollama 模型库,选择想要部署的模型,使用ollama pull [模型名称]命令进行下载。例如,ollama pull deepseek-r1:8b。

6.运行模型:输入ollama run [模型名称]命令来运行模型,进入大语言模型交互式对话模式,输入问题即可获得模型回复。例如,ollama run deepseek-r1:8b。

三、JAVA接口调用
关键代码:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class OllamaChat {
private static final String OLLAMA_API_URL = "http://localhost:11434/api/generate";
private static final String MODEL_NAME = "deepseek-r1:8b";
private static final ObjectMapper mapper = new ObjectMapper();
private final List<String> chatHistory = new ArrayList<>();
public static void main(String[] args) throws IOException {
OllamaChat chat = new OllamaChat();
Scanner scanner = new Scanner(System.in);
System.out.println("开始对话(输入'exit'退出):");
while (true) {
System.out.print("用户: ");
String input = scanner.nextLine();
if ("exit".equalsIgnoreCase(input)) break;
chat.sendChatRequest(input);
}
scanner.close();
}
private void sendChatRequest(String userInput) throws IOException {
// 添加用户输入到历史
chatHistory.add("用户: " + userInput);
// 构造请求体
String prompt = String.join("\n", chatHistory) + "\n助手: ";
String requestBody = String.format(
"{\"model\": \"%s\", \"prompt\": \"%s\", \"stream\": true}",
MODEL_NAME, escapeJson(prompt));
// 发送HTTP请求
HttpURLConnection connection = (HttpURLConnection) new URL(OLLAMA_API_URL).openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);
try (OutputStream os = connection.getOutputStream()) {
os.write(requestBody.getBytes());
os.flush();
}
// System.out.println("打印请求json:"+requestBody);
// 处理响应
if (connection.getResponseCode() != 200) {
throw new IOException("请求失败: HTTP " + connection.getResponseCode());
}
StringBuilder responseText = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
if (!line.isEmpty()) {
JsonNode responseJson = mapper.readTree(line);
String partialResponse = responseJson.get("response").asText();
responseText.append(partialResponse);
System.out.print(partialResponse);
System.out.flush();
}
}
}
System.out.println();
// 添加助手响应到历史
chatHistory.add("助手: " + responseText.toString());
}
// 处理JSON特殊字符转义
private String escapeJson(String input) {
return input.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace("\n", "\\n")
.replace("\r", "\\r")
.replace("\t", "\\t");
}
}
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐

所有评论(0)