Java大模型工程能力必修课,LangChain4j 入门到实践(已完结)

LangChain4j 是什么、能解决什么问题,再通过实操案例掌握基础用法,最后了解它的工程化落地能力。下面结合新手易懂的语言和实操代码,帮你全面吃透它:相关示例

先搞懂 LangChain4j 到底是什么

LangChain4j 是专门为 Java 开发者设计的大模型应用开发框架,就像一个 “AI 工具工具箱”。咱们直接调用大模型 API 时,要写很多繁琐代码处理对话记忆、工具调用这些功能,而它把这些功能封装成了现成组件。而且它能对接 OpenAI、千问等主流模型,切换模型时几乎不用改业务代码,还能和 Spring、Spring Boot 这些 Java 常用框架无缝融合,特别适合用来开发企业级的 AI 应用,比如智能客服、知识库问答系统等。

它和 Python 版的 LangChain 相比,更适配 Java 后端的微服务、批处理等场景,还支持异步非阻塞调用,有商业版的安全审计等功能,对做 Java 企业项目的开发者很友好。

5 分钟上手:写第一个 LangChain4j 程序

新手不用先纠结复杂原理,先跑通一个简单程序更易建立认知,步骤如下:

准备环境:首先得安装 JDK11 及以上版本,然后用 Maven 管理依赖。在项目的 pom.xml 文件里添加核心依赖和 OpenAI 模型的依赖,这样就能调用对应的模型了。

编写代码:核心是初始化模型、定义交互接口、绑定服务并调用。下面的代码能实现让大模型生成 Java 冒泡排序算法,每行都加了注释方便理解:

java

运行

// 导入需要的LangChain4j类importdev.langchain4j.model.openai.OpenAiChatModel;importdev.langchain4j.service.AiServices;publicclassFirstLangChain4jApp{publicstaticvoidmain(String[]args){// 1. 初始化OpenAI的聊天模型,填入自己的apiKey,指定用gpt - 3.5 - turbo模型varchatModel=OpenAiChatModel.builder().apiKey("你的OpenAI API密钥")// 替换成自己的有效API Key.modelName("gpt-3.5-turbo").build();// 2. 定义一个助手接口,声明聊天方法,后续会自动生成实现interfaceAiAssistant{Stringchat(StringuserMessage);}// 3. 把接口和模型绑定,LangChain4j自动生成代理类,不用自己写实现AiAssistantassistant=AiServices.create(AiAssistant.class,chatModel);// 4. 调用接口,向大模型发请求,获取响应并打印Stringresponse=assistant.chat("用Java写一个冒泡排序算法");System.out.println("大模型回复:"+response);}}

运行结果:运行后控制台会输出大模型生成的冒泡排序代码。这里的关键是AiServices会自动帮我们实现接口,不用手动处理和模型的通信细节。

核心组件拆解:搞懂每个 “零件” 的作用

跑通基础程序后,再理解核心组件,就能应对更复杂的需求。这些组件就像积木,组合起来能搭建出复杂的 AI 应用:

模型(Models):这是和大模型沟通的桥梁。LangChain4j 用ChatModel接口统一了不同模型的调用方式。比如你想换成千问模型,只需换对应的模型构建类,不用改后面的业务代码。甚至本地部署的 Ollama 模型,也能通过对应的适配类接入。

记忆(Memory):解决多轮对话 “健忘” 的问题。比如用户先问 “推荐一本 Java 书”,再问 “它的作者是谁”,模型需要记住上一轮推荐的书。LangChain4j 的ConversationBufferMemory就是常用的记忆组件,能存储对话历史,下次调用模型时自动传入上下文。

工具(Tools):给模型加 “手脚”,让它能调用外部功能。比如模型不会算复杂数学题、拿不到实时天气,这时可以把 “计算器”“天气查询接口” 封装成工具。模型会根据用户问题,自动决定调用哪个工具。比如下面的简单计算器工具示例:

java

运行

