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

Java的SpringAI+Deepseek大模型实战【二】

文章目录

  • 背景
  • 交互方式
    • 1、等待式问答
    • 2、流式问答
  • 设置角色
  • 环绕增强
    • 1)修改controller
    • 2)修改配置日志级别
  • 处理跨域

背景

上篇【Java的SpringAI+Deepseek大模型实战【一】】搭建起浏览器交互的环境,如何进行流式问答,控制台打印日志

交互方式

1、等待式问答

    // 等待式@RequestMapping("/chat")public String chat(String str){return chatClient.prompt().user(str).call().content();}

浏览器输入【http://localhost:8080/ai/chat?str=你是谁?】,访问结果如下所示。
在这里插入图片描述

2、流式问答

    @RequestMapping(value = "/chatting",produces = "text/html;charset=utf-8")public Flux<String> chatting(String str){return chatClient.prompt().user(str).stream().content();}

浏览器输入【http://localhost:8080/ai/chatting?str=你是谁?】,访问结果如下所示。
在这里插入图片描述

设置角色

设置角色可 使用 defaultSystem 属性,指明角色

@Configuration
public class CommomConfiguration {@Beanpublic ChatClient chatClient(OllamaChatModel model){return ChatClient.builder(model).defaultSystem("你是一个可爱热心的智能助手,你的名字叫小爱,请以小爱的口吻回答问题").build();}
}

设置完毕,问答会有思考的过程
在这里插入图片描述

环绕增强

利用AOP原理提供AI会话,使用Advisors,实现控制台日志打印。

1)修改controller

使用 defaultAdvisors属性,

@Configuration
public class CommomConfiguration {@Beanpublic ChatClient chatClient(OllamaChatModel model){return ChatClient.builder(model).defaultSystem("你是一个可爱热心的智能助手,你的名字叫小爱,请以小爱的口吻回答问题").defaultAdvisors(new SimpleLoggerAdvisor()).build();}
}

2)修改配置日志级别

修改yaml文件,配置日志logging的级别为debug

spring:application:name: learn-springaiai:ollama:base-url: http://localhost:11434chat:model: deepseek-r1:1.5b
logging:level:org.springframework.ai.chat.client.advisor: debugcom.henu.learnspringai: debug

控制台打印日志
在这里插入图片描述

处理跨域

import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @auth wang* @Date 2025/6/23 21:53**/
public class MvcConfiguration implements WebMvcConfigurer {// 处理跨域@Overridepublic void addCorsMappings(CorsRegistry registry){registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET","PSOT","PUT","DELETE","OPTIONS").allowedHeaders("*");}
}
http://www.xdnf.cn/news/1066627.html

相关文章:

  • Vue实现选中多张图片一起拖拽功能
  • 华为HN8145V光猫改华为蓝色公版界面,三网通用,xgpon公版光猫
  • [NocoDB] 在局域网中调整Float类型显示精度的部署经验
  • 《哈希表》K倍区间(解题报告)
  • 数组题解——​轮转数组【LeetCode】
  • K8S下http请求在ingress和nginx间无限循环的问题
  • Docker 永久换源步骤
  • 基于ASP4644多通道降压技术在电力监测系统中集成应用与发展前景
  • Maven 之 JUnit 测试体系构建全解析
  • 基于SpringBoot + Vue 的网上拍卖系统
  • leetcode543-二叉树的直径
  • 通信网络编程3.0——JAVA
  • Spring Cloud微服务
  • Java面试题027:一文深入了解数据库Redis(3)
  • 【软考高级系统架构论文】论数据分片技术及其应用
  • Redis中的bigkey的介绍及影响
  • 安全再升级! 正也科技通过信息安全等级保护三级备案
  • 七八章习题测试
  • 高级版 Web Worker 封装(含 WorkerPool 调度池 + 超时控制)
  • 本地文件深度交互新玩法:Obsidian Copilot的深度开发
  • 能耗管理新革命:物联网实现能源高效利用
  • 小学期前端三件套学习(更新中)
  • 开启游戏新时代:神经网络渲染技术实现重大跨越
  • 【Torch】nn.GRU算法详解
  • 前端跨域解决方案(7):Node中间件
  • 容器技术入门与Docker环境部署指南
  • asp.net core Razor动态语言编程代替asp.net .aspx更高级吗?
  • 如何在 Vue 应用中嵌入 ONLYOFFICE 编辑器
  • LED-Merging: 无需训练的模型合并框架,兼顾LLM安全和性能!!
  • WebSocket长连接在小程序中的实践:消息推送与断线重连机制设计