longchain4j 学习系列(2)-调用远程deepseek

接上一篇继续,longchain4j支持open-ai兼容的各类模型,涵盖deepseek等主流大模型。

一、更新pom.xml依赖

1 2 3     dev.langchain4j4     langchain4j-open-ai5     ${longchain4j.version}6 

二、配置Bean实例注入

 1 package com.cnblogs.yjmyzz.longchain4j.study.config; 2  3 import dev.langchain4j.model.chat.ChatModel; 4 import dev.langchain4j.model.chat.StreamingChatModel; 5 import dev.langchain4j.model.openai.OpenAiChatModel; 6 import dev.langchain4j.model.openai.OpenAiStreamingChatModel; 7 import org.springframework.beans.factory.annotation.Value; 8 import org.springframework.context.annotation.Bean; 9 import org.springframework.context.annotation.Configuration;10 11 import java.time.Duration;12 13 /**14  * DeepSeek配置类15  * 实现LongChain4j与DeepSeek模型的对接配置16  *17  * @author 菩提树下的杨过18  * @version 1.0.019  */20 @Configuration21 public class DeepSeekConfig {22 23     @Value("${deepseek.api-key:your-deepseek-api-key-here}")24     private String apiKey;25 26     @Value("${deepseek.base-url:https://api.deepseek.com}")27     private String baseUrl;28 29     @Value("${deepseek.model:deepseek-chat}")30     private String model;31 32     @Value("${deepseek.timeout:60}")33     private Integer timeoutSeconds;34 35     @Value("${deepseek.temperature:0.7}")36     private Double temperature;37 38     @Value("${deepseek.max-tokens:2048}")39     private Integer maxTokens;40 41     /**42      * 构建DeepSeek聊天模型实例43      *44      * @return 返回ChatModel对象45      */46     @Bean47     public ChatModel chatModel() {48         return OpenAiChatModel.builder()49                 .apiKey(apiKey)50                 .baseUrl(baseUrl)51                 .modelName(model)52                 .temperature(temperature)53                 .maxTokens(maxTokens)54                 .timeout(Duration.ofSeconds(timeoutSeconds))55                 .logRequests(true)56                 .logResponses(true)57                 .build();58     }59 60     /**61      * 创建流式响应的聊天模型62      *63      * @return 返回StreamingChatModel实例64      */65     @Bean66     public StreamingChatModel streamingChatModel() {67         return OpenAiStreamingChatModel.builder()68                 .apiKey(apiKey)69                 .baseUrl(baseUrl)70                 .modelName(model)71                 .temperature(temperature)72                 .maxTokens(maxTokens)73                 .timeout(Duration.ofSeconds(timeoutSeconds))74                 .logRequests(true)75                 .logResponses(true)76                 .build();77     }78 }

三、application.yml 配置项调整

1 # DeepSeek相关参数设置2 deepseek:3   api-key: ${DEEPSEEK_API_KEY:your-deepseek-api-key-here}4   base-url: https://api.deepseek.com5   model: deepseek-chat6   timeout: 607   temperature: 0.78   max-tokens: 2048

完成以上步骤后,无需修改API Controller层代码即可生效。

四、longchain4j的核心优势解析

设想这样一个业务场景:我们正在开发一个面向多租户的AI服务平台,多个客户均使用DeepSeek模型服务,但各自持有独立的API Key。若仍采用传统的YAML静态配置方式,在应用启动时就初始化所有模型实例,显然缺乏灵活性和安全性。

此时,运行时动态传入apiKey并创建对应模型实例的能力变得至关重要!

值得庆幸的是,longchain4j中的OpenAiChatModelBuilder允许在构建过程中灵活设置apiKey,实现真正的动态化接入:

imageimage

这一特性极大提升了系统扩展性与租户隔离能力(注:截至当前,spring-ai 1.0版本尚未支持此类动态配置)

示例代码地址:https://www./link/7fa66f426416d30c0c885937fed3c9d1