package space.anyi.springAiAlibabaLearn.advisor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ai.chat.client.ChatClientRequest; import org.springframework.ai.chat.client.ChatClientResponse; import org.springframework.ai.chat.client.advisor.api.CallAdvisor; import org.springframework.ai.chat.client.advisor.api.CallAdvisorChain; /** * Advisor类似Web中的Filter和SpringMVC中Interceptor * 也可以组成Advisor Chain * 实现CallAdvisor接口自定义自己的advisor * CallAdvisor使用用在同步调用LLM的场景 * StreamAdvisor使用在异步流式调用LLM的场景 */ //CallAdvisor使用用在同步调用LLM的场景 public class MyCallAdvisor2 implements CallAdvisor { private final Logger log = LoggerFactory.getLogger(MyCallAdvisor2.class); @Override public ChatClientResponse adviseCall(ChatClientRequest chatClientRequest, CallAdvisorChain callAdvisorChain) { log.info("{}的前置处理",getName()); //转到下一个advisor进行处理 ChatClientResponse chatClientResponse = callAdvisorChain.nextCall(chatClientRequest); log.debug("{}中得到的结果chatClientResponse:{}",getName(),chatClientResponse); log.info("{}的后置处理",getName()); return chatClientResponse; } /** * Advisor的名称 * @return String */ @Override public String getName() { return "MyAdvisor2"; } /** * Advisor的优先级,数字越小优先级越高 * @return int */ @Override public int getOrder() { return 1; } }