59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package service
|
||
|
||
import "strings"
|
||
|
||
// AuditService 审核服务
|
||
type AuditService struct {
|
||
// 敏感词列表
|
||
sensitiveWords []string
|
||
}
|
||
|
||
// NewAuditService 创建审核服务
|
||
func NewAuditService() *AuditService {
|
||
return &AuditService{
|
||
sensitiveWords: []string{
|
||
// 政治类
|
||
"台独", "港独", "藏独", "疆独", "分裂", "颠覆",
|
||
// 色情类
|
||
"色情", "裸聊", "约炮", "成人",
|
||
// 暴力类
|
||
"杀人", "虐待", "暴力",
|
||
// 违规诱导
|
||
"转账", "汇款", "银行卡", "密码",
|
||
// AI 身份冒充
|
||
"你是真人", "你是人类", "真人在吗",
|
||
},
|
||
}
|
||
}
|
||
|
||
// AuditText 审核文本内容
|
||
// 返回 true 表示通过,false 表示违规
|
||
func (s *AuditService) AuditText(text string) bool {
|
||
for _, word := range s.sensitiveWords {
|
||
if strings.Contains(text, word) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
}
|
||
|
||
// AuditResponse 审核 AI 回复(逐 token)
|
||
func (s *AuditService) AuditResponse(token string) bool {
|
||
// 累加 token 判断是否违规
|
||
for _, word := range s.sensitiveWords {
|
||
if strings.Contains(token, word) {
|
||
return false
|
||
}
|
||
}
|
||
return true
|
||
}
|
||
|
||
// DefaultSafeResponse 获取默认安全回复
|
||
func (s *AuditService) DefaultSafeResponse() string {
|
||
return "抱歉,这个话题我无法继续,我们换个话题聊聊吧。"
|
||
}
|
||
|
||
// AddSensitiveWord 添加敏感词
|
||
func (s *AuditService) AddSensitiveWord(word string) {
|
||
s.sensitiveWords = append(s.sensitiveWords, word)
|
||
} |