You API integration (#203)

* Ability to configure custom service

* Add example preset templates, rename module

* Custom service client impl

* Add YOU API integration

* Remove/ignore generated antlr classes

* Remove text completion models(deprecated)

* Remove unused code, fix settings state sync

* Display model name/icon in the tool window

* Update chat history UI

* Fix model/service sync

* Clear plugin state

* Fix minor bugs, add settings sync tests

* UI changes

* Separate model configuration

* Add support for overriding the completion path

* Update Find Bugs prompt
This commit is contained in:
Carl-Robert 2023-09-14 14:52:18 +03:00 committed by GitHub
parent a860054360
commit 37af74ebdf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
125 changed files with 1673 additions and 1537 deletions

View file

@ -2,9 +2,12 @@ package ee.carlrobert.codegpt.conversations;
import static java.util.stream.Collectors.toList;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.Service;
import ee.carlrobert.codegpt.conversations.message.Message;
import ee.carlrobert.codegpt.settings.state.ModelSettingsState;
import ee.carlrobert.openai.client.ClientCode;
import ee.carlrobert.codegpt.settings.state.AzureSettingsState;
import ee.carlrobert.codegpt.settings.state.OpenAISettingsState;
import ee.carlrobert.codegpt.settings.state.SettingsState;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
@ -13,19 +16,16 @@ import java.util.Optional;
import java.util.UUID;
import org.jetbrains.annotations.NotNull;
public class ConversationService {
@Service
public final class ConversationService {
private static ConversationService instance;
private final ConversationsState conversationState = ConversationsState.getInstance();
private ConversationService() {
}
public static ConversationService getInstance() {
if (instance == null) {
instance = new ConversationService();
}
return instance;
return ApplicationManager.getApplication().getService(ConversationService.class);
}
public List<Conversation> getSortedConversations() {
@ -37,11 +37,18 @@ public class ConversationService {
.collect(toList());
}
public Conversation createConversation(ClientCode clientCode) {
public Conversation createConversation(String clientCode) {
var settings = SettingsState.getInstance();
var conversation = new Conversation();
conversation.setId(UUID.randomUUID());
conversation.setClientCode(clientCode);
conversation.setModel(ModelSettingsState.getInstance().getCompletionModel());
if (settings.isUseYouService()) {
conversation.setModel("YouCode");
} else if (settings.isUseAzureService()) {
conversation.setModel(AzureSettingsState.getInstance().getModel());
} else {
conversation.setModel(OpenAISettingsState.getInstance().getModel());
}
conversation.setCreatedOn(LocalDateTime.now());
conversation.setUpdatedOn(LocalDateTime.now());
return conversation;
@ -107,9 +114,19 @@ public class ConversationService {
conversationState.setCurrentConversation(conversation);
}
private String getClientCode() {
var settings = SettingsState.getInstance();
if (settings.isUseOpenAIService()) {
return "chat.completion";
}
if (settings.isUseAzureService()) {
return "azure.chat.completion";
}
return "you.chat.completion";
}
public Conversation startConversation() {
var currentClientCode = ModelSettingsState.getInstance().isUseChatCompletion() ? ClientCode.CHAT_COMPLETION : ClientCode.TEXT_COMPLETION;
var conversation = createConversation(currentClientCode);
var conversation = createConversation(getClientCode());
conversationState.setCurrentConversation(conversation);
addConversation(conversation);
return conversation;