Spring AI中的advisor机制了解吗?

典型回答 (本文内容来自我出的AI课,详细的代码演示和视频讲解可以从课程中学习。) Spring AI 中提供了一个灵活且强大的方式,可以用于拦截、修改和增强 Spring 应用中的 AI 交互功能,那就是Advisor,通过利用Advisor,开发者可以创建更复杂、可重用且易于维护的 AI 组件。 可以把Advisor理解为插件,比如我们想要实现记忆功能,就可以用到Memory相关的Advisor 实现日志记录相关的功能,我们就可以添加一个日志的Advisor: Spring AI中也提供了一些列内置的Advisor 我们看一下Advisor接口的定义,其实没啥东西,主要是他继承自Ordered,需要在他的所有视线中实现int getOrder(); 这个方法。这个方法主要是用来设置各个Advisor的顺序的。 1 2 3 4 5 public interface Advisor extends Ordered { int DEFAULT_CHAT_MEMORY_PRECEDENCE_ORDER = -2147482648; String getName(); } 他还有几个子接口。主要就是CallAdvisor、StreamAdvisor以及BaseAdvisor。 其中最基础的两个接口,一个是CallAdvisor一个是StreamAdvisor,一个是给同步调用使用的,另一个是给流式调用使用的。别贴提供了adviseCall和adviseStream方法。 1 2 3 4 5 6 7 public interface CallAdvisor extends Advisor { ChatClientResponse adviseCall(ChatClientRequest chatClientRequest, CallAdvisorChain callAdvisorChain); } public interface StreamAdvisor extends Advisor { Flux<ChatClientResponse> adviseStream(ChatClientRequest chatClientRequest, StreamAdvisorChain streamAdvisorChain); } 其实Advisor的执行过程,就和AOP是一样的,他会把所有注册到一个chatClient上的Advisor都找出来,然后按顺序执行。 ...

March 22, 2026 · 1 min · santu

什么是A2A,和MCP有什么区别?

典型回答 MCP协议是解决Agent和工具之间通信的,定义出来的一套标准协议。而A2A也是一个协议,是一个Agent之间通信的协议。能实现多个智能体之间互相了解对方,以及调用。 A2A全程是Agent to Agent protocol,是一个解决了多个智能体之间相互隔离,无法交流的问题的。 但是需要注意的是,他主要解决的是多个独立部署的智能体之间的互相协作问题,而有些我们自己搭建的多智能体,本身已经实现了协作的话,那就不再需要A2A了。 一般用在我们开发的Agent ,需要调用别的团队、或者部门、或者是公司提供的,可能是用其他语言编写的Agent的时候。 当我们的agent要调用其他的agent,以前只能通过http调用,或者通过mcp调用,但是有了A2A之后,A2A就能实现互相调用了,有点类似RPC协议。 扩展知识 A2A的主要流程 1、客户端Agent首先需要知道远程Agent能做什么。它通过获取智能体卡(Agent Card) 来了解服务端支持的任务类型、输入输出格式、是否需要认证等信息。 2、客户端根据 Agent Card 中声明的能力,构造一个合法的 Task。将该 Task 封装进一条 request 类型的 Message,发送给服务端。 3、服务端收到 Message 后,验证 task_type 是否支持(对照自身 Agent Card),执行任务逻辑(可能调用工具、模型、外部 API 等),若任务生成具体产出(如图片、代码文件、报告等),则创建 Artifact。 4、服务端将结果(包括对 Artifact 的引用)封装进 response Message。

March 22, 2026 · 1 min · santu

什么是Agent Skill?

