mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-12 05:51:28 +00:00
refactor: improve llm-client code modularity
This commit is contained in:
parent
c0ecce8d45
commit
425b0cd58b
14 changed files with 50 additions and 67 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ public class YouSettingsState implements PersistentStateComponent<YouSettingsSta
|
|||
|
||||
private boolean displayWebSearchResults = true;
|
||||
private boolean useGPT4Model;
|
||||
private String baseHost;
|
||||
|
||||
public static YouSettingsState getInstance() {
|
||||
return ApplicationManager.getApplication().getService(YouSettingsState.class);
|
||||
|
|
@ -43,12 +42,4 @@ public class YouSettingsState implements PersistentStateComponent<YouSettingsSta
|
|||
public void setUseGPT4Model(boolean useGPT4Model) {
|
||||
this.useGPT4Model = useGPT4Model;
|
||||
}
|
||||
|
||||
public void setBaseHost(String baseHost) {
|
||||
this.baseHost = baseHost;
|
||||
}
|
||||
|
||||
public String getBaseHost() {
|
||||
return baseHost;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package ee.carlrobert.codegpt.toolwindow;
|
|||
import com.intellij.ui.components.JBLabel;
|
||||
import com.intellij.util.ui.JBFont;
|
||||
import ee.carlrobert.codegpt.Icons;
|
||||
import ee.carlrobert.llm.client.openai.completion.chat.OpenAIChatCompletionModel;
|
||||
import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel;
|
||||
import java.util.NoSuchElementException;
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import ee.carlrobert.codegpt.settings.service.ServiceType;
|
|||
import ee.carlrobert.codegpt.settings.state.LlamaSettingsState;
|
||||
import ee.carlrobert.codegpt.settings.state.OpenAISettingsState;
|
||||
import ee.carlrobert.codegpt.settings.state.SettingsState;
|
||||
import ee.carlrobert.llm.client.openai.completion.chat.OpenAIChatCompletionModel;
|
||||
import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel;
|
||||
import java.util.List;
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.JComponent;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue