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

【Spring AI Alibaba实战Demo】通过Spring AI Alibaba接入本地部署的大模型和线上大模型,实现流式简单对话

文章目录

  • 工具
  • SpringAIAlibaba接入本地大模型
  • SpringAIAlibaba接入线上大模型
  • 流式对话实现

工具

  • IDEA
  • springBoot 3.x
  • Java 17
  • ollama

本地大模型使用ollama部署的deepseek-r1:1.5b,线上使用阿里百炼的大模型,具体本地部署步骤可参考:我的博客

SpringAIAlibaba接入本地大模型

  1. 创建SpringBoot项目
  2. 添加pom依赖
        <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId></dependency>
  1. 写配置文件
spring:ai:ollama:base-url: http://localhost:11434chat:model: deepseek-r1:1.5b
  1. 接口层
@RestController
@RequestMapping("/ai")
public class ChatController {private final ChatClient chatClient;public ChatController(ChatClient.Builder chatClient) {this.chatClient = chatClient.build();}/*** 处理普通聊天请求,接收用户输入并返回模型的响应。* * @param input 用户输入的文本内容* @return 模型生成的响应内容*/@GetMapping(value = "/chat")public String chat(@RequestParam(value = "input") String input) {// 使用 ChatClient 发起一个用户消息请求,并同步获取模型的响应内容return this.chatClient.prompt().user(input) // 设置用户输入的内容.call()      // 触发模型调用.content();  // 获取模型返回的内容}
}
  1. 启动项目后测试接口
###
GET http://localhost:8088/ai/chat?input=你是谁
  1. 结果输出
    在这里插入图片描述
    成功接入

SpringAIAlibaba接入线上大模型

此处不再赘述,只需更改两个地方:

  1. pom依赖中
<!--        <dependency>-->
<!--            <groupId>org.springframework.ai</groupId>-->
<!--            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>-->
<!--        </dependency>--><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId></dependency>

注意要注释掉原来的ollama依赖

  1. 新增配置
spring:application:name: alibaba-deepseek-demoai:ollama:base-url: http://localhost:11434chat:model: deepseek-r1:1.5bdashscope:api-key: (填入你的apiKey)#base-url: https://dashscope.aliyuncs.com/compatible-mode/v1chat:options:model: qwen-max

记得填入你自己的apiKey

最后启动即可:
在这里插入图片描述
至此,我们就完成了通过SpringAIAlibaba接入本地和线上大模型两种方式,来进行简单的对话了!接下来用流式实现对话

流式对话实现

    /*** 流式对话接口,通过SSE返回逐字生成的回复内容* @param input 用户输入的提示词* @return Flux<String> 以流式方式返回生成的回复内容片段*/@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)public Flux<String> stream(String input) {// 使用ChatClient构建流式请求:// 1. 创建prompt上下文// 2. 设置用户输入// 3. 启动流式推理// 4. 提取内容流return this.chatClient.prompt().user(input).stream().content();}

postman测试:
在这里插入图片描述
不得不感叹,springai接口封装的的太好了,只要调用就能实现这个功能了

http://www.lryc.cn/news/591706.html

相关文章:

  • 8.预处理-demo
  • 【DOCKER】-5 镜像仓库与容器编排
  • docker中 contriner 和 images 什么关系
  • Redis学习系列之—— JDHotKey 热点缓存探测系统
  • maven本地仓库清缓存py脚本
  • 嵌入式学习-PyTorch(6)-day23
  • ZYNQ UltraScale+ MPSoC芯片 pcie switch级联ssd高速存储方案
  • Zabbix 分布式监控系统架构设计与优化
  • C++拷贝构造
  • 嵌入式学习-PyTorch(7)-day23
  • 突破限制:使用 Claude Code Proxy 让 Claude Code 自由连接任意模型
  • 【分治思想解题框架】【分解、求解、合并】
  • 如何在KL散度的意义下解释极大似然估计(二)
  • Kiro vs Cursor: AI IDE 终极对比指南
  • Redis7 底层数据结构解析
  • 数据呈现高阶技巧:散点图与桑基图的独特价值
  • 在CentOS7.9服务器上安装.NET 8.0 SDK
  • .Net将控制台的输出信息存入到日志文件按分钟生成日志文件
  • 编译原理第六到七章(知识点学习/期末复习/笔试/面试)
  • Docker-Beta?ollama的完美替代品
  • 如何将 ONLYOFFICE 文档集成到使用 Laravel 框架编写的 PHP 网络应用程序中
  • NO.7数据结构树|线索二叉树|树森林二叉树转化|树森林遍历|并查集|二叉排序树|平衡二叉树|哈夫曼树|哈夫曼编码
  • vue3 自定义vant-calendar header/footer/maincontent
  • Java数组中相关查找排序算法(1)
  • 力扣 hot100 Day47
  • 网络安全威胁下的企业困境与破局技术实践
  • Linux内核内存管理相关的配置参数
  • 电商行业如何做好网络安全工作?
  • 【web安全】DVWA反射型XSS漏洞分析与利用
  • RGBA图片格式转换为RGB格式(解决convert转换的失真问题)