LangChain4j多模型共存+整合SpringBoot
目录
- 介绍
- 核心功能
- ApiKey配置
- 多模型共存
- 整合SpringBoot
- 两种整合方式
- LangChain4j整合SpringBoot示例
- 大模型ApiKey不可以明文配置,如何解决?
- 总结
介绍
LangChain4j 是一个专为 Java 开发者设计的开源框架,旨在简化大型语言模型 (LLM) 与 Java 应用程序的集成,帮助开发者快速构建基于 LLM 的智能应用。
核心功能
1. 支持多种 LLM 提供商
LangChain4j 支持与主流 LLM (如 OpenAI、阿里云通义千问、智谱 AI 等) 的集成,开发者可以通过统一的 API 接口无缝切换不同的模型,无需修改底层代码。
2. 模块化设计
- 模型集成: 支持文本生成、聊天对话、嵌入向量生成等。
- 工具集成: 允许调用外部工具 (如数据库查询、API 调用等),扩展 LLM 的能力。
- 记忆管理: 支持对话历史记录、上下文管理等,提升多轮对话的连贯性。
- 检索增强生成 (RAG): 支持从外部知识库检索信息,增强 LLM 的回答准确性。
3. 灵活的抽象层次
- 低级别 API: 提供对 LLM 的细粒度控制,适合需要高度定制化的场景。
- 高级别 API: 通过封装复杂的逻辑,简化开发流程,适合快速原型开发。
4. 与 Spring Boot 集成
LangChain4j 提供了与 Spring Boot 的无缝集成,开发者可以轻松地将 LLM 功能嵌入到现有的 Java 企业级应用中。
5. 丰富的工具箱
- 提示词模板: 支持动态生成提示词,优化与 LLM 的交互。
- 输出解析: 将 LLM 的输出解析为结构化数据 (如 JSON、XML 等)。
- 多模态支持: 支持文本和图像输入,适用于更复杂的应用场景。
ApiKey配置
1. 注册Apikey (阿里云百炼、DeekSeek 等)
2. ApiKey配置进环境变量
3. 重启IDEA
多模型共存
1. 引入依赖
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- LangChain4j Open AI 基础 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId></dependency><!-- LangChain4j 高阶 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>
2. yml配置
server:port: 9001spring:application:name: langchain4j-demo
3. 主启动类
@SpringBootApplication
public class DemoLangChain4jApp {public static void main(String[] args) {SpringApplication.run(DemoLangChain4jApp.class, args);}
}
4. 配置类 LLMConfig
@Configuration
public class LLMConfig {@Bean(name = "qwen")public ChatModel chatModelQwen() {return OpenAiChatModel.builder().apiKey(System.getenv("ALIYUN_KEY")).modelName("qwen-plus").baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1").build();}@Bean(name = "deepseek")public ChatModel chatModelDeepSeek() {return OpenAiChatModel.builder().apiKey(System.getenv("DEEPSEEK_KEY")).modelName("deepseek-chat").baseUrl("https://api.deepseek.com/v1").build();}
}
5. 控制类 DemoLangChain4jController
@RestController
@RequestMapping("/ai")
public class DemoLangChain4jController {@Resource(name = "qwen")private ChatModel chatModelQwen;@Resource(name = "deepseek")private ChatModel chatModelDeepSeek;// http://localhost:9001/ai/qwen/chat?msg=如何学习java@GetMapping(value = "/qwen/chat")public String qwenChat(@RequestParam(value = "msg", defaultValue = "你是谁") String msg) {return chatModelQwen.chat(msg);}// http://localhost:9001/ai/deepseek/chat?msg=如何学习java@GetMapping(value = "/deepseek/chat")public String deepseekChat(@RequestParam(value = "msg", defaultValue = "你是谁") String msg) {return chatModelDeepSeek.chat(msg);}
}
6. 测试
- 访问 http://localhost:9001/ai/qwen/chat
- 访问 http://localhost:9001/ai/deepseek/chat
整合SpringBoot
两种整合方式
1. LangChain4j原生整合
<!-- LangChain4j原生 基础-->
<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId>
</dependency>
<!-- LangChain4j原生 高阶-->
<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId>
</dependency>
2. LangChain4j-Boot整合
<!-- LangChain4j 整合boot底层支持 -->
<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
</dependency>
<!-- LangChain4j 整合boot高阶支持 -->
<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-spring-boot-starter</artifactId>
</dependency>
LangChain4j整合SpringBoot示例
1. 引入依赖
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- LangChain4j原生 基础--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId></dependency><!-- LangChain4j原生 高阶--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId></dependency><!-- LangChain4j 整合boot底层支持 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai-spring-boot-starter</artifactId></dependency><!-- LangChain4j 整合boot高阶支持 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-spring-boot-starter</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
</dependencies>
2. yml配置
server:port: 9002spring:application:name: langchain4j-bootlangchain4j:open-ai:chat-model:api-key: ${ALIYUN_KEY}model-name: qwen-plusbase-url: https://dashscope.aliyuncs.com/compatible-mode/v1
3. 主启动类
@SpringBootApplication
public class BootLangChain4jApp {public static void main(String[] args) {SpringApplication.run(BootLangChain4jApp.class, args);}
}
4. 自定义高阶 AiService 接口 ChatAssistant
@AiService
public interface ChatAssistant {String chat(String msg);
}
5. 控制类 BootLangChain4jController
@RestController
@RequestMapping("boot")
public class BootLangChain4jController {// 低阶@Resourceprivate ChatModel chatModel;// 高阶@Resourceprivate ChatAssistant chatAssistant;// http://localhost:9002/boot/lowChat?msg=如何学习java@GetMapping(value = "/lowChat")public String lowChat(@RequestParam(value = "msg", defaultValue = "你是谁") String msg) {return chatModel.chat(msg);}// http://localhost:9002/boot/highChat?msg=如何学习java@GetMapping(value = "/highChat")public String highChat(@RequestParam(value = "msg", defaultValue = "你是谁") String msg) {return chatAssistant.chat(msg);}
}
6. 测试
- 访问 http://localhost:9002/boot/lowChat
- 访问 http://localhost:9002/boot/highChat?msg=如何学习java
大模型ApiKey不可以明文配置,如何解决?
1. yml配置:使用 ${ALIYUN_KEY} 从环境变量中获取
2. config配置类:使用 System.getenv(“ALIYUN_KEY”) 从环境变量中获取
总结
以上主要介绍了 LangChain4j 多模型共存、整合 SpringBoot 的相关知识,想了解更多 LangChain4j 知识的小伙伴请参考 LangChain4j 官网 进行学习,学习更多 LangChain4j 实战实用技巧的小伙伴,请关注后期发布的文章,认真看完一定能让你有所收获。