典型回答 Agent Skill是Anthropic 这个公司推出的一种新的范式,解决的是Agent上下文太长的问题,其实也是上下文工程的一种典型实现。 我们来做个比喻,Agent就像一个酒店的大厨,而MCP、Function Call这些就像是后厨的锅碗瓢盆、葱姜蒜等这些工具和食材,随着我们对厨师的要求越来越多,需要让他会做各种菜,我么就给他堆满了工具和食材。 但是,厨师有了工具和食材就能做出好菜了么?未必,因为随着工具越来越多,食材越来越多,反而会让厨师更难以做出美味的菜肴,因为他可能不知道什么时候该用哪口锅,该用哪种酱油了。 这时候,就需要一个菜谱,来指导厨师做菜,而这个菜谱,就是Skill! Agent Skills 的做法,是把一些已经被验证有效的做事方式,抽象出来,封装成一个独立的能力模块,让 Agent 在需要的时候直接使用。 Agent Skill 本质上就是一个标准化的目录结构。你可以先把它理解为:一个给 Agent 用的能力文件夹目录。 一个完整的 Skill,至少包含一个核心文件,其余内容都是围绕这个核心文件展开的 1 2 3 4 5 my-skill/ # 技能名称 ├── SKILL.md # 必选:技能的介绍说明与指令约束 ├── scripts/ # 可选:可执行的脚本 ├── references/ # 可选:可参考的示例文件 └── assets/ # 可选:图片等资源文件 这个结构就是 Agent Skills 的核心,就是为了让 Agent 在运行时,可以分层、有选择地加载信息,而不是一次性把所有内容塞进上下文。 渐进式披露 把 SKILL.md、Reference、Script 放在一起看,其实它们就共同构成了Agent Skills的核心:渐进式披露机制。 所谓渐进式披露,顾名思义,就是不一次性把 Skill 的全部信息塞进上下文,而是根据 Agent 所处的阶段,按需、分层地加载信息。 在 Agent Skills 中,这种披露是严格分阶段发生的: 技能发现阶段 客户端只扫描 Skill 目录,并且只读取 SKILL.md 中由 --- 包裹的元数据。Agent 在这个阶段只关心一件事:这个 Skill 是做什么的,当前任务要不要用它。而 Instruction、Reference、Script 在这个阶段都不会被加载。 执行决策阶段 当 Agent 基于元数据判断需要使用该 Skill 后,才会加载 SKILL.md 中的 Instruction。 此时 Agent 才开始理解:这个 Skill 具体该怎么用,执行流程是什么,哪些地方需要额外注意。 细节补充阶段 Reference 不会自动进入上下文。只有当 Instruction 中明确指示,或执行过程中确实需要查阅某些细节时,Agent 才会按文件粒度读取对应的 Reference 内容。这一步的目的就是补充当前步骤所必需的最小信息集。 确定性执行阶段 当流程中出现不适合交给模型自由生成的部分,Agent 会按 Instruction 的约定调用 Script。Script 负责用稳定、可控的代码完成具体操作,并只把结果返回给 Agent。大模型既不需要理解实现细节,也不会被大量原始内容干扰。只是调用,获取结果即可。 正是这种分层、延迟、按需加载的设计,使 Agent Skills 能够在保证执行稳定性的同时,显著降低上下文 token 的消耗。这也是 Agent Skills 演进为真正工程化能力模块的关键所在。 ...

March 22, 2026 · 1 min · santu

什么是AI Agent?

典型回答 大模型大家都知道,比如我们常见的ChatGPT、DeepSeek等,但是,这些大模型都有一个关键的问题,那就是他们没办法用工具,比如我想要让大模型帮我查询一个接口,他是做不到的。 那么,如果给大模型增加工具的调用能力,并且他知道该什么时候调用什么工具,这基本上就是一个Agent了。 Agent翻译成中文是智能体,或者叫做助理更合适,比如说这就是个Agent:你对你的小爱同学说,我想吃肯德基,他就能分析出你可能想吃什么,然后让你确认后,直接就帮你把肯德基点好了。 这个过程需要: 1、小爱同学知道你想吃什么,了解你的口味。 2、小爱同学知道点餐需要打开先软件,然后搜索,然后付款 3、小爱同学可以帮你自动完成这些操作 该怎么实现这样的功能呢?下面这张图就是非常出名的Agent的图: 可以看到,这里面包括了Tools、Action、Planning以及Memory,Tools就是我们前面说过的工具,而Action就可以理解为是对工具的调用。 剩下的Memory这个好理解,就是需要有记忆的能力,包括了长期记忆和短期记忆,短期记忆可以理解为上下文记忆,就像你打开一个ChatGPT的对话窗口,这个就是个短期记忆,换个窗口记忆就清楚了。长期记忆一般是通过一些其他的方式,比如数据库做存储,在每次对话前先让模型读取这些信息,作为长期记忆。 还有一个Plan的功能,这其实是在Agent有了记忆,会了工具之后,还需要他知道什么时候该调用哪些工具,这就是所谓的规划的能力。 那么总结下,Agent=LLM+Memory+Tools(使用+规划) 基于以上介绍,差不多就能总结出一个Agent具备的能力。主要包括了: 感知(Perception): Agent能够接收来自环境的输入信息,包括用户输入的问题,以及Memory。 决策(Decision-making): Agent根据感知到的信息和内部状态,选择合适(Planning)的行动(包包括Tools)。 行动(Action): Agent执行所选的行为,以实现特定目标。

