🚀 LangChain4j简述与示例

让 Java 开发者也能轻松玩转大模型!


📖 什么是 LangChain4j?

LangChain4j 是一个专为 Java 开发者量身打造的大模型集成框架。

它的核心目标很简单:简化将 LLM(大语言模型)集成到 Java 应用中的过程。

无论你是想用 OpenAI、通义千问,还是 DeepSeek,LangChain4j 都提供了一套统一的 API,让你不用为每个模型重写代码——换模型?改一行配置就行。


🎯 核心优势

1️⃣ 专为 Java 而生

LangChain4j 深度集成了 Quarkus、Spring Boot、Helidon 等主流 Java 框架,可以实现:

  • ✅ 从 Java 代码直接调用大模型
  • ✅ 让大模型反过来调用你的 Java 代码(工具调用)
  • ✅ 双向互动,无缝衔接

2️⃣ 统一 API,告别适配地狱

各大模型平台(OpenAI、Google Vertex AI、通义千问等)和向量数据库(Milvus、Pinecone 等)各有各的 API。

LangChain4j 做了什么呢?统一抽象。

你只需要面向一套接口编程,想换模型?切换配置即可,无需重写任何业务代码。

3️⃣ 开箱即用的工具箱

自 2023 年初以来,社区已经构建了海量的 LLM 应用。LangChain4j 把这些最佳实践提炼成了即用型组件:

组件 说明
📝 Prompt 模板 灵活的提示词模板引擎
💬 聊天记忆 自动管理多轮对话上下文
🔍 RAG 管道 完整的检索增强生成方案
🗄️ 向量存储 支持 20+ 主流向量数据库


🌐 支持的大模型平台

LangChain4j 目前支持 15+ 主流大模型平台,覆盖国内外主流厂商:

💡 重点平台速览

  • DashScope(阿里百炼) — 通义千问系列
  • Ollama — 本地部署开源模型
  • 千帆(百度) — 文心一言系列
  • 智谱 AI — ChatGLM 系列
  • DeepSeek — 深度求索
  • OpenAI / Anthropic / Google — 海外主流

🔑 阿里百炼模型调用指南

以阿里百炼平台(DashScope)为例,手把手教你接入。

Step 1:获取API Key

登录百炼平台 → 创建 API Key:

⚠️ 安全提示:API Key 请妥善保管,建议配置为环境变量,不要硬编码到代码中!

Step 2:选择模型 Code

进入模型广场,选择你想要的模型,复制对应的 Code

📌 常用模型:qwen-plus(通义千问-Plus)、qwen-turbo(通义千问-Turbo)

Step 3:获取 Base URL

点击模型的 API 参考,获取调用地址:


🔑 DeepSeek 模型调用指南

平台地址

进入 DeepSeek 开放平台,查看用量和 API Key 管理。

创建 API Key


💻 Hello World 实战:接入阿里百炼

理论讲完了,直接上代码!我们用一个完整的 Spring Boot 项目来演示。

1️⃣ 创建项目模块

2️⃣ Maven 依赖

<project>
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.whc</groupId>

    <artifactId>langChain4j-whc</artifactId>

    <version>1.0-SNAPSHOT</version>

  </parent>

  <artifactId>langchain4j-whc-helloworld</artifactId>

  <properties>
    <maven.compiler.source>17</maven.compiler.source>

    <maven.compiler.target>17</maven.compiler.target>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  </properties>

  <dependencies>
    <!-- Spring Boot Web -->
    <dependency>
      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    <!-- LangChain4j OpenAI 兼容模块 -->
    <dependency>
      <groupId>dev.langchain4j</groupId>

      <artifactId>langchain4j-open-ai</artifactId>

    </dependency>

    <!-- LangChain4j 核心 -->
    <dependency>
      <groupId>dev.langchain4j</groupId>

      <artifactId>langchain4j</artifactId>

    </dependency>

    <!-- Lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>

      <artifactId>lombok</artifactId>

      <optional>true</optional>

    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-maven-plugin</artifactId>

      </plugin>

    </plugins>

  </build>

</project>

💡 关键点:使用 langchain4j-open-ai 模块,因为百炼平台兼容 OpenAI 的 API 格式。

3️⃣ 配置文件

server:
  port: 9001

spring:
  application:
    name: langChain_whc_helloWord

ai:
  dashScope:
    apiKey: ${AI_DASHSCOPE_API_KEY}
    modelName: ${AI_DASHSCOPE_MODEL_NAME}
    baseUrl: ${AI_DASHSCOPE_BASE_URL}

📌 三部分对应关系:

  • apiKey → 你的 API Key
  • modelName → 模型 Code(如 qwen-plus
  • baseUrl → 模型调用地址

4️⃣ 启动类

@SpringBootApplication
public class HelloWorldApp {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApp.class, args);
    }
}

