上一个系列讲了Spring AI得到反馈效果不错,有人私信我说这个和Langchain4j有什么区别。如果站在使用方面,都是基于Java的大模型应用研发的工具,本质上没太大区别。但是从细节层面来说还是有很多不同之处,所以索性借此机会,给大家分享一下Langchain4j框架。在本系列中会按照Spring AI系列的顺序来写Langchain4j,这样的好处是可以对比两者不同的细节。
注意 :由于框架不同版本改造会有些使用的不同,因此本次系列中使用基本框架是langchain4j-1.9.1,JDK版本使用的是19。另外本系列尽量使用Java原生态,尽量不依赖于Spring和Spring Boot。虽然langchain4j也支持Spring Boot集成,但是如果是使用Spring Boot框架,那为何不索性使用Spring AI。
本系列的所有代码地址: https://github.com/forever1986/langchain4j-study
目录
- [1 Ollama](#1 Ollama)
- [2 示例演示](#2 示例演示)
-
- [2.1 部署机器准备(可选)](#2.1 部署机器准备(可选))
- [2.2 Ollama的安装](#2.2 Ollama的安装)
- [2.3 开放AutoDL端口(可选)](#2.3 开放AutoDL端口(可选))
- [2.4 代码](#2.4 代码)
- [2.5 演示效果](#2.5 演示效果)
上一章讲解了如何本地加载ONNX格式的模型,并在Langchain4j 中使用该格式的模型。这一章讲解如何使用Ollama运行Deepseek模型,并通过Langchain4j 调用。
1 Ollama
如果部署过大模型的朋友,应该知道大模型部署比较麻烦,更何况要使用不同大模型,其API接口也有些小差异。这时候就有人想着要是能一键部署就好了,因此Ollama就出现了。
Ollama 是一个强大的本地推理大模型平台,旨在简化模型的本地部署、管理和推理工作流。它允许用户在本地机器上拉取、管理、运行大模型,并提供多种访问方式,包括本地 CLI、HTTP 接口以及通过 OpenAI 客户端的集成。这篇文章将详细介绍 Ollama 的功能,如何使用 Ollama 拉取模型、运行模型,并通过多种方式访问推理服务。
简单理解,它就是一个大模型的安装工具,可以安装各类大模型,并且适合于各种平台Windows、Linux、MacOS、Docker等等。因此它就变成越来越受欢迎,最终使得它能部署的大模型也就越来越多。这一点上,Langchain4j 也是有一样的目的,就是让用户使用起来方便,这样很多大模型都会提供Langchain4j 的插件,这样用户就不用担心模型迁移的问题。
2 示例演示
示例说明:本次演示通过Ollama部署deepseek-r1:7b模型,并通过Langchain4j 客户端进行访问
2.1 部署机器准备(可选)
说明 :由于本人比较穷,没有很好的显卡,因此在网上租了一台,在AutoDL上面租赁的。如果自己机子的,可以自己安装,不用参考这一部分。
1)在AutoDL申请一台机子,显卡3090即可

2)其镜像选择ubuntu22.04即可

3)通过Web界面JupyterLab工具访问

2.2 Ollama的安装
1)执行以下命令安装Ollama
shell
curl -fsSL https://ollama.com/install.sh | sh

2)安装成功之后,启动Ollama(注意:这里设置端口)
shell
export OLLAMA_HOST="0.0.0.0:6006"
ollama serve

说明:这里增加一个临时变量配置,将ollama的HOST设为0.0.0.0是允许外部访问。端口设置为6006是因为AutoDL只提供6006端口对外访问(如果你这边是自己本地机子,可以不用设置该变量)
3)下载deepseek-r1:7b模型
shell
export OLLAMA_HOST="0.0.0.0:6006"
ollama run deepseek-r1:7b

下载完成

2.3 开放AutoDL端口(可选)
说明 :该步骤是因为我使用了远程机子AutoDL,而AutoDL只开放6006端口,如果你使用自己的机子,可以跳过这一步。
1)本地设置可以访问AutoDL服务器的6006端口
参考视频:AutoDL暴露6006端口教程


说明:当在本地使用:http://localhost:6006 访问到上图的内容,即说明本地已经和AutoDL打通了6006端口
2.4 代码
代码参考lesson11子模块
1)在lesson11子模块下,其pom引入如下插件:
xml
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-ollama</artifactId>
</dependency>
2)在lesson11子模块下,新建OllamaTest 类
java
package com.langchain.lesson11;
import dev.langchain4j.model.ollama.OllamaChatModel;
public class OllamaTest {
public static void main(String[] args) {
OllamaChatModel ollamaChatModel = OllamaChatModel.builder()
.baseUrl("http://localhost:6006")
.modelName("deepseek-r1:7b")
.build();
System.out.println(ollamaChatModel.chat("你是谁?"));
}
}
2.5 演示效果
1)运行OllamaTest 测试,结果如下:

结语:本章示了Ollama的部署和运行,然后又演示了如何在Langchain4j调用Ollama大模型。为什么Ollama如此重要,这是因为Ollama通过统一规范,让不同厂商的大模型统一化,这个对后续应用非常友好,因此现在很多人都喜欢使用该方式部署大模型。因此Langchain4j才会特意兼容Ollama部署好的大模型。
Langchain4j 系列上一章:《Langchain4j 系列之二十六 - ONNX部署本地模型》
Langchain4j 系列下一章:《Langchain4j 系列之二十八 - Hugging Face 集成》