March 22, 2026 · 1 min · santu

什么是MCP?

典型回答 MCP和Function Calling一样,都是让大模型会用工具的一种手段。全称是Model Context Protocol,顾名思义,它是一种协议,只要每一个MCP Server(工具)都遵守这个协议,那么大模型就可以直接使用这些工具了,而不需要像function calling一样,要写一大堆的适配代码(提示词)。 就像下面这张图一样,他就像一个USB的规范一样,只要大家都遵守,就能一起玩。 这个协议是 Anthropic 2024年年底推出的,就是那个研发了Claude模型的公司,他们制定的这个规范,后来因为大名鼎鼎的Cursor开始支持了,慢慢的就火起来了,后来OpenAI也不得不支持了。现在还是比较火的。 有了MCP之后,大模型就不再需要为每个数据源或工具单独开发接口,开发者只需遵循MCP规范,即可快速集成各种工具。 MCP中有三个核心组件 MCP Hosts:如Claude Desktop或IDE(比如Cursor),作为AI应用的入口,发起数据请求。 MCP Servers:轻量级服务,负责对接具体数据源或工具(如GitHub API、本地文件系统),提供标准化接口。(一般是别人开发好的,你要用的工具) MCP Clients:协议客户端,维护与服务器的连接并转发请求。 有了MCP之后,当用户提出一个问题时,就是大致下面的流程: 客户端(Claude Desktop / Cursor)将你的问题发送给大模型(如Claude)。 Claude 分析可用的工具,并决定使用哪一个(或多个)。 客户端通过 MCP Server 执行所选的工具。 工具的执行结果被送回给 Claude。 Claude 结合执行结果构造最终的 prompt 并生成自然语言的回应。 回应最终展示给用户 ...

March 22, 2026 · 1 min · santu

什么是向量数据库?

典型回答 向量数据库(Vector Database)是一种专门用于存储、索引和查询高维向量数据的数据库系统。现在AI很火,而向量数据库是实现RAG中必不可少的。 向量(Vector)其实是一个数学概念,在AI场景下,通常指将文本、图像、音频等非结构化数据通过嵌入模型转换成的数值数组(例如 [0.23, -1.45, 0.89, …])。这个数组能捕捉数据的语义或特征信息。 传统关系型数据库(如 MySQL)或 NoSQL 数据库(如 MongoDB)并不擅长高效处理高维向量的相似性搜索。向量数据库的核心功能是快速找到与给定向量“最相似”的其他向量,常用相似度度量包括: - 余弦相似度(Cosine Similarity) - 欧氏距离(L2 Distance) - 内积(Dot Product) 余弦相似度,最常用的语义相似度查询方法,主要就是看两个向量的夹角是否接近。夹角越小,向量越“同方向“,则语义越相似。 举个例子,以下面这个二维坐标系为例**(实际是多维度,为了演示方便),有三个已有的向量(图中的蓝色实线向量),“小明爱吃西瓜”“小明喜欢打篮球”“今天天气真好**”。我们可以从坐标系中看出,“小明爱吃西瓜”和“今天天气真好”这两个向量是完全不相关的语义,他们的余弦值就接近 -1。“小明喜欢打篮球”这个向量和我们的Query向量(图中的虚线向量)“小明爱吃什么”的夹角较大,说明它们的余弦相似度较低,语义相关程度就比较低。并且我们可以看到Query向量“小明爱吃什么”与“小明爱吃西瓜”的“夹角”非常小,说明两者的余弦相似度接近于 1,更相关。 常见的向量数据库: 数据库 定位 特点与优势 局限与适用场景 混合检索 元数据过滤 数据规模 部署复杂度 PGvector PostgreSQL 扩展,向量存储与检索 无需新 DB,SQL + 向量混合查询方便,运维继承 PostgreSQL 不适合超大规模(亿级以上),中小型 RAG、知识库 可通过应用/库支持 支持 中小(百万级) 低 Chroma 轻量级向量数据库,易集成 开箱即用、支持内存运行、简单元数据过滤 不适合高并发、大规模;缺乏分布式能力 不支持原生混合 简单元数据过滤 小规模 极低 Milvus 云原生分布式向量数据库 亿级以上向量、高性能、多索引类型(HNSW/IVF等)、SDK 多语言支持 部署复杂,对硬件要求高 原生支持混合检索(稀疏+密集、多向量字段) 支持 大规模(亿级以上) 高 Qdrant 开源向量数据库,性能易用 HNSW 索引、向量压缩、Rust 高效实现、支持复杂元数据过滤 分布式能力不如 Milvus,社区略小 支持部分混合检索(稀疏+密集向量组合) 高性能元数据过滤 中等 中 Elasticsearch 全文检索数据库,支持向量字段 全文 + 向量 + 结构化检索融合,企业生态成熟 性能略低于原生向量库,引入成本较高 支持关键词 + 向量混合检索 支持 中等 中偏高

