首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >longchain4j 学习系列(2)-调用远程deepseek

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

作者头像
菩提树下的杨过
发布2025-09-29 08:12:59
发布2025-09-29 08:12:59
10000
代码可运行
举报
运行总次数:0
代码可运行

上一篇继续,longchain4j支持open-ai兼容的各种模式,包括deepseek

一、修改pom依赖

代码语言:javascript
代码运行次数:0
运行
复制
1 <!-- LongChain4j OpenAI Integration (支持DeepSeek) -->
2 <dependency>
3     <groupId>dev.langchain4j</groupId>
4     <artifactId>langchain4j-open-ai</artifactId>
5     <version>${longchain4j.version}</version>
6 </dependency>

二、注入相应实例

代码语言:javascript
代码运行次数:0
运行
复制
 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.0
19  */
20 @Configuration
21 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     @Bean
47     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      * 配置DeepSeek流式聊天模型
62      *
63      * @return StreamingChatModel实例
64      */
65     @Bean
66     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 }

三、yaml配置调整

代码语言:javascript
代码运行次数:0
运行
复制
1 # DeepSeek配置
2 deepseek:
3   api-key: ${DEEPSEEK_API_KEY:your-deepseek-api-key-here}
4   base-url: https://api.deepseek.com
5   model: deepseek-chat
6   timeout: 60
7   temperature: 0.7
8   max-tokens: 2048

这样就可以了,API controller部分无需调整。

四、longchain4j的优势

试想一个场景:假如我们做的是1个多租户的大型AI应用,有多个租户都使用deepseek,每个租户都有自己的api key,这时候如果还使用yaml配置文件写死,启动时全都创建好实例就太不灵活了。

这种情况下,运行时【动态注入】apiKey 及deepseek相关实例就很有必要了!

幸好,longchain4j的 OpenAiChatModelBuilder 提供了apiKey注入的能力

image
image
image
image

这样就可以了(注:目前为止spring-ai 1.0版本,都还未提供这个能力)

文中代码:https://github.com/yjmyzz/longchain4j-study/tree/day02

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档