1. LangChain4j 框架概述
LangChain4j 是一个专为 Java 和 Kotlin 开发者设计的开源框架,它简化了将大型语言模型(LLM)集成到应用程序中的过程。作为 JVM 生态中的 AI 开发利器,它让 Java 开发者能够轻松构建由 AI 驱动的各类应用,如聊天机器人、问答系统和智能代理等。
1.1 核心价值与定位
在 ChatGPT 等大语言模型兴起后,开发者们面临三个关键挑战:
- 信息时效性问题 - LLM 的知识受限于训练数据的时间节点
- 执行能力局限 - 无法直接调用外部 API 或操作系统资源
- 上下文记忆限制 - 受限于模型的 token 窗口大小
LangChain4j 正是为解决这些问题而生,它充当了 LLM 与外部世界的桥梁,通过以下方式增强模型能力:
- 连接数据源解决信息过时问题
- 集成工具函数扩展执行能力
- 提供记忆管理突破上下文限制
1.2 技术架构特点
LangChain4j 采用分层架构设计,提供两种抽象级别:
低阶 API
- 直接操作基础组件:
ChatModel、UserMessage、EmbeddingStore等 - 提供最大自由度,但需要编写更多"胶水代码"
- 适合需要精细控制的场景
高阶 API
- 声明式接口设计(如
@AiService) - 自动处理底层复杂性
- 类似 Spring Data JPA 的开发体验
- 适合快速业务开发
1.3 模型支持能力
LangChain4j 支持多种类型的语言模型:
| 模型类型 | 输入形式 | 输出形式 | 典型应用场景 |
|---|---|---|---|
| 聊天模型 | 消息列表 | AI 消息对象 | 智能助手、客服机器人 |
| 文本生成模型 | 纯文本字符串 | 纯文本字符串 | 文章摘要、代码补全 |
| 文本嵌入模型 | 文本字符串/列表 | 向量数组 | 语义搜索、知识库检索 |
| 图像模型 | 文本提示词/图像 | 图像 URL/Base64 | AI 绘画、素材生成 |
| 审核模型 | 文本/图像 | 违规标签/布尔值 | 内容安全检测 |
| 评分模型 | 文本对(查询+内容) | 分数(0.0-1.0) | 搜索结果重排序 |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境搭建与快速入门
2.1 基础环境要求
- JDK 17+
- Maven 3.6+
- Spring Boot 3.x(可选)
2.2 纯Java项目集成
2.2.1 Maven依赖配置
xml复制<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<langchain4j.version>1.3.0</langchain4j.version>
</properties>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.2.2 基础调用示例
java复制public class BasicDemo {
public static void main(String[] args) {
OpenAiChatModel model = OpenAiChatModel.builder()
.baseUrl("http://langchain4j.dev/demo/openai/v1")
.apiKey("demo")
.modelName("gpt-4o-mini")
.build();
String answer = model.chat("介绍一下LangChain4j");
System.out.println(answer);
}
}
2.3 Spring Boot项目集成
2.3.1 Maven依赖配置
xml复制<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.8</version>
</parent>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.3.2 应用配置
yaml复制server:
port: 8080
langchain4j:
open-ai:
chat-model:
api-key: demo
base-url: http://langchain4j.dev/demo/openai/v1
model-name: gpt-4o-mini
temperature: 0.7
2.3.3 控制器示例
java复制@RestController
public class ChatController {
@Autowired
private OpenAiChatModel chatModel;
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatModel.chat(m
