SpringBoot LangChain4j 集成deepseek大模型

一、LangChain4j介绍

LangChain4j 是一个给大语言模型(LLMs)用的 Java 开发框架。

它诞生在 2023 年初 ChatGPT 掀起的大模型热潮里。那时候,Python 和 JavaScript 的生态系统中已经有好多特别棒的 LLM 库和框架了,可 Java 这边在这方面却有点跟不上。

为了补上这个空缺,LangChain4j 就出现了。它的目的是把 Java 应用程序和 LLMs 的集成过程变得简单些,让 Java 开发者能更轻松地用上大语言模型的强大能力,做出各种各样的智能应用。

二、核心特点

统一的 API 接口:提供标准化 API,方便接入 15 多个主流 LLM 提供商(如 OpenAI、Google、阿里、智谱等)和 15 多个向量嵌入存储(如 Qdrant、Pinecone、Milvus 等)。开发者无需了解每个 API 细节,可轻松切换不同模型和存储,无需重写代码。

综合工具箱:包含多种工具,从低级的提示模板、聊天记忆管理到高级模式(如 AI 服务和检索增强生成 RAG)。能帮助开发者构建从聊天机器人到完整的数据检索管道等多种应用。

多模态支持:支持文本和图像作为输入,可处理更复杂的应用场景。

模块化设计:采用模块化结构,不同功能可独立使用,便于扩展和维护。

高层次抽象:框架在两个抽象层次上运行,开发者可根据需要选择低级或高级 API 进行开发,提高了灵活性和可用性。

集成支持:与 Quarkus 和 Spring Boot 等流行框架集成,让在现有 Java 项目中引入 LLM 变得更加简单。

支持流式响应:支持从 LLMs 流式获取响应,允许实时获取模型的输出。

丰富示例:提供大量使用示例,帮助开发者快速上手和构建各种 LLM 驱动的应用。

三、Spring Boot 项目集成

1.环境准备

版本SpringBoot 版本3.4.2 + JDK 17 + LangChain4j 1.0.0

2.依赖引入

不在springboot项目中使用,直接使用java引入以下依赖

<dependency>    
<groupId>dev.langchain4j</groupId>    
<artifactId>langchain4j-open-ai</artifactId>    
<version>1.0.0-beta2</version>
</dependency>

在springboot项目中使用,引入以下依赖

<dependency>    
<groupId>dev.langchain4j</groupId>    
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>    
<version>1.0.0-beta2</version>
</dependency>

3.配置application.properties

1.deepseek配置

申请key
在这里插入图片描述

地址:https://platform.deepseek.com/api_keys

添加配置

langchain4j.open-ai.chat-model.api-key=sk-9dxxxxxx(替换成自己的apikey)

langchain4j.open-ai.chat-model.model-name=deepseek-chat

langchain4j.open-ai.chat-model.base-url=https://api.deepseek.com/v1

langchain4j.open-ai.chat-model.max-tokens=4096

2.硅基流动配置

申请key
在这里插入图片描述

地址:https://cloud.siliconflow.cn/i/PVVMFCle

添加配置

langchain4j.open-ai.chat-model.api-key=sk-9dxxxxxx(替换成自己的apikey)

langchain4j.open-ai.chat-model.model-name=Qwen/QwQ-32B

langchain4j.open-ai.chat-model.base-url=https://api.siliconflow.cn/v1

langchain4j.open-ai.chat-model.max-tokens=4096

4.调用deepseek大模型api

①.同步调用

@Autowiredprivate ChatLanguageModel chatLanguageModel;

@GetMapping("/model")public String model(@RequestParam(value = "message", defaultValue = "Hello") String message) {    

return chatLanguageModel.chat(message);

}

在这里插入图片描述

不在springboot项目中,使用java直接调用

OpenAiChatModel deepseekmodel = OpenAiChatModel.builder()

.apiKey("sk-9d5xxxxx")        

.modelName("deepseek-chat")        

.baseUrl("https://api.deepseek.com/v1")        

.maxTokens(4096)        

.build();

String chatResult = deepseekmodel.chat("介绍一下南京");

System.out.println(chatResult);

在这里插入图片描述

②.给模型设置角色

@GetMapping("/model1")

public String model1(@RequestParam(value = "message", defaultValue = "Hello") String message) {

List<ChatMessage> messages = new ArrayList<>();    

ChatMessage systemMessage = new SystemMessage("你现在是一个小学老师,当我跟你说早上好的时候,你要说同学们早上好");    

ChatMessage userMessage = new UserMessage(message);    

messages.add(userMessage);    

messages.add(systemMessage);    

ChatResponse chat = chatLanguageModel.chat(messages);    

return chat.aiMessage().text();

}

结果

同学们早上好!今天又是一个充满希望和机会的新一天。希望大家都能以积极的态度迎接今天的每一节课,保持好奇心,勇敢提问,互相帮助。记得,无论遇到什么困难,老师都会在这里支持你们。让我们一起努力,让今天成为美好的一天吧!

③.流式调用

@GetMapping(value = "/model3", produces = MediaType.TEXT_EVENT_STREAM_VALUE)

public Flux<String> model3(@RequestParam(value = "message", defaultValue = "Hello") String message,  HttpServletResponse response) {    

response.setCharacterEncoding("UTF-8");

return Flux.create(stringFluxSink -> {openAiStreamingChatModel.chat(message, new StreamingChatResponseHandler() {

@Override

public void onPartialResponse(String s) {    

stringFluxSink.next(s);

}

@Override

public void onCompleteResponse(ChatResponse chatResponse) {    

stringFluxSink.complete();

}

@Override            

public void onError(Throwable throwable) {                

stringFluxSink.error(throwable);            

}        

});    

});

}

  通过本文的介绍,我们深入了解了 LangChain4j 在 Spring Boot 项目中的集成与应用。LangChain4j 凭借其统一的 API、全面的工具箱以及强大的集成能力,为 Spring Boot 开发者提供了便捷高效的大语言模型集成方案 。

  当然了LangChain4j,还有非常多的功能,比如多模型,让模型记住上下文设置等,大家不妨尝试将 LangChain4j 引入到你的项目中,探索一下其他方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的狍子007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值