diff --git a/gradle.properties b/gradle.properties index b6392458..4d6d468e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ pluginUntilBuild = 241 # IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension platformType = IC -platformVersion = 2023.3.5 +platformVersion = 2023.3.6 # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html # Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22 diff --git a/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestService.java b/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestService.java index ba4608ee..f4e3a17b 100644 --- a/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestService.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestService.java @@ -32,9 +32,12 @@ import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionEventSourc import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionRequest; import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionStandardMessage; import ee.carlrobert.llm.client.openai.completion.response.OpenAIChatCompletionResponse; +import ee.carlrobert.llm.client.openai.completion.response.OpenAIChatCompletionResponseChoice; +import ee.carlrobert.llm.client.openai.completion.response.OpenAIChatCompletionResponseChoiceDelta; import ee.carlrobert.llm.completion.CompletionEventListener; import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.Optional; import okhttp3.Request; import okhttp3.sse.EventSource; @@ -222,11 +225,25 @@ public final class CompletionRequestService { return List.of(LLAMA_CPP, ANTHROPIC, CUSTOM_OPENAI).contains(serviceType); } + /** + * Content of the first choice. + * + * + * @return First non-blank content or {@code Optional.empty()} + */ private Optional tryExtractContent(OpenAIChatCompletionResponse response) { return response .getChoices() .stream() - .findFirst() - .map(item -> item.getMessage().getContent()); + .filter(Objects::nonNull) + .map(OpenAIChatCompletionResponseChoice::getMessage) + .filter(Objects::nonNull) + .map(OpenAIChatCompletionResponseChoiceDelta::getContent) + .filter(c -> c != null && !c.isBlank()) + .findFirst(); } }