diff --git a/src/main/java/com/zhongan/devpilot/gui/toolwindows/chat/DevPilotChatToolWindow.java b/src/main/java/com/zhongan/devpilot/gui/toolwindows/chat/DevPilotChatToolWindow.java index b04d6a81..eff3a18e 100644 --- a/src/main/java/com/zhongan/devpilot/gui/toolwindows/chat/DevPilotChatToolWindow.java +++ b/src/main/java/com/zhongan/devpilot/gui/toolwindows/chat/DevPilotChatToolWindow.java @@ -51,7 +51,7 @@ public class DevPilotChatToolWindow { private final Project project; - private final LlmProvider llmProvider; + private LlmProvider llmProvider; private final DevPilotChatCompletionRequest multiSessionRequest = new DevPilotChatCompletionRequest(); @@ -60,7 +60,6 @@ public DevPilotChatToolWindow(Project project, ToolWindow toolWindow) { this.devPilotChatToolWindowPanel = new JPanel(new GridBagLayout()); this.chatContentPanel = new ScrollablePanel(); this.userChatPanel = new UserChatPanel(this::syncSendAndDisplay, this::stopSending); - this.llmProvider = new LlmProviderFactory().getLlmProvider(project); var gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; @@ -153,6 +152,10 @@ private String sendMessage(Integer sessionType, String message) { multiSessionRequest.getMessages().add(userMessage); devPilotChatCompletionRequest.getMessages().addAll(multiSessionRequest.getMessages()); } + + var llmProvider = new LlmProviderFactory().getLlmProvider(project); + this.llmProvider = llmProvider; + String chatCompletion = llmProvider.chatCompletion(devPilotChatCompletionRequest); if (SessionTypeEnum.MULTI_TURN.equals(sessionTypeEnum) && devPilotChatCompletionRequest.getMessages().size() > multiSessionRequest.getMessages().size()) { @@ -207,6 +210,9 @@ public void syncSendAndDisplay(Integer sessionType, EditorActionEnum editorActio } private void stopSending() { + if (llmProvider == null) { + return; + } llmProvider.interruptSend(); userChatPanel.setIconSend(); userChatPanel.setSending(false);