From 2c6da4113d47c7f11c1139daf3d1ba61afb3894a Mon Sep 17 00:00:00 2001 From: Wang Qi Date: Fri, 31 Jul 2026 11:25:29 +0800 Subject: [PATCH] Fix: multiple model chat pass-in session_id, and do not save session. (#17581) --- api/apps/restful_apis/chat_api.py | 7 +++++-- web/src/components/message-input/next.tsx | 3 ++- .../chat/chat-box/next-multiple-chat-box.tsx | 18 ++++-------------- .../hooks/use-send-single-message.ts | 9 +++++++-- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/api/apps/restful_apis/chat_api.py b/api/apps/restful_apis/chat_api.py index 13eee8c46f..a6cbee2e48 100644 --- a/api/apps/restful_apis/chat_api.py +++ b/api/apps/restful_apis/chat_api.py @@ -182,7 +182,7 @@ def _build_default_completion_dialog(): ) -async def _create_session_for_completion(chat_id, dialog, user_id): +async def _create_session_for_completion(chat_id, dialog, user_id, save_session=True): conv = { "id": get_uuid(), "dialog_id": chat_id, @@ -191,6 +191,9 @@ async def _create_session_for_completion(chat_id, dialog, user_id): "user_id": user_id, "reference": [], } + if not save_session: + conv["id"] = None + return SimpleNamespace(**conv) await thread_pool_exec(ConversationService.save, **conv) ok, conv_obj = await thread_pool_exec(ConversationService.get_by_id, conv["id"]) if not ok: @@ -1224,7 +1227,7 @@ async def session_completion(chat_id_in_arg=""): if conv.dialog_id != chat_id: return get_data_error_result(message="Session does not belong to this chat!") else: - conv = await _create_session_for_completion(chat_id, dia, current_user.id) + conv = await _create_session_for_completion(chat_id, dia, current_user.id, save_session=store_history_messages) session_id = conv.id if pass_all_history_messages: diff --git a/web/src/components/message-input/next.tsx b/web/src/components/message-input/next.tsx index 26e570618b..e3a0888c2a 100644 --- a/web/src/components/message-input/next.tsx +++ b/web/src/components/message-input/next.tsx @@ -26,7 +26,8 @@ import { AudioButton } from '../ui/audio-button'; export type NextMessageInputOnPressEnterParameter = { enableThinking?: string; enableInternet?: boolean; - store_history_messages?: boolean; + storeHistoryMessages?: boolean; + omitSessionId?: boolean; }; interface NextMessageInputProps { diff --git a/web/src/pages/next-chats/chat/chat-box/next-multiple-chat-box.tsx b/web/src/pages/next-chats/chat/chat-box/next-multiple-chat-box.tsx index fa20ab5739..a311d6e1e1 100644 --- a/web/src/pages/next-chats/chat/chat-box/next-multiple-chat-box.tsx +++ b/web/src/pages/next-chats/chat/chat-box/next-multiple-chat-box.tsx @@ -50,7 +50,6 @@ import { useGetSendButtonDisabled, useSendButtonDisabled, } from '../../hooks/use-button-disabled'; -import { useCreateConversationBeforeSendMessage } from '../../hooks/use-chat-url'; import { useCreateConversationBeforeUploadDocument } from '../../hooks/use-create-conversation'; import { HandlePressEnterType, @@ -139,7 +138,7 @@ const ChatCard = forwardRef(function ChatCard( // resend with the card's model settings (llm_id, temperature, ...). const sendCardMessage = useCallback( ({ message, messages }: { message: IMessage; messages?: IMessage[] }) => - sendMessage({ message, messages, ...form.getValues(), store_history_messages: false }), + sendMessage({ message, messages, ...form.getValues(), storeHistoryMessages: false, omitSessionId: true }), [sendMessage, form], ); @@ -182,7 +181,7 @@ const ChatCard = forwardRef(function ChatCard( useImperativeHandle( ref, (): HandlePressEnterType => (params) => - handlePressEnter({ ...params, ...form.getValues(), store_history_messages: false }), + handlePressEnter({ ...params, ...form.getValues(), storeHistoryMessages: false, omitSessionId: true }), ); useEffect(() => { @@ -279,6 +278,7 @@ const ChatCard = forwardRef(function ChatCard( regenerateMessage={regenerateMessage} sendLoading={sendLoading} clickDocumentButton={clickDocumentButton} + showLikeButton={false} > ); })} @@ -298,9 +298,6 @@ export function MultipleChatBox({ stopOutputMessage, conversation, }: MultipleChatBoxProps) { - const { createConversationBeforeSendMessage } = - useCreateConversationBeforeSendMessage(); - const { createConversationBeforeUploadDocument } = useCreateConversationBeforeUploadDocument(); const { conversationId } = useGetChatSearchParams(); @@ -342,21 +339,14 @@ export function MultipleChatBox({ }: NextMessageInputOnPressEnterParameter) => { if (trim(value) === '') return; - const data = await createConversationBeforeSendMessage(value); - - if (data === undefined) { - return; - } - Object.values(boxesRef.current).forEach((box) => { box?.({ enableInternet, enableThinking, - ...data, }); }); }, - [createConversationBeforeSendMessage, value], + [value], ); return ( diff --git a/web/src/pages/next-chats/hooks/use-send-single-message.ts b/web/src/pages/next-chats/hooks/use-send-single-message.ts index fa6507685f..5bb575249d 100644 --- a/web/src/pages/next-chats/hooks/use-send-single-message.ts +++ b/web/src/pages/next-chats/hooks/use-send-single-message.ts @@ -60,6 +60,8 @@ export function useSendSingleMessage({ messages, enableInternet, enableThinking, + storeHistoryMessages, + omitSessionId, ...params }: { message: IMessage; @@ -71,7 +73,7 @@ export function useSendSingleMessage({ api.completionUrl, { chat_id: chatId, - session_id: sessionId, + ...(omitSessionId ? {} : { session_id: sessionId }), messages: [ ...(Array.isArray(messages) && messages?.length > 0 ? messages @@ -81,6 +83,9 @@ export function useSendSingleMessage({ reasoning: Number(enableThinking), internet: enableInternet, ...params, + ...(storeHistoryMessages === undefined + ? {} + : { store_history_messages: storeHistoryMessages }), pass_all_history_messages: true, }, controller, @@ -112,7 +117,7 @@ export function useSendSingleMessage({ targetConversationId, ...params }: NextMessageInputOnPressEnterParameter & - CreateConversationBeforeSendMessageReturnType) => { + Partial>) => { if (trim(value) === '' || !done) return; const id = uuid();