mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-13 07:02:34 +00:00
fix: use personas only within current chat session context
This commit is contained in:
parent
43a1f8d8d7
commit
e36e954276
7 changed files with 42 additions and 22 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package ee.carlrobert.codegpt;
|
||||
|
||||
import com.intellij.openapi.util.Key;
|
||||
import ee.carlrobert.codegpt.settings.persona.PersonaDetails;
|
||||
import ee.carlrobert.codegpt.ui.DocumentationDetails;
|
||||
import ee.carlrobert.llm.client.codegpt.CodeGPTUserDetails;
|
||||
import java.util.List;
|
||||
|
|
@ -17,4 +18,6 @@ public class CodeGPTKeys {
|
|||
Key.create("codegpt.userDetails");
|
||||
public static final Key<DocumentationDetails> ADDED_DOCUMENTATION =
|
||||
Key.create("codegpt.addedDocumentation");
|
||||
public static final Key<PersonaDetails> ADDED_PERSONA =
|
||||
Key.create("codegpt.addedPersona");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -410,8 +410,15 @@ public class CompletionRequestProvider {
|
|||
var message = callParameters.getMessage();
|
||||
var messages = new ArrayList<OpenAIChatCompletionMessage>();
|
||||
if (callParameters.getConversationType() == ConversationType.DEFAULT) {
|
||||
messages.add(
|
||||
new OpenAIChatCompletionStandardMessage("system", PersonaSettings.getSystemPrompt()));
|
||||
var sessionPersonaDetails = callParameters.getMessage().getPersonaDetails();
|
||||
if (callParameters.getMessage().getPersonaDetails() == null) {
|
||||
messages.add(
|
||||
new OpenAIChatCompletionStandardMessage("system", PersonaSettings.getSystemPrompt()));
|
||||
} else {
|
||||
messages.add(new OpenAIChatCompletionStandardMessage(
|
||||
"system",
|
||||
sessionPersonaDetails.instructions()));
|
||||
}
|
||||
}
|
||||
if (callParameters.getConversationType() == ConversationType.FIX_COMPILE_ERRORS) {
|
||||
messages.add(
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package ee.carlrobert.codegpt.conversations.message;
|
|||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import ee.carlrobert.codegpt.settings.persona.PersonaDetails;
|
||||
import ee.carlrobert.codegpt.ui.DocumentationDetails;
|
||||
import ee.carlrobert.llm.client.you.completion.YouSerpResult;
|
||||
import java.util.List;
|
||||
|
|
@ -20,6 +21,7 @@ public class Message {
|
|||
private @Nullable String imageFilePath;
|
||||
private boolean webSearchIncluded;
|
||||
private DocumentationDetails documentationDetails;
|
||||
private PersonaDetails personaDetails;
|
||||
|
||||
public Message(String prompt, String response) {
|
||||
this(prompt);
|
||||
|
|
@ -100,6 +102,14 @@ public class Message {
|
|||
this.documentationDetails = documentationDetails;
|
||||
}
|
||||
|
||||
public PersonaDetails getPersonaDetails() {
|
||||
return personaDetails;
|
||||
}
|
||||
|
||||
public void setPersonaDetails(PersonaDetails personaDetails) {
|
||||
this.personaDetails = personaDetails;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == this) {
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ import ee.carlrobert.codegpt.toolwindow.ui.ChatToolWindowLandingPanel;
|
|||
import ee.carlrobert.codegpt.ui.OverlayUtil;
|
||||
import ee.carlrobert.codegpt.ui.textarea.AppliedActionInlay;
|
||||
import ee.carlrobert.codegpt.ui.textarea.UserInputPanel;
|
||||
import ee.carlrobert.codegpt.ui.textarea.suggestion.item.DocumentationActionItem;
|
||||
import ee.carlrobert.codegpt.ui.textarea.suggestion.item.PersonaActionItem;
|
||||
import ee.carlrobert.codegpt.ui.textarea.suggestion.item.WebSearchActionItem;
|
||||
import ee.carlrobert.codegpt.util.EditorUtil;
|
||||
import ee.carlrobert.codegpt.util.file.FileUtil;
|
||||
|
|
@ -260,10 +262,19 @@ public class ChatToolWindowTabPanel implements Disposable {
|
|||
.anyMatch(it -> it.getSuggestion() instanceof WebSearchActionItem));
|
||||
|
||||
var addedDocumentation = CodeGPTKeys.ADDED_DOCUMENTATION.get(project);
|
||||
if (addedDocumentation != null) {
|
||||
var appliedInlayExists = appliedInlayActions.stream()
|
||||
.anyMatch(it -> it.getSuggestion() instanceof DocumentationActionItem);
|
||||
if (addedDocumentation != null && appliedInlayExists) {
|
||||
message.setDocumentationDetails(addedDocumentation);
|
||||
}
|
||||
|
||||
var addedPersona = CodeGPTKeys.ADDED_PERSONA.get(project);
|
||||
var personaInlayExists = appliedInlayActions.stream()
|
||||
.anyMatch(it -> it.getSuggestion() instanceof PersonaActionItem);
|
||||
if (addedPersona != null && personaInlayExists) {
|
||||
message.setPersonaDetails(addedPersona);
|
||||
}
|
||||
|
||||
sendMessage(message, ConversationType.DEFAULT);
|
||||
return Unit.INSTANCE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue