Support you.com gpt-4 model (#233)

This commit is contained in:
Carl-Robert 2023-10-12 11:18:37 +03:00 committed by GitHub
parent 0343842af9
commit 21fa61d2af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 311 additions and 168 deletions

View file

@ -1,5 +1,7 @@
package ee.carlrobert.codegpt.completions;
import com.intellij.openapi.diagnostic.Logger;
import ee.carlrobert.codegpt.completions.you.YouUserManager;
import ee.carlrobert.codegpt.conversations.Conversation;
import ee.carlrobert.codegpt.conversations.message.Message;
import ee.carlrobert.codegpt.settings.state.AzureSettingsState;
@ -20,6 +22,8 @@ import org.jetbrains.annotations.Nullable;
public class CompletionRequestHandler {
private static final Logger LOG = Logger.getInstance(CompletionRequestHandler.class);
private final StringBuilder messageBuilder = new StringBuilder();
private SwingWorker<Void, String> swingWorker;
private EventSource eventSource;
@ -77,8 +81,21 @@ public class CompletionRequestHandler {
try {
if (settings.isUseYouService()) {
return CompletionClientProvider.getYouClient("", "")
.getChatCompletion(requestProvider.buildYouCompletionRequest(message), eventListener);
var sessionId = "";
var accessToken = "";
var youUserManager = YouUserManager.getInstance();
if (youUserManager.isAuthenticated()) {
var authenticationResponse =
youUserManager.getAuthenticationResponse().getData();
sessionId = authenticationResponse.getSession().getSessionId();
accessToken = authenticationResponse.getSessionJwt();
}
var request = requestProvider.buildYouCompletionRequest(message);
LOG.info("Initiating completion request using model: " +
(request.isUseGPT4Model() ? "GPT-4" : "YouBot"));
return CompletionClientProvider.getYouClient(sessionId, accessToken)
.getChatCompletion(request, eventListener);
}
if (settings.isUseAzureService()) {
@ -130,8 +147,8 @@ public class CompletionRequestHandler {
message,
isRetry,
settings.isUseYouService() ?
getYouCompletionEventListener() :
getCompletionEventListener());
new BaseCompletionEventListener() :
new YouRequestCompletionEventListener());
} catch (TotalUsageExceededException e) {
if (tokensExceededListener != null) {
tokensExceededListener.run();
@ -152,66 +169,41 @@ public class CompletionRequestHandler {
}
}
private CompletionEventListener getCompletionEventListener() {
return new CompletionEventListener() {
@Override
public void onMessage(String message) {
publish(message);
}
class BaseCompletionEventListener implements CompletionEventListener {
@Override
public void onComplete(StringBuilder messageBuilder) {
if (completedListener != null) {
completedListener.accept(messageBuilder.toString());
}
}
@Override
public void onMessage(String message) {
publish(message);
}
@Override
public void onError(ErrorDetails error, Throwable ex) {
try {
if (errorListener != null) {
errorListener.accept(error, ex);
}
} finally {
sendError(error, ex);
}
@Override
public void onComplete(StringBuilder messageBuilder) {
if (completedListener != null) {
completedListener.accept(messageBuilder.toString());
}
};
}
@Override
public void onError(ErrorDetails error, Throwable ex) {
try {
if (errorListener != null) {
errorListener.accept(error, ex);
}
} finally {
sendError(error, ex);
}
}
}
// TODO: Refactor
private YouCompletionEventListener getYouCompletionEventListener() {
return new YouCompletionEventListener() {
@Override
public void onMessage(String message) {
publish(message);
}
class YouRequestCompletionEventListener extends BaseCompletionEventListener
implements YouCompletionEventListener {
@Override
public void onComplete(StringBuilder messageBuilder) {
if (completedListener != null) {
completedListener.accept(messageBuilder.toString());
}
@Override
public void onSerpResults(List<YouSerpResult> results) {
if (serpResultsListener != null) {
serpResultsListener.accept(results);
}
@Override
public void onError(ErrorDetails error, Throwable ex) {
try {
if (errorListener != null) {
errorListener.accept(error, ex);
}
} finally {
sendError(error, ex);
}
}
@Override
public void onSerpResults(List<YouSerpResult> results) {
if (serpResultsListener != null) {
serpResultsListener.accept(results);
}
}
};
}
}
private void sendInfo(SettingsState settings) {