importdev.langchain4j.service.AiService;importdev.langchain4j.service.Tool;// 定义工具类,封装计算功能classCalculatorTool{// 用@Tool注解标记这是工具方法,描述清楚功能@Tool("计算两个整数的和")publicintadd(inta,intb){returna+b;}}// 定义AI服务接口@AiService(tools=CalculatorTool.class)interfaceCalculatorAssistant{Stringchat(Stringmessage);}// 调用时,模型会自动调用add方法计算publicclassToolDemo{publicstaticvoidmain(String[]args){CalculatorAssistantassistant=AiServices.create(CalculatorAssistant.class,OpenAiChatModel.builder().apiKey("你的API密钥").modelName("gpt-3.5-turbo").build());System.out.println(assistant.chat("35加48等于多少"));}}

提示词模板:避免每次都写重复提示词。比如做文本总结时,每次都要写 “总结以下文本”,用模板可以写成 “总结以下文本:{text}”,调用时只需传入 {text} 对应的内容,既方便又不易出错。

实用进阶功能:从原型到能用的应用

掌握基础后,这些进阶功能能让你的应用更贴近生产环境需求:

多轮对话记忆:给上面的基础程序加记忆功能,实现连贯对话。比如:

java

运行

importdev.langchain4j.memory.ConversationBufferMemory;importdev.langchain4j.model.openai.OpenAiChatModel;importdev.langchain4j.service.AiServices;publicclassChatWithMemory{publicstaticvoidmain(String[]args){OpenAiChatModelchatModel=OpenAiChatModel.builder().apiKey("你的API密钥").modelName("gpt-3.5-turbo").build();// 初始化对话记忆组件ConversationBufferMemorymemory=ConversationBufferMemory.create();interfaceChatBot{Stringchat(Stringmessage);}// 绑定记忆组件ChatBotchatBot=AiServices.builder(ChatBot.class).chatModel(chatModel).memory(memory).build();// 多轮对话System.out.println(chatBot.chat("我叫小明"));System.out.println(chatBot.chat("记住我的名字了吗"));// 模型会回复记住了小明}}

流式响应:避免用户长时间等待。比如模型生成大段文本时,流式响应能让内容逐字输出,就像聊天时对方边打字边显示。只需用StreamingChatModel替代ChatModel,示例如下:

java

运行

importdev.langchain4j.model.openai.OpenAiStreamingChatModel;importdev.langchain4j.model.output.Response;importdev.langchain4j.service.AiServices;publicclassStreamingResponseDemo{publicstaticvoidmain(String[]args){// 初始化流式模型OpenAiStreamingChatModelstreamingModel=OpenAiStreamingChatModel.builder().apiKey("你的API密钥").modelName("gpt-3.5-turbo").build();interfaceStreamingAssistant{Response<String>chat(Stringmessage);}StreamingAssistantassistant=AiServices.create(StreamingAssistant.class,streamingModel);// 流式接收并打印响应assistant.chat("讲一个简短的Java编程笑话").onNext(System.out::print);}}

检索增强生成(RAG):解决模型 “胡说八道” 的问题。比如做企业知识库问答,模型没学过公司内部文档,这时可以用 RAG 把文档转成向量存储起来。用户提问时,先从向量库检索相关文档片段,再让模型基于这些片段生成答案。这是企业应用中很常用的功能,LangChain4j 支持对接 MongoDB 等向量存储组件。

新手落地小建议

先从简单场景入手,比如先实现单轮对话,再逐步加记忆、工具功能,不要一开始就挑战复杂的 RAG 或智能 Agent。

优先用小模型测试,比如 gpt-3.5-turbo,调用成本低、响应快,等功能稳定了再考虑切换到更强大的模型。

注意 API 密钥的安全,不要直接写在代码里,可通过环境变量或配置文件读取。

多调试提示词,比如用@SystemMessage给模型定角色(如 “你是 Java 技术顾问”),能让模型的回复更符合需求。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容