SpringBoot LangChain4j 集成deepseek大模型

06-01 1104阅读

一、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引入以下依赖

    
dev.langchain4j    
langchain4j-open-ai    
1.0.0-beta2

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

    
dev.langchain4j    
langchain4j-open-ai-spring-boot-starter    
1.0.0-beta2

3.配置application.properties

1.deepseek配置

申请key

SpringBoot LangChain4j 集成deepseek大模型

地址: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

SpringBoot LangChain4j 集成deepseek大模型

地址: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 LangChain4j 集成deepseek大模型

不在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);

SpringBoot LangChain4j 集成deepseek大模型

②.给模型设置角色

@GetMapping("/model1")
public String model1(@RequestParam(value = "message", defaultValue = "Hello") String message) {
List 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 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 引入到你的项目中,探索一下其他方法。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码