LangChain4j入门(二)接入离线大模型(ollama部署方式)

前言

        上一篇文章我们实践了通过调用在线open-api的方式接入大模型,但是处于数据安全或者高并发时的费用成本考虑,我们可能有本地部署大模型的需求。

        LangChain4j实现了统一的 Java API 屏蔽底层差异,一键切换本地 Ollama 与云端模型,所以本文来实践一下从本地部署到应用接入的全过程。

一、本地部署优点

① 数据安全与隐私

        在金融、医疗等对数据安全要求极高的行业,所有请求与文本处理均在本地机器或内部私有云完成,敏感信息不出内网,能有效防止数据泄露及合规风险。相较在线 API,企业无需与第三方共享原始文本,也不必担心跨境传输带来的合规挑战(例如 GDPR、CCPA 等)。

② 低时延与高可靠

        在线调用往返网络请求,容易受到带宽抖动、网络拥堵等影响,尤其对实时性要求高的应用(如客服机器人、工业控制)不利。本地部署后,推理请求是在本地完成,响应时延由数百毫秒降至几十毫秒,甚至更低。同时在无网络环境或云服务中断情况下,应用依旧可用,保障了业务连续性。

③ 成本优化

        云端大多数按调用次数或消耗的 token 数量计费,流量和调用量激增时成本攀升迅速。相比之下,本地部署一次性采购或使用开源模型,无需按调用额外付费;只需考虑硬件折旧、电力与运维成本,更易进行成本预测与控制。

④ 深度定制与可控性

        Ollama 支持从社区或自研训练的多种开源模型(Llama 2、Mistral、Gemma 等)中自由选择,并可对模型进行细粒度微调、参数调整及插件扩展,充分契合业务场景需求。在线 API 则多受限于服务商的模型版本与功能,对模型内部参数和训练细节无权访问。

⑤ 离线可用性

        在监管严格或网络隔离的环境(如政府、军工、制造业)中,禁联网环境要求本地化部署。Ollama 本地化部署提供“脱机推理”能力,即使在完全断网状态下也可运行大模型推理与微调,满足“内网内办”需求。

⑥ 对计算资源的完全掌控

        本地化部署可根据实际硬件资源(GPU/CPU/内存)进行配置,灵活调整批量大小、并行度、显存分配等,最大化利用现有算力;同时可结合 Kubernetes、Slurm 等集群管理工具做弹性伸缩,避免云端“黑盒”资源调度带来的波动性。

⑦ 与 LangChain4j 集成的协同优势

        LangChain4j 提供与 OpenAI、Anthropic、Ollama 等多种模型的一致调用接口,轻松切换,代码改动极少;在同一个流程中,可根据需要将本地 Ollama 与云端模型结合使用,实现“成本-性能-功能”最优平衡;结合本地 Ollama 与 LangChain 的检索增强(RAG)组件,实现对私有文档的高效检索和生成,进一步提升对行业特定语料的适应能力。

二、Windows安装ollama

① ollama官网地址

        Ollama

② 进入下载界面

③ 选择Windows版本下载

        请注意,根据官方说明Windows的版本需要在10以上,本文使用的是Windows 11-24H2

④ 安装ollama

        双击下载的安装文件,然后一步一步根据指令安装即可。

安装成功后

三、ollama部署deepseek

① 选择模型

        进入ollama的官方推荐模型区选择需要的大模型。

        我的电脑显卡是4060 8G显存版本,选择deepseek-r1的8b蒸馏版本比较适合,各位可以根据自己的显卡配置选择对应的蒸馏版本。复制官方命令执行即可,ollama会自动拉取大模型。

② 部署模型

        等待下载ing

下载完成,验证功能

四、SpringBoot应用接入

① 引入依赖

        查看官方文档的引入方式

        我们直接使用starter方式引入,直接可以使用配置文件初始化,不需要手动配置了

<!-- langchain4j-ollama -->
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-ollama-spring-boot-starter</artifactId>
</dependency>

② 添加配置

        还是查看官网的配置方式

#open-ai相关配置
langchain4j:
  open-ai:
    chat-model:
      # 这里需要你自己的 api-key
      api-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      model-name: deepseek-chat
      log-requests: true
      log-responses: true
      base-url: https://api.deepseek.com
  ollama:
    chat-model:
      base-url: http://127.0.0.1:11434
      # 这里需要修改成自己部署运行的模型名称
      model-name: deepseek-r1:8b
      log-requests: true
      log-responses: true

③ 创建测试接口

private final OllamaChatModel ollamaChatModel;

/**
 * 测试LangChain4j的ollama功能
 * 向Ollama模型发送预设问题并获取回答
 *
 * @return Result<String> 包含成功状态和模型回答结果的封装对象
 * 当调用成功时返回模型回答文本,失败时返回错误信息
 */
@Operation(summary = "测试LangChain4j功能-ollama")
@PostMapping("/ollama")
public Result<String> ollama() {
    // 向 模型 提问
    String answer = ollamaChatModel.chat("请说明你的模型名称以及回答我你有什么用");
    return Result.success(answer);
}

五、测试接口

        本环节直接展示接口调用结果,测试具体步骤请查看专栏第一篇文章的测试章节。

后记

        本文完成了ollama安装,部署deepseek-R1 8b蒸馏版本,LangChain4j接口ollama。下一篇文章我们尝试接口阿里百炼的一些其他大模型。

        按照一篇文章一个代码分支,本文的后端工程的分支都是 LangChain4j-2,前端工程的分支是 LangChain4j-1。

后端工程仓库:后端工程

前端工程仓库:前端工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值