当前位置: 首页 > news >正文

Java AI - LangChain4j完整指南:核心组件解析+Ollama/百炼集成+实战案例 【含代码解析及代码仓库】

LangChain4j & ollama

LangChain4j介绍

https://langchain4j.cn/

在大语言模型(LLM)飞速发展的今天,Java开发者如何快速将AI能力集成到自身应用中?LangChain4j 给出了完美答案。作为专为Java生态设计的开源LLM集成框架,它借鉴了Python版LangChain的设计理念,却深度适配Java开发习惯,让开发者无需深入研究各类LLM的专有API,就能轻松构建功能强大的AI应用。

本文将从核心认知、环境搭建、基础实战、核心功能解析四个维度,带你零基础入门LangChain4j。

什么是LangChain4j?

定义与定位

LangChain4j 是一个轻量级、模块化的Java开源框架,核心目标是简化LLM在Java应用中的集成过程,让开发者专注于业务逻辑,而非底层API适配和复杂的LLM交互细节。

它并非替代LLM,而是作为“桥梁”,统一各类LLM(如OpenAI、Google Vertex AI)和向量数据库(如Pinecone、Milvus)的调用方式,同时提供一套开箱即用的工具集,覆盖提示工程、对话记忆、函数调用、RAG等常见AI应用场景所需的核心能力。

核心优势

  • 统一API适配:支持15+主流LLM提供商和20+向量数据库,切换不同服务无需重写代码,降低学习和开发成本。

  • Java生态深度融合:完美适配Spring Boot、Quarkus、Helidon等主流Java框架,支持Maven/Gradle依赖管理,符合Java开发者的开发习惯。

  • 开箱即用的工具箱:整合了提示模板、聊天记忆、函数调用、Agents、RAG等成熟模式,每个抽象都提供接口和多种实现,无需重复造轮子。

  • 生产级就绪:内置连接池管理、超时控制、重试机制,支持环境隔离,可直接用于生产环境开发。

适用场景

LangChain4j 可广泛应用于各类AI驱动的Java应用开发,典型场景包括:

  • 智能客服机器人:礼貌响应客户咨询、处理订单变更等业务。

  • 教学助手:授课不同学科内容、解释知识点、评估用户理解程度。

  • 非结构化数据处理:从简历、客户评价、网页中提取结构化信息。

  • 内容生成与转换:生成个性化邮件、博客文章,以及文本总结、翻译、改写等。

  • 企业知识库:基于RAG技术构建私有文档问答系统,实现精准检索与问答。

与Spring Ai、Spring Ai Alibaba的关系

Spring AI:Spring 官方推出的 Java AI 应用框架,提供统一 API 抽象与 Spring Boot 原生集成,让开发者以熟悉的 Spring 方式接入各类大模型Spring。

Spring AI Alibaba:基于 Spring AI 构建的国内增强版,深度适配阿里云通义等国产模型,补充企业级 Agent 编排、服务治理与中文场景优化Spring AI Alibaba。

LangChain4j:LangChain 的 Java 官方实现,提供模块化、全功能的 LLM 应用编排能力,支持复杂 RAG、Agent 与多步骤工作流,不强制依赖 SpringLangChain4j。

  • Spring AI 与 Spring AI Alibaba继承与扩展。Spring AI Alibaba 完全基于 Spring AI 底层抽象,是其在国内模型与企业级场景的专属增强实现。
  • Spring AI 与 LangChain4j互补而非替代。Spring AI 侧重 Spring 生态的模型接入与工程化;LangChain4j 侧重复杂应用编排与 Agent 能力,二者可在 Spring Boot 项目中协同使用。
  • Spring AI Alibaba 与 LangChain4j同层竞争 + 可选集成。均面向 Java AI 应用开发,前者强绑定 Spring 与阿里云生态,后者更通用灵活;可按需选择或结合使用。

核心对比表

