Skip to content

Commit

Permalink
Merge pull request #378 from devoxx/issue-377
Browse files Browse the repository at this point in the history
Issue 377
  • Loading branch information
stephanj authored Dec 12, 2024
2 parents 4f45144 + 164f522 commit 55c2470
Show file tree
Hide file tree
Showing 16 changed files with 70 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,6 @@ default List<LanguageModel> getModels(ModelProvider provider) {
*/
List<LanguageModel> getModels();

// /**
// * Get the model provider API key.
// *
// * @return the API key
// */
// default String getApiKey() {
// return "";
// }

default String getApiKey(ModelProvider modelProvider) {
return LLMProviderService.getInstance().getApiKey(modelProvider).trim();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.devoxx.genie.model.ChatModel;
import com.devoxx.genie.model.LanguageModel;
import com.devoxx.genie.model.enumarations.ModelProvider;
import com.devoxx.genie.ui.settings.DevoxxGenieStateService;
import dev.langchain4j.model.anthropic.AnthropicChatModel;
import dev.langchain4j.model.anthropic.AnthropicStreamingChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.devoxx.genie.model.ChatModel;
import com.devoxx.genie.model.LanguageModel;
import com.devoxx.genie.model.enumarations.ModelProvider;
import com.devoxx.genie.ui.settings.DevoxxGenieStateService;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.chat.StreamingChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.devoxx.genie.model.ChatModel;
import com.devoxx.genie.model.LanguageModel;
import com.devoxx.genie.model.enumarations.ModelProvider;
import com.devoxx.genie.ui.settings.DevoxxGenieStateService;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.googleai.GoogleAiGeminiChatModel;
import org.jetbrains.annotations.NotNull;
Expand All @@ -25,7 +24,6 @@ public ChatLanguageModel createChatModel(@NotNull ChatModel chatModel) {
.build();
}


@Override
public List<LanguageModel> getModels() {
return getModels(MODEL_PROVIDER);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import com.devoxx.genie.model.ChatModel;
import com.devoxx.genie.model.LanguageModel;
import com.devoxx.genie.model.enumarations.ModelProvider;
import com.devoxx.genie.ui.settings.DevoxxGenieStateService;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.chat.StreamingChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.jetbrains.annotations.NotNull;

Expand All @@ -30,17 +30,10 @@ public ChatLanguageModel createChatModel(@NotNull ChatModel chatModel) {
.build();
}

// Streaming gives error for Groq model provider
// @Override
// public StreamingChatLanguageModel createStreamingChatModel(@NotNull ChatModel chatModel) {
// return OpenAiStreamingChatModel.builder()
// .apiKey(getApiKey())
// .modelName(chatModel.getModelName())
// .temperature(chatModel.getTemperature())
// .topP(chatModel.getTopP())
// .timeout(Duration.ofSeconds(chatModel.getTimeout()))
// .build();
// }
@Override
public StreamingChatLanguageModel createStreamingChatModel(@NotNull ChatModel chatModel) {
throw new UnsupportedOperationException("Streaming not supported by Groq");
}

@Override
public List<LanguageModel> getModels() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ public ChatLanguageModel createChatModel(@NotNull ChatModel chatModel) {
.build();
}


@Override
public StreamingChatLanguageModel createStreamingChatModel(@NotNull ChatModel chatModel) {
return LocalAiStreamingChatModel.builder()
Expand Down
63 changes: 47 additions & 16 deletions src/main/java/com/devoxx/genie/ui/component/ExpandablePanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,6 @@ public ExpandablePanel() {
scrollPane.setOpaque(false);

add(scrollPane, BorderLayout.CENTER);

if (isExpanded) {
setMinimumSize(new Dimension(0, 300));
}
}

public ExpandablePanel(Project project, @NotNull List<SemanticFile> semanticFiles) {
Expand All @@ -65,35 +61,70 @@ public ExpandablePanel(Project project, @NotNull List<SemanticFile> semanticFile
contentPanel.add(new FileEntryComponent(project, file));
}
contentPanel.setVisible(isExpanded);

if (isExpanded) {
setMinimumSize(new Dimension(0, Math.min(300, 30 * semanticFiles.size())));
}
}

public ExpandablePanel(ChatMessageContext chatMessageContext,
@NotNull List<VirtualFile> files) {
this();

toggleButton.setText("Referenced Files (" + files.size() + ")");

for (VirtualFile file : files) {
contentPanel.add(new FileEntryComponent(chatMessageContext.getProject(), file, null));
}
contentPanel.setVisible(isExpanded);

if (isExpanded) {
setMinimumSize(new Dimension(0, Math.min(300, 30 * files.size())));
}
}

private void toggleContent() {
isExpanded = !isExpanded;
contentPanel.setVisible(isExpanded);
toggleButton.setIcon(isExpanded ? ArrowExpanded : ArrowExpand);

contentPanel.getParent().revalidate();
contentPanel.getParent().repaint();
// Recompute the size of the panel
revalidate();
repaint();

// Update the parent container
Container parent = getParent();
while (parent != null) {
parent.revalidate();
parent.repaint();
parent = parent.getParent();
}

if (isExpanded) {
Rectangle rectangle = SwingUtilities.calculateInnerArea(contentPanel, contentPanel.getBounds());
contentPanel.scrollRectToVisible(rectangle);
}
}

@Override
public Dimension getMinimumSize() {
if (isExpanded) {
int contentHeight = contentPanel.getComponentCount() * 30;
return new Dimension(0, Math.min(300, contentHeight));
} else {
return new Dimension(0, toggleButton.getPreferredSize().height + 10);
}
}

Rectangle rectangle = SwingUtilities.calculateInnerArea(contentPanel, contentPanel.getBounds());
contentPanel.scrollRectToVisible(rectangle);
@Override
public Dimension getPreferredSize() {
if (isExpanded) {
int contentHeight = contentPanel.getComponentCount() * 30;
return new Dimension(super.getPreferredSize().width, Math.min(300, contentHeight + toggleButton.getPreferredSize().height + 10));
} else {
return new Dimension(super.getPreferredSize().width, toggleButton.getPreferredSize().height + 10);
}
}

@Override
public Dimension getMaximumSize() {
if (isExpanded) {
int contentHeight = contentPanel.getComponentCount() * 30;
return new Dimension(Integer.MAX_VALUE, Math.min(300, contentHeight + toggleButton.getPreferredSize().height + 10));
} else {
return new Dimension(Integer.MAX_VALUE, toggleButton.getPreferredSize().height + 10);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.devoxx.genie.model.CustomPrompt;
import com.devoxx.genie.service.DevoxxGenieSettingsService;
import com.devoxx.genie.ui.listener.CustomPromptChangeListener;
import com.devoxx.genie.ui.listener.RAGStateListener;
import com.devoxx.genie.ui.settings.DevoxxGenieStateService;
import com.devoxx.genie.ui.topic.AppTopics;
import com.intellij.openapi.application.ApplicationManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
import com.devoxx.genie.ui.EditorFileButtonManager;
import com.devoxx.genie.ui.component.ContextPopupMenu;
import com.devoxx.genie.ui.component.JHoverButton;
import com.devoxx.genie.ui.component.input.PromptInputArea;
import com.devoxx.genie.ui.component.TokenUsageBar;
import com.devoxx.genie.ui.component.input.PromptInputArea;
import com.devoxx.genie.ui.listener.GlowingListener;
import com.devoxx.genie.ui.listener.PromptSubmissionListener;
import com.devoxx.genie.ui.listener.SettingsChangeListener;
Expand All @@ -26,7 +26,6 @@
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.messages.MessageBusConnection;
import com.intellij.util.ui.JBUI;
import org.jetbrains.annotations.NotNull;

import javax.swing.*;
Expand Down
14 changes: 9 additions & 5 deletions src/main/java/com/devoxx/genie/ui/panel/ChatResponsePanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,21 @@ private void addResponsePane(@NotNull ChatMessageContext chatMessageContext) {
}

// Add semantic references panel
addSemanticSearchReferences(chatMessageContext);

if (Boolean.TRUE.equals(DevoxxGenieStateService.getInstance().getShowExecutionTime())) {
// Add execution time, token usage and cost information
addMetricExecutionInfo(chatMessageContext);
}
}

private void addSemanticSearchReferences(@NotNull ChatMessageContext chatMessageContext) {
List<SemanticFile> semanticReferences = chatMessageContext.getSemanticReferences();
if (semanticReferences != null && !semanticReferences.isEmpty()) {
ExpandablePanel semanticPanel = new ExpandablePanel(chatMessageContext.getProject(), semanticReferences);
semanticPanel.setName(chatMessageContext.getId() + "_semantic");
add(semanticPanel);
}

if (Boolean.TRUE.equals(DevoxxGenieStateService.getInstance().getShowExecutionTime())) {
// Add execution time, token usage and cost information
addMetricExecutionInfo(chatMessageContext);
}
}

private void addMetricExecutionInfo(@NotNull ChatMessageContext chatMessageContext) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
import java.util.UUID;

import static com.devoxx.genie.model.Constant.FIND_COMMAND;
import static javax.swing.ScrollPaneConstants.*;
import static javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER;
import static javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;

/**
* This class represents the output panel for displaying chat prompts and responses.
Expand Down Expand Up @@ -52,7 +53,7 @@ public PromptOutputPanel(Project project, ResourceBundle resourceBundle) {
this.project = project;
this.resourceBundle = resourceBundle;
welcomePanel = new WelcomePanel(resourceBundle);
helpPanel = new HelpPanel(HelpUtil.getHelpMessage(resourceBundle));
helpPanel = new HelpPanel(HelpUtil.getHelpMessage());

container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));

Expand Down Expand Up @@ -201,7 +202,7 @@ private void scrollToBottom() {
* Updates the help text displayed in the help panel.
*/
public void updateHelpText() {
helpPanel.updateHelpText(HelpUtil.getHelpMessage(resourceBundle));
helpPanel.updateHelpText(HelpUtil.getHelpMessage());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import lombok.Getter;

import javax.swing.*;

import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

import com.devoxx.genie.ui.settings.AbstractSettingsComponent;
import com.devoxx.genie.ui.settings.DevoxxGenieStateService;
import com.intellij.openapi.ui.ComboBox;
import com.intellij.ui.scale.JBUIScale;
import com.intellij.util.ui.JBUI;
import lombok.Getter;
import org.jdesktop.swingx.JXTitledSeparator;
import com.intellij.openapi.ui.ComboBox;

import javax.swing.*;
import java.awt.*;

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/com/devoxx/genie/ui/util/HelpUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@
import com.devoxx.genie.ui.settings.DevoxxGenieStateService;
import org.jetbrains.annotations.NotNull;

import java.util.ResourceBundle;
import java.util.stream.Collectors;

public class HelpUtil {

private HelpUtil() {
}

public static @NotNull String getHelpMessage(@NotNull ResourceBundle resourceBundle) {
public static @NotNull String getHelpMessage() {
return "<html><body style='width: 300px; font-family: Arial, sans-serif; font-size: 12px;'>" +
"<h3>Available commands:</h3>" +
"<ul>" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.devoxx.genie.model.enumarations.ModelProvider;
import com.devoxx.genie.model.request.ChatMessageContext;
import com.devoxx.genie.model.request.EditorInfo;
import com.devoxx.genie.service.DevoxxGenieSettingsService;
import com.devoxx.genie.service.FileListManager;
import com.devoxx.genie.service.MessageCreationService;
import com.devoxx.genie.ui.EditorFileButtonManager;
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#Thu Dec 12 14:42:19 CET 2024
#Thu Dec 12 15:44:26 CET 2024
version=0.4.3

0 comments on commit 55c2470

Please sign in to comment.