LangChain4j 入门教程:从零开始构建 Java AI 应用
LangChain4j 为 Java 开发者提供了一条平滑进入 LLM 应用开发的路径,其简洁的 API 设计和丰富的功能组件,让构建复杂 AI 应用变得简单。无论是快速原型验证还是企业级应用开发,LangChain4j 都能满足需求希望本教程能帮助你快速掌握 LangChain4j 的核心用法,开启 Java AI 应用开发之旅!如果有任何问题,欢迎在评论区交流讨论。
作为 Java 开发者,当大语言模型(LLM)浪潮来袭时,你是否在寻找一款顺手的开发框架?LangChain4j 或许正是你需要的工具。这款专为 Java 生态设计的 LLM 应用开发框架,能让你轻松搭建从简单对话到复杂智能系统的各类 AI 应用。本文将带你从零开始,快速掌握 LangChain4j 的核心用法。
一、LangChain4j 核心优势
为什么选择 LangChain4j?这款框架最显著的特点是Java 原生支持,无需在 JVM 生态中额外处理语言兼容问题。其次,它实现了多模型统一接口,无论是 OpenAI、Anthropic 还是国内的通义千问,都能通过一致的 API 进行调用。更重要的是,它提供了完整的 AI 应用组件链,从提示词管理到记忆机制,再到工具调用,覆盖了 LLM 应用开发的全流程。
LangChain4j 与 Spring AI 对比
1. 生态集成
- LangChain4j:专注于 Java 生态,但更偏向于独立的 LLM 应用开发,与非 Spring 框架的集成更为灵活。
- Spring AI:深度集成 Spring 生态,对于已经使用 Spring Boot 等 Spring 技术栈的项目来说,上手更容易,能够充分利用 Spring 的依赖注入、自动配置等特性。
2. 功能侧重点
- LangChain4j:提供了丰富的 LLM 交互工具,如 Prompt 管理、链(Chain)操作、记忆(Memory)功能等,更侧重于 LLM 应用的核心逻辑实现。
- Spring AI:除了 LLM 交互功能外,还提供了与 Spring 生态相关的扩展能力,如 AI 服务的注册与发现、配置管理等,更注重企业级 AI 应用的构建。
3. 学习曲线
- LangChain4j:API 设计简洁直观,对于熟悉 Java 基础的开发者来说,入门相对容易,文档和示例也较为丰富。
- Spring AI:需要开发者具备一定的 Spring 框架基础,若已掌握 Spring Boot 等技术,学习成本较低;否则需要先学习 Spring 相关知识。
4. 模型支持
- 两者都支持主流的大语言模型,如 OpenAI、Google PaLM、Anthropic 等。但在具体模型的适配细节和更新速度上可能存在差异,需根据项目需求选择。
二、环境搭建与基础配置
1. 开发环境要求
- JDK 11 及以上版本(推荐 JDK 17,支持更好的密封类特性)
- Maven 3.6 + 或 Gradle 7.0+
- 科学上网环境(调用国外模型时需要)
2. 引入核心依赖
以 Maven 为例,在 pom.xml 中添加基础依赖:
<!-- 核心框架 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>0.27.0</version>
</dependency>
<!-- OpenAI模型支持 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-openai</artifactId>
<version>0.27.0</version>
</dependency>
<!-- 工具类支持(可选) -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-tools</artifactId>
<version>0.27.0</version>
</dependency>
不同模型需要对应依赖,比如使用阿里云通义千问需替换为:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-dashscope</artifactId>
<version>0.27.0</version>
</dependency>
三、快速上手:第一个 LLM 调用
1. 基础文本生成
下面的代码演示如何调用 GPT-3.5 生成文本:
import dev.langchain4j.model.openai.OpenAiChatModel;
import static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_3_5_TURBO;
public class FirstLlmCall {
public static void main(String[] args) {
// 1. 创建模型实例
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey("你的OpenAI密钥")
.modelName(GPT_3_5_TURBO)
.temperature(0.7) // 控制输出随机性
.build();
// 2. 发送请求并获取响应
String prompt = "用Java代码实现一个简单的单例模式";
String response = model.generate(prompt);
// 3. 输出结果
System.out.println("LLM响应:\n" + response);
}
}
运行这段代码,你将得到包含单例模式实现的响应。注意将apiKey替换为你的实际密钥,可在 OpenAI 控制台获取。
2. 流式响应处理
对于需要实时展示的场景(如聊天应用),流式响应更合适:
model.generateStreaming(prompt)
.onNext(chunk -> System.out.print(chunk)) // 处理每个片段
.onComplete(() -> System.out.println("\n响应结束"))
.block(); // 阻塞等待完成
四、核心功能实战
1. 提示词模板
动态生成提示词是 LLM 应用的基础能力:
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.input.PromptTemplate;
public class PromptTemplateDemo {
public static void main(String[] args) {
// 定义模板
String template = "请解释什么是{concept},并举例说明在{language}中的应用";
// 填充参数
String prompt = PromptTemplate.from(template)
.apply(Map.of(
"concept", "依赖注入",
"language", "Java"
));
// 发送请求
OpenAiChatModel model = OpenAiChatModel.withApiKey("你的密钥");
System.out.println(model.generate(prompt));
}
}
2. 对话记忆管理
实现多轮对话需要记忆机制,LangChain4j 提供了多种记忆实现:
import dev.langchain4j.memory.ChatMemory;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.data.message.*;
public class ChatMemoryDemo {
public static void main(String[] args) {
// 创建记忆(保留最近3条消息)
ChatMemory memory = MessageWindowChatMemory.withMaxMessages(3);
OpenAiChatModel model = OpenAiChatModel.withApiKey("你的密钥");
// 第一轮对话
UserMessage firstMessage = UserMessage.from("我叫张三");
memory.add(firstMessage);
String firstResponse = model.generate(memory.messages());
memory.add(AiMessage.from(firstResponse));
// 第二轮对话(模型应记住用户名)
UserMessage secondMessage = UserMessage.from("我叫什么名字?");
memory.add(secondMessage);
String secondResponse = model.generate(memory.messages());
System.out.println(secondResponse); // 应输出"你叫张三"
}
}
3. 工具调用能力
让 LLM 具备调用外部工具的能力(如查询天气、执行代码):
import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.agent.Agent;
import dev.langchain4j.agent.AgentExecutor;
public class ToolUsageDemo {
// 定义工具类
public static class CalculatorTool {
@Tool("用于计算数学表达式")
public double calculate(String expression) {
// 实际项目中可使用脚本引擎执行表达式
return 2 + 3; // 简化示例
}
}
public static void main(String[] args) {
// 创建工具实例
CalculatorTool calculator = new CalculatorTool();
// 创建代理
Agent agent = Agent.builder()
.chatLanguageModel(OpenAiChatModel.withApiKey("你的密钥"))
.tools(calculator)
.build();
// 执行代理
String result = AgentExecutor.execute(agent, "2加3等于多少?");
System.out.println(result); // 应输出5
}
}
五、进阶技巧
-
模型配置优化:通过调整 temperature(0-1)控制输出随机性,低温度适合事实性问答,高温度适合创意生成。
-
批处理请求:使用
generate(List<String>)方法批量处理多个提示词,提高效率。 -
自定义序列化:对复杂输入输出进行自定义序列化,确保数据正确传递。
-
异常处理:添加超时设置和重试机制,应对 API 调用不稳定的情况:
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey("你的密钥")
.timeout(30_000) // 30秒超时
.build();
六、常见问题解决
- 依赖冲突:若出现 Jackson 版本冲突,可在 pom.xml 中指定统一版本:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
-
模型访问问题:国内用户可优先选择阿里云、百度等国内模型,避免网络问题。
-
性能优化:对高频调用场景,可启用模型缓存:
import dev.langchain4j.cache.ChatMemoryCache;
import dev.langchain4j.cache.InMemoryChatMemoryCache;
ChatMemoryCache cache = new InMemoryChatMemoryCache();
结语
LangChain4j 为 Java 开发者提供了一条平滑进入 LLM 应用开发的路径,其简洁的 API 设计和丰富的功能组件,让构建复杂 AI 应用变得简单。无论是快速原型验证还是企业级应用开发,LangChain4j 都能满足需求
希望本教程能帮助你快速掌握 LangChain4j 的核心用法,开启 Java AI 应用开发之旅!如果有任何问题,欢迎在评论区交流讨论。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)