Нет доступных для выполнения CallAdvisors: Spring AIJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Нет доступных для выполнения CallAdvisors: Spring AI

Сообщение Anonymous »

Я работаю над проектом Spring AI, где мне требуется настроить динамические конфигурации ChatClient и ChatModel, такие как max-токены, советник и т. д.
Для этой цели я создал собственный клиент чата -

Код: Выделить всё

@Bean("docSummaryChatClient")
public ChatClient docSummaryChatClient(
ChatClient.Builder builder,
@Value("${doc-summary.model}") String modelName,
@Value("${doc-summary.temperature}") Double temperature) {
// Build specific options for this client
OpenAiChatOptions docSummaryOptions = OpenAiChatOptions.builder()
.model(modelName)
.temperature(temperature)
.build();

return builder
.defaultOptions(docSummaryOptions)
.build();
}
Я создал уровень обслуживания для вызова llm с помощью советника по динамическому журналированию и max-tokens-

Код: Выделить всё

@Component
@Slf4j
public class SummaryLlmServiceImpl implements SummaryLlmService {

private final ChatClient docSummaryChatClient;
private final PromptMetadataLoggingAdvisor promptMetadataLoggingAdvisor;

public SummaryLlmServiceImpl(
@Qualifier("docSummaryChatClient") ChatClient docSummaryChatClient,
PromptMetadataLoggingAdvisor promptMetadataLoggingAdvisor) {
this.docSummaryChatClient = docSummaryChatClient;
this.promptMetadataLoggingAdvisor = promptMetadataLoggingAdvisor;
}

@Override
public SummaryLlmResponse generate(String prompt, Integer maxTokens) {
log.debug("Generating response for prompt: {} \n maxTokens: {}", prompt, maxTokens);

var spec = docSummaryChatClient
.prompt(prompt)
.advisors(promptMetadataLoggingAdvisor)
.options(OpenAiChatOptions.builder()
.maxTokens(maxTokens)
.build());

ChatClient.CallResponseSpec response = spec.call();
ChatResponse chatResponse = response.chatResponse();

Usage usage = chatResponse != null && chatResponse.getMetadata() != null
? chatResponse.getMetadata().getUsage()
: null;

var promptTokens = usage != null ? usage.getPromptTokens() : null;
var completionTokens = usage != null ? usage.getCompletionTokens() : null;
var totalTokens = usage != null ? usage.getTotalTokens() : null;

return new SummaryLlmResponse(
response.content(),
promptTokens,
completionTokens,
totalTokens);
}
}
Когда я звоню, я получаю сообщение об ошибке-

Код: Выделить всё

java.lang.IllegalStateException: No CallAdvisors available to execute
at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:97) ~[spring-ai-client-chat-1.0.0.jar:1.0.0]
at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.lambda$doGetObservableChatClientResponse$1(DefaultChatClient.java:469) ~[spring-ai-client-chat-1.0.0.jar:1.0.0]
at io.micrometer.observation.Observation.observe(Observation.java:564)
Я пытался найти причину этого, но не смог ее выяснить. Я попытался установить советник по ведению журналов во время создания компонента, но он также выдает ту же ошибку.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -spring-ai
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»