当前位置: 首页 > news >正文

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

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

一、修改pom依赖

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>
View Code

二、注入相应实例

 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 }
View Code

三、yaml配置调整

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
View Code

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

四、longchain4j的优势

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

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

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

image

image

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

 

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

http://www.hskmm.com/?act=detail&tid=20247

相关文章:

  • 收汇核销简介
  • macOS 彻底卸载和重装 Node.js 指南
  • 题解:CF2023F Hills and Pits
  • 2025最新国内过滤器品牌 TOP10 权威测评推荐厂家与选购指南
  • Python 将 HTML 转换为纯文本 TXT (HTML 文本提取) - 实践
  • 0135_MVC 设计模式:让代码架构更清晰
  • 30天Python编程挑战 - 从零基础到全栈开发
  • 软件工程第一次作业——物品复活系统
  • StatusStrip 状态栏控件的使用
  • 2025过滤器厂家最新推荐TOP5排行榜:覆盖环保过滤器、精密过滤器、高效过滤器,帮企业找到适配优质厂商
  • 9.28
  • ubi文件系统的 制作 + 挂载
  • 一款开源免费、组件丰富的 WPF UI 控件库,提供了 100 多款常用控件!
  • 元推理用无限嵌套,取代目前弱ai的暴力无限试错
  • 解题报告-序列(alis.*)
  • Cloudbox工具箱!一款拥有100款工具的超级工具箱!Cloudbox工具箱教程(附下载)
  • java 语法基础课后作业
  • Lightroom使用教程!一文学会Lightroom使用教程!软件攻略(批量处理)
  • C++篇 String实现避坑指南:搞定构造,拷贝与析构,增删查改,流提取流插入与比对大小 一文全解 - 教程
  • AT_agc026_c [AGC026C] String Coloring
  • 启发式合并 [PA 2014] Fiolki
  • 反转链表-leetcode
  • 第45篇:AI+交通:自动驾驶、智能交通管理与出行优化 - 实践
  • three角度处理:1.角度、弧度归一(0,2PI),2.两个角度之间的最小夹角
  • 软件工程技术第一次作业
  • 在macos下Termius无法连接局域网主机的一个经常出现但又很难排查的问题
  • 《痞子衡嵌入式半月刊》 第 119 期
  • 20243907张驰
  • vim学习使用笔记
  • c#造个轮子-取色器TakeColor(附源码)