diff --git a/backend/src/main/java/com/zl/mjga/config/ai/ChatModelConfig.java b/backend/src/main/java/com/zl/mjga/config/ai/ChatModelConfig.java index b8d57bb..1dbefa4 100644 --- a/backend/src/main/java/com/zl/mjga/config/ai/ChatModelConfig.java +++ b/backend/src/main/java/com/zl/mjga/config/ai/ChatModelConfig.java @@ -26,7 +26,7 @@ public class ChatModelConfig { public DeepSeekChatAssistant deepSeekChatAssistant(OpenAiStreamingChatModel deepSeekChatModel) { return AiServices.builder(DeepSeekChatAssistant.class) .streamingChatModel(deepSeekChatModel) - .systemMessageProvider(chatMemoryId -> "你是一个叫做「知路 AI」的企业级 AI 助手,能帮助用户回答任何问题。") + .systemMessageProvider(chatMemoryId -> deepSeekConfiguration.getPrompt().getSystem()) .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10)) .build(); } diff --git a/backend/src/main/java/com/zl/mjga/config/ai/DeepSeekChatAssistant.java b/backend/src/main/java/com/zl/mjga/config/ai/DeepSeekChatAssistant.java index 8cfe8cd..7b2f9e1 100644 --- a/backend/src/main/java/com/zl/mjga/config/ai/DeepSeekChatAssistant.java +++ b/backend/src/main/java/com/zl/mjga/config/ai/DeepSeekChatAssistant.java @@ -1,7 +1,6 @@ package com.zl.mjga.config.ai; import dev.langchain4j.service.MemoryId; -import dev.langchain4j.service.SystemMessage; import dev.langchain4j.service.TokenStream; import dev.langchain4j.service.UserMessage; import dev.langchain4j.service.memory.ChatMemoryAccess; diff --git a/frontend/src/components/icons/LoadingIcon.vue b/frontend/src/components/icons/LoadingIcon.vue index 2a0f62f..5df718d 100644 --- a/frontend/src/components/icons/LoadingIcon.vue +++ b/frontend/src/components/icons/LoadingIcon.vue @@ -1,6 +1,18 @@ - - - - + + + + + + diff --git a/frontend/src/composables/ai/useAiChat.ts b/frontend/src/composables/ai/useAiChat.ts index 0853c22..72ac244 100644 --- a/frontend/src/composables/ai/useAiChat.ts +++ b/frontend/src/composables/ai/useAiChat.ts @@ -19,7 +19,6 @@ export const useAiChat = () => { try { const baseUrl = `${import.meta.env.VITE_BASE_URL}`; - await fetchEventSource(`${baseUrl}/ai/chat`, { method: "POST", headers: { diff --git a/frontend/src/views/AiChatView.vue b/frontend/src/views/AiChatView.vue index 38b2203..2661044 100644 --- a/frontend/src/views/AiChatView.vue +++ b/frontend/src/views/AiChatView.vue @@ -1,15 +1,19 @@ - + - + + :class="['flex flex-col leading-1.5 p-4 border-gray-200 rounded-e-xl rounded-es-xl dark:bg-gray-700', chatElement.isUser ? 'bg-blue-100' : 'bg-gray-100']"> {{ chatElement.username }} + - {{ chatElement.content }} + + {{ chatElement.content }} + @@ -19,12 +23,12 @@ - + @@ -65,6 +69,7 @@ import { computed, nextTick, onUnmounted, ref, watch } from "vue"; import Button from "../components/Button.vue"; import { useAiChat } from "../composables/ai/useAiChat"; import useUserStore from "../composables/store/useUserStore"; +import LoadingIcon from "@/components/icons/LoadingIcon.vue"; const { messages, chat, isLoading, cancel } = useAiChat(); const { user } = useUserStore(); @@ -76,7 +81,7 @@ const chatElements = computed(() => { return { content: message, username: index % 2 === 0 ? user.username : "DeepSeek", - isUser: index % 2 !== 0, + isUser: index % 2 === 0, }; }); }); @@ -97,7 +102,7 @@ const scrollToBottom = () => { }; const handleSendClick = async (event: Event) => { - chat(inputMessage.value); + await chat(inputMessage.value); inputMessage.value = ""; scrollToBottom(); }; @@ -105,4 +110,8 @@ const handleSendClick = async (event: Event) => { onUnmounted(() => { cancel(); }); + +const handleStopClick = () => { + cancel(); +} diff --git a/frontend/src/views/PositionView.vue b/frontend/src/views/PositionView.vue index 1c79fd2..4db56b0 100644 --- a/frontend/src/views/PositionView.vue +++ b/frontend/src/views/PositionView.vue @@ -62,7 +62,7 @@ @@ -73,7 +73,7 @@ 编辑
{{ chatElement.content }}
+ {{ chatElement.content }} +