作为 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
    }
}

五、进阶技巧

  1. 模型配置优化:通过调整 temperature(0-1)控制输出随机性,低温度适合事实性问答,高温度适合创意生成。

  2. 批处理请求:使用generate(List<String>)方法批量处理多个提示词,提高效率。

  3. 自定义序列化:对复杂输入输出进行自定义序列化,确保数据正确传递。

  4. 异常处理:添加超时设置和重试机制,应对 API 调用不稳定的情况:

OpenAiChatModel model = OpenAiChatModel.builder()
        .apiKey("你的密钥")
        .timeout(30_000) // 30秒超时
        .build();

六、常见问题解决

  1. 依赖冲突:若出现 Jackson 版本冲突,可在 pom.xml 中指定统一版本:
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
  1. 模型访问问题:国内用户可优先选择阿里云、百度等国内模型,避免网络问题。

  2. 性能优化:对高频调用场景,可启用模型缓存:

import dev.langchain4j.cache.ChatMemoryCache;
import dev.langchain4j.cache.InMemoryChatMemoryCache;

ChatMemoryCache cache = new InMemoryChatMemoryCache();

结语

LangChain4j 为 Java 开发者提供了一条平滑进入 LLM 应用开发的路径,其简洁的 API 设计和丰富的功能组件,让构建复杂 AI 应用变得简单。无论是快速原型验证还是企业级应用开发,LangChain4j 都能满足需求

希望本教程能帮助你快速掌握 LangChain4j 的核心用法,开启 Java AI 应用开发之旅!如果有任何问题,欢迎在评论区交流讨论。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