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

相关推荐
NAGNIP6 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab7 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab7 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP11 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年11 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼11 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS11 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区12 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈13 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang13 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx