diff --git a/src/renderer/src/pages/home/Messages/Message.tsx b/src/renderer/src/pages/home/Messages/Message.tsx index 81d7348e..a5c18990 100644 --- a/src/renderer/src/pages/home/Messages/Message.tsx +++ b/src/renderer/src/pages/home/Messages/Message.tsx @@ -31,8 +31,13 @@ interface Props { onDeleteMessage?: (message: Message) => Promise } -const getMessageBackground = (isBubbleStyle: boolean, isAssistantMessage: boolean) => - isBubbleStyle ? (isAssistantMessage ? 'var(--chat-background-assistant)' : 'var(--chat-background-user)') : undefined +const getMessageBackground = (isBubbleStyle: boolean, isAssistantMessage: boolean) => { + return isBubbleStyle + ? isAssistantMessage + ? 'var(--chat-background-assistant)' + : 'var(--chat-background-user)' + : undefined +} const MessageItem: FC = ({ message: _message, diff --git a/src/renderer/src/pages/home/Messages/MessageContent.tsx b/src/renderer/src/pages/home/Messages/MessageContent.tsx index c9f48cf4..8129cc0c 100644 --- a/src/renderer/src/pages/home/Messages/MessageContent.tsx +++ b/src/renderer/src/pages/home/Messages/MessageContent.tsx @@ -1,8 +1,9 @@ import { SyncOutlined, TranslationOutlined } from '@ant-design/icons' import { Message, Model } from '@renderer/types' import { getBriefInfo } from '@renderer/utils' +import { withMessageThought } from '@renderer/utils/formats' import { Divider, Flex } from 'antd' -import React from 'react' +import React, { Fragment } from 'react' import { useTranslation } from 'react-i18next' import BeatLoader from 'react-spinners/BeatLoader' import styled from 'styled-components' @@ -13,11 +14,14 @@ import MessageError from './MessageError' import MessageSearchResults from './MessageSearchResults' import MessageThought from './MessageThought' -const MessageContent: React.FC<{ +interface Props { message: Message model?: Model -}> = ({ message, model }) => { +} + +const MessageContent: React.FC = ({ message: _message, model }) => { const { t } = useTranslation() + const message = withMessageThought(_message) if (message.status === 'sending') { return ( @@ -37,14 +41,14 @@ const MessageContent: React.FC<{ } return ( - <> + {message.mentions?.map((model) => {'@' + model.name})} {message.translatedContent && ( - <> + @@ -53,11 +57,11 @@ const MessageContent: React.FC<{ ) : ( )} - + )} - + ) } diff --git a/src/renderer/src/utils/formats.ts b/src/renderer/src/utils/formats.ts index f62ee389..6f354bc8 100644 --- a/src/renderer/src/utils/formats.ts +++ b/src/renderer/src/utils/formats.ts @@ -80,3 +80,22 @@ export function withGeminiGrounding(message: Message) { return content } + +export function withMessageThought(message: Message) { + const content = message.content + + const thinkPattern = /(.*?)<\/think>/s + const matches = content.match(thinkPattern) + + if (matches) { + const reasoning_content = matches[1].trim() + const remainingContent = content.replace(thinkPattern, '').trim() + if (reasoning_content) { + message.reasoning_content = reasoning_content + message.content = remainingContent + return message + } + } + + return message +}