mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-19 07:54:46 +00:00
feat: add support for auto resolving compilation errors (#318)
This commit is contained in:
parent
7031a6dc73
commit
f831a1facd
51 changed files with 919 additions and 595 deletions
|
|
@ -1,8 +1,6 @@
|
|||
package ee.carlrobert.codegpt.completions;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import ee.carlrobert.codegpt.conversations.Conversation;
|
||||
import ee.carlrobert.codegpt.conversations.message.Message;
|
||||
import ee.carlrobert.codegpt.settings.state.SettingsState;
|
||||
import ee.carlrobert.codegpt.telemetry.TelemetryAction;
|
||||
import ee.carlrobert.llm.client.openai.completion.ErrorDetails;
|
||||
|
|
@ -12,7 +10,6 @@ import ee.carlrobert.llm.completion.CompletionEventListener;
|
|||
import java.util.List;
|
||||
import javax.swing.SwingWorker;
|
||||
import okhttp3.sse.EventSource;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class CompletionRequestHandler {
|
||||
|
||||
|
|
@ -31,8 +28,8 @@ public class CompletionRequestHandler {
|
|||
this.completionResponseEventListener = completionResponseEventListener;
|
||||
}
|
||||
|
||||
public void call(Conversation conversation, Message message, boolean retry) {
|
||||
swingWorker = new CompletionRequestWorker(conversation, message, retry);
|
||||
public void call(CallParameters callParameters) {
|
||||
swingWorker = new CompletionRequestWorker(callParameters);
|
||||
swingWorker.execute();
|
||||
}
|
||||
|
||||
|
|
@ -44,13 +41,11 @@ public class CompletionRequestHandler {
|
|||
}
|
||||
|
||||
private EventSource startCall(
|
||||
@NotNull Conversation conversation,
|
||||
@NotNull Message message,
|
||||
boolean retry,
|
||||
CallParameters callParameters,
|
||||
CompletionEventListener eventListener) {
|
||||
try {
|
||||
return CompletionRequestService.getInstance()
|
||||
.getChatCompletionAsync(conversation, message, retry, useContextualSearch, eventListener);
|
||||
.getChatCompletionAsync(callParameters, useContextualSearch, eventListener);
|
||||
} catch (Throwable ex) {
|
||||
handleCallException(ex);
|
||||
throw ex;
|
||||
|
|
@ -69,26 +64,20 @@ public class CompletionRequestHandler {
|
|||
|
||||
private class CompletionRequestWorker extends SwingWorker<Void, String> {
|
||||
|
||||
private final Conversation conversation;
|
||||
private final Message message;
|
||||
private final boolean retry;
|
||||
private final CallParameters callParameters;
|
||||
|
||||
public CompletionRequestWorker(Conversation conversation, Message message, boolean retry) {
|
||||
this.conversation = conversation;
|
||||
this.message = message;
|
||||
this.retry = retry;
|
||||
public CompletionRequestWorker(CallParameters callParameters) {
|
||||
this.callParameters = callParameters;
|
||||
}
|
||||
|
||||
protected Void doInBackground() {
|
||||
var settings = SettingsState.getInstance();
|
||||
try {
|
||||
eventSource = startCall(
|
||||
conversation,
|
||||
message,
|
||||
retry,
|
||||
new YouRequestCompletionEventListener());
|
||||
eventSource = startCall(callParameters, new YouRequestCompletionEventListener());
|
||||
} catch (TotalUsageExceededException e) {
|
||||
completionResponseEventListener.handleTokensExceeded(conversation, message);
|
||||
completionResponseEventListener.handleTokensExceeded(
|
||||
callParameters.getConversation(),
|
||||
callParameters.getMessage());
|
||||
} finally {
|
||||
sendInfo(settings);
|
||||
}
|
||||
|
|
@ -96,7 +85,7 @@ public class CompletionRequestHandler {
|
|||
}
|
||||
|
||||
protected void process(List<String> chunks) {
|
||||
message.setResponse(messageBuilder.toString());
|
||||
callParameters.getMessage().setResponse(messageBuilder.toString());
|
||||
for (String text : chunks) {
|
||||
messageBuilder.append(text);
|
||||
completionResponseEventListener.handleMessage(text);
|
||||
|
|
@ -107,7 +96,7 @@ public class CompletionRequestHandler {
|
|||
|
||||
@Override
|
||||
public void onSerpResults(List<YouSerpResult> results) {
|
||||
completionResponseEventListener.handleSerpResults(results, message);
|
||||
completionResponseEventListener.handleSerpResults(results, callParameters.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -117,11 +106,7 @@ public class CompletionRequestHandler {
|
|||
|
||||
@Override
|
||||
public void onComplete(StringBuilder messageBuilder) {
|
||||
completionResponseEventListener.handleCompleted(
|
||||
messageBuilder.toString(),
|
||||
message,
|
||||
conversation,
|
||||
retry);
|
||||
completionResponseEventListener.handleCompleted(messageBuilder.toString(), callParameters);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -136,8 +121,8 @@ public class CompletionRequestHandler {
|
|||
|
||||
private void sendInfo(SettingsState settings) {
|
||||
TelemetryAction.COMPLETION.createActionMessage()
|
||||
.property("conversationId", conversation.getId().toString())
|
||||
.property("model", conversation.getModel())
|
||||
.property("conversationId", callParameters.getConversation().getId().toString())
|
||||
.property("model", callParameters.getConversation().getModel())
|
||||
.property("service", settings.getSelectedService().getCode().toLowerCase())
|
||||
.send();
|
||||
}
|
||||
|
|
@ -150,8 +135,8 @@ public class CompletionRequestHandler {
|
|||
.property("code", "INSUFFICIENT_QUOTA");
|
||||
} else {
|
||||
telemetryMessage
|
||||
.property("conversationId", conversation.getId().toString())
|
||||
.property("model", conversation.getModel())
|
||||
.property("conversationId", callParameters.getConversation().getId().toString())
|
||||
.property("model", callParameters.getConversation().getModel())
|
||||
.error(new RuntimeException(error.toString(), ex));
|
||||
}
|
||||
telemetryMessage.send();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue