【LangChain4j】特点功能及使用场景

langchain4j-open-ai-spring-boot-starterLangChain4j 生态中专门为 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 启动时会自动生成实现类并注入到容器中。

java 复制代码
// 定义接口
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 的最佳实践。

yaml 复制代码
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
yaml 复制代码
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(如查订单)的客服机器人。
  • 方案
    1. 引入 langchain4j-open-ai-spring-boot-starter + langchain4j-redis-spring-boot-starter (存记忆) + langchain4j-easy-rag (简单知识库)。
    2. 定义 @AiService 接口,注入 @Tool 方法(查订单)。
    3. 配置 RAG 检索器。
    4. 结果:无需写一行 HTTP 请求代码,50 行代码内完成核心逻辑。
场景二:多模型路由与灰度测试
  • 需求:想同时测试 GPT-4o 和 DeepSeek-V3 的效果,或者根据用户等级分配不同模型。
  • 方案
    • 利用 Spring Boot 的 @Profile 或动态配置。
    • 或者定义多个 ChatLanguageModel Bean(通过自定义配置覆盖 Starter 的默认 Bean),在 @AiService 中指定使用哪个模型。
    • Starter 提供了极好的配置灵活性,方便切换 base-urlmodel-name
场景三:内容审核与安全过滤
  • 需求:在用户输入发送给大模型前,或在模型输出返回给用户前,进行敏感词或合规性检查。
  • 方案
    • 使用 Starter 自动配置的 ModerationModel
    • 实现 ChatListener 接口,在 onRequestonResponse 阶段插入审核逻辑。
场景四:遗留系统 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)

xml 复制代码
<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)

yaml 复制代码
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 服务

java 复制代码
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. 使用

java 复制代码
@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 应用,尤其是需要 RAGAgent 能力,它是目前性价比最高、开发效率最快的选择。

相关推荐
Eward-an2 小时前
LeetCode 239. 滑动窗口最大值(详细技术解析)
python·算法·leetcode
毕设源码-邱学长2 小时前
【开题答辩全过程】以 基于Spring Boot的体育场地预约管理系统为例,包含答辩的问题和答案
java·spring boot·后端
青槿吖2 小时前
第二篇:告别XML臃肿配置!Spring注解式IOC/DI保姆级教程,从入门到真香
xml·java·开发语言·数据库·后端·sql·spring
喵手2 小时前
Python爬虫实战:用代码守护地球,追踪WWF濒危物种保护动态!
爬虫·python·爬虫实战·濒危物种·零基础python爬虫教学·wwf·濒危物种保护动态追踪
梦想的旅途22 小时前
如何通过 QiWe API 实现企业微信主动发消息
开发语言·python
喵手2 小时前
Python爬虫实战:自动化抓取 Pinterest 热门趋势与创意!
爬虫·python·爬虫实战·pinterest·零基础python爬虫教学·采集pinterest热门趋势·热门趋势预测
凌晨一点的秃头猪3 小时前
Python文件操作
开发语言·python
小张贼嚣张3 小时前
数据分析全流程实战:Python(Pandas/Matplotlib/Numpy)+ MySQL(附可下载数据源+多图形绘制)
python·数据分析·pandas
努力的小白o(^▽^)o3 小时前
面向课堂考勤场景的桌面端人脸识别签到系统
python·人脸识别