mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-24 05:44:32 +00:00
Switch to openai-client, add conversation history empty label, remove unofficial reverse proxy (closes #43)
This commit is contained in:
parent
33a5e520f2
commit
57e1095dd1
85 changed files with 619 additions and 1828 deletions
|
|
@ -0,0 +1,81 @@
|
|||
package ee.carlrobert.codegpt.toolwindow;
|
||||
|
||||
import com.intellij.ide.ui.LafManager;
|
||||
import com.intellij.ide.ui.LafManagerListener;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import ee.carlrobert.codegpt.client.ClientFactory;
|
||||
import ee.carlrobert.codegpt.client.ClientRequestFactory;
|
||||
import ee.carlrobert.codegpt.client.EventListener;
|
||||
import ee.carlrobert.codegpt.conversations.ConversationsState;
|
||||
import ee.carlrobert.codegpt.conversations.message.Message;
|
||||
import ee.carlrobert.codegpt.settings.SettingsState;
|
||||
import ee.carlrobert.codegpt.toolwindow.chat.ChatGptToolWindow;
|
||||
import ee.carlrobert.codegpt.toolwindow.components.SyntaxTextArea;
|
||||
import java.util.List;
|
||||
import javax.swing.SwingWorker;
|
||||
import okhttp3.sse.EventSource;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ToolWindowService implements LafManagerListener {
|
||||
|
||||
private ChatGptToolWindow chatToolWindow;
|
||||
|
||||
@Override
|
||||
public void lookAndFeelChanged(@NotNull LafManager source) {
|
||||
chatToolWindow.changeStyle();
|
||||
}
|
||||
|
||||
public void setChatToolWindow(ChatGptToolWindow chatToolWindow) {
|
||||
this.chatToolWindow = chatToolWindow;
|
||||
}
|
||||
|
||||
public ChatGptToolWindow getChatToolWindow() {
|
||||
return chatToolWindow;
|
||||
}
|
||||
|
||||
public void startRequest(String prompt, SyntaxTextArea textArea, Project project) {
|
||||
var conversationsState = ConversationsState.getInstance();
|
||||
var currentConversation = ConversationsState.getCurrentConversation();
|
||||
var conversation = currentConversation == null ? conversationsState.startConversation() : currentConversation;
|
||||
var conversationMessage = new Message(prompt);
|
||||
|
||||
new SwingWorker<Void, String>() {
|
||||
protected Void doInBackground() {
|
||||
var eventListener = new EventListener(
|
||||
conversationMessage,
|
||||
textArea::append,
|
||||
() -> chatToolWindow.stopGenerating(prompt, textArea, project)) {
|
||||
public void onMessage(String message) {
|
||||
publish(message);
|
||||
}
|
||||
};
|
||||
|
||||
EventSource call;
|
||||
var settings = SettingsState.getInstance();
|
||||
var requestFactory = new ClientRequestFactory(prompt, conversation);
|
||||
if (settings.isChatCompletionOptionSelected) {
|
||||
call = ClientFactory.getChatCompletionClient().stream(
|
||||
requestFactory.buildChatCompletionRequest(settings), eventListener);
|
||||
} else {
|
||||
call = ClientFactory.getTextCompletionClient().stream(
|
||||
requestFactory.buildTextCompletionRequest(settings), eventListener);
|
||||
}
|
||||
chatToolWindow.displayGenerateButton(call::cancel);
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void process(List<String> chunks) {
|
||||
for (String text : chunks) {
|
||||
try {
|
||||
textArea.append(text);
|
||||
conversationMessage.setResponse(textArea.getText());
|
||||
chatToolWindow.scrollToBottom();
|
||||
} catch (Exception e) {
|
||||
textArea.append("Something went wrong. Please try again later.");
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue