diff --git a/CHANGELOG.md b/CHANGELOG.md index ae5bbf80..a672589c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Three new providers - **Ollama**, **Google** and **CodeGPT** 🚀🚀🚀 +- OpenAI GPT-4o model (#547) - New provider configuration user interface (#538) - Support Phi-3 Mini, CodeGemma and CodeQwen1.5 models (#516, #524, #525, #527) - Llama 3 download sizes (#498) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f06f6c07..e2b46ed4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,7 +12,7 @@ jsoup = "1.17.2" jtokkit = "1.0.0" junit = "5.10.2" kotlin = "1.9.24" -llm-client = "0.8.4" +llm-client = "0.8.5" okio = "3.9.0" tree-sitter = "0.22.5" diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/ModelComboBoxAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/ModelComboBoxAction.java index ce6a22fd..89e691d0 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/ModelComboBoxAction.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/ModelComboBoxAction.java @@ -84,6 +84,7 @@ public class ModelComboBoxAction extends ComboBoxAction { actionGroup.addAll(getCodeGPTModelActions(presentation)); actionGroup.addSeparator("OpenAI"); List.of( + OpenAIChatCompletionModel.GPT_4_O, OpenAIChatCompletionModel.GPT_4_VISION_PREVIEW, OpenAIChatCompletionModel.GPT_4_0125_128k, OpenAIChatCompletionModel.GPT_3_5_0125_16k) diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/UserPromptTextArea.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/UserPromptTextArea.java index 6138ff93..835260b5 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/UserPromptTextArea.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/UserPromptTextArea.java @@ -3,6 +3,7 @@ package ee.carlrobert.codegpt.toolwindow.chat.ui.textarea; import static ee.carlrobert.codegpt.settings.service.ServiceType.ANTHROPIC; import static ee.carlrobert.codegpt.settings.service.ServiceType.OLLAMA; import static ee.carlrobert.codegpt.settings.service.ServiceType.OPENAI; +import static ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel.GPT_4_O; import static ee.carlrobert.llm.client.openai.completion.OpenAIChatCompletionModel.GPT_4_VISION_PREVIEW; import com.intellij.icons.AllIcons; @@ -191,17 +192,24 @@ public class UserPromptTextArea extends JPanel { handleSubmit(); } })); - var selectedService = GeneralSettings.getSelectedService(); - if (selectedService == ANTHROPIC - || selectedService == OLLAMA - || (selectedService == OPENAI - && GPT_4_VISION_PREVIEW.getCode().equals(OpenAISettings.getCurrentState().getModel()))) { + if (isImageActionSupported()) { iconsPanel.add(new IconActionButton(new AttachImageAction())); } iconsPanel.add(stopButton); add(iconsPanel, BorderLayout.EAST); } + private boolean isImageActionSupported() { + var selectedService = GeneralSettings.getSelectedService(); + if (selectedService == ANTHROPIC || selectedService == OLLAMA) { + return true; + } + + var model = OpenAISettings.getCurrentState().getModel(); + return selectedService == OPENAI && ( + GPT_4_VISION_PREVIEW.getCode().equals(model) || GPT_4_O.getCode().equals(model)); + } + private void updateFont() { if (Registry.is("ide.find.use.editor.font", false)) { textArea.setFont(EditorUtil.getEditorFont());