mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-13 07:02:34 +00:00
1.10.6 - Add support for both Azure auth methods
This commit is contained in:
parent
3a854c9f46
commit
a514983ca3
7 changed files with 54 additions and 23 deletions
|
|
@ -2,6 +2,8 @@ package ee.carlrobert.codegpt.client;
|
|||
|
||||
import ee.carlrobert.codegpt.state.settings.SettingsState;
|
||||
import ee.carlrobert.codegpt.state.settings.advanced.AdvancedSettingsState;
|
||||
import ee.carlrobert.openai.client.AzureClient;
|
||||
import ee.carlrobert.openai.client.Client;
|
||||
import ee.carlrobert.openai.client.OpenAIClient;
|
||||
import ee.carlrobert.openai.client.ProxyAuthenticator;
|
||||
import ee.carlrobert.openai.client.azure.AzureClientRequestParams;
|
||||
|
|
@ -14,37 +16,41 @@ import java.util.concurrent.TimeUnit;
|
|||
public class ClientProvider {
|
||||
|
||||
public static DashboardClient getDashboardClient() {
|
||||
return getClientBuilder().buildDashboardClient();
|
||||
return getOpenAIClientBuilder().buildDashboardClient();
|
||||
}
|
||||
|
||||
public static CompletionClient getChatCompletionClient(SettingsState settings) {
|
||||
if (settings.useAzureService) {
|
||||
return getClientBuilder().buildAzureChatCompletionClient(getAzureRequestParams());
|
||||
}
|
||||
return getClientBuilder().buildChatCompletionClient();
|
||||
return getClientBuilder(settings).buildChatCompletionClient();
|
||||
}
|
||||
|
||||
public static CompletionClient getTextCompletionClient(SettingsState settings) {
|
||||
if (settings.useAzureService) {
|
||||
return getClientBuilder().buildAzureTextCompletionClient(getAzureRequestParams());
|
||||
}
|
||||
return getClientBuilder().buildTextCompletionClient();
|
||||
return getClientBuilder(settings).buildTextCompletionClient();
|
||||
}
|
||||
|
||||
private static AzureClientRequestParams getAzureRequestParams() {
|
||||
var settings = SettingsState.getInstance();
|
||||
return new AzureClientRequestParams(settings.resourceName, settings.deploymentId, settings.apiVersion);
|
||||
private static Client.Builder getClientBuilder(SettingsState settings) {
|
||||
return settings.useAzureService ? getAzureClientBuilder() : getOpenAIClientBuilder();
|
||||
}
|
||||
|
||||
private static OpenAIClient.Builder getClientBuilder() {
|
||||
private static OpenAIClient.Builder getOpenAIClientBuilder() {
|
||||
var settings = SettingsState.getInstance();
|
||||
var builder = new OpenAIClient.Builder(settings.apiKey) // TODO: ENV var?
|
||||
.setConnectTimeout(60L, TimeUnit.SECONDS)
|
||||
.setReadTimeout(30L, TimeUnit.SECONDS);
|
||||
var builder = new OpenAIClient.Builder(settings.apiKey);
|
||||
|
||||
if (settings.useOpenAIService) {
|
||||
builder.setOrganization(settings.organization);
|
||||
}
|
||||
return (OpenAIClient.Builder) addDefaultClientParams(builder);
|
||||
}
|
||||
|
||||
private static AzureClient.Builder getAzureClientBuilder() {
|
||||
var settings = SettingsState.getInstance();
|
||||
var params = new AzureClientRequestParams(
|
||||
settings.resourceName, settings.deploymentId, settings.apiVersion);
|
||||
var builder = new AzureClient.Builder(settings.apiKey, params)
|
||||
.setActiveDirectoryAuthentication(settings.useActiveDirectoryAuthentication);
|
||||
return (AzureClient.Builder) addDefaultClientParams(builder);
|
||||
}
|
||||
|
||||
private static Client.Builder addDefaultClientParams(Client.Builder builder) {
|
||||
var advancedSettings = AdvancedSettingsState.getInstance();
|
||||
var proxyHost = advancedSettings.proxyHost;
|
||||
var proxyPort = advancedSettings.proxyPort;
|
||||
|
|
@ -61,7 +67,9 @@ public class ClientProvider {
|
|||
builder.setHost(advancedSettings.host);
|
||||
}
|
||||
|
||||
return builder;
|
||||
return builder
|
||||
.setConnectTimeout(60L, TimeUnit.SECONDS)
|
||||
.setReadTimeout(30L, TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,13 +24,14 @@ import javax.swing.event.HyperlinkEvent;
|
|||
public class SettingsComponent {
|
||||
|
||||
private final JPanel mainPanel;
|
||||
private final JBTextField apiKeyField;
|
||||
private final JBTextField organizationField;
|
||||
private final JBTextField resourceNameField;
|
||||
private final JBTextField deploymentIdField;
|
||||
private final JBTextField apiVersionField;
|
||||
private final JBTextField apiKeyField;
|
||||
private final JBTextField organizationField;
|
||||
private final JBTextField displayNameField;
|
||||
private final JBCheckBox useOpenAIAccountNameCheckBox;
|
||||
private final JBCheckBox useActiveDirectoryAuthenticationCheckBox;
|
||||
private final JBRadioButton useAzureServiceRadioButton;
|
||||
private final JBRadioButton useOpenAIServiceRadioButton;
|
||||
private final ComboBox<CompletionModel> chatCompletionBaseModelComboBox;
|
||||
|
|
@ -49,7 +50,10 @@ public class SettingsComponent {
|
|||
apiVersionField = new JBTextField(settings.resourceName, 40);
|
||||
organizationField = new JBTextField(settings.organization, 40);
|
||||
displayNameField = new JBTextField(settings.displayName, 20);
|
||||
useOpenAIAccountNameCheckBox = new JBCheckBox("Use OpenAI account name", true);
|
||||
useOpenAIAccountNameCheckBox = new JBCheckBox(
|
||||
"Use OpenAI account name", settings.useOpenAIAccountName);
|
||||
useActiveDirectoryAuthenticationCheckBox = new JBCheckBox(
|
||||
"Use Azure Active Directory authentication", settings.useActiveDirectoryAuthentication);
|
||||
chatCompletionBaseModelComboBox = new BaseModelComboBox(
|
||||
new ChatCompletionModel[]{
|
||||
ChatCompletionModel.GPT_3_5,
|
||||
|
|
@ -117,6 +121,14 @@ public class SettingsComponent {
|
|||
useAzureServiceRadioButton.setSelected(selected);
|
||||
}
|
||||
|
||||
public boolean isUseActiveDirectoryAuthentication() {
|
||||
return useActiveDirectoryAuthenticationCheckBox.isSelected();
|
||||
}
|
||||
|
||||
public void setUseActiveDirectoryAuthenticationSelected(boolean selected) {
|
||||
useActiveDirectoryAuthenticationCheckBox.setSelected(selected);
|
||||
}
|
||||
|
||||
public boolean isUseAzureService() {
|
||||
return useAzureServiceRadioButton.isSelected();
|
||||
}
|
||||
|
|
@ -294,12 +306,16 @@ public class SettingsComponent {
|
|||
.withComment(
|
||||
"API version to be used for Azure OpenAI Service")
|
||||
.createPanel();
|
||||
var authFieldPanel = UI.PanelFactory.panel(useActiveDirectoryAuthenticationCheckBox)
|
||||
.resizeX(false)
|
||||
.createPanel();
|
||||
azureRelatedFieldsPanel.setLayout(new BoxLayout(azureRelatedFieldsPanel, BoxLayout.Y_AXIS));
|
||||
azureRelatedFieldsPanel.setBorder(JBUI.Borders.empty(8, 16, 0, 0));
|
||||
|
||||
azureRelatedFieldsPanel.add(resourceNameFieldPanel);
|
||||
azureRelatedFieldsPanel.add(deploymentIdFieldPanel);
|
||||
azureRelatedFieldsPanel.add(apiVersionFieldPanel);
|
||||
azureRelatedFieldsPanel.add(authFieldPanel);
|
||||
SwingUtils.setEqualLabelWidths(deploymentIdFieldPanel, resourceNameFieldPanel);
|
||||
SwingUtils.setEqualLabelWidths(apiVersionFieldPanel, resourceNameFieldPanel);
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ public class SettingsConfigurable implements Configurable {
|
|||
return !settingsComponent.getApiKey().equals(settings.apiKey) ||
|
||||
settingsComponent.isUseOpenAIService() != settings.useOpenAIService ||
|
||||
settingsComponent.isUseAzureService() != settings.useAzureService ||
|
||||
settingsComponent.isUseActiveDirectoryAuthentication() !=
|
||||
settings.useActiveDirectoryAuthentication ||
|
||||
!settingsComponent.getResourceName().equals(settings.resourceName) ||
|
||||
!settingsComponent.getDeploymentId().equals(settings.deploymentId) ||
|
||||
!settingsComponent.getApiVersion().equals(settings.apiVersion) ||
|
||||
|
|
@ -77,6 +79,7 @@ public class SettingsConfigurable implements Configurable {
|
|||
settings.apiKey = settingsComponent.getApiKey();
|
||||
settings.useOpenAIService = settingsComponent.isUseOpenAIService();
|
||||
settings.useAzureService = settingsComponent.isUseAzureService();
|
||||
settings.useActiveDirectoryAuthentication = settingsComponent.isUseActiveDirectoryAuthentication();
|
||||
settings.resourceName = settingsComponent.getResourceName();
|
||||
settings.deploymentId = settingsComponent.getDeploymentId();
|
||||
settings.apiVersion = settingsComponent.getApiVersion();
|
||||
|
|
@ -97,6 +100,8 @@ public class SettingsConfigurable implements Configurable {
|
|||
settingsComponent.setApiKey(settings.apiKey);
|
||||
settingsComponent.setUseOpenAIServiceSelected(settings.useAzureService);
|
||||
settingsComponent.setUseAzureServiceSelected(settings.useAzureService);
|
||||
settingsComponent.setUseActiveDirectoryAuthenticationSelected(
|
||||
settings.useActiveDirectoryAuthentication);
|
||||
settingsComponent.setResourceName(settings.resourceName);
|
||||
settingsComponent.setDeploymentId(settings.deploymentId);
|
||||
settingsComponent.setApiVersionField(settings.apiVersion);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ public class SettingsState implements PersistentStateComponent<SettingsState> {
|
|||
public String resourceName = "";
|
||||
public String deploymentId = "";
|
||||
public String apiVersion = "";
|
||||
public boolean useActiveDirectoryAuthentication;
|
||||
public String organization = "";
|
||||
public String displayName = getDisplayName();
|
||||
public boolean useOpenAIAccountName = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue