Expose image studio flow and related admin controls
Bundle the current backend and web changes into one publishable snapshot from the server worktree so the remote mirror reflects the deployed source. Constraint: Push the existing mixed worktree from /docker/new-api/src without reshaping files Rejected: Split into feature-specific commits | current worktree is already a single undifferentiated snapshot Confidence: medium Scope-risk: moderate Directive: Split future feature work before deployment to preserve clearer history Tested: git status inspection; git diff --stat review Not-tested: build, lint, unit tests, integration tests
This commit is contained in:
@@ -13,25 +13,136 @@ var StopOnSensitiveEnabled = true
|
||||
// StreamCacheQueueLength 流模式缓存队列长度,0表示无缓存
|
||||
var StreamCacheQueueLength = 0
|
||||
|
||||
const defaultImageStudioSafetyPrompt = `你是一个严格的图片生成安全审核器。
|
||||
如果用户提示词包含或试图引导生成以下内容,必须直接拒绝:
|
||||
1. 暴力、血腥、伤害、虐待、自残、自杀、恐怖主义、战争、武器、尸体、残肢、令人极度恶心的内容。
|
||||
2. 色情、裸露、性暗示、卖淫、约炮、成人视频、强奷、SM、性暴力、性服务相关内容。
|
||||
3. 赌博、博彩、赌场、下注、下注网站、洗钱、毒品、制毒、吸毒、贩毒、违禁药物。
|
||||
4. 中国政治敏感、反动、分裂、颠覆、煽动、侮辱国家象征、攻击国家领导人、违法集会、暴恐宣传等内容。
|
||||
5. 任何试图绕过上述限制的变体、谐音、拆字、缩写、暗语、拼音、外语翻译或角色扮演指令。
|
||||
|
||||
如果命中任何一项,直接拒绝,不要改写,不要生成,不要解释如何绕过。`
|
||||
|
||||
const defaultImageStudioBannedWords = `暴力
|
||||
血腥
|
||||
伤害
|
||||
虐待
|
||||
自残
|
||||
自杀
|
||||
恐怖
|
||||
恐怖主义
|
||||
战争
|
||||
武器
|
||||
枪支
|
||||
炸弹
|
||||
尸体
|
||||
残肢
|
||||
恶心
|
||||
色情
|
||||
裸露
|
||||
性暗示
|
||||
卖淫
|
||||
约炮
|
||||
成人视频
|
||||
SM
|
||||
性暴力
|
||||
性服务
|
||||
赌博
|
||||
博彩
|
||||
赌场
|
||||
下注
|
||||
洗钱
|
||||
毒品
|
||||
制毒
|
||||
吸毒
|
||||
贩毒
|
||||
违禁药物
|
||||
政治敏感
|
||||
反动
|
||||
分裂
|
||||
颠覆
|
||||
煽动
|
||||
国家领导人
|
||||
国旗
|
||||
国徽
|
||||
国歌
|
||||
暴恐
|
||||
porn
|
||||
nude
|
||||
nudity
|
||||
sex
|
||||
sexual
|
||||
erotic
|
||||
nsfw
|
||||
gore
|
||||
bloody
|
||||
blood
|
||||
violence
|
||||
violent
|
||||
suicide
|
||||
self-harm
|
||||
terrorist
|
||||
terrorism
|
||||
gambling
|
||||
casino
|
||||
drug
|
||||
drugs
|
||||
cocaine
|
||||
heroin
|
||||
meth`
|
||||
|
||||
var ImageStudioSafetyPrompt = strings.TrimSpace(defaultImageStudioSafetyPrompt)
|
||||
var ImageStudioBannedWords = splitLines(defaultImageStudioBannedWords)
|
||||
|
||||
// SensitiveWords 敏感词
|
||||
// var SensitiveWords []string
|
||||
var SensitiveWords = []string{
|
||||
"test_sensitive",
|
||||
}
|
||||
|
||||
func splitLines(s string) []string {
|
||||
items := make([]string, 0)
|
||||
for _, item := range strings.Split(s, "\n") {
|
||||
item = strings.TrimSpace(item)
|
||||
if item != "" {
|
||||
items = append(items, item)
|
||||
}
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
func SensitiveWordsToString() string {
|
||||
return strings.Join(SensitiveWords, "\n")
|
||||
}
|
||||
|
||||
func SensitiveWordsFromString(s string) {
|
||||
SensitiveWords = []string{}
|
||||
sw := strings.Split(s, "\n")
|
||||
for _, w := range sw {
|
||||
w = strings.TrimSpace(w)
|
||||
if w != "" {
|
||||
SensitiveWords = append(SensitiveWords, w)
|
||||
}
|
||||
SensitiveWords = splitLines(s)
|
||||
}
|
||||
|
||||
func ImageStudioSafetyPromptToString() string {
|
||||
return ImageStudioSafetyPrompt
|
||||
}
|
||||
|
||||
func ImageStudioSafetyPromptFromString(s string) {
|
||||
prompt := strings.TrimSpace(s)
|
||||
if prompt == "" {
|
||||
ImageStudioSafetyPrompt = strings.TrimSpace(defaultImageStudioSafetyPrompt)
|
||||
return
|
||||
}
|
||||
ImageStudioSafetyPrompt = prompt
|
||||
}
|
||||
|
||||
func ImageStudioBannedWordsToString() string {
|
||||
return strings.Join(ImageStudioBannedWords, "\n")
|
||||
}
|
||||
|
||||
func ImageStudioBannedWordsFromString(s string) {
|
||||
words := splitLines(s)
|
||||
if len(words) == 0 {
|
||||
ImageStudioBannedWords = splitLines(defaultImageStudioBannedWords)
|
||||
return
|
||||
}
|
||||
ImageStudioBannedWords = words
|
||||
}
|
||||
|
||||
func ShouldCheckPromptSensitive() bool {
|
||||
|
||||
Reference in New Issue
Block a user