This commit is contained in:
2026-08-16 23:42:00 +02:00
parent 6e77154228
commit 92f046b542
32 changed files with 1443 additions and 105 deletions
+8 -1
View File
@@ -10,6 +10,11 @@ import (
const maxPromptFieldRunes = 4000
// maxOutputFieldRunes bounds stored / polled model text (titles + multi-section
// formula HTML descriptions). Must stay well above MaxTokensEnhance (~16k tokens)
// so SanitizeOutput does not chop JSON completion bodies or A1 HTML mid-string.
const maxOutputFieldRunes = 120000
var controlOrInject = regexp.MustCompile(`(?i)(ignore\s+(all\s+)?(previous|prior|above)|disregard\s+(all\s+)?(previous|prior)|forget\s+(all\s+)?(previous|prior)|system\s*:|assistant\s*:|<\s*/?\s*script)`)
// SanitizeText strips control chars, truncates, and soft-neutralizes prompt-injection phrases.
@@ -31,6 +36,8 @@ func SanitizeText(s string) string {
}
// SanitizeOutput keeps model text printable and bounded for storage/UI.
// Uses a higher rune cap than SanitizeText so formula HTML and full enhance
// JSON completions are not truncated at 4k.
func SanitizeOutput(s string) string {
s = strings.TrimSpace(s)
if s == "" {
@@ -43,7 +50,7 @@ func SanitizeOutput(s string) string {
b.WriteRune(r)
}
}
return truncateRunes(b.String(), maxPromptFieldRunes)
return truncateRunes(b.String(), maxOutputFieldRunes)
}
func truncateRunes(s string, max int) string {