March 22, 2026 · 1 min · santu

对RAG了解吗?谈谈什么是RAG?

典型回答 RAG 的全称是:Retrieval-Augmented Generation,翻译成中文是:检索增强生成。 说人话就是——让大语言模型(比如 ChatGPT)在“生成答案”之前,先去找资料(检索)来增强它的知识,再用这些资料来生成更准确的回答。 为什么需要RAG 因为对于很多大语言模型来说,他的知识是基于历史数据训练出来的,比如GPT-4是截止到2023年的数据,而在这之后发生的所有的新的事件,新的数据,他都是不知道的,那么他的回答就会有这部分的局限性。 还有就是,很多大模型是基于公开的资料训练出来的,而很多私域的信息他是没有学习过的,而很多知识是私有的知识,这就需要通过资料的方式增强他原来不熟悉的知识。 所以,有了RAG之后,就可以基于自己的知识构建自己的知识库,这样就能做到知识的更新和迭代,也能弥补大模型不知道一些特性领域的专业知识的不足。这样就能让大模型的回答更加的准确, 减少幻觉的发生。 如何构建一个RAG 可以看一下这张图(这张图是我从网上找到的),这里面就包括了构建RAG的主要流程。 1、前置准备 首先我们需要做数据准备,把你要用的资料收集好,比如:公司内部文档(PDF、Word、Markdown)、FAQ列表、产品手册等,然后清洗这些数据,比如去掉无关信息、切分成合理的小段。 然后把每一小段文本用Embedding模型转成向量,把这些向量存到向量数据库里,比如FAISS、Milvus等。 2、检索查询 当用户提问时,先用相同的Embedding模型把问题也转成向量。然后在向量数据库里用向量相似度搜索,找出最相关的几段资料(比如Top 5)。这些找到的内容就是上下文增强材料。 3、生成回答 紧接着,就可以把用户的问题 + 检索到的资料一起,作为Prompt发给大语言模型(LLM)。 这样可以保证模型只在资料范围内生成答案,降低幻觉。

March 22, 2026 · 1 min · santu

大模型擅长做什么,不擅长做什么?

