Documentation
¶
Overview ¶
Package filter 提供 Hexagon AI Agent 框架的内容过滤
支持敏感词过滤、有害内容检测、成人内容过滤等功能。
Index ¶
- func NormalizeText(text string) string
- type ACTrie
- type ChainMode
- type ContentCategory
- type ContentFilter
- type FilterAction
- type FilterChain
- type FilterConfig
- type FilterOption
- type FilterResult
- type Finding
- type FindingType
- type RuleBasedClassifier
- type SensitiveWord
- type SensitiveWordFilter
- func (f *SensitiveWordFilter) AddWord(word, category string, severity Severity)
- func (f *SensitiveWordFilter) AddWords(words []string, category string, severity Severity)
- func (f *SensitiveWordFilter) Filter(ctx context.Context, content string) (*FilterResult, error)
- func (f *SensitiveWordFilter) FilterBatch(ctx context.Context, contents []string) ([]*FilterResult, error)
- func (f *SensitiveWordFilter) Name() string
- func (f *SensitiveWordFilter) RemoveWord(word string)
- type Severity
- type ToxicityClassifier
- type ToxicityFilter
- func (f *ToxicityFilter) Filter(ctx context.Context, content string) (*FilterResult, error)
- func (f *ToxicityFilter) FilterBatch(ctx context.Context, contents []string) ([]*FilterResult, error)
- func (f *ToxicityFilter) Name() string
- func (f *ToxicityFilter) SetClassifier(classifier ToxicityClassifier)
- type ToxicityScore
- type TrieMatch
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ACTrie ¶
type ACTrie struct {
// contains filtered or unexported fields
}
ACTrie Aho-Corasick 自动机
type ContentCategory ¶
type ContentCategory string
ContentCategory 内容类别
const ( CategorySafe ContentCategory = "safe" CategorySensitive ContentCategory = "sensitive" CategoryHarmful ContentCategory = "harmful" CategoryAdult ContentCategory = "adult" CategoryViolence ContentCategory = "violence" CategoryHate ContentCategory = "hate" CategorySpam ContentCategory = "spam" CategoryScam ContentCategory = "scam" CategoryIllegal ContentCategory = "illegal" )
type ContentFilter ¶
type ContentFilter interface {
// Name 过滤器名称
Name() string
// Filter 过滤内容
Filter(ctx context.Context, content string) (*FilterResult, error)
// FilterBatch 批量过滤
FilterBatch(ctx context.Context, contents []string) ([]*FilterResult, error)
}
ContentFilter 内容过滤器接口
type FilterAction ¶
type FilterAction string
FilterAction 过滤动作
const ( ActionAllow FilterAction = "allow" ActionWarn FilterAction = "warn" ActionRedact FilterAction = "redact" ActionBlock FilterAction = "block" ActionReview FilterAction = "review" )
type FilterChain ¶
type FilterChain struct {
// contains filtered or unexported fields
}
FilterChain 过滤器链
func NewFilterChain ¶
func NewFilterChain(mode ChainMode, filters ...ContentFilter) *FilterChain
NewFilterChain 创建过滤器链
func (*FilterChain) AddFilter ¶
func (c *FilterChain) AddFilter(filter ContentFilter)
AddFilter 添加过滤器
func (*FilterChain) Filter ¶
func (c *FilterChain) Filter(ctx context.Context, content string) (*FilterResult, error)
Filter 过滤
func (*FilterChain) FilterBatch ¶
func (c *FilterChain) FilterBatch(ctx context.Context, contents []string) ([]*FilterResult, error)
FilterBatch 批量过滤
type FilterConfig ¶
type FilterConfig struct {
// Enabled 是否启用
Enabled bool
// Threshold 阈值
Threshold float64
// Action 默认动作
Action FilterAction
// Categories 要检测的类别
Categories []ContentCategory
// Allowlist 白名单
Allowlist []string
// CustomPatterns 自定义模式
CustomPatterns []string
}
FilterConfig 过滤器配置
type FilterOption ¶
type FilterOption func(*FilterConfig)
FilterOption 过滤选项
func WithFilterAction ¶
func WithFilterAction(action FilterAction) FilterOption
WithFilterAction 设置默认动作
func WithFilterCategories ¶
func WithFilterCategories(categories ...ContentCategory) FilterOption
WithFilterCategories 设置检测类别
func WithFilterThreshold ¶
func WithFilterThreshold(threshold float64) FilterOption
WithFilterThreshold 设置阈值
type FilterResult ¶
type FilterResult struct {
// Original 原始内容
Original string `json:"original"`
// Filtered 过滤后的内容
Filtered string `json:"filtered"`
// Passed 是否通过
Passed bool `json:"passed"`
// Score 风险分数(0-1)
Score float64 `json:"score"`
// Category 内容分类
Category ContentCategory `json:"category"`
// Findings 发现的问题
Findings []Finding `json:"findings,omitempty"`
// Action 建议的处理动作
Action FilterAction `json:"action"`
// Metadata 元数据
Metadata map[string]any `json:"metadata,omitempty"`
}
FilterResult 过滤结果
type Finding ¶
type Finding struct {
// Type 问题类型
Type FindingType `json:"type"`
// Content 问题内容
Content string `json:"content"`
// Position 位置
Position int `json:"position"`
// Length 长度
Length int `json:"length"`
// Severity 严重程度
Severity Severity `json:"severity"`
// Category 类别
Category string `json:"category"`
}
Finding 发现的问题
type FindingType ¶
type FindingType string
FindingType 发现类型
const ( FindingSensitiveWord FindingType = "sensitive_word" FindingToxicity FindingType = "toxicity" FindingAdultContent FindingType = "adult_content" FindingViolence FindingType = "violence" FindingHateSpeech FindingType = "hate_speech" FindingSpam FindingType = "spam" FindingScam FindingType = "scam" FindingPersonalInfo FindingType = "personal_info" FindingMalware FindingType = "malware" )
type RuleBasedClassifier ¶
type RuleBasedClassifier struct {
// contains filtered or unexported fields
}
RuleBasedClassifier 基于规则的分类器
func NewRuleBasedClassifier ¶
func NewRuleBasedClassifier() *RuleBasedClassifier
NewRuleBasedClassifier 创建规则分类器
func (*RuleBasedClassifier) Classify ¶
func (c *RuleBasedClassifier) Classify(ctx context.Context, content string) (*ToxicityScore, error)
Classify 分类
type SensitiveWord ¶
type SensitiveWord struct {
Word string `json:"word"`
Category string `json:"category"`
Severity Severity `json:"severity"`
Action FilterAction `json:"action"`
}
SensitiveWord 敏感词
type SensitiveWordFilter ¶
type SensitiveWordFilter struct {
// contains filtered or unexported fields
}
SensitiveWordFilter 敏感词过滤器
func NewSensitiveWordFilter ¶
func NewSensitiveWordFilter(opts ...FilterOption) *SensitiveWordFilter
NewSensitiveWordFilter 创建敏感词过滤器
func (*SensitiveWordFilter) AddWord ¶
func (f *SensitiveWordFilter) AddWord(word, category string, severity Severity)
AddWord 添加敏感词
注意:此方法与 Filter 共享同一把锁(f.mu),确保添加敏感词时不会与过滤操作并发冲突。
func (*SensitiveWordFilter) AddWords ¶
func (f *SensitiveWordFilter) AddWords(words []string, category string, severity Severity)
AddWords 批量添加敏感词
在同一把锁内完成所有词的添加和 trie 重建,避免: 1. 循环中多次加解锁导致的中间状态对并发 Filter 可见 2. buildTrie 调用时 words map 与 trie 不一致
func (*SensitiveWordFilter) Filter ¶
func (f *SensitiveWordFilter) Filter(ctx context.Context, content string) (*FilterResult, error)
Filter 过滤内容
func (*SensitiveWordFilter) FilterBatch ¶
func (f *SensitiveWordFilter) FilterBatch(ctx context.Context, contents []string) ([]*FilterResult, error)
FilterBatch 批量过滤
func (*SensitiveWordFilter) RemoveWord ¶
func (f *SensitiveWordFilter) RemoveWord(word string)
RemoveWord 移除敏感词
type ToxicityClassifier ¶
type ToxicityClassifier interface {
Classify(ctx context.Context, content string) (*ToxicityScore, error)
}
ToxicityClassifier 有害内容分类器接口
type ToxicityFilter ¶
type ToxicityFilter struct {
// contains filtered or unexported fields
}
ToxicityFilter 有害内容过滤器
func NewToxicityFilter ¶
func NewToxicityFilter(opts ...FilterOption) *ToxicityFilter
NewToxicityFilter 创建有害内容过滤器
func (*ToxicityFilter) Filter ¶
func (f *ToxicityFilter) Filter(ctx context.Context, content string) (*FilterResult, error)
Filter 过滤内容
func (*ToxicityFilter) FilterBatch ¶
func (f *ToxicityFilter) FilterBatch(ctx context.Context, contents []string) ([]*FilterResult, error)
FilterBatch 批量过滤
func (*ToxicityFilter) SetClassifier ¶
func (f *ToxicityFilter) SetClassifier(classifier ToxicityClassifier)
SetClassifier 设置分类器
type ToxicityScore ¶
type ToxicityScore struct {
Overall float64 `json:"overall"`
Hate float64 `json:"hate"`
Violence float64 `json:"violence"`
Sexual float64 `json:"sexual"`
SelfHarm float64 `json:"self_harm"`
Harassment float64 `json:"harassment"`
Threatening float64 `json:"threatening"`
}
ToxicityScore 有害分数