Use string type model state

This commit is contained in:
Carl-Robert Linnupuu 2023-03-21 23:46:57 +00:00
parent 1b312da9ab
commit 525c316739
9 changed files with 24 additions and 27 deletions

View file

@ -21,14 +21,14 @@ public class ClientRequestFactory {
public ChatCompletionRequest buildChatCompletionRequest(SettingsState settings) {
return new ChatCompletionRequest.Builder(buildMessages(prompt, conversation))
.setModel(settings.chatCompletionBaseModel.getCode())
.setModel(settings.chatCompletionBaseModel)
.build();
}
public TextCompletionRequest buildTextCompletionRequest(SettingsState settings) {
return new TextCompletionRequest.Builder(buildPrompt(conversation, prompt))
.setStop(List.of(" Human:", " AI:"))
.setModel(settings.textCompletionBaseModel.getCode())
.setModel(settings.textCompletionBaseModel)
.build();
}
@ -46,7 +46,7 @@ public class ClientRequestFactory {
}
private StringBuilder getBasePrompt() {
var isDavinciModel = SettingsState.getInstance().textCompletionBaseModel == TextCompletionModel.DAVINCI;
var isDavinciModel = TextCompletionModel.DAVINCI.getCode().equals(SettingsState.getInstance().textCompletionBaseModel);
if (isDavinciModel) {
return new StringBuilder(
"You are ChatGPT, a large language model trained by OpenAI.\n" +

View file

@ -2,7 +2,6 @@ package ee.carlrobert.codegpt.conversations;
import ee.carlrobert.codegpt.conversations.message.Message;
import ee.carlrobert.openai.client.ClientCode;
import ee.carlrobert.openai.client.completion.CompletionModel;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@ -13,7 +12,7 @@ public class Conversation {
private UUID id;
private List<Message> messages = new ArrayList<>();
private ClientCode clientCode;
private CompletionModel model;
private String model;
private LocalDateTime createdOn;
private LocalDateTime updatedOn;
@ -45,11 +44,11 @@ public class Conversation {
messages.add(message);
}
public CompletionModel getModel() {
public String getModel() {
return model;
}
public void setModel(CompletionModel model) {
public void setModel(String model) {
this.model = model;
}

View file

@ -22,7 +22,7 @@ import org.jetbrains.annotations.Nullable;
@State(
name = "ee.carlrobert.codegpt.conversations.ConversationsState",
storages = @Storage("ChatGPTConversations.xml")
storages = @Storage("ChatGPTConversations_170.xml")
)
public class ConversationsState implements PersistentStateComponent<ConversationsState> {

View file

@ -36,7 +36,7 @@ public class SettingsComponent {
ChatCompletionModel.GPT_3_5_SNAPSHOT,
ChatCompletionModel.GPT_4
},
settings.textCompletionBaseModel);
ChatCompletionModel.findByCode(settings.chatCompletionBaseModel));
textCompletionBaseModelComboBox = new BaseModelComboBox(
new TextCompletionModel[] {
TextCompletionModel.DAVINCI,
@ -44,7 +44,7 @@ public class SettingsComponent {
TextCompletionModel.BABBAGE,
TextCompletionModel.ADA,
},
settings.textCompletionBaseModel);
TextCompletionModel.findByCode(settings.textCompletionBaseModel));
useChatCompletionRadioButton = new JBRadioButton("Use chat completion", settings.isChatCompletionOptionSelected);
useTextCompletionRadioButton = new JBRadioButton("Use text completion", settings.isTextCompletionOptionSelected);
mainPanel = FormBuilder.createFormBuilder()
@ -95,16 +95,16 @@ public class SettingsComponent {
return (TextCompletionModel) textCompletionBaseModelComboBox.getSelectedItem();
}
public void setTextCompletionBaseModel(CompletionModel model) {
textCompletionBaseModelComboBox.setSelectedItem(model);
public void setTextCompletionBaseModel(String model) {
textCompletionBaseModelComboBox.setSelectedItem(TextCompletionModel.valueOf(model));
}
public ChatCompletionModel getChatCompletionBaseModel() {
return (ChatCompletionModel) chatCompletionBaseModelComboBox.getSelectedItem();
}
public void setChatCompletionBaseModel(CompletionModel model) {
chatCompletionBaseModelComboBox.setSelectedItem(model);
public void setChatCompletionBaseModel(String model) {
chatCompletionBaseModelComboBox.setSelectedItem(ChatCompletionModel.valueOf(model));
}
private JPanel createMainSelectionForm() {

View file

@ -32,8 +32,7 @@ public class SettingsConfigurable implements Configurable {
@Override
public boolean isModified() {
var settings = SettingsState.getInstance();
return !settingsComponent.getApiKey().equals(settings.apiKey) ||
isModelChanged(settings) || isClientChanged(settings);
return !settingsComponent.getApiKey().equals(settings.apiKey) || isModelChanged(settings) || isClientChanged(settings);
}
@Override
@ -45,10 +44,10 @@ public class SettingsConfigurable implements Configurable {
}
settings.apiKey = settingsComponent.getApiKey();
settings.chatCompletionBaseModel = settingsComponent.getChatCompletionBaseModel();
settings.chatCompletionBaseModel = settingsComponent.getChatCompletionBaseModel().getCode();
settings.isChatCompletionOptionSelected = settingsComponent.isChatCompletionOptionSelected();
settings.isTextCompletionOptionSelected = settingsComponent.isTextCompletionOptionSelected();
settings.textCompletionBaseModel = settingsComponent.getTextCompletionBaseModel();
settings.textCompletionBaseModel = settingsComponent.getTextCompletionBaseModel().getCode();
}
@Override
@ -72,7 +71,7 @@ public class SettingsConfigurable implements Configurable {
}
private boolean isModelChanged(SettingsState settings) {
return !settingsComponent.getChatCompletionBaseModel().equals(settings.chatCompletionBaseModel) ||
!settingsComponent.getTextCompletionBaseModel().equals(settings.textCompletionBaseModel);
return !settingsComponent.getChatCompletionBaseModel().getCode().equals(settings.chatCompletionBaseModel) ||
!settingsComponent.getTextCompletionBaseModel().getCode().equals(settings.textCompletionBaseModel);
}
}

View file

@ -5,7 +5,6 @@ import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import com.intellij.util.xmlb.XmlSerializerUtil;
import ee.carlrobert.openai.client.completion.CompletionModel;
import ee.carlrobert.openai.client.completion.chat.ChatCompletionModel;
import ee.carlrobert.openai.client.completion.text.TextCompletionModel;
import org.jetbrains.annotations.NotNull;
@ -13,13 +12,13 @@ import org.jetbrains.annotations.Nullable;
@State(
name = "ee.carlrobert.codegpt.settings.SettingsState",
storages = @Storage("CodeGPTSettings.xml")
storages = @Storage("CodeGPTSettings_170.xml")
)
public class SettingsState implements PersistentStateComponent<SettingsState> {
public String apiKey = "";
public CompletionModel textCompletionBaseModel = TextCompletionModel.DAVINCI;
public CompletionModel chatCompletionBaseModel = ChatCompletionModel.GPT_3_5;
public String textCompletionBaseModel = TextCompletionModel.DAVINCI.getCode();
public String chatCompletionBaseModel = ChatCompletionModel.GPT_3_5.getCode();
public boolean isChatCompletionOptionSelected = true;
public boolean isTextCompletionOptionSelected;

View file

@ -34,7 +34,7 @@ public class OpenInEditorAction extends AnAction {
var currentConversation = ConversationsState.getCurrentConversation();
if (project != null && currentConversation != null) {
var dateTimeStamp = currentConversation.getUpdatedOn().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm"));
var fileName = String.format("%s_%s.md", currentConversation.getModel().getCode(), dateTimeStamp);
var fileName = String.format("%s_%s.md", currentConversation.getModel(), dateTimeStamp);
var fileContent = currentConversation
.getMessages()
.stream()

View file

@ -76,7 +76,7 @@ class ConversationPanel extends JPanel {
.format(DateTimeFormatter.ofPattern("M/d/yyyy, h:mm:ss a"))));
bottomPanel.add(Box.createHorizontalGlue());
if (conversation.getModel() != null) {
bottomPanel.add(new JLabel(conversation.getModel().getCode()));
bottomPanel.add(new JLabel(conversation.getModel()));
}
textPanel.add(bottomPanel);
return textPanel;