Spring AI Agent 知识卡片(简历版)
这份卡片按你当前简历的项目强度整理。
目标不是大模型理论全覆盖,而是:
- 能撑住
苍穹外卖 AI 智能客服 Agent的项目深挖 - 能讲清楚 Spring AI Advisor、Tool Calling、Memory、RAG 怎么协作
- 能讲清楚工具白名单、签名检测、最大轮次、确认挂起、恢复执行
- 能把 Agent 讲成一个可控的后端执行系统,而不是简单调模型
1. Agent 是什么
- Agent 不是单纯聊天机器人
- Agent = Model + Harness
- Model 负责理解和生成
- Harness 负责执行控制
- 常见能力:
- 规划
- 记忆
- 工具调用
- RAG 检索
- 状态管理
- 安全兜底
- 记一句:
Agent 不是让模型自由发挥,而是给模型搭一个可控执行系统
2. Spring AI 在项目里的作用
- Spring AI 是 Java 生态里接入 AI 能力的框架
- 它提供统一抽象
- 比如 ChatModel、Advisor、Tool Calling、ChatMemory
- 好处:
- 让 AI 能力更容易接进 Spring Boot 项目
- 让模型调用、上下文注入、工具调用更工程化
- 你的项目口径:
我不是写脚本调大模型,而是把 AI 能力接进后端业务链路
3. ChatModel
- ChatModel 是模型调用抽象
- 负责和底层大模型交互
- 屏蔽不同模型服务的差异
- 面试不用只讲 API
- 要讲它在链路里的位置:
- Advisor 先处理上下文
- Tool Calling 可能参与执行
- 最后由 ChatModel 完成模型生成
4. Advisor 链
- Advisor 类似模型调用前后的拦截链
- 可以在模型调用前后增强处理
- 常见职责:
- 注入用户上下文
- 注入会话记忆
- 注入 RAG 检索结果
- 做工具过滤
- 做安全校验
- 做日志和观测
- 项目口径:
Advisor 链把一次模型调用变成一个可治理的业务流程
5. Advisor 执行顺序
- 顺序很重要
- 常见链路:
- 用户问题进来
- 意图识别
- 用户上下文注入
- 会话记忆注入
- RAG 检索注入
- 工具白名单过滤
- 安全校验
- 模型调用
- 结果校验
- 记一句:
Advisor 链不是堆功能,而是在控制模型能看到什么、能调用什么、能输出什么
6. Prompt 和 Context 区别
- Prompt 是指令层
- Context 是供给层
- Prompt 规定模型怎么答
- Context 提供模型用什么资料答
- Prompt 包括:
- 角色
- 目标
- 约束
- 输出格式
- Context 包括:
- 用户信息
- 会话历史
- 记忆
- RAG 证据
- 工具结果
- 记一句:
Prompt 管规则,Context 管材料
7. Harness
- Harness 是执行控制系统
- 它不等于提示词增强
- 它负责:
- 工具选择
- 步骤编排
- 状态持久化
- 权限校验
- 结果回查
- 失败恢复
- 人工确认
- 项目里高风险操作不能只靠模型一句话决定
- 必须由 Harness 做控制
8. Agent Loop
- Agent Loop 常见结构:
- Decide
- Act
- Observe
- Decide:判断下一步做什么
- Act:调用工具或检索
- Observe:读取执行结果
- 风险:
- 工具循环调用
- 重复执行
- 越权调用
- 幻觉参数
- 所以要加:
- 最大轮次
- 工具白名单
- 参数校验
- 签名检测
- fallback
9. Tool Calling 是什么
- Tool Calling 是模型调用外部能力的机制
- 模型不直接改数据库
- 模型只生成工具调用意图和参数
- 后端工具执行器负责真正执行
- 工具调用链路:
- 识别意图
- 选择工具
- 生成参数
- 参数校验
- 执行业务方法
- 返回观察结果
- 模型基于结果继续回答
10. Tool Calling 和普通接口调用区别
- 普通接口调用是程序确定调用哪个接口
- Tool Calling 是模型参与选择工具和生成参数
- 所以风险更高
- 必须加控制:
- 工具白名单
- 参数校验
- 权限校验
- 状态机校验
- 幂等控制
- 结果回查
- 审计日志
11. 工具白名单
- 工具白名单控制模型能调用哪些工具
- 不同意图开放不同工具
- 比如购物车意图只开放购物车相关工具
- 订单查询意图只开放订单查询工具
- 高风险操作单独控制
- 好处:
- 降低误调用
- 降低越权调用
- 降低工具搜索空间
- 提升模型调用稳定性
12. 工具签名检测
- 工具签名 = toolName + normalizedArgs
- 作用是发现重复调用
- 如果同一个工具带同一批参数反复调用
- 可能说明模型陷入循环
- 处理方式:
- 阻断
- 返回已有结果
- fallback
- 转人工
- 项目口径:
签名检测是为了防止模型重复执行同一个动作
13. 最大轮次限制
- Agent Loop 不能无限跑
- 最大轮次限制用于防止死循环
- 超过阈值后:
- 停止继续调用工具
- 返回降级提示
- 或转人工
- 面试口径:
生产系统不能让模型无限试错,要有预算和熔断
14. 记忆系统
- 记忆不是简单保存聊天记录
- 记忆是结构化的用户事实
- 比如:
- 口味偏好
- 饮食限制
- 常用地址
- 历史偏好
- 常见流程:
- 对话结束后异步提取
- LLM 生成结构化事实
- 置信度过滤
- 持久化
- 下次按意图注入
15. 记忆注入粒度
- 不是所有记忆都要每次注入
- 注入太多会污染上下文
- 常见策略:
- 全量注入
- 摘要注入
- 不注入
- 按意图选择粒度
- 记一句:
记忆系统的难点不是存,而是什么时候取、取多少、能不能信
16. 记忆和 RAG 区别
- 记忆是用户个性化事实
- RAG 是公共知识库证据
- 记忆回答:
- 用户喜欢什么
- 用户常用什么
- 用户有什么限制
- RAG 回答:
- 规则是什么
- 政策怎么写
- 文档依据是什么
- 项目里两者要分区注入
- 防止用户偏好污染业务规则
17. 多步任务编排
- 多步任务用于处理复合请求
- 比如:
- 先查订单
- 再判断状态
- 再确认风险
- 最后执行取消或退款
- 不能让模型一次性直接执行到底
- 要拆成步骤
- 每一步有输入、输出、状态
- 高风险步骤要暂停确认
18. 执行状态持久化
- 多步任务需要保存执行状态
- 否则确认后无法恢复
- 常见状态:
- 当前步骤
- 下一步索引
- 等待确认的步骤
- 每步输出
- 超时时间
- 你的项目口径:
用 Redis 保存任务执行状态,支持确认挂起和恢复执行
19. 确认挂起和恢复执行
- 高风险动作不能直接执行
- 比如取消订单、退款
- 流程:
- Agent 先生成计划
- 执行到高风险步骤时挂起
- 返回影响范围
- 用户确认
- 后端根据保存的状态恢复执行
- 用户拒绝或超时则终止
- 记一句:
确认不是问一句,而是状态机暂停和恢复
20. 安全治理
- 安全治理不是一句“加权限”
- 要落到链路:
- 工具白名单
- 参数校验
- 权限校验
- 订单状态机校验
- 幂等控制
- 结果回查
- 审计日志
- 人工确认
- fallback
- 熔断
- 生产口径:
模型只能建议和发起调用,最终约束在后端业务规则里
21. 幂等和结果回查
- 模型可能重复调用工具
- 网络也可能重试
- 所以高风险动作要幂等
- 常见手段:
- 唯一约束
- 幂等 key
- 状态机判断
- 条件更新
- 执行后回查数据库真实状态
- 记一句:
不要只相信模型返回成功,要看数据库最终状态
22. HTTP + WebSocket 双通道限流
- AI 客服既有 HTTP 接口
- 也可能有 WebSocket 对话通道
- 两个入口都要限流
- HTTP 限流:
- 适合用 AOP 拦截接口方法
- 进入业务逻辑前先判断频率
- 超限直接返回统一错误响应
- WebSocket 限流:
- 适合在消息入口判断
- 每条用户消息都要计数
- 超限返回提示或关闭连接
- 为什么用 Redisson:
- 项目可能多实例部署
- 单机内存计数只能限制一个节点
- Redis 可以做分布式共享计数
- 滑动窗口比固定窗口更平滑
- key 设计:
- HTTP:
rate:http:{userId}:{uri} - WebSocket:
rate:ws:{userId}:{sessionId} - 也可以按 IP、租户、接口场景扩展
- 面试口径:
HTTP 限流拦接口,WebSocket 限流拦消息,Redisson 滑动窗口保证多实例下计数一致
23. RAG、Tool、Memory 怎么协作
- RAG 负责查公共知识
- Tool Calling 负责执行业务动作
- Memory 负责用户个性化事实
- Advisor 链负责把它们组织起来
- Harness 负责控制执行边界
- 项目口径:
知识型问题走 RAG操作型问题走 Tool个性化问题结合 Memory高风险动作走确认和状态机
24. 常见面试追问
- 为什么不直接让模型调所有工具?
- 因为工具越多,误调用风险越高
- 为什么需要最大轮次?
- 因为 Agent Loop 可能死循环
- 为什么状态要持久化?
- 因为确认挂起后要恢复执行
- 为什么记忆要置信度过滤?
- 因为低质量记忆会污染后续回答
- 为什么高风险操作要人工确认?
- 因为模型不能替用户做不可逆决策
25. 项目高分口径
- 我的项目不是简单接入大模型聊天
- 而是把 AI 客服做成一个后端可控执行系统
- Spring AI Advisor 链负责上下文、记忆、RAG、工具过滤和安全校验
- Tool Calling 负责把模型意图转成受控业务操作
- 多步任务编排负责复杂请求的拆解和顺序执行
- Redis 负责保存任务执行状态
- 高风险步骤支持确认挂起和恢复
- 工具白名单、签名检测、最大轮次限制负责降低误调用和循环调用风险
- HTTP + WebSocket 双通道限流负责控制模型入口流量
- 最终由权限、状态机、幂等和数据库结果回查兜底
26. 面试一句话总结
Spring AI 提供模型、Advisor、工具、记忆这些抽象Agent 的核心不是会聊天,而是能被后端稳定控制Advisor 链控制模型看到什么,Tool Calling 控制模型能做什么Memory 管个性化事实,RAG 管公共知识证据HTTP 和 WebSocket 都要限流,避免模型入口被高频请求打穿高风险动作必须经过确认、状态机、幂等和结果回查
相关链接:[[AI Agent 核心概念]] | [[Spring AI Advisor 链]] | [[Spring AI Tool Calling]] | [[AI Agent 记忆系统]] | [[Spring AI 与 RAG 集成]] | [[Spring AI 安全治理]] | [[苍穹外卖AI客服]]