diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 8a3cdf163..3ea827837 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -473,19 +473,21 @@ export const blobToFile = (blob, fileName) => { // {{prompt:start:}} will be replaced with the first characters of the prompt // {{prompt:end:}} will be replaced with the last characters of the prompt // Character length is used as we don't have the ability to tokenize the prompt -export const templatePrompt = (template, prompt) => { +export const templatePrompt = (template: string, prompt: string) => { template = template.replace(/{{prompt}}/g, prompt); - // Replace {{prompt:start:}} with the first characters of the prompt - const startMatch = template.match(/{{prompt:start:(\d+)}}/); - if (startMatch) { + // Replace all instances of {{prompt:start:}} with the first characters of the prompt + const startRegex = /{{prompt:start:(\d+)}}/g; + let startMatch: RegExpMatchArray | null; + while ((startMatch = startRegex.exec(template)) !== null) { const length = parseInt(startMatch[1]); template = template.replace(startMatch[0], prompt.substring(0, length)); } - // Replace {{prompt:end:}} with the last characters of the prompt - const endMatch = template.match(/{{prompt:end:(\d+)}}/); - if (endMatch) { + // Replace all instances of {{prompt:end:}} with the last characters of the prompt + const endRegex = /{{prompt:end:(\d+)}}/g; + let endMatch: RegExpMatchArray | null; + while ((endMatch = endRegex.exec(template)) !== null) { const length = parseInt(endMatch[1]); template = template.replace(endMatch[0], prompt.substring(prompt.length - length)); }