蜗牛学苑 Java 智能体学习 Day38|Spring AI Alibaba2 思维导图复盘

一、思维导图整体知识结构梳理

多模态图片识别与生成

  • 多模态基础概念:模型同时支持文本、图像等多种类型输入输出
  • 图片理解:传入图片 + 文字提问,大模型读取图片内容并回答
    • 代码实现:图片转资源对象,user 消息内同时携带文本与图片
    • 案例:识别图片人物、提取图片信息
  • 文生图:通过文字描述,调用模型生成图片
    • 后端接口:接收提示词,调用图像模型返回图片 URL
    • 前端页面:展示 AI 生成图片

流式对话 SSE

  • 传统一次性返回:模型全部生成完毕后统一返回,等待久,体验差
  • 流式输出原理:SSE 服务端推送协议,模型每生成一段 token,立刻推送给前端,打字机效果
  • Spring AI API:stream()方法,返回 Flux 响应流
  • Controller 接口:返回Flux<ServerSentEvent<String>>
  • 前端:EventSource 接收 SSE 流,分段渲染文字
  • 测试:Postman / 前端页面实时展示逐字输出

提示词模板 PromptTemplate

  • 痛点:硬编码字符串提示词,不方便维护、修改
  • 作用:把提示词抽离成模板文件,支持占位符动态传参
  • 资源读取:@Value读取 classpath 下.st模板文件
  • 使用步骤:加载模板 -> 填充占位符参数 -> 构建 Prompt 对象交给 ChatClient
  • 优势:提示词和 Java 代码解耦,便于单独调试优化 prompt

ChatMemory 会话记忆

  • 问题:大模型本身无状态,每次对话独立,默认记不住历史对话
  • ChatMemory 作用:自动保存当前会话历史消息,自动拼接上下文,实现多轮对话
  • 核心组件
    • ChatMemoryAdvisor:Advisor 增强器,自动读取 / 写入会话历史
    • conversation_id:会话唯一标识,区分不同用户对话
  • 内存实现:MessageWindowChatMemory,窗口记忆,限制消息条数防止 token 无限膨胀
  • 存储方案:内存(测试)、Redis、MySQL 持久化存储(生产环境)
  • 代码:.advisors(a -> a.param(ChatMemory.CONVERSATION_ID, chatId))绑定会话 ID

二、制作意图

  1. 拓展 Spring AI Alibaba 能力,学习多模态,掌握图片理解、文生图两种图像相关能力;
  2. 掌握 SSE 流式输出,实现 AI 打字机效果,优化前端聊天交互体验;
  3. 使用 PromptTemplate 将提示词抽离模板文件,代码与提示词解耦,便于维护调优;
  4. 学习 ChatMemory+Advisor,解决大模型无状态问题,实现带上下文记忆的多轮连续对话,为智能体开发打下基础。

三、当日学习总结

Day38 学习 Spring AI Alibaba 进阶内容:

  1. 学习多模态能力,实现图片理解(看图问答)与文生图,模型支持图文混合输入输出。

  2. 学习 SSE 流式输出,借助 Flux 响应式编程,调用stream()接口实现逐 token 推送,前端实现打字机聊天效果,提升用户体验。

  3. 使用 PromptTemplate 提示词模板,把 prompt 抽离到独立模板文件,通过占位符动态填充参数,实现代码与提示词解耦。

  4. 学习 ChatMemory 会话记忆,大模型本身无状态,通过 ChatMemoryAdvisor 搭配 conversation_id,自动维护会话历史,实现多轮上下文对话;了解内存、Redis、MySQL 多种存储方案,窗口记忆控制消息数量,避免 token 开销过大。

相关推荐
Irene199110 分钟前
Flink 学习日志 01:前端转大数据的实战避坑指南
java·jvm·flink
Thomas.Sir11 分钟前
第1课:SpringBoot 4.x 快速上手:新特性、环境准备与第一个HelloWorld程序
java·spring boot
m0_6464299729 分钟前
BCrypt 与 JWT 认证流程学习笔记
笔记·学习
devilnumber31 分钟前
Java 内部迭代 vs 外部迭代:从原理到实战避坑
java·开发语言
apple_6926588533 分钟前
QX 效率启动器安装包:开源生产力工具,快捷键统一入口Raycast免费开源平替版来啦
学习·开源·办公
杨运交36 分钟前
080-缓存模块-Spring Cache缓存键前缀设计与租户隔离实践
java·spring·缓存
\光辉岁月/40 分钟前
5.math类
java·开发语言
文丑颜不良啊42 分钟前
LeetCode76~100题目解析
java·leetcode
她的男孩1 小时前
页面已发布用户仍进不去:Forge Admin 门户入口与系统菜单挂载解耦
java·spring boot·低代码
不像程序员的程序媛1 小时前
mybatisplus insert dto未指定id时会如何
java·开发语言