diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index c7ad576a8..818e53ec0 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -15,12 +15,13 @@ const dispatch = createEventDispatcher(); - import { config, models, settings } from '$lib/stores'; + import { config, models, settings, user } from '$lib/stores'; import { synthesizeOpenAISpeech } from '$lib/apis/audio'; import { imageGenerations } from '$lib/apis/images'; import { approximateToHumanReadable, extractSentences, + replaceTokens, revertSanitizedResponseContent, sanitizeResponseContent } from '$lib/utils'; @@ -74,7 +75,9 @@ let selectedCitation = null; - $: tokens = marked.lexer(sanitizeResponseContent(message?.content)); + $: tokens = marked.lexer( + replaceTokens(sanitizeResponseContent(message?.content), model?.name, $user?.name) + ); const renderer = new marked.Renderer(); diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index ac852ab77..fbf183325 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -16,6 +16,23 @@ export const sanitizeResponseContent = (content: string) => { .trim(); }; +export const replaceTokens = (content, char, user) => { + const charToken = /{{char}}/gi; + const userToken = /{{user}}/gi; + + // Replace {{char}} if char is provided + if (char !== undefined && char !== null) { + content = content.replace(charToken, char); + } + + // Replace {{user}} if user is provided + if (user !== undefined && user !== null) { + content = content.replace(userToken, user); + } + + return content; +}; + export const revertSanitizedResponseContent = (content: string) => { return content.replaceAll('<', '<').replaceAll('>', '>'); }; diff --git a/src/routes/(app)/workspace/models/create/+page.svelte b/src/routes/(app)/workspace/models/create/+page.svelte index 558f754ff..eb2ed761b 100644 --- a/src/routes/(app)/workspace/models/create/+page.svelte +++ b/src/routes/(app)/workspace/models/create/+page.svelte @@ -232,8 +232,13 @@ name = character.name; - const turndownService = new TurndownService(); - info.meta.description = turndownService.turndown(character.summary); + const pattern = /<\/?[a-z][\s\S]*>/i; + if (character.summary.match(pattern)) { + const turndownService = new TurndownService(); + info.meta.description = turndownService.turndown(character.summary); + } else { + info.meta.description = character.summary; + } info.params.system = `Personality: ${character.personality}${ character?.scenario ? `\nScenario: ${character.scenario}` : ''