Feat: Display Think for Deepseek R1 model #4903 (#4930)

### What problem does this PR solve?

Feat: Display Think for Deepseek R1 model #4903

### Type of change

- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
balibabu 2025-02-13 15:59:42 +08:00 committed by GitHub
parent 50c99599f2
commit ff237f2dbc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 8 deletions

View File

@ -13,18 +13,20 @@
.messageItemContentReverse {
flex-direction: row-reverse;
}
.messageText {
.chunkText();
padding: 0 14px;
background-color: rgba(249, 250, 251, 1);
word-break: break-word;
}
.messageTextBase() {
padding: 6px 10px;
border-radius: 8px;
& > p {
margin: 0;
}
:global(section.think) {
padding-left: 10px;
color: #8b8b8b;
border-left: 2px solid #d5d3d3;
margin-bottom: 10px;
font-size: 12px;
}
}
.messageText {
.chunkText();
@ -37,6 +39,10 @@
.messageTextBase();
background-color: #1668dc;
word-break: break-word;
:global(section.think) {
color: rgb(166, 166, 166);
border-left-color: rgb(78, 78, 86);
}
}
.messageUserText {

View File

@ -20,9 +20,10 @@ import { useTranslation } from 'react-i18next';
import 'katex/dist/katex.min.css'; // `rehype-katex` does not import the CSS for you
import { preprocessLaTeX } from '@/utils/chat';
import { preprocessLaTeX, replaceThinkToSection } from '@/utils/chat';
import { replaceTextByOldReg } from '../utils';
import { pipe } from 'lodash/fp';
import styles from './index.less';
const reg = /(~{2}\d+={2})/g;
@ -50,7 +51,9 @@ const MarkdownContent = ({
text = t('chat.searching');
}
const nextText = replaceTextByOldReg(text);
return loading ? nextText?.concat('~~2$$') : preprocessLaTeX(nextText);
return loading
? nextText?.concat('~~2$$')
: pipe(replaceThinkToSection, preprocessLaTeX)(nextText);
}, [content, loading, t]);
useEffect(() => {

View File

@ -49,3 +49,11 @@ export const preprocessLaTeX = (content: string) => {
);
return inlineProcessedContent;
};
export function replaceThinkToSection(text: string) {
const pattern = /<think>([\s\S]*?)<\/think>/g;
const result = text.replace(pattern, '<section class="think">$1</section>');
return result;
}