ai-tube / src /lib /prompts /dirtyLLMResponseCleaner.ts
jbilcke-hf's picture
jbilcke-hf HF staff
working on some new features
3d4392e
raw
history blame
872 Bytes
export function dirtyLLMResponseCleaner(input: string): string {
let str = (
`${input || ""}`
// a summary of all the weird hallucinations I saw it make..
.replaceAll(`"\n`, `",\n`) // fix missing commas at the end of a line
.replaceAll(`"]`, `"}]`)
.replaceAll(/"\S*,?\S*\]/gi, `"}]`)
.replaceAll(/"\S*,?\S*\}\S*]/gi, `"}]`)
// this removes the trailing commas (which are valid in JS but not JSON)
.replace(/,(?=\s*?[\}\]])/g, '')
.replaceAll("}}", "}")
.replaceAll("]]", "]")
.replaceAll("[[", "[")
.replaceAll("{{", "{")
.replaceAll(",,", ",")
)
// repair missing end of JSON array
if (str.at(-1) === '}') {
str = str + "]"
}
if (str.at(-1) === '"') {
str = str + "}]"
}
if (str[0] === '{') {
str = "[" + str
}
if (str[0] === '"') {
str = "[{" + str
}
return str
}