典型回答 大模型非常擅长做生成内容、代码编写、文本处理、多模态任务,但它对高精度计算、事实准确性、实时数据获取存在局限性。 擅长方向 文本理解:能阅读、总结、分析文章,如 阅读理解、问答系统。 文本生成:能撰写高质量 文章、小说、新闻、代码、法律合同 等。 机器翻译:可以翻译多种语言,质量接近专业翻译水平(如 DeepL、Google Translate)。 信息提取:能从文档中提取关键信息,如 法律、医学、财务报告分析。 代码生成:自动编写 Python、JavaScript、C++ 代码,辅助开发者(如 GitHub Copilot)。 代码调试:帮助找出代码中的 Bug、优化代码性能。 代码解释:能解释复杂代码的逻辑,帮助学习和维护遗留代码。 广泛知识问答:大模型掌握 百科知识、历史、科技、医学、经济等 领域的信息。 图像识别 & 生成(如 DALL·E、Stable Diffusion):生成艺术作品、设计海报。 语音识别 & 语音合成(如 Whisper、VALL-E):实现 语音转文字(ASR)、AI 语音播报。 视频生成(如 Sora):基于文本输入,生成高质量视频。 总结长文档(如会议纪要、论文总结)。 从非结构化文本中提取信息(如将文章转换成 表格、JSON 数据)。 不擅长方向 无法进行精确 数值计算,如 大数运算、金融精算、密码学计算。(如3.9和3.11那个大?) 可能犯 逻辑错误,推理链条过长时,可能得出错误结论。 容易“编造”信息,即使信息看起来可信,但可能并不存在。 可能给出 错误的医学、法律、科技等专业知识(如医学诊断、法律条文)。 对 长尾知识(冷门信息、最新论文、特定行业信息)缺乏准确性。 训练好的大模型不会像人类一样主动学习新知识,无法实时更新。

March 22, 2026 · 1 min · santu

怎么理解大模型?

所谓的大模型通常指基于深度学习的大规模人工智能模型,尤其是像 GPT-4这样的大语言模型(LLM, Large Language Model) 相比于传统模型,大模型的"大"主要体现在就是参数规模大。传统深度学习模型的参数规模通常在百万级到千万级,而大模型的参数量达到了 百亿级、千亿级,甚至万亿级。以 GPT-4 为例,参数规模可能达 万亿级。 如我们通常说的7B模型,指的就是他的参数量达到了70亿。 另外大模型的核心是基于 深度学习 和 神经网络,通常采用 Transformer 架构。 Transformer 通过 “自注意力机制(Self-Attention)” 和 “多头注意力机制(Multi-Head Attention)” 实现高效的信息处理,相比于传统的 RNN(循环神经网络)和 CNN(卷积神经网络)具有更强的并行计算能力和更长的上下文理解能力。 (了解即可,不用背) 但是不要简单的认为大模型就只是AI对话,他的应用方向非常广泛,涵盖 自然语言处理(NLP)、计算机视觉(CV)、语音识别、科学计算、自动驾驶等 领域。 应用领域 代表应用 典型模型 1. NLP 语言 AI ChatGPT、翻译、代码生成 GPT-4、LLaMA 3、Claude 2. 计算机视觉(CV) 图像生成、目标检测 Stable Diffusion、DALL·E、ViT 3. 语音 AI 语音识别、语音克隆 Whisper、VALL-E、Tacotron 4. 自动驾驶 & 机器人 无人车、机器人导航 Tesla FSD、Gato、Perceiver 5. 科学计算 & 医疗 药物研发、医学影像 AlphaFold、Med-PaLM 2 6. 推荐系统 & 广告 电商推荐、精准营销 DeepFM、DINO、YouTube AI 目前,大模型遇到的一些关键问题有以下几个: ...

March 22, 2026 · 1 min · santu

DeepSeek为什么训练成本低?

典型回答 DeepSeek的训练成本显著低于行业平均水平(如GPT-4的1/20),官方自己说V3模型训练成本仅为557.6万美元,那么做了什么呢? 合专家模型(MoE)与动态路由 DeepSeek采用**Transformer+MoE架构**,在训练和推理时仅激活部分参数(如推理阶段激活10%-37%的参数量),显著减少计算资源消耗。动态路由机制根据输入内容自动分配专家网络,进一步提升效率 强化学习与训练策略优化 引入GRPO算法(Group Relative Policy Optimization),摒弃传统PPO算法中的价值模型,减少50%训练内存需求,并通过强化学习直接优化策略,降低无效训练60% FP8混合精度训练 全球首个全面采用8位浮点(FP8)精度训练的大模型,动态调整训练阶段精度,降低内存占用40%,同时支持消费级显卡运行复杂模型 PTX编程 直接优化底层硬件指令(如英伟达PTX编程层),绕过CUDA抽象层,最大化GPU算力利用率。例如,在A100显卡上运行原需H100的任务。

March 22, 2026 · 1 min · santu

留言给博主