Spring Boot 集成 LangChain4j 示例

文章目录

    • 概述
    • [一、DeepSeek API Key 获取](#一、DeepSeek API Key 获取)
    • [二、Spring Boot 集成 LangChain4j 示例](#二、Spring Boot 集成 LangChain4j 示例)
    • 三、拓展建议

概述

LangChain4j 是 LangChain 在 Java 生态下的实现,它是一个开源库,帮助你更方便地在 Spring Boot 应用中集成大语言模型(如 OpenAI 的 GPT-4)来构建智能应用,比如智能问答、聊天机器人、RAG(检索增强生成)系统、Agent、多轮对话等。

一、DeepSeek API Key 获取

注册并登录 DeepSeek 官网: https://api-docs.deepseek.com/zh-cn/

  • API Key
  • Base URLhttps://api.deepseek.com/v1

二、Spring Boot 集成 LangChain4j 示例

1、引入依赖

pom.xml 中添加 langchain4jopenai4j 依赖:

xml 复制代码
<dependencies>
    <dependency>
        <groupId>dev.langchain4j</groupId>
        <artifactId>langchain4j</artifactId>
        <version>0.29.0</version>
    </dependency>
    <dependency>
        <groupId>dev.langchain4j</groupId>
        <artifactId>langchain4j-open-ai</artifactId>
        <version>0.29.0</version>
    </dependency>
</dependencies>

2、配置文件 application.yml

yaml 复制代码
langchain4j:
  openai:
    api-key: sk-58344173c5984cf787996d13160e38ec  # 写自己的
    model-name: deepseek-chat      # 使用的模型名称
    base-url: https://api.deepseek.com/v1  # DeepSeek API 的 endpoint

3、配置类 LangChain4jConfig.java

java 复制代码
@Configuration
public class LangChain4jConfig {

    @Value("${langchain4j.openai.api-key}")
    private String apiKey;

    @Value("${langchain4j.openai.model-name}")
    private String modelName;

    @Value("${langchain4j.openai.base-url}")
    private String baseUrl;

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

⚠️ 注意:虽然这里用的是 OpenAiChatModel,但 DeepSeek 支持 OpenAI 协议,可以无缝替换。


4、控制器 DeepSeekChatController.java

java 复制代码
@RestController
@RequestMapping("/api/deepseek")
public class DeepSeekChatController {

    private final OpenAiChatModel model;

    @Autowired  // 明确标注依赖注入
    public DeepSeekChatController(OpenAiChatModel model) {
        this.model = model;
    }

    @GetMapping
    public String chat(@RequestParam(value = "message", defaultValue = "你好") String message) {
    	// 底层就是依赖okHttpClient进行网络请求
        return model.generate(message);
    }
}

测试结果:

游览器:

postman:

三、拓展建议

  • 将模型调用封装成通用服务,支持多模型切换
  • 加入缓存、上下文对话支持
  • 与 Embedding 向量库联动,实现"知识增强问答(RAG)"
  • 构建对话历史上下文链