欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > JAVA AI 框架LangChain4j 入门教程

JAVA AI 框架LangChain4j 入门教程

2025/2/26 2:40:43 来源:https://blog.csdn.net/weixin_40986713/article/details/145639531  浏览:    关键词:JAVA AI 框架LangChain4j 入门教程

以下是一篇关于 LangChain4j 的入门使用教程,包含框架介绍和开发入门指南:


LangChain4j 入门教程

1. LangChain4j 简介

LangChain4j 是一个基于 Java 的轻量级框架,旨在简化大型语言模型(LLM)在 Java 应用中的集成。它借鉴了 Python 版 LangChain 的设计理念,提供了以下核心功能:

  • 模型集成:支持 OpenAI、HuggingFace、本地模型(如 Ollama)等。
  • 提示工程:通过模板化提示(Prompt Templates)优化与模型的交互。
  • 链式调用:将多个步骤(模型调用、工具执行)组合成可复用的流程。
  • 记忆管理:支持短期/长期记忆(如对话历史记录)。
  • 数据增强:通过检索增强生成(RAG)扩展模型知识库。
  • 工具扩展:允许自定义工具(如搜索、数据库查询)扩展模型能力。

适用场景:聊天机器人、文档问答、自动化数据处理等。


2. 环境准备

2.1 添加依赖

在 Maven 或 Gradle 项目中添加依赖:

Maven
<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>0.29.0</version> <!-- 使用最新版本 -->
</dependency>
Gradle
implementation 'dev.langchain4j:langchain4j-open-ai:0.29.0'

2.2 获取 API 密钥

如需使用 OpenAI 等云服务,需注册并获取 API 密钥(示例中使用 OpenAI)。


3. 快速开始:Hello World

以下示例演示如何通过 OpenAI 生成文本:

import dev.langchain4j.model.openai.OpenAiChatModel;public class HelloWorld {public static void main(String[] args) {// 初始化 OpenAI 模型(需设置环境变量 OPENAI_API_KEY)OpenAiChatModel model = OpenAiChatModel.builder().modelName("gpt-3.5-turbo").temperature(0.3).build();// 发送提示并获取响应String response = model.generate("用一句话解释量子计算");System.out.println(response); // 输出:量子计算利用量子比特的叠加和纠缠特性,实现远超经典计算机的并行计算能力。}
}

4. 核心功能详解

4.1 提示模板(Prompt Templates)

通过模板动态生成提示,提高复用性:

import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.output.Response;public class PromptTemplateDemo {public static void main(String[] args) {OpenAiChatModel model = OpenAiChatModel.create();String template = "将以下文本翻译成{{language}}: {{text}}";String prompt = template.replace("{{language}}", "法语").replace("{{text}}", "你好,世界!");Response<String> response = model.generate(prompt);System.out.println(response.content()); // 输出:Bonjour le monde !}
}

4.2 链(Chains)

将多个操作组合成链:

import dev.langchain4j.chain.ConversationalChain;
import dev.langchain4j.memory.ChatMemory;
import dev.langchain4j.memory.chat.TokenWindowChatMemory;public class ChainDemo {public static void main(String[] args) {ChatMemory memory = TokenWindowChatMemory.withMaxTokens(500);ConversationalChain chain = ConversationalChain.builder().chatLanguageModel(OpenAiChatModel.create()).chatMemory(memory).build();String answer = chain.execute("爱因斯坦最著名的成就是什么?");System.out.println(answer); // 输出:相对论...}
}

4.3 记忆(Memory)

实现多轮对话记忆:

import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.UserMessage;interface Assistant {String chat(@MemoryId String sessionId, @UserMessage String message);
}public class MemoryDemo {public static void main(String[] args) {Assistant assistant = AiServices.builder(Assistant.class).chatLanguageModel(OpenAiChatModel.create()).chatMemoryProvider(sessionId -> TokenWindowChatMemory.withMaxTokens(1000)).build();String sessionId = "user123";System.out.println(assistant.chat(sessionId, "我最喜欢的颜色是蓝色"));System.out.println(assistant.chat(sessionId, "我刚才说喜欢什么颜色?")); // 输出:您喜欢蓝色}
}

4.4 数据加载与检索增强(RAG)

从文档加载数据并增强回答:

import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.parser.TextDocumentParser;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;public class RAGDemo {public static void main(String[] args) {// 1. 加载文档Document document = Document.from(new File("knowledge.txt"), new TextDocumentParser());// 2. 分割文本块DocumentSplitter splitter = new DocumentByParagraphSplitter();List<TextSegment> segments = splitter.split(document);// 3. 生成嵌入并存储EmbeddingModel embeddingModel = new OpenAIEmbeddingModel();EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>();store.addAll(embeddingModel.embed(segments), segments);// 4. 构建问答链ConversationalRetrievalChain chain = ConversationalRetrievalChain.builder().chatLanguageModel(OpenAiChatModel.create()).retriever(EmbeddingStoreRetriever.from(store, embeddingModel)).build();String answer = chain.execute("文档中提到的关键技术是什么?");System.out.println(answer);}
}

4.5 工具调用(Tools)

扩展模型能力(如调用天气 API):

import dev.langchain4j.agent.tool.Tool;class WeatherTools {@Tool("获取指定城市的当前温度")double getCurrentTemperature(String city) {// 调用真实 API(此处模拟)return 25.3;}
}public class ToolDemo {public static void main(String[] args) {OpenAiChatModel model = OpenAiChatModel.builder().tools(new WeatherTools()).build();String response = model.generate("上海现在的温度是多少?");System.out.println(response); // 输出:上海当前温度为25.3摄氏度}
}

5. 进阶指引

  1. 本地模型:使用 langchain4j-ollama 集成本地模型(如 Llama3)
  2. 评估与监控:集成 Prometheus 监控模型调用指标
  3. 复杂链设计:通过 ConditionalChain 实现分支逻辑
  4. 自定义输出解析:实现 OutputParser 处理非结构化响应

6. 注意事项

  • API 密钥安全:通过环境变量或密钥管理工具存储
  • 本地模型:需要部署本地推理服务(如 Ollama)
  • 性能优化:合理设置超时时间与重试策略
  • 错误处理:捕获 LangChain4jException 处理模型异常

通过本教程,您已掌握 LangChain4j 的核心概念和基础用法。接下来可以尝试:

  1. 构建客户服务自动回复系统
  2. 实现基于私有数据的文档问答机器人
  3. 开发自动化数据分析工具

完整示例代码可参考 LangChain4j 官方 GitHub。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com