【LangChain4j】特点功能及使用场景
langchain4j-open-ai-spring-boot-starter 是 LangChain4j 生态中专门为 Spring Boot 开发者提供的 OpenAI 模型集成启动器。
它的核心目标是:让 Java 开发者在 Spring Boot 项目中,以“零样板代码”的方式快速集成 OpenAI(及兼容 OpenAI 协议的模型,如 Azure OpenAI, DeepSeek, Moonshot 等),并享受声明式编程的便利。
🚀 1. 核心特点 (Why Use It?)
A. 自动配置 (Auto-Configuration)
这是 Spring Boot Starter 的灵魂。引入依赖后,只需在 application.yml 中配置 API Key 和模型名称,框架会自动为你创建并注册以下 Bean:
ChatLanguageModel(聊天模型)StreamingChatLanguageModel(流式聊天模型)EmbeddingModel(嵌入模型)ModerationModel(审核模型)AiServices的基础设施支持
你不需要手动编写 @Bean 方法来初始化这些复杂的客户端。
B. 声明式 AI 服务 (@AiService) 的完美支持
这是 LangChain4j 最杀手级的功能,而 Starter 让它更易用。
你可以定义一个接口,加上注解,Spring Boot 启动时会自动生成实现类并注入到容器中。
// 定义接口
interface Assistant {
@SystemMessage("你是一个专业的翻译助手。")
String translate(@UserMessage String text);
}
// 在 Controller 或 Service 中直接注入使用
@RestController
public class TranslationController {
private final Assistant assistant; // 自动注入代理实现
public TranslationController(Assistant assistant) {
this.assistant = assistant;
}
@GetMapping("/translate")
public String translate(String text) {
return assistant.translate(text); // 像调用普通方法一样调用 AI
}
}
Starter 的作用:它自动扫描这些接口,绑定配置好的 ChatLanguageModel,处理记忆(Memory)、工具(Tools)和检索(RAG)的注入逻辑。
C. 统一的配置模型
通过标准的 YAML/Properties 文件管理所有参数,支持环境变量占位符,符合 Spring Boot 的最佳实践。
langchain4j:
open-ai:
chat-model:
api-key: ${OPENAI_API_KEY} # 支持从环境变量读取
model-name: gpt-4o
temperature: 0.7
timeout: PT30S # 支持 ISO-8601 时长格式
log-requests: true # 开发调试神器:自动打印请求/响应日志
log-responses: true
embedding-model:
model-name: text-embedding-3-small
D. 兼容 OpenAI 协议的非 OpenAI 模型
虽然名字叫 open-ai-starter,但它实际上兼容任何遵循 OpenAI API 标准的服务商。
只需配置 base-url 即可切换到:
- Azure OpenAI
- DeepSeek (深度求索)
- Moonshot (月之暗面)
- 阿里百炼 (DashScope)
- 本地部署的 Ollama / vLLM
langchain4j:
open-ai:
chat-model:
base-url: https://api.deepseek.com/v1/ # 切换服务商
api-key: ${DEEPSEEK_API_KEY}
model-name: deepseek-chat
E. 内置可观测性 (Observability)
自动集成 Spring Boot Actuator 和 Micrometer,支持追踪 Token 消耗、延迟等指标。配合 log-requests/responses: true,调试 AI 行为变得非常简单。
🛠️ 2. 核心功能清单
| 功能模块 | 描述 | Starter 带来的便利 |
|---|---|---|
| 聊天 (Chat) | 文本对话、多轮上下文 | 自动注入 ChatLanguageModel,支持 @AiService 声明式调用 |
| 流式输出 (Streaming) | SSE 实时打字机效果 | 自动注入 StreamingChatLanguageModel,配合 Reactor/WebFlux 极佳 |
| 嵌入 (Embedding) | 文本向量化 (RAG 基础) | 自动注入 EmbeddingModel,一键生成向量 |
| 图像 (Image) | DALL-E 3 文生图 | 自动注入 ImageModel |
| 听觉 (Speech) | Whisper 语音转文字 / TTS | 自动注入 SpeechToTextModel / TextToSpeechModel |
| 函数调用 (Tools) | LLM 调用 Java 方法 | @AiService 自动扫描 @Tool 注解的方法并注册 |
| 记忆 (Memory) | 多轮对话历史管理 | 配合 langchain4j-redis 等存储 starter,自动管理 ChatMemory |
| 监听器 (Listeners) | 拦截请求/响应/Token | 自动注册全局监听器,用于审计、计费或日志 |
🎯 3. 典型使用场景
场景一:快速构建企业级 AI 客服/助手
- 需求:需要一个能理解公司知识库、回答用户问题、并能调用内部 API(如查订单)的客服机器人。
- 方案:
- 引入
langchain4j-open-ai-spring-boot-starter+langchain4j-redis-spring-boot-starter(存记忆) +langchain4j-easy-rag(简单知识库)。 - 定义
@AiService接口,注入@Tool方法(查订单)。 - 配置 RAG 检索器。
- 结果:无需写一行 HTTP 请求代码,50 行代码内完成核心逻辑。
- 引入
场景二:多模型路由与灰度测试
- 需求:想同时测试 GPT-4o 和 DeepSeek-V3 的效果,或者根据用户等级分配不同模型。
- 方案:
- 利用 Spring Boot 的
@Profile或动态配置。 - 或者定义多个
ChatLanguageModelBean(通过自定义配置覆盖 Starter 的默认 Bean),在@AiService中指定使用哪个模型。 - Starter 提供了极好的配置灵活性,方便切换
base-url和model-name。
- 利用 Spring Boot 的
场景三:内容审核与安全过滤
- 需求:在用户输入发送给大模型前,或在模型输出返回给用户前,进行敏感词或合规性检查。
- 方案:
- 使用 Starter 自动配置的
ModerationModel。 - 实现
ChatListener接口,在onRequest或onResponse阶段插入审核逻辑。
- 使用 Starter 自动配置的
场景四:遗留系统 AI 化改造
- 需求:在一个庞大的老 Spring Boot 单体应用中,给某个模块增加“智能摘要”或“智能分类”功能。
- 方案:
- 仅需引入 Starter 依赖,配置 API Key。
- 在现有的 Service 层注入
ChatLanguageModel或定义一个新的@AiService接口。 - 无侵入:不需要修改原有的架构或配置类。
⚖️ 4. 与其他方案的对比
| 特性 | langchain4j-open-ai-spring-boot-starter | Spring AI (OpenAI Starter) | 原生 OpenAI Java SDK |
|---|---|---|---|
| 开发体验 | ⭐⭐⭐⭐⭐ (声明式 @AiService,极简) |
⭐⭐⭐⭐ (链式 ChatClient,标准 Spring 风) |
⭐⭐ (繁琐的 Builder 和手动管理) |
| 功能深度 | ⭐⭐⭐⭐⭐ (RAG, Agent, Memory 高度集成) | ⭐⭐⭐ (核心功能完善,高级特性迭代中) | ⭐⭐ (仅提供底层 API 调用) |
| 多模型支持 | ⭐⭐⭐⭐⭐ (通过改 base-url 轻松切换) |
⭐⭐⭐⭐ (支持主流,但配置略复杂) | ⭐ (仅限 OpenAI) |
| 生态整合 | ⭐⭐⭐⭐ (完美支持 Spring,但也支持非 Spring) | ⭐⭐⭐⭐⭐ (与 Spring Cloud/Security 深度绑定) | ⭐ (无框架依赖) |
| 适用人群 | 追求效率、需要复杂 AI 功能 (Agent/RAG) 的团队 | 重度 Spring 全家桶用户,偏好官方标准 | 需要极致控制、不愿引入第三方框架的场景 |
💡 5. 快速开始示例
1. 引入依赖 (Maven)
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>1.10.0</version> <!-- 请使用最新稳定版 -->
</dependency>
<!-- 可选:如果需要 Web 流式输出 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
2. 配置 (application.yml)
langchain4j:
open-ai:
chat-model:
api-key: ${OPENAI_API_KEY}
model-name: gpt-4o
base-url: https://api.openai.com/v1/ # 可替换为其他兼容地址
temperature: 0.7
log-requests: true
log-responses: true
3. 定义 AI 服务
import dev.langchain4j.service.AiService;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
@AiService // 关键注解:告诉框架这是一个 AI 服务
interface CodeReviewer {
@SystemMessage("你是一个资深 Java 代码审查员,请指出代码中的潜在 bug 和优化建议。")
String review(@UserMessage String code);
}
4. 使用
@RestController
@RequestMapping("/api/code")
public class CodeReviewController {
private final CodeReviewer reviewer;
// 构造函数注入,Spring 会自动提供实现类
public CodeReviewController(CodeReviewer reviewer) {
this.reviewer = reviewer;
}
@PostMapping("/review")
public String reviewCode(@RequestBody String code) {
return reviewer.review(code);
}
}
总结
langchain4j-open-ai-spring-boot-starter 是 Java 开发者接入 OpenAI 生态的“高速公路”。
它将复杂的 HTTP 通信、Prompt 管理、记忆维护和工具调用封装在简洁的注解和配置背后。如果你正在使用 Spring Boot 构建 AI 应用,尤其是需要 RAG 或 Agent 能力,它是目前性价比最高、开发效率最快的选择。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)