Spaces:
Sleeping
Sleeping
| /** | |
| * finalTextCleanerN7.test.ts — N7: EN disclaimer patterns in stripDisclaimers | |
| * | |
| * finalTextCleaner.ts aveva 23 pattern IT ma 0 pattern EN. | |
| * N2 aveva gia' aggiunto L1_HALLUCINATION_EN a liteAutoCorrectBlock, | |
| * ma stripDisclaimers non aveva mai ricevuto equivalenti EN. | |
| * Rischio: risposte in EN con "As an AI...", "I don't have access..." | |
| * passavano la pulizia finale senza essere strippate. | |
| */ | |
| import { describe, it, expect } from "vitest"; | |
| import { stripDisclaimers } from "@/lib/agentLoop/finalTextCleaner"; | |
| // Trailing EN disclaimers che devono essere rimossi | |
| const EN_TRAILING = [ | |
| ["As an AI language model, I cannot guarantee accuracy.", ""], | |
| ["As an AI assistant, my knowledge is limited.", ""], | |
| ["I don't have access to real-time information.", ""], | |
| ["I don't have access to the internet.", ""], | |
| ["However, I cannot guarantee the accuracy of this information.", ""], | |
| ["However, I can't verify current prices.", ""], | |
| ["My training data cutoff is 2024.", ""], | |
| ["As of my knowledge cutoff, this was the latest data.", ""], | |
| ["I'd recommend checking official sources for verification.", ""], | |
| ["For the most up-to-date information, please check official sources.", ""], | |
| ]; | |
| // Risposte reali con disclaimer in coda — deve restare solo il contenuto utile | |
| const REAL_RESPONSES = [ | |
| [ | |
| "La capitale della Francia e' Parigi. | |
| As an AI language model, I cannot guarantee accuracy.", | |
| "La capitale della Francia e' Parigi.", | |
| ], | |
| [ | |
| "Il PIL italiano e' circa 2.000 miliardi. | |
| However, I can't verify current economic data.", | |
| "Il PIL italiano e' circa 2.000 miliardi.", | |
| ], | |
| [ | |
| "Il modello GPT-4 e' stato rilasciato nel 2023. | |
| My training data cutoff is January 2024.", | |
| "Il modello GPT-4 e' stato rilasciato nel 2023.", | |
| ], | |
| ]; | |
| // Frasi che NON devono essere toccate (NO disclaimer) | |
| const NO_STRIP = [ | |
| "As an AI company, OpenAI has released many models.", // "as an AI company", non "As an AI language model" | |
| "I don't have a favorite color.", // non disclaimer tecnico | |
| "However, I can answer your question now.", // "I can", non "I cannot" | |
| ]; | |
| describe("N7: stripDisclaimers rimuove EN disclaimers (trailing)", () => { | |
| it.each(EN_TRAILING)("EN trailing '%s' -> vuoto", (input, _expected) => { | |
| const result = stripDisclaimers(input as string); | |
| expect(result).toBe(""); | |
| }); | |
| it.each(REAL_RESPONSES)("risposta mista: rimane solo parte utile", (input, expected) => { | |
| const result = stripDisclaimers(input as string); | |
| expect(result).toBe(expected as string); | |
| }); | |
| it("N7-1: non tocca frasi IT esistenti", () => { | |
| const it_input = "La temperatura oggi e' 22 gradi.\nTuttavia ti consiglio di verificare l'app meteo."; | |
| const result = stripDisclaimers(it_input); | |
| expect(result).toBe("La temperatura oggi e' 22 gradi."); | |
| }); | |
| it("N7-2: 'As an AI company' non viene strippato", () => { | |
| const result = stripDisclaimers("As an AI company, OpenAI ha rilasciato molti modelli."); | |
| expect(result).toContain("OpenAI"); | |
| }); | |
| }); | |