SpringBoot集成AI,接入大模型框架,LangChain4j

一、简介

1.介绍

官网介绍到LangChain的目标是简化LLM与Java应用程序的集成。
统一的API:每一个LLM提供商(如Open AI 或Google vetex AI)和向量存储(如Pinecone或Milvus)使用专有的API。LangChain4j提供了一个统一的API,以避免需要为每个API学习和实现特定的API。要尝试不同的LLM或嵌入存储,可以轻松地在它们之间切换,而无需重写代码,目前支持15个流行的LLM提供商和15个嵌入商店。
功能全面的工具箱:LLM的应用程序,确定了常见的抽象、模式和技术。LangChain4j将这些改进为一个可用的包。我们的工具箱包括从低级提示模板、聊天内存管理和输出解析到高级模式(如AI Services和RAG)的各种工具。对于每个抽象,我们提供了一个接口以及基于通用技术的多个现成的实现。无论您是构建聊天机器人还是开发具有从数据摄取到检索的完整管道的RAG。

支持的LLM和其他支持情况(Stream流式回答)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述核心功能:

  • Chat and Language Models:切换大模型
  • Chat Memory:对系统内聊天指定聊天memoryId进行分区,可以根据memoryId来持续对话内容。
  • Model Parameters:根据选择模型型号和提供程序,可以调整许多参数
  • Response Streaming:响应式处理,LLM提供程序一种逐个令牌传输相应的方法,不用等待整个文本
  • AI Services:高级的核心功能,通过代理的形式帮我们实现特定的
  • Service层放服务,只需要关注业务,不需要关注底层实现
  • Tools:除了生成本文以外,还可以触发操作。在tools层可以根据触发条件调用不同的函数
  • RAG:根据特定的文档 + 向量化 数据,来扩展模型的知识库,提高搜索的有效性
  • Embedding Stores:向量数据库存储功能,提供很多事例,可以使用ES、Redis

2.SpringAI区别

在这里插入图片描述

二、使用

1.主要模型接口

  • ChatLanguageModel
  • LanguageModel
  • StreamingChatLanguageModel
  • StreamingLanguageModel
  • EmbeddingModel
  • ModerationModel
    以上都是langchain4j提供的大模型接口,都有不同的实现,比如ChatLanguage就有OpenAi提供的OpenAiChatModel和LocalAi提供的LocalAiChat Model实现等等。
    例子:使用QianfanChatModel创建一个基础语言模型,进行LLM的基础调用
    具体结构如下
    在这里插入图片描述
1.1 导入依赖
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>0.31.0</version>
</dependency>
1.2 核心代码
//基础模型 ->ChatLanguageModel, 接收多个CharMessages作为输入并返回AiMessage,ChatLanguage属于LangChain4j的基础Api
QianfanChatModel model = QianfanChatModel.builder()
        .apiKey("Your apiKey")
        .secretKey("Your secretKey")
        .modelName("modelName")
        .build();
String answer = model.generate("你叫什么名字");
System.out.println(answer);

//2.定制化模型
QianfanChatModel model1 = QianfanChatModel.builder()
        .apiKey("xrvMCg8jUn9XFjlweo5yCzZL")
        .secretKey("2oDq7RMIakIVHdMfYmpHuoGa9HtD6YEH")
        .temperature(50.00)
        .maxRetries(2)
        .topP(2.00)
        .modelName("Yi-34B-Chat")
        .endpoint("12")
        .responseFormat("21")
        .penaltyScore(2.00)
        .logRequests(true)
        .logResponses(true)
        .build();
        
//1.单轮聊天ChatMessage
 String answer = model.generate("你好,我的名字是小思");
String answer1 = model.generate("我的名字是什么呀");
System.out.println(answer);
System.out.println(answer1);
System
<think>嗯,用户想在Spring Boot项目中整合LangChain4j和DeepSeek,需要示例教程。首先,我得确认这两个库的整合方式。根据提供的引用,LangChain4j有Spring Boot Starter,可以自动配置,而DeepSeek也有对应的starter依赖。 用户可能已经了解基本的Spring Boot配置,但需要具体的步骤。我需要先整理依赖项,确保两个库的版本兼容。然后,配置application.yml文件,添加API密钥和模型设置。接下来,可能需要创建服务类,注入AI服务实例,并编写示例代码来调用这两个库的功能。 需要注意的是,用户可能遇到依赖冲突或配置错误的问题,所以需要提醒检查依赖版本和API密钥的正确性。此外,示例代码应该简单明了,展示如何同时使用LangChain4j和DeepSeek的功能,比如生成文本和调用聊天模型。 可能还需要解释每个步骤的作用,比如@Configuration注解的配置类,以及如何在控制器中调用服务。最后,生成相关问题,帮助用户进一步探索性能优化或高级集成方法。</think>### Spring Boot整合LangChain4j与DeepSeek示例教程 #### 一、环境准备 1. 创建Spring Boot项目(建议使用Spring Boot 3.x) 2. 添加依赖: ```xml <!-- LangChain4j核心依赖 --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-spring-boot-starter</artifactId> <version>0.24.0</version> </dependency> <!-- DeepSeek官方starter --> <dependency> <groupId>io.github.pig-mesh.ai</groupId> <artifactId>deepseek-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> ``` #### 二、基础配置 ```yaml # application.yml langchain4j: open-ai: api-key: ${OPENAI_API_KEY} model-name: gpt-3.5-turbo deepseek: api-key: ${DEEPSEEK_API_KEY} model: deepseek-chat timeout: 60000 ``` 注:环境变量需在系统或IDE中配置[^2] #### 三、服务配置类 ```java @Configuration public class AIConfig { @Bean @ConditionalOnProperty(name = "langchain4j.open-ai.enabled", havingValue = "true") OpenAiChatModel openAiChatModel(LangChain4jProperties properties) { return OpenAiChatModel.builder() .apiKey(properties.getOpenAi().getApiKey()) .modelName(properties.getOpenAi().getModelName()) .build(); } @Bean @ConditionalOnProperty(name = "deepseek.enabled", havingValue = "true") DeepSeekClient deepSeekClient(DeepSeekProperties properties) { return new DeepSeekClient(properties.getApiKey(), properties.getModel()); } } ``` #### 四、示例服务类 ```java @Service public class AIService { private final OpenAiChatModel openAi; private final DeepSeekClient deepSeek; public AIService(OpenAiChatModel openAi, DeepSeekClient deepSeek) { this.openAi = openAi; this.deepSeek = deepSeek; } public String generateContent(String prompt) { // 使用LangChain4j生成基础内容 String draft = openAi.generate(prompt); // 使用DeepSeek优化结果 return deepSeek.chatCompletion( new ChatRequest() .setMessages(List.of( new Message("system", "优化以下内容:"), new Message("user", draft) )) ); } } ``` #### 五、控制器示例 ```java @RestController @RequestMapping("/api/ai") public class AIController { private final AIService aiService; public AIController(AIService aiService) { this.aiService = aiService; } @PostMapping("/generate") public ResponseEntity<String> generate(@RequestBody String prompt) { return ResponseEntity.ok(aiService.generateContent(prompt)); } } ``` #### 六、验证测试 使用curl测试接口: ```bash curl -X POST -H "Content-Type: text/plain" \ -d "请生成关于机器学习的简介" \ http://localhost:8080/api/ai/generate ``` **注意事项:** 1. 确保API密钥正确配置 2. 检查依赖版本兼容性 3. 建议添加限流和异常处理 4. 生产环境应配置HTTPS加密通信
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值