维度Spring AISpring AI AlibabaLangChain4j
定位Spring 官方 AI 抽象层Spring AI 国内增强版Java 全功能 LLM 应用框架
依赖关系顶层标准基于 Spring AI 扩展独立框架,不依赖 Spring
模型支持通用:OpenAI、Azure、Ollama 等主打阿里 / 国内模型:通义千问、通义万相、Ollama、HuggingFace几乎所有模型,生态最广
核心能力统一 ChatClient、简单 RAG、函数调用、向量库Spring AI 全部能力 + 阿里模型适配 + 企业级易用性复杂 RAG、Agent、多轮记忆、工具链、工作流、检索增强
轻量 / 重度极轻量轻量较重,功能全、概念多
Spring 融合度原生深度集成原生深度集成可集成 Spring,但非原生
适用场景Spring 项目快速接入 AI 接口Spring 项目 + 阿里 / 国内模型优先复杂 AI 应用:智能体、知识库、多步骤任务
学习成本极低(Spring 开发者秒会)极低较高(概念多:Chain、Tool、Embedding 等)
工程化友好度最高(自动配置、starter)最高(自带 starter)一般,需手动配置较多
代表组件ChatClient、Embedding、VectorStoreTongyiChatModel、Ollama 整合Agent、Chain、Memory、Retriever
核心组件总览

LangChain4j 的组件体系围绕“LLM交互全流程”设计,核心可分为5大类,各组件职责清晰、可灵活组合,形成完整的AI应用开发链路:

  • 模型组件(Model):核心交互层,负责与LLM、嵌入模型(Embedding Model)通信。

  • 记忆组件(Memory):负责存储对话历史、上下文信息,实现多轮对话。

  • 链组件(Chain):负责串联多个操作(模型调用、提示生成等),实现复杂业务流程。

  • 数据处理组件(Data Processing):负责文档加载、分块、嵌入,支撑RAG等场景。

  • 工具组件(Tool):负责扩展AI能力,支持调用外部工具(数据库、网页搜索等)。

后续将逐一拆解每类组件的核心实现、常用子类及实战示例,重点讲解必用的组件,进阶组件仅做简要介绍。

核心依赖

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.elvis</groupId><artifactId>langchain4j-rag</artifactId><version>1.0</version><packaging>jar</packaging><name>langchain4j-rag</name><url>http://maven.apache.org</url><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.5.4</spring-boot.version><langchain4j.version>1.10.0</langchain4j.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-core</artifactId><version>${langchain4j.version}</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-ollama</artifactId><version>${langchain4j.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.42</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId><version>${langchain4j.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- Redis客户端 --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>7.3.0</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-web-search-engine-searxng</artifactId><version>1.10.0-beta18</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-web-search-engine-duckduckgo</artifactId><version>1.10.0-beta18</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-redis</artifactId><version>1.10.0-beta18</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!--引入langchain4j依赖管理清单--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-bom</artifactId><version>${langchain4j.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>17</source><target>17</target><encoding>UTF-8</encoding><compilerArgs><arg>-parameters</arg><!--在编译代码是保留参数的名字--></compilerArgs></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.elvis.LangchainApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

核心组件详解

模型组件(Model):AI交互的核心入口

模型组件是LangChain4j与LLM、嵌入模型通信的核心,负责发送请求、接收响应,屏蔽不同模型的API差异,提供统一调用接口。核心分为两类:聊天模型(Chat Model)嵌入模型(Embedding Model)

聊天模型(Chat Model)

核心作用:处理自然语言对话,接收用户指令,返回LLM生成的响应,是最基础、最常用的组件。

常用实现类:

  • OpenAiChatModel:对接OpenAI的GPT系列模型(gpt-4o、gpt-3.5-turbo等)。

  • AzureOpenAiChatModel:对接Azure OpenAI服务,适配企业级部署场景。

  • OllamaChatModel:对接本地Ollama部署的模型(如Llama 3、Qwen),支持离线使用。

  • OllamaStreamingChatModel:对接本地Ollama部署的模型的流式聊天模型。

核心配置参数(必懂):

  • apiKey:模型访问密钥(OpenAI/Azure需配置,Ollama本地部署无需)。

  • modelName:模型名称,如gpt-4o-mini、llama3:8b。

  • temperature:输出随机性(0~1),值越小越精准,值越大越有创造性。

  • maxTokens:单次响应的最大token数,控制响应长度。

实战示例(OllamaChatModel):

主配置文件

server:port:8081ollama:base-url:http://localhost:11434embedding-model:bge-m3:latest# 本地嵌入模型 维度1024llm-model:qwen2.5:1.5b# 本地大模型spring:cache:type:redisdata:redis:host:localhostport:6379embeddingIndexName:knowledge-embedding-indexembeddingDimension:1024# Redis存储、查询时的维度langchain4j:open-ai:chat-model:base-url:https://dashscope.aliyuncs.com/compatible-mode/v1api-key:${ALI_API_KEY}# 需要将百炼的key设置到环境变量中,设置完后重启IDEAmodel-name:qwen-plusfile:dir:D:\uploadlogging:level:root:info

ollama配置

该 OllamaConfig 配置类基于 Spring Boot 与 LangChain4j 框架实现本地大模型集成,通过 @Configuration 注解声明为配置类,并利用 @Value 注解读取配置文件中的 Ollama 服务地址、大语言模型及文本嵌入模型名称,依次完成同步对话模型、流式对话模型、文本嵌入模型的 Bean 实例化配置,同时定义了可保留最近 10 条对话消息的聊天记忆组件,为项目提供稳定的本地私有化大模型交互、文本向量化与对话上下文管理能力。

packagecom.elvis.config;importdev.langchain4j.memory.ChatMemory;importdev.langchain4j.memory.chat.MessageWindowChatMemory;importdev.langchain4j.model.ollama.OllamaChatModel;importdev.langchain4j.model.ollama.OllamaEmbeddingModel;importdev.langchain4j.model.ollama.OllamaStreamingChatModel;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importjava.time.Duration;/** * Ollama配置类 */@ConfigurationpublicclassOllamaConfig{// Ollama配置@Value("${ollama.base-url}")privateStringollamaBaseUrl;@Value("${ollama.embedding-model}")// 嵌入模型:向量化文本privateStringembeddingModelName;@Value("${ollama.llm-model}")//LLMprivateStringllmModelName;@BeanpublicOllamaChatModelollamaChatModel(){returnOllamaChatModel.builder().baseUrl(ollamaBaseUrl
http://www.jsqmd.com/news/610755/

相关文章:

  • OpenClaw安全沙盒:基于SecGPT-14B的恶意代码分析自动化
  • 毕业之家使用教程:5步搞定毕业论文(附详细操作截图)
  • Linux系统目录结构与常用命令详解
  • 清关资料要求变细之后店铺稳定性为什么更依赖流程统一
  • GitHub 批量上传文件问题及解决方法
  • 告别轮询!用STM32CubeMX给STM32F030配置ADC多通道+DMA,实测代码分享
  • OpenClaw+Qwen3-14B镜像测评:Token消耗与任务成功率实测
  • 华为交换机DHCP Snooping防私接实战:从基础配置到Option82高级应用
  • 别再对齐口径了,对不齐的从来不是口径
  • 基于单片机的电子血压计(有完整资料)
  • 微电网主从控制孤岛运行与并网平滑切换策略研究(含VF、PQ控制及常见分布式发电问题归纳)
  • 线性电源芯片发热问题与开关电源选型指南
  • 新能源高速齿轮传动系统NVH开发、仿真及测试电子资料 适合机械、汽车、新能源行业工程师学习参考的资料,内容包括NVH开发基础、试验分析、模型建立、仿真方法、测试验证等
  • 电商运营自动化:OpenClaw+Phi-3-vision实现竞品图文分析
  • OpenClaw+千问3.5-9B智能监控:服务器异常自动报警
  • Ubuntu 18.04下500G硬盘如何部署Bitcoin全节点?实测避坑指南
  • OpenClaw浏览器自动化:gemma-3-12b-it操控Chrome完成信息采集
  • Kotlin Android Extensions插件弃用后,如何优雅解决act_main控件爆红问题?
  • 食品品牌想“一路狂飙”?福建远见品牌策划:全国性服务加持大单品策略,解锁增长“密码”
  • STM32 LWIP网络异常检测:三种实用方法对比与实现
  • Selenium IDE录制脚本操作记录
  • BarTender标签打印进阶:C#调用API实现动态数据填充(源码分享)
  • 每日两道力扣,day6
  • OpenClaw安全实践:百川2-13B-4bits模型+本地化处理敏感数据方案
  • 当神通数据库遇上MySQL:一个PowerDesigner逆向工程失败后的手动迁移实战
  • 【.NET 9边缘部署终极指南】:覆盖ARM64容器化、离线签名、资源精简至<28MB的7大实战验证策略
  • C语言:猜数字游戏
  • 袁永福 电子病历,医疗信息化蕴
  • 华三网络设备的静态、默认、RIP、OSPF路由配置
  • 告别论文格式内耗!Paperxie AI 排版:3 分钟搞定,导师看了都夸规范