mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-23 12:58:43 +00:00
feat: add inception provider
This commit is contained in:
parent
f8b36b294d
commit
da50e55ba1
42 changed files with 674 additions and 183 deletions
|
|
@ -25,6 +25,7 @@ public final class Icons {
|
|||
public static final Icon Meta = IconLoader.getIcon("/icons/meta.svg", Icons.class);
|
||||
public static final Icon Mistral = IconLoader.getIcon("/icons/mistral.svg", Icons.class);
|
||||
public static final Icon Moonshot = IconLoader.getIcon("/icons/moonshot.svg", Icons.class);
|
||||
public static final Icon Inception = IconLoader.getIcon("/icons/inception.svg", Icons.class);
|
||||
public static final Icon Send = IconLoader.getIcon("/icons/send.svg", Icons.class);
|
||||
public static final Icon Sparkle = IconLoader.getIcon("/icons/sparkle.svg", Icons.class);
|
||||
public static final Icon Ollama = IconLoader.getIcon("/icons/ollama.svg", Icons.class);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import ee.carlrobert.codegpt.settings.service.openai.OpenAISettings;
|
|||
import ee.carlrobert.llm.client.anthropic.ClaudeClient;
|
||||
import ee.carlrobert.llm.client.codegpt.CodeGPTClient;
|
||||
import ee.carlrobert.llm.client.google.GoogleClient;
|
||||
import ee.carlrobert.llm.client.inception.InceptionClient;
|
||||
import ee.carlrobert.llm.client.llama.LlamaClient;
|
||||
import ee.carlrobert.llm.client.mistral.MistralClient;
|
||||
import ee.carlrobert.llm.client.ollama.OllamaClient;
|
||||
|
|
@ -78,6 +79,11 @@ public class CompletionClientProvider {
|
|||
return new MistralClient(getCredential(CredentialKey.MistralApiKey.INSTANCE), getDefaultClientBuilder());
|
||||
}
|
||||
|
||||
public static InceptionClient getInceptionClient() {
|
||||
return new InceptionClient.Builder(getCredential(CredentialKey.InceptionApiKey.INSTANCE))
|
||||
.build(getDefaultClientBuilder());
|
||||
}
|
||||
|
||||
public static OkHttpClient.Builder getDefaultClientBuilder() {
|
||||
OkHttpClient.Builder builder = new OkHttpClient.Builder();
|
||||
CertificateManager certificateManager = CertificateManager.getInstance();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package ee.carlrobert.codegpt.completions;
|
||||
|
||||
import static ee.carlrobert.codegpt.settings.service.ServiceType.INCEPTION;
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.components.Service;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
|
|
@ -14,7 +16,7 @@ import ee.carlrobert.llm.client.anthropic.completion.ClaudeCompletionRequest;
|
|||
import ee.carlrobert.llm.client.codegpt.request.InlineEditRequest;
|
||||
import ee.carlrobert.llm.client.codegpt.request.chat.ChatCompletionRequest;
|
||||
import ee.carlrobert.llm.client.google.completion.GoogleCompletionRequest;
|
||||
import ee.carlrobert.llm.client.llama.completion.LlamaCompletionRequest;
|
||||
import ee.carlrobert.llm.client.inception.request.InceptionApplyRequest;
|
||||
import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionEventSourceListener;
|
||||
import ee.carlrobert.llm.client.openai.completion.OpenAITextCompletionEventSourceListener;
|
||||
import ee.carlrobert.llm.client.openai.completion.request.OpenAIChatCompletionRequest;
|
||||
|
|
@ -75,12 +77,17 @@ public final class CompletionRequestService {
|
|||
public EventSource autoApplyAsync(
|
||||
AutoApplyParameters params,
|
||||
CompletionEventListener<String> eventListener) {
|
||||
var serviceType =
|
||||
var selectedService =
|
||||
ModelSelectionService.getInstance().getServiceForFeature(FeatureType.AUTO_APPLY);
|
||||
|
||||
if (selectedService == INCEPTION) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var request = CompletionRequestFactory
|
||||
.getFactory(serviceType)
|
||||
.getFactory(selectedService)
|
||||
.createAutoApplyRequest(params);
|
||||
return getChatCompletionAsync(request, eventListener, serviceType, FeatureType.AUTO_APPLY);
|
||||
return getChatCompletionAsync(request, eventListener, selectedService, FeatureType.AUTO_APPLY);
|
||||
}
|
||||
|
||||
public EventSource getCommitMessageAsync(
|
||||
|
|
@ -129,6 +136,10 @@ public final class CompletionRequestService {
|
|||
.getChatCompletionAsync(completionRequest, eventListener);
|
||||
case MISTRAL -> CompletionClientProvider.getMistralClient()
|
||||
.getChatCompletionAsync(completionRequest, eventListener);
|
||||
case LLAMA_CPP -> CompletionClientProvider.getLlamaClient()
|
||||
.getChatCompletionAsync(completionRequest, eventListener);
|
||||
case INCEPTION -> CompletionClientProvider.getInceptionClient()
|
||||
.getChatCompletionAsync(completionRequest, eventListener);
|
||||
default -> throw new RuntimeException("Unknown service selected");
|
||||
};
|
||||
}
|
||||
|
|
@ -150,11 +161,6 @@ public final class CompletionRequestService {
|
|||
ModelSelectionService.getInstance().getModelForFeature(featureType, null),
|
||||
eventListener);
|
||||
}
|
||||
if (request instanceof LlamaCompletionRequest completionRequest) {
|
||||
return CompletionClientProvider.getLlamaClient().getChatCompletionAsync(
|
||||
completionRequest,
|
||||
eventListener);
|
||||
}
|
||||
|
||||
throw new IllegalStateException("Unknown request type: " + request.getClass());
|
||||
}
|
||||
|
|
@ -169,6 +175,10 @@ public final class CompletionRequestService {
|
|||
.getChatCompletion(completionRequest);
|
||||
case MISTRAL -> CompletionClientProvider.getMistralClient()
|
||||
.getChatCompletion(completionRequest);
|
||||
case LLAMA_CPP -> CompletionClientProvider.getLlamaClient()
|
||||
.getChatCompletion(completionRequest);
|
||||
case INCEPTION -> CompletionClientProvider.getInceptionClient()
|
||||
.getChatCompletion(completionRequest);
|
||||
default -> throw new RuntimeException("Unknown service selected");
|
||||
};
|
||||
return tryExtractContent(response).orElseThrow();
|
||||
|
|
@ -205,11 +215,6 @@ public final class CompletionRequestService {
|
|||
.getContent().getParts().get(0)
|
||||
.getText();
|
||||
}
|
||||
if (request instanceof LlamaCompletionRequest completionRequest) {
|
||||
return CompletionClientProvider.getLlamaClient()
|
||||
.getChatCompletion(completionRequest)
|
||||
.getContent();
|
||||
}
|
||||
|
||||
throw new IllegalStateException("Unknown request type: " + request.getClass());
|
||||
}
|
||||
|
|
@ -235,6 +240,8 @@ public final class CompletionRequestService {
|
|||
case GOOGLE -> CredentialsStore.INSTANCE.isCredentialSet(CredentialKey.GoogleApiKey.INSTANCE);
|
||||
case MISTRAL ->
|
||||
CredentialsStore.INSTANCE.isCredentialSet(CredentialKey.MistralApiKey.INSTANCE);
|
||||
case INCEPTION ->
|
||||
CredentialsStore.INSTANCE.isCredentialSet(CredentialKey.InceptionApiKey.INSTANCE);
|
||||
case PROXYAI, CUSTOM_OPENAI, LLAMA_CPP, OLLAMA -> true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ public enum ServiceType {
|
|||
GOOGLE("GOOGLE", "service.google.title", "google.chat.completion"),
|
||||
MISTRAL("MISTRAL", "service.mistral.title", "mistral.chat.completion"),
|
||||
LLAMA_CPP("LLAMA_CPP", "service.llama.title", "llama.chat.completion"),
|
||||
OLLAMA("OLLAMA", "service.ollama.title", "ollama.chat.completion");
|
||||
OLLAMA("OLLAMA", "service.ollama.title", "ollama.chat.completion"),
|
||||
INCEPTION("INCEPTION", "service.inception.title", "inception.chat.completion");
|
||||
|
||||
private final String code;
|
||||
private final String label;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import static ee.carlrobert.codegpt.settings.service.ServiceType.MISTRAL;
|
|||
import static ee.carlrobert.codegpt.settings.service.ServiceType.OLLAMA;
|
||||
import static ee.carlrobert.codegpt.settings.service.ServiceType.OPENAI;
|
||||
import static ee.carlrobert.codegpt.settings.service.ServiceType.PROXYAI;
|
||||
import static ee.carlrobert.codegpt.settings.service.ServiceType.INCEPTION;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
|
|
@ -242,6 +243,13 @@ public class ModelComboBoxAction extends ComboBoxAction {
|
|||
actionGroup.add(mistralGroup);
|
||||
}
|
||||
|
||||
if (availableProviders.contains(INCEPTION)) {
|
||||
var inceptionGroup = DefaultActionGroup.createPopupGroup(() -> "Inception");
|
||||
inceptionGroup.getTemplatePresentation().setIcon(Icons.Inception);
|
||||
inceptionGroup.add(createInceptionModelAction(presentation));
|
||||
actionGroup.add(inceptionGroup);
|
||||
}
|
||||
|
||||
if (availableProviders.contains(LLAMA_CPP) || availableProviders.contains(OLLAMA)) {
|
||||
actionGroup.addSeparator("Offline");
|
||||
|
||||
|
|
@ -344,6 +352,11 @@ public class ModelComboBoxAction extends ComboBoxAction {
|
|||
templatePresentation.setText(getMistralPresentationText());
|
||||
templatePresentation.setIcon(Icons.Mistral);
|
||||
break;
|
||||
case INCEPTION:
|
||||
templatePresentation.setIcon(Icons.Inception);
|
||||
var inceptionModelName = ModelRegistry.getInstance().getModelDisplayName(INCEPTION, modelCode);
|
||||
templatePresentation.setText(inceptionModelName);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
@ -525,6 +538,18 @@ public class ModelComboBoxAction extends ComboBoxAction {
|
|||
.setModel(featureType, modelCode, MISTRAL));
|
||||
}
|
||||
|
||||
private AnAction createInceptionModelAction(Presentation comboBoxPresentation) {
|
||||
var modelCode = ModelRegistry.MERCURY_CODER;
|
||||
var modelName = ModelRegistry.getInstance().getModelDisplayName(INCEPTION, modelCode);
|
||||
return createModelAction(
|
||||
INCEPTION,
|
||||
modelName,
|
||||
Icons.Inception,
|
||||
comboBoxPresentation,
|
||||
() -> ApplicationManager.getApplication().getService(ModelSettings.class)
|
||||
.setModel(featureType, modelCode, INCEPTION));
|
||||
}
|
||||
|
||||
private String getMistralPresentationText() {
|
||||
var chatModel = ApplicationManager.getApplication().getService(ModelSettings.class).getState()
|
||||
.getModelSelection(featureType);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue