spring-ai 学习系列(2)-调用远程deepseek
上一节学习了spring-ai调用本地ollama,这次继续学习调用远程deepseek
一、pom依赖调整
加入openai的依赖

1 <dependency>
2 <groupId>group.springframework.ai</groupId>
3 <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
4 </dependency>
二、yaml配置调整
其中api-key换成真实的deepseek api key(注:没有的,参考本文最后的截图,去deepseek官网申请1个,非常便宜,早饭吃根油条的钱,就能体验很久)
spring:
ai:
openai:
api-key: sk-***
base-url: https://api.deepseek.com
chat:
options:
model: deepseek-chat
temperature: 0.7
三、注入openai模型
@Bean("openaiClient")
public ChatClient remoteClient(OpenAiChatModel model) {
return ChatClient.builder(model)
.defaultSystem("你是可爱且热情、人见人爱,花见花开的AI助手,中文名字叫小美,英文名字叫Rose,你有一个好朋友,他的网名叫[菩提树下的杨过],请以阿呆的身份回答问题")
.defaultAdvisors(new ConsoleOutputAdvisor())
.build();
}
四、调整Controller
@Autowired
@Qualifier("openaiClient")
ChatClient openaiClient; @RequestMapping("/openai/chat")
public String openAIChat(String prompt) {
return openaiClient.prompt()
.user(prompt)
.call()
.content();
} @RequestMapping(value = "/openai/chat-stream", produces = "text/html;charset=utf-8")
public Flux<String> openAIChatStream(String prompt) {
return openaiClient.prompt()
.user(prompt)
.stream()
.content();
}

注:抛个小问题,如果想自己做1个多用户平台,希望每个用户登录后,动态使用自己的deepseek api-Key,spring-ai并没有提供相应方法,可以动态设置。如果要实现类似功能,可参考 全自助使用Cursor生成的DeepSeek Demo java 项目
文中代码:https://github.com/yjmyzz/spring-ai-sample/tree/day02
spring-ai 学习系列(2)-调用远程deepseek的更多相关文章
- Spring Boot 学习系列(10)—SpringBoot+JSP的使
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 解决问题 随着spring boot 框架的逐步使用,我们期望对于一些已有的系统进行改造,做成通用的脚手架, ...
- Spring Boot 学习系列(03)—jar or war,做出你的选择
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 两种打包方式 采用Spring Boot框架来构建项目,我们对项目的打包有两种方式可供选择,一种仍保持原有的 ...
- Spring Boot 学习系列(09)—自定义Bean的顺序加载
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Bean 的顺序加载 有些场景中,我们希望编写的Bean能够按照指定的顺序进行加载.比如,有UserServ ...
- Spring Boot 学习系列(序)—Spring Boot
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring Boot? Spring Boot 是由pivotal团队提供的一个基于Spring的全新框架 ...
- Spring Boot 学习系列(06)—采用log4j2记录日志
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 为什么选择log4j2 log4j2相比于log4j1.x和logback来说,具有更快的执行速度.同时也支 ...
- [eShopOnContainers 学习系列] - 03 - 在远程 Ubuntu 16.04 上配置开发环境
直接把 md 粘出来了,博客园的富文本编辑器换成 markdown,没啥效果呀 ,先凑合吧.实在不行换地方 # 在远程 Ubuntu 16.04 上配置开发环境 ## 零.因 为什么要用这么麻烦的 ...
- Spring Boot 学习系列(05)—自定义视图解析规则
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自定义视图解析 在默认情况下Spring Boot 的MVC框架使用的视图解析ViewResolver类是C ...
- Spring Boot 学习系列(08)—自定义servlet、filter及listener
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的filter及listener配置 在传统的Java web项目中,servlet.filter和li ...
- Spring Boot 学习系列(07)—properties文件读取
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的properties读取方式 一般的,我们都可以自定义一个xxx.properties文件,然后在工程 ...
- Spring Boot 学习系列(04)—分而治之,多module打包
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 明确功能,各司其职 在一个结构清晰的项目中,一个没有module划分的结构显然不是最佳实践.有人会说可以在同 ...
随机推荐
- NOIP集训 P4137 Rmq Problem / mex 题解
前置指使:可持久化线段树 题解:P4137 Rmq Problem / mex 有一个长度为 \(n\) 的数组 \(\{ a_1,a_2,...,a_n \}\) . \(m\) 次询问,每次询问一 ...
- x86花指令
花指令 参考: https://bbs.kanxue.com/thread-279604.htm#msg_header_h3_21 两种反编译算法 线性扫描算法:逐行反汇编(无法将数据和内容进行区分) ...
- 【笔记】PyVis|神经网络数据集的可视化
文章目录 版本: 应用实例: PyVis的应用: 零.官方教程 一.初始化画布`Network` 二.添加结点 添加单个结点`add_node`: 添加一系列结点`add_nodes`: 三.添加边 ...
- linux期末考试题(1)
linux期末考试题 一.选择题(共20分,每小题2分) 1.以下哪个环境变量表示shell搜索外部命令或程序路径(C) A.ENV B.PWD C.PATH D.ROOT 解答: ENV用于显示当前 ...
- BP算法完整推导 2.0 (下)
上篇主要阐述 BP算法的过程, 以及 推导的 4 大公式的结论, 现在呢要来逐步推导出这写公式的原理. 当理解到这一步, 就算真正理解 BP算法了. 也是先做一个简单的回顾一下, 不是很细, 重点在推 ...
- skip
哇酷哇酷,和你的春天一样稍纵即逝的夏天 藏什么藏呢 自卑吗 你以为是缺点的 恰恰让我喜欢 但要短确实很短 说难是很难 而且烂 恰到好处吧 好男人也没的身手! 为了足以被好男人拯救 我在练习 结果是腿废 ...
- 基于First Order Motion与TTS的AI虚拟主播系统全流程实现教程
前言:多模态虚拟主播的技术革命 在AI内容生成领域,虚拟主播技术正经历从2D到3D.从固定模板到个性化定制的跨越式发展.本文将深入解析如何通过Python技术栈构建支持形象定制与声音克隆的AI虚拟主播 ...
- Linux如何进入bios
如何通过Linux系统进入bios 我们都知道在系统没启动前用按键进入bios,但是如果在启动没启动之前按键失效(bios里面设置的原因). 如果能进入linux系统,那么可以执行 sudo syst ...
- RBMQ案例三:发布/订阅模式
在上篇教程中,我们搭建了一个工作队列,每个任务只分发给一个工作者(worker).在本篇教程中,我们要做的跟之前完全不一样 -- 分发一个消息给多个消费者(consumers).这种模式被称为&quo ...
- 【pr】利用lrc快速导入歌曲的歌词
确保你的bgm是原汁原味的,没有经过变速或剪辑 下载lrc https://www.musicenc.com/ pr不能直接导入lrc,需要将lrc转换成srt https://www.lrccon. ...