5️⃣ 大模型配置类

@Slf4j
@Configuration
public class LlmConfig {

    @Value("${ai.dashScope.apiKey}")
    private String apiKey;

    @Value("${ai.dashScope.modelName}")
    private String modelName;

    @Value("${ai.dashScope.baseUrl}")
    private String baseUrl;

    @Bean
    public ChatModel chatModel() {
        return OpenAiChatModel.builder()
                .apiKey(apiKey)
                .modelName(modelName)
                .baseUrl(baseUrl)
                .build();
    }
}

🔐 最佳实践:API Key 等敏感参数建议配置为环境变量,避免泄露。

6️⃣ 测试接口

@Slf4j
@RestController
public class HelloController {

    @Resource
    private ChatModel chatModel;

    @GetMapping("langChain4j/hello")
    public String hello(@RequestParam(value = "question", defaultValue = "你是谁") String question) {
        String result = chatModel.chat(question);
        log.info("调用大模型回复: " + result);
        return result;
    }
}

7️⃣ 测试效果

问题 1:介绍下自己

问题 2:佛山有什么特色美食?

🎉 恭喜! 你的第一个 LangChain4j 应用已经跑通了!


💻 进阶实战:同时接入多个模型

实际项目中,我们可能需要同时接入多个模型进行对比或切换。下面演示如何同时接入 阿里百炼 + DeepSeek

1️⃣ 扩展配置

server:
  port: 9001

spring:
  application:
    name: langChain_whc_helloWord

ai:
  dashScope:
    apiKey: ${AI_DASHSCOPE_API_KEY}
    modelName: ${AI_DASHSCOPE_MODEL_NAME}
    baseUrl: ${AI_DASHSCOPE_BASE_URL}
  deepSeek:
    apiKey: ${AI_DEEPSEEK_API_KEY}
    modelName: ${AI_DEEPSEEK_MODEL_NAME}
    baseUrl: ${AI_DEEPSEEK_BASE_URL}

2️⃣ 配置环境变量

3️⃣ 配置类(多 Bean)

@Slf4j
@Configuration
public class LlmConfig {

    @Value("${ai.dashScope.apiKey}")
    private String dashScopeApiKey;
    @Value("${ai.dashScope.modelName}")
    private String dashScopeModelName;
    @Value("${ai.dashScope.baseUrl}")
    private String dashScopeBaseUrl;

    @Value("${ai.deepSeek.apiKey}")
    private String deepSeekApiKey;
    @Value("${ai.deepSeek.modelName}")
    private String deepSeekModelName;
    @Value("${ai.deepSeek.baseUrl}")
    private String deepSeekBaseUrl;

    @Bean
    public ChatModel dashScopeChatModel() {
        return OpenAiChatModel.builder()
                .apiKey(dashScopeApiKey)
                .modelName(dashScopeModelName)
                .baseUrl(dashScopeBaseUrl)
                .build();
    }

    @Bean
    public ChatModel deepSeekChatModel() {
        return OpenAiChatModel.builder()
                .apiKey(deepSeekApiKey)
                .modelName(deepSeekModelName)
                .baseUrl(deepSeekBaseUrl)
                .build();
    }
}

4️⃣ 接口类(多模型路由)

@Slf4j
@RestController
@RequiredArgsConstructor
public class HelloController {

    private final ChatModel dashScopeChatModel;
    private final ChatModel deepSeekChatModel;

    @GetMapping("langChain4j/dashScope/hello")
    public String dashScopeHello(
            @RequestParam(value = "question", defaultValue = "你是谁") String question) {
        String result = dashScopeChatModel.chat(question);
        log.info("调用 dashScope 大模型回复: " + result);
        return result;
    }

    @GetMapping("langChain4j/deepSeek/hello")
    public String deepSeekHello(
            @RequestParam(value = "question", defaultValue = "介绍下自己") String question) {
        String result = deepSeekChatModel.chat(question);
        log.info("调用 deepSeek 大模型回复: " + result);
        return result;
    }
}

5️⃣ 测试效果

阿里百炼(通义千问):

DeepSeek:

🔥 同一个问题,不同模型的回复风格各异,你可以根据业务场景灵活选择!


📝 总结

通过这篇文章,我们完成了:

内容
1 了解 LangChain4j 的核心定位和优势
2 认识支持的大模型平台
3 掌握阿里百炼模型的接入流程
4 掌握 DeepSeek 模型的接入流程
5 完成 Hello World 实战
6 实现多模型同时接入

LangChain4j 让 Java 开发者也能零门槛接入大模型,统一 API + 开箱即用的组件,真正做到了 Write Once, Run Any LLM

🚀 还在等什么?赶紧在你的 Java 项目中接入大模型吧!

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