AI Agent入门实战第11篇,Spring AI Alibaba用户画像记忆实战--给AI装上“人物小传”
让Java开发者像写Spring Boot一样开发AI应用——第二阶段第五篇
写在前面
第九天,我们给Agent装上了“短时记忆”——它能在同一会话中记住“刚才说了什么”。
第十天,我们给Agent装上了“长时记忆”——它能跨会话检索“之前聊过什么”。
但还有一个更根本的问题:Agent“认识”你吗?
它记得“你喜欢喝美式咖啡”这件事,但它不知道“你”是谁——不知道你的职业、你的习惯、你的长期目标。它记住的是一堆零散的事实,而不是一个完整的你。
这就像一个助理,手里有一堆关于你的便签纸——“喜欢简洁”“Java开发”“住北京”——但从来没有把这些碎片拼成一张完整的人物画像。
今天,我们给Agent装上“用户画像记忆”——让Agent从“记住关于你的事”升级为“真正认识你”。
📌 本文是第二阶段“核心能力实战篇”的第五篇。前两篇我们解决了“会话内记忆”和“跨会话记忆”,今天完成记忆体系的最后一块拼图——用户画像记忆。至此,Agent的三层记忆架构(短时+长时+画像)正式闭环。
一、从“聊天记忆”到“特征记忆”
用户画像记忆 ≠ 聊天记忆
在开始之前,先厘清一个关键概念:用户特征记忆(User Profile Memory)和聊天记忆(Chat Memory)是两回事。
| 维度
|
聊天记忆(短时/长时)
|
用户画像记忆
| 作用域 |
当前会话(短时)或跨会话检索(长时)
| 全部会话,始终可用 | | 存储内容 |
对话原文、消息列表
| 提炼后的结构化用户画像 | | 持久性 |
会话结束后可清理
| 长期保留,持续更新 | | 用途 |
保持上下文连贯
| 个性化回答、主动推荐 |
用户画像记忆的价值在于:让AI“记住你是谁”,而不是每次对话都重新认识你。
💡 短时记忆是“便签纸”,长时记忆是“日记本”,用户画像记忆是Agent对你的“人物小传”。
一个真实的场景对比:
<span leaf="">❌ 没有用户画像记忆:</span>
用户画像记忆的三大核心能力
用户画像记忆让Agent具备三种关键能力:
| 能力
|
说明
|
示例
| 个性化应答 |
根据用户偏好调整回复风格、内容深度
|
“您喜欢简洁,我为您总结3个要点”
| | 主动推荐 |
基于历史偏好主动推荐相关内容
|
“您上次喜欢喝美式,今天要加一杯吗?”
| | 持续学习 |
从每次对话中自动提取新特征,不断丰富画像
|
用户说“我最近开始学Python” → 画像新增“技能:Python初学者”
|
💡 用户画像记忆是三层记忆架构中最接近“人”的一层——它让Agent从“工具”变成了“伙伴”。
二、画像的自动提取与更新:提取→存储→注入
用户画像记忆的完整工作流程,可以概括为三个关键动作:
<span leaf="">① 画像提取(Extract)</span>
画像数据结构设计
用户画像的核心数据模型:
<span leaf=""><span>CREATE TABLE</span> user_memory (</span>
关键字段的设计意图:
| 字段
|
作用
category |
记忆分类(偏好/个人信息/习惯/其他),方便按场景筛选
|
| confidence | 置信度
:同一条记忆被多次验证则递增,避免“随口一说”被当成稳定特征
|
| source |
区分AI自动提取还是用户手动添加,手动添加的具有更高优先级
|
💡 confidence(置信度)是用户画像记忆的一个精妙设计——它让系统能区分“用户随口说的一句话”和“用户反复确认的稳定偏好”。这是从“记录”到“理解”的关键一步。
三、三层记忆架构:终于拼完了最后一块拼图
经过三天的学习,我们终于可以画出Agent记忆体系的完整全景图:
<span leaf="">┌─────────────────────────────────────────────────────────────────────┐</span>
长短记忆双向交互闭环
三层记忆不是孤立的,而是形成了一个双向交互的闭环:
| 环节
|
流转方向
|
核心作用
|
依赖能力
| Record(记忆写入) |
短期 → 长期 → 画像
|
提炼有效信息,沉淀用户专属特征
|
LLM信息抽取、结构化、去重降噪
| | Retrieve(记忆召回) |
画像 → 长期 → 短期
|
补充历史上下文,实现个性化应答
|
语义检索、相似度匹配、上下文拼接
|
💡 Record负责“把当下变成历史”,Retrieve负责“让历史服务当下”。三层记忆就像一个学习型组织——短时记忆是“会议记录”,长时记忆是“档案库”,用户画像是“员工档案”。每次对话都是一次“会议”,结束后有价值的信息被归档到“档案库”,同时更新“员工档案”。
ModelHook自动化协同
Spring AI Alibaba通过ModelHook / 拦截器实现三层记忆的自动化协同:
<span leaf="">用户发送消息</span>
四、记忆的优先级与冲突处理
优先级规则
当多个来源的记忆指向同一件事但内容不同时,需要明确的优先级规则:
| 优先级
|
记忆来源
|
说明
| 最高 |
用户手动添加
|
用户主动告诉Agent的偏好,具有最高权威
| | 中 |
高频验证(高置信度)
|
多次对话中反复出现的特征,置信度≥3
| | 低 |
单次提取(低置信度)
|
只出现过一次的信息,可能只是随口一说
|
置信度递增策略:
<span leaf=""><span>// 每次验证同一条记忆时,置信度+1</span></span>
💡 置信度机制避免了“用户随口说一句”就被当成永久偏好的问题。一条记忆被验证3次以上,才被认为是稳定的用户特征。
冲突处理策略
当用户画像中的记忆与当前对话中的信息发生冲突时,需要明确的处理策略:
| 策略
|
适用场景
|
处理方式
| MERGE(合并) |
新旧信息互补,不矛盾
|
融合新旧信息,更新原有记忆
| | UPDATE(覆盖) |
新信息明确替代旧信息
|
“我以前喜欢喝拿铁,现在改喝美式了” → 覆盖
| | DELETE(删除) |
信息已过时或错误
|
“我不再是Java开发了” → 删除旧职业信息
| | CREATE(新建) |
全新的信息,无匹配
|
新增独立记忆条目
| | SKIP(跳过) |
重复或无价值信息
|
直接舍弃不入库
|
五、实战:构建“越用越懂你”的个性化助手
实战一:画像提取服务
在对话结束后,自动调用LLM从对话中提取用户画像并存入数据库:
<span leaf=""><span>@Service</span></span>
实战二:将画像注入systemPrompt
每次对话前,自动加载用户画像并注入systemPrompt:
<span leaf=""><span>@Service</span></span>
实战三:完整Controller
<span leaf=""><span>@RestController</span></span>
六、用户画像记忆的最佳实践
画像提取的质量控制
| 原则
|
说明
| 只提取稳定事实 |
不提取临时信息(天气、心情等),只提取长期有效的特征
| | 归一化表述 |
“我要去旧金山” → “用户计划去旧金山旅行”
| | 置信度机制 |
反复出现才递增,避免“随口一说”被当成偏好
| | 分类存储 |
按PREFERENCE/PERSONAL_INFO/HABIT分类,便于按场景筛选
|
注入时机的选择
| 时机
|
优点
|
缺点
| 每次对话前注入 |
画像始终最新
|
每次都要查询数据库
| | 会话开始时注入 |
减少数据库查询
|
会话内画像不更新
| | 缓存+定期刷新 |
平衡性能和实时性
|
实现稍复杂
|
推荐:会话开始时加载并缓存,对话结束后异步更新。
隐私与安全考量
| 考量
|
建议
| 用户授权 |
存储用户画像前需获得用户明确同意
| | 数据最小化 |
只存储必要的画像信息,不存储敏感数据
| | 用户控制 |
提供查看、编辑、删除画像的界面
| | 数据加密 |
生产环境对画像数据进行加密存储
|
三层记忆的协同使用
| 场景
|
优先使用的记忆层
当前会话内的上下文
|
短时记忆(threadId)
| |
跨会话的知识检索
|
长时记忆(向量库 + RAG)
| |
用户是谁、喜欢什么
|
用户画像记忆(userId + category)
|
七、课后挑战
任务:实现一个能记住用户喜好并主动推荐的Agent
要求:
-
实现用户画像的自动提取(对话结束后LLM抽取)
-
实现画像的存储与更新(含置信度递增机制)
-
实现画像的注入(每次对话前加载并注入systemPrompt)
-
实现主动推荐功能(基于用户偏好主动推荐相关内容)
验收标准:
-
用户画像能从对话中自动提取并存储
-
同一偏好反复出现时,置信度能正确递增
-
新会话中能自动加载画像并影响回复风格
-
能基于用户偏好做出主动推荐
-
用户能查看、编辑、删除自己的画像
八、本日核心收获
-
用户画像记忆 ≠ 聊天记忆——前者是“认识你是谁”,后者是“记得聊过什么”
-
三层记忆架构正式闭环——短时记忆(会话连贯)+ 长时记忆(跨会话检索)+ 用户画像(真正认识你)
-
提取→存储→注入三步走——LLM抽取结构化事实→存入数据库→每次对话前注入systemPrompt
-
置信度机制是精髓——区分“随口一说”和“稳定偏好”,避免画像污染
-
ModelHook自动化协同——beforeModel读取、afterModel保存,开发者无需手动管理
-
Record + Retrieve双向闭环——Record把当下变成历史,Retrieve让历史服务当下
📌 本文是第二阶段“核心能力实战篇”的第五篇。第九、十、十一天,我们完成了Agent记忆体系的完整搭建——短时记忆、长时记忆、用户画像记忆三层架构正式闭环。至此,Agent不仅会“思考”、会“动手”,还拥有了完整的“记忆系统”。下一篇,我们将进入多智能体协同的进阶实战,让多个Agent组成“组织”协同工作。
有任何问题,欢迎在评论区留言交流!
作者:Java老兵搞AI,专注Java生态下的AI应用开发
如果觉得有用,点个「关注」支持一下吧,下期见!
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai001/post/20260823/AI-Agent%E5%85%A5%E9%97%A8%E5%AE%9E%E6%88%98%E7%AC%AC11%E7%AF%87Spring-AI-Alibaba%E7%94%A8%E6%88%B7%E7%94%BB%E5%83%8F%E8%AE%B0%E5%BF%86%E5%AE%9E%E6%88%98--%E7%BB%99AI%E8%A3%85%E4%B8%8A%E4%BA%BA%E7%89%A9%E5%B0%8F%E4%BC%A0/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com