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 集成

相关推荐
AI数字化笔记1 小时前
【无标题】
人工智能
悦数图数据库1 小时前
图数据库选型指南 2026:从架构、性能、AI 适配三个维度看 悦数科技
数据库·人工智能·架构
北京耐用通信1 小时前
自动化工程师必修课:耐达讯自动化Modbus TCP转PROFIBUS协议转换的核心逻辑与应用
人工智能·物联网·网络协议·自动化·信息与通信
无忧智库1 小时前
某AI漫剧超级工厂AI绘画与分镜自动化生成流水线详细设计方案(WORD)
人工智能·ai作画·自动化
火山引擎开发者社区2 小时前
ArkClaw 全新升级,从 UI 到 Agent 协作全面进化
人工智能
Mininglamp_27182 小时前
会中 AI Skill 架构设计解析:3 种人设 × 7 种能力的技术实现
人工智能·语音识别·硬件·ai agent·skill
墨神谕2 小时前
人工智能(三)— 神经网络的训练
人工智能·神经网络·机器学习
RyFit2 小时前
Java + AI 实战:Spring AI 从入门到企业级落地
java·人工智能·spring
Raink老师2 小时前
【AI面试临阵磨枪-69】如何设计一个支持百万级工具的 Agent 系统?如何快速路由与选择工具?
人工智能·面试·职场和发展
oort1232 小时前
My Name:开发者部署平台OORT.sh—— AI时代的开发者部署平台,是Vibe Coding闺蜜
人工智能