上一节学习了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的更多相关文章

  1. Spring Boot 学习系列(10)—SpringBoot+JSP的使

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 解决问题 随着spring boot 框架的逐步使用,我们期望对于一些已有的系统进行改造,做成通用的脚手架, ...

  2. Spring Boot 学习系列(03)—jar or war,做出你的选择

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 两种打包方式 采用Spring Boot框架来构建项目,我们对项目的打包有两种方式可供选择,一种仍保持原有的 ...

  3. Spring Boot 学习系列(09)—自定义Bean的顺序加载

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Bean 的顺序加载 有些场景中,我们希望编写的Bean能够按照指定的顺序进行加载.比如,有UserServ ...

  4. Spring Boot 学习系列(序)—Spring Boot

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring Boot? Spring Boot 是由pivotal团队提供的一个基于Spring的全新框架 ...

  5. Spring Boot 学习系列(06)—采用log4j2记录日志

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 为什么选择log4j2 log4j2相比于log4j1.x和logback来说,具有更快的执行速度.同时也支 ...

  6. [eShopOnContainers 学习系列] - 03 - 在远程 Ubuntu 16.04 上配置开发环境

    直接把 md 粘出来了,博客园的富文本编辑器换成 markdown,没啥效果呀 ,先凑合吧.实在不行换地方   # 在远程 Ubuntu 16.04 上配置开发环境 ## 零.因 为什么要用这么麻烦的 ...

  7. Spring Boot 学习系列(05)—自定义视图解析规则

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自定义视图解析 在默认情况下Spring Boot 的MVC框架使用的视图解析ViewResolver类是C ...

  8. Spring Boot 学习系列(08)—自定义servlet、filter及listener

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的filter及listener配置 在传统的Java web项目中,servlet.filter和li ...

  9. Spring Boot 学习系列(07)—properties文件读取

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的properties读取方式 一般的,我们都可以自定义一个xxx.properties文件,然后在工程 ...

  10. Spring Boot 学习系列(04)—分而治之,多module打包

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 明确功能,各司其职 在一个结构清晰的项目中,一个没有module划分的结构显然不是最佳实践.有人会说可以在同 ...

随机推荐

  1. VMware 17 Pro 虚拟机从下载到安装的超详细教程,解决你的所有疑问

    VMware 17 Pro介绍 VMware 17 Pro是一款功能强大的虚拟机软件,适用于开发人员.测试人员.系统管理员和教育机构.它可以在一台计算机上模拟运行多台虚拟机,支持Windows.Lin ...

  2. servlet 解决中文乱码

    目录 1 get请求request乱码 2 post请求request乱码 3 response乱码 4 使用例子 1 get请求request乱码 在Tomcat7及以下版本,客户端以UTF-8的编 ...

  3. 【记录】Google|下载 Google 谷歌商店中的应用的多种方式

    之前我为了下载猫能玩的平板游戏,又不想下载病毒,就找了很多谷歌商店直接下 APK 的方法,以供大家参考. 对猫游戏感兴趣可参考这篇:[记录]Android|安卓平板 猫游戏(四款,peppy cat, ...

  4. JS 上下文 this 指向总结

    这个 js 语言中的 this 和其他面向对象的语言有本质的不同, 也更复杂, 它更多取决于函数在不同场景下的调用方式, 要理解它并总结出它的规律的话, 优先要从上下文 这个概念认知说起. 理解上下文 ...

  5. vue3 基础-传送门 teleport

    之前介绍了一波混入 mixin 和 自定义指令 directive 其基本作用就是为了在 vue 中实现代码的复用. 而本篇介绍的是 vue3 的一个新特性叫做传送门. 一听这个名字是不是就感觉特别科 ...

  6. js操作session

    // 保存数据到sessionStorage sessionStorage.setItem('key', 'value'); // 从sessionStorage获取数据 sessionStorage ...

  7. 使用 frp 进行内网穿透

    frp 是一个开源的内网穿透工具,可以使外网设备访问内网防火墙后的设备/服务器. 比如可以买一个 99元/年 的阿里云低配 ECS,然后把自己相对高配的旧电脑放在家里. 家里的旧电脑通过 frp 连上 ...

  8. 洛谷 P5066 [Ynoi2014] 人人本着正义之名debug-log

    序言 此日志分为四部分. 00:00是开始打代码的时间. 最开始打完代码(没有debug)大约用了两小时. part1-20210323 02:30 生成新节点时,没有给随机权值. 02:41 upd ...

  9. 洛谷 SP7258 SUBLEX - Lexicographical Substring Search

    洛谷 SP7258 SUBLEX - Lexicographical Substring Search Problem 先给你一个字符串s,后有T次询问.询问这个字符串的所有本质不同的子串中第k小的子 ...

  10. linux 配置定时任务

    注意:定时任务执行默认路径,我们配置的命令如kubectl要配置绝对路径/usr/local/bin/kubectl,或者在脚本中全局定义PATH 配置说明 linux 配置定时任务的方式比较多,可以 ...