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

张开发
2026/4/9 3:30:29 15 分钟阅读

分享文章

Java AI - LangChain4j完整指南:核心组件解析+Ollama/百炼集成+实战案例 【含代码解析及代码仓库】
LangChain4j ollamaLangChain4j介绍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"modelVersion4.0.0/modelVersiongroupIdcom.elvis/groupIdartifactIdlangchain4j-rag/artifactIdversion1.0/versionpackagingjar/packagingnamelangchain4j-rag/nameurlhttp://maven.apache.org/urlpropertiesjava.version17/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version3.5.4/spring-boot.versionlangchain4j.version1.10.0/langchain4j.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j-core/artifactIdversion${langchain4j.version}/version/dependencydependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j-ollama/artifactIdversion${langchain4j.version}/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.42/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-webflux/artifactId/dependencydependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j/artifactIdversion${langchain4j.version}/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- Redis客户端 --dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion7.3.0/version/dependencydependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j-community-web-search-engine-searxng/artifactIdversion1.10.0-beta18/version/dependencydependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j-community-web-search-engine-duckduckgo/artifactIdversion1.10.0-beta18/version/dependencydependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j-community-redis/artifactIdversion1.10.0-beta18/version/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency!--引入langchain4j依赖管理清单--dependencygroupIddev.langchain4j/groupIdartifactIdlangchain4j-bom/artifactIdversion${langchain4j.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource17/sourcetarget17/targetencodingUTF-8/encodingcompilerArgsarg-parameters/arg!--在编译代码是保留参数的名字--/compilerArgs/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.elvis.LangchainApplication/mainClassskiptrue/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/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:infoollama配置该 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

更多文章