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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek