forked from open-webui/open-webui
feat: sanitise response content
This commit is contained in:
parent
4a09342a71
commit
944efd2cd8
2 changed files with 25 additions and 4 deletions
|
@ -17,7 +17,11 @@
|
||||||
import { config, settings } from '$lib/stores';
|
import { config, settings } from '$lib/stores';
|
||||||
import { synthesizeOpenAISpeech } from '$lib/apis/openai';
|
import { synthesizeOpenAISpeech } from '$lib/apis/openai';
|
||||||
import { imageGenerations } from '$lib/apis/images';
|
import { imageGenerations } from '$lib/apis/images';
|
||||||
import { extractSentences } from '$lib/utils';
|
import {
|
||||||
|
extractSentences,
|
||||||
|
revertSanitizedResponseContent,
|
||||||
|
sanitizeResponseContent
|
||||||
|
} from '$lib/utils';
|
||||||
|
|
||||||
import Name from './Name.svelte';
|
import Name from './Name.svelte';
|
||||||
import ProfileImage from './ProfileImage.svelte';
|
import ProfileImage from './ProfileImage.svelte';
|
||||||
|
@ -56,7 +60,7 @@
|
||||||
let loadingSpeech = false;
|
let loadingSpeech = false;
|
||||||
let generatingImage = false;
|
let generatingImage = false;
|
||||||
|
|
||||||
$: tokens = marked.lexer(message.content);
|
$: tokens = marked.lexer(sanitizeResponseContent(message.content));
|
||||||
|
|
||||||
const renderer = new marked.Renderer();
|
const renderer = new marked.Renderer();
|
||||||
|
|
||||||
|
@ -405,8 +409,10 @@
|
||||||
{:else}
|
{:else}
|
||||||
{#each tokens as token}
|
{#each tokens as token}
|
||||||
{#if token.type === 'code'}
|
{#if token.type === 'code'}
|
||||||
<!-- {token.text} -->
|
<CodeBlock
|
||||||
<CodeBlock lang={token.lang} code={token.text} />
|
lang={token.lang}
|
||||||
|
code={revertSanitizedResponseContent(token.text)}
|
||||||
|
/>
|
||||||
{:else}
|
{:else}
|
||||||
{@html marked.parse(token.raw, {
|
{@html marked.parse(token.raw, {
|
||||||
...defaults,
|
...defaults,
|
||||||
|
|
|
@ -31,6 +31,21 @@ export const getModels = async (token: string) => {
|
||||||
// Helper functions
|
// Helper functions
|
||||||
//////////////////////////
|
//////////////////////////
|
||||||
|
|
||||||
|
export const sanitizeResponseContent = (content: string) => {
|
||||||
|
return content
|
||||||
|
.replace(/<\|[a-z]*$/, '')
|
||||||
|
.replace(/<\|[a-z]+\|$/, '')
|
||||||
|
.replace(/<$/, '')
|
||||||
|
.replaceAll(/<\|[a-z]+\|>/g, ' ')
|
||||||
|
.replaceAll(/<br\s?\/?>/gi, '\n')
|
||||||
|
.replaceAll('<', '<')
|
||||||
|
.trim();
|
||||||
|
};
|
||||||
|
|
||||||
|
export const revertSanitizedResponseContent = (content: string) => {
|
||||||
|
return content.replaceAll('<', '<');
|
||||||
|
};
|
||||||
|
|
||||||
export const capitalizeFirstLetter = (string) => {
|
export const capitalizeFirstLetter = (string) => {
|
||||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue