当前位置: 首页 > 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("*");}
}

相关文章:

  • 贷款引流推广平台百度移动端优化
  • 民政局网站建设工作总结电脑全自动挂机赚钱
  • wap的网站模板下载/seo快速排名关键词
  • wordpress站群目录收录/陕西seo主管
  • 中国十大少儿编程教育品牌/seo草根博客
  • 公司管理培训课程/长沙seo全网营销
  • 飞往大厂梦之算法提升-7
  • Vue 列表过滤:语法与注意事项详解
  • Docker知识点汇总——AI教你学Docker
  • LINUX 623 FTP回顾
  • C++面向对象3——C++面向对象的权限、引用与指针
  • H5新增属性
  • logstash读取kafka日志写到oss归档存储180天
  • 2025年CSS最新高频面试题及核心解析
  • 边缘-云协同智能视觉系统:实时计算与云端智能的融合架构
  • Linux系统能ping通ip但无法ping通域名的解决方法
  • LeetCode热题100—— 160. 相交链表
  • [附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+Vue实现的校园二手交易平台管理系统,推荐!
  • Threejs实现 3D 看房效果
  • 【kubernetes】--controller(deployment)
  • 洛谷 P10379 [GESP202403 七级] 俄罗斯方块-普及/提高-
  • 使用Vue重新构建应用程序
  • UP COIN:从 Meme 共识走向公链与 RWA 的多元生态引擎
  • 浅析std::atomic<T>::compare_exchange_weak和std::atomic<T>::compare_exchange_strong
  • Docker 与 Containerd 交互机制简单剖析
  • Apache SeaTunnel Spark引擎执行流程源码分析