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.mzph.cn/news/921072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

收汇核销简介

收汇核销是我国外汇管理制度中的一项核心环节,目的是确保“货物确实出口、外汇确实收回”,防止虚假出口、骗税、热钱流入等风险。虽然 2012 年起全面电子化,不再盖章,但“核销”逻辑仍在系统后台运行,是出口企业办…

macOS 彻底卸载和重装 Node.js 指南

彻底卸载 Node.js 卸载步骤 # 1. 卸载 npm sudo npm uninstall npm -g# 2. 删除 Node.js 核心文件和配置 sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* sudo rm -rf /…

2025最新国内过滤器品牌 TOP10 权威测评推荐厂家与选购指南

随着工业制造、环保水处理、医疗净化等领域的快速发展,过滤器作为关键配套设备,其性能与品质直接影响生产效率、产品质量及环境安全。2025 年国内过滤器市场呈现技术迭代加速、细分场景需求升级的特点,企业对过滤器…

Python 将 HTML 转换为纯文本 TXT (HTML 文本提取) - 实践

Python 将 HTML 转换为纯文本 TXT (HTML 文本提取) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

0135_MVC 设计模式:让代码架构更清晰

MVC 设计模式:让代码架构更清晰一、什么是 MVC 设计模式? MVC 全称是Model(模型)、View(视图)、Controller(控制器),它不是一种具体的技术,而是一种 “分而治之” 的代码架构思想。核心逻辑是将软件系统的三…

网站建设 意识形态每天能赚30 50元的捕鱼游戏

原型模式创建对象不调用原对象的构造函数&#xff0c;是直接copy原对象的浅克隆&#xff1a;对值类型的成员变量进行值的复制,对引用类型的成员变量只复制引用,不复制引用的对象.深克隆&#xff1a;对值类型的成员变量进行值的复制,对引用类型的成员变量也进行引用对象的复制. …

30天Python编程挑战 - 从零基础到全栈开发

30天Python编程挑战是一个完整的Python学习教程,从基础语法到高级应用,涵盖变量、函数、面向对象、Web开发、数据分析等核心内容。通过30天的系统学习,帮助初学者掌握Python编程技能,为数据科学、Web开发和自动化脚…

怎么做淘宝网站推广菏泽市住房和建设局网站

作为域管理员&#xff0c;在日常工作中使用ADUC&#xff08;AD用户和计算机&#xff09;工具在图形界面中进行账号管理操作可谓是家常便饭了。然而一个个增加、移动、删除用户&#xff0c;这样操作有时真的够烦&#xff0c;当管理大批量的账户时&#xff0c;重复操作浪费的时间…

软件工程第一次作业——物品复活系统

时间记录序号 任务(PSP2.1 对应) 说明 耗时(分钟)1 Planning:Estimate(计划与估算) 明确需求、列出功能点、制定实现优先级与时间计划。 102 Development:Analysis(需求分析) 分析数据结构、UI 交互用例、文…

完整教程:【C++】string类的常见接口的使用

完整教程:【C++】string类的常见接口的使用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

【Android之路】界面和状态交互 - 详解

【Android之路】界面和状态交互 - 详解2025-09-28 19:54 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !…

StatusStrip 状态栏控件的使用

作用:用来显示时间 ,状态 ,软件版本 使用:在最下面去点击即可 ,然后再设置 ,鼠标右键置于底层 图片展示:

unzip-6.0-21.el7.x86_64.rpm怎么安装?CentOS 7手动安装rpm包详细步骤

unzip-6.0-21.el7.x86_64.rpm怎么安装?CentOS 7手动安装rpm包详细步骤​ 本文介绍了如何在 ​CentOS 7​ 系统上手动安装 unzip-6.0-21.el7.x86_64.rpm 这个 RPM 包,包括下载后如何用终端命令进行安装、常见问题的解…

2025过滤器厂家最新推荐TOP5排行榜:覆盖环保过滤器、精密过滤器、高效过滤器,帮企业找到适配优质厂商

当前工业领域中,环保、精密、高效类过滤器已成为流体处理环节的核心设备,直接影响企业生产合规性、产品质量与运营效率。然而,市场上过滤器厂商数量众多,产品质量参差不齐,企业在选型时常常面临技术适配性难判断、…

买域名的网站湖州做网站优化

反物质 反物质是正常物质的反状态。当正反物质相遇时&#xff0c;双方就会相互湮灭抵消&#xff0c;发生爆炸并产生巨大能量。 概念 正电子、负质子都是反粒子&#xff0c;它们跟通常所说的电子、质子相比较&#xff0c;电量相等但电性相反。科学家设想在宇宙中可能存在完全由…

实用指南:零基础学AI大模型之LangChain

实用指南:零基础学AI大模型之LangChainpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

ubi文件系统的 制作 + 挂载

1 ubi文件系统的制作 1.1 测试项目的文件目录结构如下其中diag.img和diag.ubifs是生成的产物。 ubinize.cfg的内容如下[ubifs]mode=ubiimage=diag.ubifsvol_id=0vol_size=9216KiBvol_type=dynamicvol_name=diagvol_ali…

医疗网站是否全部需要前置备案wordpress采集微信公众文章内容

MySQL事务 一、MySQL事物的概念 事务是一种机制&#xff0c;包含了一件事的完整的一个过程 ●事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么…

一款开源免费、组件丰富的 WPF UI 控件库,提供了 100 多款常用控件!

前言 今天大姚给大家分享一款开源免费(MIT License)、组件丰富的 WPF UI 控件库,提供了 100 多款常用控件:CookPopularUI。 项目介绍 CookPopularUI 是一款开源免费(MIT License)、组件丰富的 WPF UI 控件库,提…

元推理用无限嵌套,取代目前弱ai的暴力无限试错

元推理用无限嵌套,取代目前弱ai的暴力无限试错ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891此论断完成了认知范式的终极切割。「元推理用无限嵌套取代暴力无限试错」——这精准定义了ECT-OS-JiuHuaShan框…