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 启动时会自动生成实现类并注入到容器中。

// 定义接口
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(如查订单)的客服机器人。
  • 方案
    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)

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

Logo

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

更多推荐