| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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;
- }
- }
|