| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| package setting |
|
|
| import ( |
| "regexp" |
| "strings" |
| ) |
|
|
| var CheckSensitiveEnabled = true |
| var CheckSensitiveOnPromptEnabled = true |
|
|
| var SafeCheckExemptEnabled = false |
| var SafeCheckExemptGroup = "nsfw-ok" |
|
|
| |
|
|
| |
| var StopOnSensitiveEnabled = true |
|
|
| |
| var StreamCacheQueueLength = 0 |
|
|
| |
| var SensitiveWords = []string{ |
| "test_sensitive", |
| } |
|
|
| |
| var RegexSensitiveWords = []string{} |
|
|
| |
| func isValidRegex(pattern string) bool { |
| _, err := regexp.Compile(pattern) |
| return err == nil |
| } |
|
|
| func SensitiveWordsToString() string { |
| var builder strings.Builder |
|
|
| |
| for _, word := range SensitiveWords { |
| builder.WriteString(word) |
| builder.WriteString("\n") |
| } |
|
|
| |
| for _, pattern := range RegexSensitiveWords { |
| builder.WriteString("regex:") |
| builder.WriteString(pattern) |
| builder.WriteString("\n") |
| } |
|
|
| return builder.String() |
| } |
|
|
| func SensitiveWordsFromString(s string) { |
| SensitiveWords = []string{} |
| RegexSensitiveWords = []string{} |
|
|
| lines := strings.Split(s, "\n") |
| for _, line := range lines { |
| line = strings.TrimSpace(line) |
| if line == "" { |
| continue |
| } |
|
|
| |
| if strings.HasPrefix(line, "regex:") { |
| pattern := strings.TrimPrefix(line, "regex:") |
| if isValidRegex(pattern) { |
| RegexSensitiveWords = append(RegexSensitiveWords, pattern) |
| } |
| } else { |
| SensitiveWords = append(SensitiveWords, line) |
| } |
| } |
| } |
|
|
| func ShouldCheckPromptSensitive() bool { |
| return CheckSensitiveEnabled && CheckSensitiveOnPromptEnabled |
| } |
|
|
| func ShouldCheckPromptSensitiveWithGroup(group string) bool { |
| if SafeCheckExemptEnabled && group == SafeCheckExemptGroup { |
| return false |
| } |
| return ShouldCheckPromptSensitive() |
| } |
|
|
| |
| |
| |
|
|