MyCallAdvisor2.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package space.anyi.springAiAlibabaLearn.advisor;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import org.springframework.ai.chat.client.ChatClientRequest;
  5. import org.springframework.ai.chat.client.ChatClientResponse;
  6. import org.springframework.ai.chat.client.advisor.api.CallAdvisor;
  7. import org.springframework.ai.chat.client.advisor.api.CallAdvisorChain;
  8. /**
  9. * Advisor类似Web中的Filter和SpringMVC中Interceptor
  10. * 也可以组成Advisor Chain
  11. * 实现CallAdvisor接口自定义自己的advisor
  12. * CallAdvisor使用用在同步调用LLM的场景
  13. * StreamAdvisor使用在异步流式调用LLM的场景
  14. */
  15. //CallAdvisor使用用在同步调用LLM的场景
  16. public class MyCallAdvisor2 implements CallAdvisor {
  17. private final Logger log = LoggerFactory.getLogger(MyCallAdvisor2.class);
  18. @Override
  19. public ChatClientResponse adviseCall(ChatClientRequest chatClientRequest, CallAdvisorChain callAdvisorChain) {
  20. log.info("{}的前置处理",getName());
  21. //转到下一个advisor进行处理
  22. ChatClientResponse chatClientResponse = callAdvisorChain.nextCall(chatClientRequest);
  23. log.debug("{}中得到的结果chatClientResponse:{}",getName(),chatClientResponse);
  24. log.info("{}的后置处理",getName());
  25. return chatClientResponse;
  26. }
  27. /**
  28. * Advisor的名称
  29. * @return String
  30. */
  31. @Override
  32. public String getName() {
  33. return "MyAdvisor2";
  34. }
  35. /**
  36. * Advisor的优先级,数字越小优先级越高
  37. * @return int
  38. */
  39. @Override
  40. public int getOrder() {
  41. return 1;
  42. }
  43. }