From fc274415619f0714f11cd888f2069930a2b693a5 Mon Sep 17 00:00:00 2001 From: skymkmk <i@skymkmk.com> Date: Fri, 13 Sep 2024 21:09:03 +0800 Subject: [PATCH] feat: manual refresh for title --- app/components/chat.tsx | 12 ++++++++++++ app/store/chat.ts | 26 ++++++++++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/components/chat.tsx b/app/components/chat.tsx index dafb98464..bd411826f 100644 --- a/app/components/chat.tsx +++ b/app/components/chat.tsx @@ -43,6 +43,7 @@ import QualityIcon from "../icons/hd.svg"; import StyleIcon from "../icons/palette.svg"; import PluginIcon from "../icons/plugin.svg"; import ShortcutkeyIcon from "../icons/shortcutkey.svg"; +import ReloadIcon from "../icons/reload.svg"; import { ChatMessage, @@ -1541,6 +1542,17 @@ function _Chat() { </div> </div> <div className="window-actions"> + <div className="window-action-button"> + <IconButton + icon={<ReloadIcon />} + bordered + title={Locale.Chat.Actions.RefreshTitle} + onClick={() => { + showToast(Locale.Chat.Actions.RefreshToast); + chatStore.summarizeSession(true); + }} + /> + </div> {!isMobileScreen && ( <div className="window-action-button"> <IconButton diff --git a/app/store/chat.ts b/app/store/chat.ts index 58c105e7e..1609666c3 100644 --- a/app/store/chat.ts +++ b/app/store/chat.ts @@ -572,7 +572,7 @@ export const useChatStore = createPersistStore( }); }, - summarizeSession() { + summarizeSession(refreshTitle: boolean = false) { const config = useAppConfig.getState(); const session = get().currentSession(); const modelConfig = session.mask.modelConfig; @@ -590,16 +590,22 @@ export const useChatStore = createPersistStore( // should summarize topic after chating more than 50 words const SUMMARIZE_MIN_LEN = 50; if ( - config.enableAutoGenerateTitle && - session.topic === DEFAULT_TOPIC && - countMessages(messages) >= SUMMARIZE_MIN_LEN + (config.enableAutoGenerateTitle && + session.topic === DEFAULT_TOPIC && + countMessages(messages) >= SUMMARIZE_MIN_LEN) || + refreshTitle ) { - const topicMessages = messages.concat( - createMessage({ - role: "user", - content: Locale.Store.Prompt.Topic, - }), - ); + const topicMessages = messages + .slice( + messages.length - modelConfig.historyMessageCount, + messages.length, + ) + .concat( + createMessage({ + role: "user", + content: Locale.Store.Prompt.Topic, + }), + ); api.llm.chat({ messages: topicMessages, config: {