mirror of
https://github.com/open-webui/open-webui
synced 2025-04-09 15:15:53 +00:00
refac
This commit is contained in:
parent
e3214d08b5
commit
1635dcb69b
@ -1120,7 +1120,7 @@ async def process_chat_response(
|
||||
output = html.escape(json.dumps(output))
|
||||
|
||||
if raw:
|
||||
content = f'{content}<details type="code_interpreter" done="true" output="{output}">\n<summary>Analyzed</summary>\n```{lang}\n{block["content"]}\n```\n```output\n{output}\n```\n</details>\n'
|
||||
content = f'{content}<code_interpreter type="code" lang="{lang}">\n{block["content"]}\n</code_interpreter>\n```output\n{output}\n```\n'
|
||||
else:
|
||||
content = f'{content}<details type="code_interpreter" done="true" output="{output}">\n<summary>Analyzed</summary>\n```{lang}\n{block["content"]}\n```\n</details>\n'
|
||||
else:
|
||||
@ -1312,6 +1312,12 @@ async def process_chat_response(
|
||||
)
|
||||
|
||||
if end:
|
||||
data = {
|
||||
"content": serialize_content_blocks(
|
||||
content_blocks
|
||||
),
|
||||
}
|
||||
|
||||
break
|
||||
|
||||
if ENABLE_REALTIME_CHAT_SAVE:
|
||||
|
@ -45,7 +45,7 @@
|
||||
promptTemplate,
|
||||
splitStream,
|
||||
sleep,
|
||||
removeDetailsWithReasoning,
|
||||
removeDetails,
|
||||
getPromptVariables
|
||||
} from '$lib/utils';
|
||||
|
||||
@ -1338,8 +1338,17 @@
|
||||
parentId: string,
|
||||
{ modelId = null, modelIdx = null, newChat = false } = {}
|
||||
) => {
|
||||
const _chatId = JSON.parse(JSON.stringify($chatId));
|
||||
// If modelId is provided, use it, else use selected model
|
||||
let selectedModelIds = modelId
|
||||
? [modelId]
|
||||
: atSelectedModel !== undefined
|
||||
? [atSelectedModel.id]
|
||||
: selectedModels;
|
||||
|
||||
// Create response messages for each selected model
|
||||
const responseMessageIds: Record<PropertyKey, string> = {};
|
||||
|
||||
const _chatId = JSON.parse(JSON.stringify($chatId));
|
||||
// Create new chat if newChat is true and first user message
|
||||
if (
|
||||
newChat &&
|
||||
@ -1351,15 +1360,6 @@
|
||||
await saveChatHandler(_chatId);
|
||||
}
|
||||
|
||||
// If modelId is provided, use it, else use selected model
|
||||
let selectedModelIds = modelId
|
||||
? [modelId]
|
||||
: atSelectedModel !== undefined
|
||||
? [atSelectedModel.id]
|
||||
: selectedModels;
|
||||
|
||||
// Create response messages for each selected model
|
||||
const responseMessageIds: Record<PropertyKey, string> = {};
|
||||
for (const [_modelIdx, modelId] of selectedModelIds.entries()) {
|
||||
const model = $models.filter((m) => m.id === modelId).at(0);
|
||||
|
||||
@ -1515,7 +1515,7 @@
|
||||
: undefined,
|
||||
...createMessagesList(history, responseMessageId).map((message) => ({
|
||||
...message,
|
||||
content: removeDetailsWithReasoning(message.content)
|
||||
content: removeDetails(message.content, ['reasoning', 'code_interpreter'])
|
||||
}))
|
||||
]
|
||||
.filter((message) => message?.content?.trim())
|
||||
|
@ -668,8 +668,15 @@ export const cleanText = (content: string) => {
|
||||
return removeFormattings(removeEmojis(content.trim()));
|
||||
};
|
||||
|
||||
export const removeDetailsWithReasoning = (content) => {
|
||||
return content.replace(/<details\s+type="reasoning"[^>]*>.*?<\/details>/gis, '').trim();
|
||||
export const removeDetails = (content, types) => {
|
||||
for (const type of types) {
|
||||
content = content.replace(
|
||||
new RegExp(`<details\\s+type="${type}"[^>]*>.*?<\\/details>`, 'gis'),
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
return content;
|
||||
};
|
||||
|
||||
// This regular expression matches code blocks marked by triple backticks
|
||||
@ -741,7 +748,7 @@ export const extractSentencesForAudio = (text: string) => {
|
||||
};
|
||||
|
||||
export const getMessageContentParts = (content: string, split_on: string = 'punctuation') => {
|
||||
content = removeDetailsWithReasoning(content);
|
||||
content = removeDetails(content, ['reasoning', 'code_interpreter']);
|
||||
const messageContentParts: string[] = [];
|
||||
|
||||
switch (split_on) {
|
||||
|
Loading…
Reference in New Issue
Block a user