Langchain4j 系列之二十七 - Ollama集成Deepseek

上一个系列讲了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端口教程

2)访问:http://localhost: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 集成

相关推荐
江瀚视野几秒前
小马智行发布PonyWorld世界模型2.0,如何改变市场?
人工智能
XM_jhxx3 分钟前
厦门晚报报道简会入选省首批“小快轻准”数字化产品
大数据·人工智能
Ivanqhz4 分钟前
SMT(Satisfiability Modulo Theories,基于模理论的可满足性)
人工智能·算法·机器学习
ZGi.ai5 分钟前
一个LLM网关需要处理哪些工程问题?多模型路由与成本归因实战
大数据·网络·人工智能
BioRunYiXue6 分钟前
AlphaGenome:DeepMind 新作,基因组学迎来 Alpha 时刻
java·linux·运维·网络·数据库·人工智能·eclipse
STRUGGLE_xlf10 分钟前
产品经理的 Claude Code 免费教程——模块 3:Nano Banana(AI 图像生成)
人工智能·产品经理
却道天凉_好个秋10 分钟前
pytorch(一):张量
人工智能·pytorch·python·深度学习
搞科研的小刘选手12 分钟前
【高届数人文社科会议】第十二届人文学科和社会科学研究国际学术会议(ICHSSR 2026)
大数据·人工智能·电子信息·电子工程·学术会议·信息工程·电路工程
0xDevNull14 分钟前
现代AI系统架构全景解析
人工智能·系统架构
华清远见IT开放实验室16 分钟前
AI 算法核心知识清单(深度实战版1)
人工智能·python·深度学习·学习·算法·机器学习·ai