diff --git a/buildSrc/src/main/kotlin/codegpt.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/codegpt.java-conventions.gradle.kts index b7b246c0..44966414 100644 --- a/buildSrc/src/main/kotlin/codegpt.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/codegpt.java-conventions.gradle.kts @@ -23,7 +23,7 @@ checkstyle { } dependencies { - implementation("ee.carlrobert:llm-client:0.0.14") + implementation("ee.carlrobert:llm-client:0.1.0") } tasks { diff --git a/codegpt-core/src/main/java/ee/carlrobert/embedding/EmbeddingsService.java b/codegpt-core/src/main/java/ee/carlrobert/embedding/EmbeddingsService.java index 9ec32c52..91da7f5f 100644 --- a/codegpt-core/src/main/java/ee/carlrobert/embedding/EmbeddingsService.java +++ b/codegpt-core/src/main/java/ee/carlrobert/embedding/EmbeddingsService.java @@ -9,9 +9,9 @@ import com.github.jelmerk.knn.SearchResult; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressIndicator; import ee.carlrobert.llm.client.openai.OpenAIClient; -import ee.carlrobert.llm.client.openai.completion.chat.OpenAIChatCompletionModel; -import ee.carlrobert.llm.client.openai.completion.chat.request.OpenAIChatCompletionMessage; -import ee.carlrobert.llm.client.openai.completion.chat.request.OpenAIChatCompletionRequest; +import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel; +import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionMessage; +import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionRequest; import ee.carlrobert.splitter.SplitterFactory; import ee.carlrobert.vector.VectorStore; import ee.carlrobert.vector.Word; diff --git a/src/main/java/ee/carlrobert/codegpt/EncodingManager.java b/src/main/java/ee/carlrobert/codegpt/EncodingManager.java index c0cddfe7..6eb46d12 100644 --- a/src/main/java/ee/carlrobert/codegpt/EncodingManager.java +++ b/src/main/java/ee/carlrobert/codegpt/EncodingManager.java @@ -7,7 +7,7 @@ import com.knuddels.jtokkit.api.Encoding; import com.knuddels.jtokkit.api.EncodingRegistry; import com.knuddels.jtokkit.api.EncodingType; import ee.carlrobert.codegpt.conversations.Conversation; -import ee.carlrobert.llm.client.openai.completion.chat.request.OpenAIChatCompletionMessage; +import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionMessage; @Service public final class EncodingManager { diff --git a/src/main/java/ee/carlrobert/codegpt/actions/GenerateGitCommitMessageAction.java b/src/main/java/ee/carlrobert/codegpt/actions/GenerateGitCommitMessageAction.java index 4af11a00..3d0ecd95 100644 --- a/src/main/java/ee/carlrobert/codegpt/actions/GenerateGitCommitMessageAction.java +++ b/src/main/java/ee/carlrobert/codegpt/actions/GenerateGitCommitMessageAction.java @@ -29,8 +29,8 @@ import ee.carlrobert.codegpt.credentials.OpenAICredentialsManager; import ee.carlrobert.codegpt.settings.state.OpenAISettingsState; import ee.carlrobert.codegpt.util.OverlayUtil; import ee.carlrobert.llm.client.openai.completion.ErrorDetails; -import ee.carlrobert.llm.client.openai.completion.chat.request.OpenAIChatCompletionMessage; -import ee.carlrobert.llm.client.openai.completion.chat.request.OpenAIChatCompletionRequest; +import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionMessage; +import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionRequest; import ee.carlrobert.llm.completion.CompletionEventListener; import java.io.BufferedReader; import java.io.File; diff --git a/src/main/java/ee/carlrobert/codegpt/completions/CompletionClientProvider.java b/src/main/java/ee/carlrobert/codegpt/completions/CompletionClientProvider.java index 8868e26d..9821f1db 100644 --- a/src/main/java/ee/carlrobert/codegpt/completions/CompletionClientProvider.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/CompletionClientProvider.java @@ -8,9 +8,6 @@ import ee.carlrobert.codegpt.settings.advanced.AdvancedSettingsState; import ee.carlrobert.codegpt.settings.state.AzureSettingsState; import ee.carlrobert.codegpt.settings.state.LlamaSettingsState; import ee.carlrobert.codegpt.settings.state.OpenAISettingsState; -import ee.carlrobert.codegpt.settings.state.YouSettingsState; -import ee.carlrobert.llm.client.Client; -import ee.carlrobert.llm.client.ProxyAuthenticator; import ee.carlrobert.llm.client.azure.AzureClient; import ee.carlrobert.llm.client.azure.AzureCompletionRequestParams; import ee.carlrobert.llm.client.llama.LlamaClient; @@ -20,15 +17,31 @@ import ee.carlrobert.llm.client.you.YouClient; import java.net.InetSocketAddress; import java.net.Proxy; import java.util.concurrent.TimeUnit; +import okhttp3.Credentials; +import okhttp3.OkHttpClient; public class CompletionClientProvider { public static OpenAIClient getOpenAIClient() { - return getOpenAIClientBuilder().build(); + var settings = OpenAISettingsState.getInstance(); + var builder = new OpenAIClient.Builder(OpenAICredentialsManager.getInstance().getApiKey()) + .setOrganization(settings.getOrganization()); + var baseHost = settings.getBaseHost(); + if (baseHost != null) { + builder.setHost(baseHost); + } + return builder.build(getDefaultClientBuilder()); } public static AzureClient getAzureClient() { - return getAzureClientBuilder().build(); + var settings = AzureSettingsState.getInstance(); + var params = new AzureCompletionRequestParams( + settings.getResourceName(), + settings.getDeploymentId(), + settings.getApiVersion()); + return new AzureClient.Builder(AzureCredentialsManager.getInstance().getSecret(), params) + .setActiveDirectoryAuthentication(settings.isUseAzureActiveDirectoryAuthentication()) + .build(); } public static YouClient getYouClient() { @@ -47,56 +60,39 @@ public class CompletionClientProvider { accessToken = authenticationResponse.getSessionJwt(); } - // FIXME - return (YouClient) new YouClient.Builder(sessionId, accessToken) + return new YouClient.Builder(sessionId, accessToken) .setUTMParameters(utmParameters) - .setHost(YouSettingsState.getInstance().getBaseHost()) .build(); } public static LlamaClient getLlamaClient() { - var builder = new LlamaClient.Builder() - .setPort(LlamaSettingsState.getInstance().getServerPort()); - return (LlamaClient) addDefaultClientParams(builder).build(); + return new LlamaClient.Builder() + .setPort(LlamaSettingsState.getInstance().getServerPort()) + .build(getDefaultClientBuilder()); } - private static OpenAIClient.Builder getOpenAIClientBuilder() { - var settings = OpenAISettingsState.getInstance(); - var builder = new OpenAIClient - .Builder(OpenAICredentialsManager.getInstance().getApiKey()) - .setOrganization(settings.getOrganization()); - return (OpenAIClient.Builder) addDefaultClientParams(builder).setHost(settings.getBaseHost()); - } - - private static AzureClient.Builder getAzureClientBuilder() { - var settings = AzureSettingsState.getInstance(); - var params = new AzureCompletionRequestParams( - settings.getResourceName(), - settings.getDeploymentId(), - settings.getApiVersion()); - var builder = new AzureClient.Builder(AzureCredentialsManager.getInstance().getSecret(), params) - .setActiveDirectoryAuthentication(settings.isUseAzureActiveDirectoryAuthentication()); - return (AzureClient.Builder) addDefaultClientParams(builder).setHost(settings.getBaseHost()); - } - - private static Client.Builder addDefaultClientParams(Client.Builder builder) { + private static OkHttpClient.Builder getDefaultClientBuilder() { + OkHttpClient.Builder builder = new OkHttpClient.Builder(); var advancedSettings = AdvancedSettingsState.getInstance(); var proxyHost = advancedSettings.getProxyHost(); var proxyPort = advancedSettings.getProxyPort(); if (!proxyHost.isEmpty() && proxyPort != 0) { - builder.setProxy( + builder.proxy( new Proxy(advancedSettings.getProxyType(), new InetSocketAddress(proxyHost, proxyPort))); if (advancedSettings.isProxyAuthSelected()) { - builder.setProxyAuthenticator(new ProxyAuthenticator( - advancedSettings.getProxyUsername(), - advancedSettings.getProxyPassword())); + builder.proxyAuthenticator((route, response) -> + response.request() + .newBuilder() + .header("Proxy-Authorization", Credentials.basic( + advancedSettings.getProxyUsername(), + advancedSettings.getProxyPassword())) + .build()); } } return builder - .setConnectTimeout((long) advancedSettings.getConnectTimeout(), TimeUnit.SECONDS) - .setReadTimeout((long) advancedSettings.getReadTimeout(), TimeUnit.SECONDS) - .setRetryOnReadTimeout(true); + .connectTimeout(advancedSettings.getConnectTimeout(), TimeUnit.SECONDS) + .readTimeout(advancedSettings.getReadTimeout(), TimeUnit.SECONDS); } } diff --git a/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestProvider.java b/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestProvider.java index da08ec2b..e0672492 100644 --- a/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestProvider.java +++ b/src/main/java/ee/carlrobert/codegpt/completions/CompletionRequestProvider.java @@ -22,10 +22,10 @@ import ee.carlrobert.codegpt.telemetry.core.configuration.TelemetryConfiguration import ee.carlrobert.codegpt.telemetry.core.service.UserId; import ee.carlrobert.embedding.EmbeddingsService; import ee.carlrobert.llm.client.llama.completion.LlamaCompletionRequest; +import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel; import ee.carlrobert.llm.client.openai.completion.OpenAICompletionRequest; -import ee.carlrobert.llm.client.openai.completion.chat.OpenAIChatCompletionModel; -import ee.carlrobert.llm.client.openai.completion.chat.request.OpenAIChatCompletionMessage; -import ee.carlrobert.llm.client.openai.completion.chat.request.OpenAIChatCompletionRequest; +import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionMessage; +import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionRequest; import ee.carlrobert.llm.client.you.completion.YouCompletionRequest; import ee.carlrobert.llm.client.you.completion.YouCompletionRequestMessage; import java.util.ArrayList; diff --git a/src/main/java/ee/carlrobert/codegpt/settings/service/ServiceSelectionForm.java b/src/main/java/ee/carlrobert/codegpt/settings/service/ServiceSelectionForm.java index 71858c7e..0b5735ce 100644 --- a/src/main/java/ee/carlrobert/codegpt/settings/service/ServiceSelectionForm.java +++ b/src/main/java/ee/carlrobert/codegpt/settings/service/ServiceSelectionForm.java @@ -21,7 +21,7 @@ import ee.carlrobert.codegpt.settings.state.AzureSettingsState; import ee.carlrobert.codegpt.settings.state.OpenAISettingsState; import ee.carlrobert.codegpt.settings.state.YouSettingsState; import ee.carlrobert.codegpt.util.UIUtil; -import ee.carlrobert.llm.client.openai.completion.chat.OpenAIChatCompletionModel; +import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel; import java.util.List; import java.util.Map; import javax.swing.ButtonGroup; diff --git a/src/main/java/ee/carlrobert/codegpt/settings/state/OpenAISettingsState.java b/src/main/java/ee/carlrobert/codegpt/settings/state/OpenAISettingsState.java index 67c21415..d21cd3e2 100644 --- a/src/main/java/ee/carlrobert/codegpt/settings/state/OpenAISettingsState.java +++ b/src/main/java/ee/carlrobert/codegpt/settings/state/OpenAISettingsState.java @@ -7,7 +7,7 @@ import com.intellij.openapi.components.Storage; import com.intellij.util.xmlb.XmlSerializerUtil; import ee.carlrobert.codegpt.credentials.OpenAICredentialsManager; import ee.carlrobert.codegpt.settings.service.ServiceSelectionForm; -import ee.carlrobert.llm.client.openai.completion.chat.OpenAIChatCompletionModel; +import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel; import org.jetbrains.annotations.NotNull; @State(name = "CodeGPT_OpenAISettings_210", storages = @Storage("CodeGPT_OpenAISettings_210.xml")) diff --git a/src/main/java/ee/carlrobert/codegpt/settings/state/YouSettingsState.java b/src/main/java/ee/carlrobert/codegpt/settings/state/YouSettingsState.java index 4140672c..d91201b4 100644 --- a/src/main/java/ee/carlrobert/codegpt/settings/state/YouSettingsState.java +++ b/src/main/java/ee/carlrobert/codegpt/settings/state/YouSettingsState.java @@ -12,7 +12,6 @@ public class YouSettingsState implements PersistentStateComponent