Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1x | export function renderTemplate( template: string, variables: Record<string, unknown>, allowedVariables?: string[], ): string { // If allowedVariables is specified, only use variables that are in the allowed list const filteredVariables = allowedVariables ? Object.fromEntries( Object.entries(variables).filter(([key]) => allowedVariables.includes(key), ), ) : variables; let systemPrompt = template; // Simple Jinja-style variable replacement Object.entries(filteredVariables).forEach(([key, value]) => { const placeholder = `{{ ${key} }}`; systemPrompt = systemPrompt.replace( new RegExp(placeholder.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), String(value), ); }); return systemPrompt; } |