feat: image support for Custom OpenAI provider (#649)

This commit is contained in:
Carl-Robert Linnupuu 2024-08-19 01:17:52 +03:00
parent 53693f3326
commit 2ddcde1363
2 changed files with 33 additions and 39 deletions

View file

@ -1,15 +1,7 @@
package ee.carlrobert.codegpt.settings.service;
import static ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel.GPT_4_O;
import static ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel.GPT_4_O_MINI;
import static ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel.GPT_4_VISION_PREVIEW;
import com.intellij.openapi.application.ApplicationManager;
import ee.carlrobert.codegpt.CodeGPTBundle;
import ee.carlrobert.codegpt.settings.service.codegpt.CodeGPTServiceSettings;
import ee.carlrobert.codegpt.settings.service.openai.OpenAISettings;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public enum ServiceType {
@ -64,34 +56,4 @@ public enum ServiceType {
}
return serviceType;
}
public boolean isImageActionSupported() {
return switch (this) {
case ANTHROPIC:
case OLLAMA:
yield true;
case CODEGPT:
var codegptModel = ApplicationManager.getApplication()
.getService(CodeGPTServiceSettings.class)
.getState()
.getChatCompletionSettings()
.getModel();
yield List.of(
"gpt-4o",
"gpt-4o-mini",
"claude-3-opus",
"claude-3.5-sonnet"
).contains(codegptModel);
case OPENAI:
var openaiModel = ApplicationManager.getApplication().getService(OpenAISettings.class)
.getState()
.getModel();
yield List.of(
GPT_4_VISION_PREVIEW.getCode(),
GPT_4_O.getCode(),
GPT_4_O_MINI.getCode()).contains(openaiModel);
default:
yield false;
};
}
}

View file

@ -18,10 +18,14 @@ import ee.carlrobert.codegpt.actions.AttachImageAction
import ee.carlrobert.codegpt.conversations.ConversationService
import ee.carlrobert.codegpt.conversations.ConversationsState
import ee.carlrobert.codegpt.settings.GeneralSettings
import ee.carlrobert.codegpt.settings.service.ServiceType
import ee.carlrobert.codegpt.settings.service.codegpt.CodeGPTServiceSettings
import ee.carlrobert.codegpt.settings.service.openai.OpenAISettings
import ee.carlrobert.codegpt.toolwindow.chat.ChatToolWindowContentManager
import ee.carlrobert.codegpt.toolwindow.chat.ui.textarea.ModelComboBoxAction
import ee.carlrobert.codegpt.toolwindow.chat.ui.textarea.TotalTokensPanel
import ee.carlrobert.codegpt.ui.IconActionButton
import ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel
import java.awt.*
import javax.swing.JPanel
@ -143,6 +147,34 @@ class UserInputPanel(
}
private fun isImageActionSupported(): Boolean {
return service<GeneralSettings>().state.selectedService.isImageActionSupported
return when (service<GeneralSettings>().state.selectedService) {
ServiceType.CUSTOM_OPENAI,
ServiceType.ANTHROPIC,
ServiceType.OLLAMA -> true
ServiceType.CODEGPT -> {
listOf(
"gpt-4o",
"gpt-4o-mini",
"claude-3-opus",
"claude-3.5-sonnet"
).contains(
service<CodeGPTServiceSettings>()
.state
.chatCompletionSettings
.model
)
}
ServiceType.OPENAI -> {
listOf(
OpenAIChatCompletionModel.GPT_4_VISION_PREVIEW.code,
OpenAIChatCompletionModel.GPT_4_O.code,
OpenAIChatCompletionModel.GPT_4_O_MINI.code
).contains(service<OpenAISettings>().state.model)
}
else -> false
}
}
}