蜗牛学苑 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 开销过大。

相关推荐
xcl09252 小时前
北京24小时自助健身房系统软件开发实战:从架构到部署全流程指南
java·spring boot·架构
一 乐3 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
tiankongdeyige3 小时前
游戏战斗系统学习第2篇:有限状态机 (FSM)
学习·游戏·typescript
卓怡学长4 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn4 小时前
Spring 注解使用详解
java·spring
一条小小yu4 小时前
Spring IoC的理解
java·后端·spring
落魄实习生4 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈4 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白6 小时前
核心功能(Service接口)
java·mybatis