I wanted to obtain the number of tokens consumed for calling the large model, so I customized the Advisor, but it didn't take effect
Here is my definition of Advisor: `public class CustomizeLoggerAdvisor implements CallAdvisor, StreamAdvisor {
private Integer order;
@Override public String getName() { return this.getClass().getSimpleName(); }
@Override public int getOrder() { return null != order ? order : 1; }
private ChatClientRequest before(ChatClientRequest request) { log.info("AI Request: {}", request.prompt().getContents()); return request; }
private void observeAfter(ChatClientResponse advisedResponse) { ChatResponse response = advisedResponse.chatResponse(); if (null == response) { log.info("AI Response is null"); return; } ChatResponseMetadata responseMetadata = response.getMetadata(); Usage usage = responseMetadata.getUsage(); log.info("total tokens:{}", usage.getTotalTokens()); log.info("input tokens:{}", usage.getPromptTokens()); log.info("output tokens:{}", usage.getCompletionTokens()); }
@Override public ChatClientResponse adviseCall(ChatClientRequest advisedRequest, CallAdvisorChain chain) { advisedRequest = this.before(advisedRequest); ChatClientResponse advisedResponse = chain.nextCall(advisedRequest); this.observeAfter(advisedResponse); return advisedResponse; }
@Override
public Flux
I added my defined Advisor to ChatClient: ChatClient .builder(openedAiChatModel).defaultAdvisors(new CustomizeLoggerAdvisor()) .build()
After calling the big model, the tokens I obtained were all 0