mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-21 02:11:29 +00:00
chore: include metadata in codegpt requests
This commit is contained in:
parent
30c255c5b5
commit
020e1aff7f
7 changed files with 136 additions and 64 deletions
|
|
@ -4,10 +4,12 @@ import ee.carlrobert.codegpt.ReferencedFile;
|
|||
import ee.carlrobert.codegpt.conversations.Conversation;
|
||||
import ee.carlrobert.codegpt.conversations.message.Message;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class CallParameters {
|
||||
|
||||
private final UUID sessionId;
|
||||
private final Conversation conversation;
|
||||
private final ConversationType conversationType;
|
||||
private final Message message;
|
||||
|
|
@ -18,15 +20,22 @@ public class CallParameters {
|
|||
private List<ReferencedFile> referencedFiles;
|
||||
|
||||
public CallParameters(Conversation conversation, Message message) {
|
||||
this(conversation, ConversationType.DEFAULT, message, null, false);
|
||||
this(null, conversation, message);
|
||||
}
|
||||
|
||||
public CallParameters(UUID sessionId, Conversation conversation, Message message) {
|
||||
this(sessionId, conversation, ConversationType.DEFAULT, message, null, false);
|
||||
}
|
||||
|
||||
// TODO: Builder
|
||||
public CallParameters(
|
||||
UUID sessionId,
|
||||
Conversation conversation,
|
||||
ConversationType conversationType,
|
||||
Message message,
|
||||
@Nullable String highlightedText,
|
||||
boolean retry) {
|
||||
this.sessionId = sessionId;
|
||||
this.conversation = conversation;
|
||||
this.conversationType = conversationType;
|
||||
this.message = message;
|
||||
|
|
@ -34,6 +43,10 @@ public class CallParameters {
|
|||
this.retry = retry;
|
||||
}
|
||||
|
||||
public UUID getSessionId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
public Conversation getConversation() {
|
||||
return conversation;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import ee.carlrobert.codegpt.settings.service.azure.AzureSettings;
|
|||
import ee.carlrobert.codegpt.settings.service.google.GoogleSettings;
|
||||
import ee.carlrobert.llm.client.DeserializationUtil;
|
||||
import ee.carlrobert.llm.client.anthropic.completion.ClaudeCompletionRequest;
|
||||
import ee.carlrobert.llm.client.codegpt.request.chat.ChatCompletionRequest;
|
||||
import ee.carlrobert.llm.client.google.completion.GoogleCompletionRequest;
|
||||
import ee.carlrobert.llm.client.llama.completion.LlamaCompletionRequest;
|
||||
import ee.carlrobert.llm.client.ollama.completion.request.OllamaChatCompletionRequest;
|
||||
|
|
@ -98,13 +99,6 @@ public final class CompletionRequestService {
|
|||
CompletionEventListener<String> eventListener) {
|
||||
if (request instanceof OpenAIChatCompletionRequest completionRequest) {
|
||||
return switch (GeneralSettings.getSelectedService()) {
|
||||
case CODEGPT -> {
|
||||
if (List.of("o1-mini", "o1-preview").contains(completionRequest.getModel())) {
|
||||
yield getO1ChatCompletionAsync(completionRequest, eventListener);
|
||||
}
|
||||
yield CompletionClientProvider.getCodeGPTClient()
|
||||
.getChatCompletionAsync(completionRequest, eventListener);
|
||||
}
|
||||
case OPENAI -> {
|
||||
if (List.of("o1-mini", "o1-preview").contains(completionRequest.getModel())) {
|
||||
yield getO1ChatCompletionAsync(completionRequest, eventListener);
|
||||
|
|
@ -117,6 +111,13 @@ public final class CompletionRequestService {
|
|||
default -> throw new RuntimeException("Unknown service selected");
|
||||
};
|
||||
}
|
||||
if (request instanceof ChatCompletionRequest completionRequest) {
|
||||
if (List.of("o1-mini", "o1-preview").contains(completionRequest.getModel())) {
|
||||
return getO1ChatCompletionAsync(completionRequest, eventListener);
|
||||
}
|
||||
return CompletionClientProvider.getCodeGPTClient()
|
||||
.getChatCompletionAsync(completionRequest, eventListener);
|
||||
}
|
||||
if (request instanceof CustomOpenAIRequest completionRequest) {
|
||||
return getCustomOpenAIChatCompletionAsync(completionRequest.getRequest(), eventListener);
|
||||
}
|
||||
|
|
@ -148,7 +149,7 @@ public final class CompletionRequestService {
|
|||
}
|
||||
|
||||
private EventSource getO1ChatCompletionAsync(
|
||||
OpenAIChatCompletionRequest request,
|
||||
CompletionRequest request,
|
||||
CompletionEventListener<String> eventListener) {
|
||||
ProgressManager.getInstance()
|
||||
.run(new Task.Backgroundable(null, "CodeGPT: Processing o1 request") {
|
||||
|
|
@ -176,8 +177,6 @@ public final class CompletionRequestService {
|
|||
public String getChatCompletion(CompletionRequest request) {
|
||||
if (request instanceof OpenAIChatCompletionRequest completionRequest) {
|
||||
var response = switch (GeneralSettings.getSelectedService()) {
|
||||
case CODEGPT -> CompletionClientProvider.getCodeGPTClient()
|
||||
.getChatCompletion(completionRequest);
|
||||
case OPENAI -> CompletionClientProvider.getOpenAIClient()
|
||||
.getChatCompletion(completionRequest);
|
||||
case AZURE -> CompletionClientProvider.getAzureClient()
|
||||
|
|
@ -186,6 +185,11 @@ public final class CompletionRequestService {
|
|||
};
|
||||
return tryExtractContent(response).orElseThrow();
|
||||
}
|
||||
if (request instanceof ChatCompletionRequest completionRequest) {
|
||||
var response =
|
||||
CompletionClientProvider.getCodeGPTClient().getChatCompletion(completionRequest);
|
||||
return tryExtractContent(response).orElseThrow();
|
||||
}
|
||||
if (request instanceof CustomOpenAIRequest completionRequest) {
|
||||
var httpClient = CompletionClientProvider.getDefaultClientBuilder().build();
|
||||
try (var response = httpClient.newCall(completionRequest.getRequest()).execute()) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package ee.carlrobert.codegpt.toolwindow.chat;
|
||||
|
||||
import ee.carlrobert.codegpt.ReferencedFile;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ChatSession {
|
||||
|
||||
private final UUID id;
|
||||
private final Set<ReferencedFile> referencedFiles;
|
||||
|
||||
public ChatSession() {
|
||||
this.id = UUID.randomUUID();
|
||||
this.referencedFiles = new HashSet<>();
|
||||
}
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public List<ReferencedFile> getReferencedFiles() {
|
||||
return new ArrayList<>(referencedFiles);
|
||||
}
|
||||
|
||||
public void addReferencedFiles(List<ReferencedFile> files) {
|
||||
if (files == null) {
|
||||
throw new IllegalArgumentException("Referenced files cannot be null");
|
||||
}
|
||||
referencedFiles.addAll(files);
|
||||
}
|
||||
}
|
||||
|
|
@ -51,6 +51,8 @@ public class ChatToolWindowTabPanel implements Disposable {
|
|||
|
||||
private static final Logger LOG = Logger.getInstance(ChatToolWindowTabPanel.class);
|
||||
|
||||
private final ChatSession chatSession;
|
||||
|
||||
private final Project project;
|
||||
private final JPanel rootPanel;
|
||||
private final Conversation conversation;
|
||||
|
|
@ -64,6 +66,7 @@ public class ChatToolWindowTabPanel implements Disposable {
|
|||
public ChatToolWindowTabPanel(@NotNull Project project, @NotNull Conversation conversation) {
|
||||
this.project = project;
|
||||
this.conversation = conversation;
|
||||
this.chatSession = new ChatSession();
|
||||
conversationService = ConversationService.getInstance();
|
||||
toolWindowScrollablePanel = new ChatToolWindowScrollablePanel();
|
||||
totalTokensPanel = new TotalTokensPanel(
|
||||
|
|
@ -165,8 +168,13 @@ public class ChatToolWindowTabPanel implements Disposable {
|
|||
Message message,
|
||||
@Nullable String highlightedText,
|
||||
@Nullable String attachedFilePath) {
|
||||
var callParameters = new CallParameters(conversation, conversationType, message,
|
||||
highlightedText, false);
|
||||
var callParameters = new CallParameters(
|
||||
chatSession.getId(),
|
||||
conversation,
|
||||
conversationType,
|
||||
message,
|
||||
highlightedText,
|
||||
false);
|
||||
if (attachedFilePath != null && !attachedFilePath.isEmpty()) {
|
||||
try {
|
||||
callParameters.setImageData(Files.readAllBytes(Path.of(attachedFilePath)));
|
||||
|
|
@ -227,7 +235,13 @@ public class ChatToolWindowTabPanel implements Disposable {
|
|||
if (responsePanel != null) {
|
||||
message.setResponse("");
|
||||
conversationService.saveMessage(conversation, message);
|
||||
call(new CallParameters(conversation, conversationType, message, null, true),
|
||||
call(new CallParameters(
|
||||
chatSession.getId(),
|
||||
conversation,
|
||||
conversationType,
|
||||
message,
|
||||
null,
|
||||
true),
|
||||
responsePanel);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue