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都找出来,然后按顺序执行。 ...