Flarum 扩展插件,用 LLM 来做内容审核 - flarum-openai-content-audit

查看 19|回复 0
作者:AkaGhost   
稍早前用 Flarum 搭了个 BitTorrent 主题的论坛,那么作为 UGC 内容社区,内容审核无疑是第一位的。俗话说的好,UGC 有多自由,牢底就能坐穿多久……
不过,Flarum 上面也没什么好用的审核插件,fof/filter 只能做到基本的关键字匹配,Flarum 中文社区倒是有一个阿里云的内容审核插件,但是也仅限于基本的帖子内容审核。
要是用户在帖子里插了个逆天图片,或者换了个逆天头像和用户名,这茶还是喝定了。
所以花了半周,Vibe Coding 了个内容审核的扩展插件,又打磨了半周,似乎工作的还可以。尽管代码质量看起来有待提高,但至少测试都跑过了。
由于目前还没决定好正式发布,也不是专业 PHP 开发者,所以就先没有上传 packagist 。
支持 Flarum v1.8.x ( v2.x 暂时还不支持……),通过 OpenAI 兼容 API ,使用 LLM 进行内容审核。有些权限设置还没来得及改,但现在已经完全可用了,所以出来发一发。
审核支持范围
[td]类型[/td]
[td]插件[/td]
[td]支持的违规处理动作[/td]
用户用户名(包括创建新用户、编辑)
core
重命名为 user__随机数、封禁
用户头像
core
删除、封禁
用户昵称(包括创建新用户、编辑)
flarum/nicknames
删除、封禁
用户签名档
fof/user-bio
更改为特定字符串、封禁
用户头图
sycho/profile-cover
删除、封禁
主题标题(包括创建和编辑)
core
标记为等待审核、封禁
主题、回复的内容(包括创建和编辑)
core
标记为等待审核、封禁
主题、回复的内容图片(包括创建和编辑)( URL 外部直链)
core
标记为等待审核、封禁
主题、回复的上传图片与小文本附件内容(包括创建和编辑)
fof/upload
标记为等待审核、封禁
需要下列插件作为依赖:
  • Approval (flarum/approval)
  • Suspend (flarum/suspend)

    审核、处理违规内容
    对于能够进入审核队列的内容,将会自动进入 “小黑屋”。


    站点管理员可以跳转到审核内容处决定最后处理:

    不支持审核的,将被直接删除或重置。  
    对于严重违规,可以要求 LLM 进行用户封禁操作。封禁用户在任何审核模块下都可以使用。
    违规通知
    在内容违规后,OAICA 会自动向用户发送违规站内信和通知邮件。


    上下文支持
    在处理帖子回复时,会自动包含主贴内容作为上下文。处理用户个人资料也会提供其它部分上下文,以便 LLM 进行综合推理。
    违规处理动作
    支持 hide 和 suspend。具体行为由 Prompt 提示词和 LLM 自身决定。
    使用的 LLM 必须支持多模态和 json_schema 输出能力。建议使用 doubao-seed-1.8 (不建议低于 1.6 )。其它 LLM 未测试,我用的火山引擎平台,每天送的免费 token 额度足够用了。LLM 的智商对审核结果有决定性作用,建议用个稍微好点的。
    目前仅支持兼容 OpenAI 接口的平台,Gemini 等暂不支持。
    先审后放模式
    插件支持先审后放模式,可在管理员面板设置。开启此开关后,帖子发布后将直接进入待审核队列,直至被 OAICA 处理后才会批准。
    在敏感时期启用此功能可降低因队列处理程序趴窝被爆破的风险。
    审核记录
    审核的完整记录内容、上下文、提示词、最终输出响应等会被详细记录在 oaicontaudit_logs 表中。

    截图
    (里面的 token 我已经换掉了;) )



    安装
    没有发布到 packagist ,目前只能通过手动安装:
    cd /path/to/flarum
    mkdir packages && cd packages
    git clone https://github.com/PBH-BTN/flarum-openai-content-audit
    在 composer.json 里添加本地仓库:
    ...
    "repositories": [
            {
                "type": "path",
                "url": "packages/flarum-openai-content-audit",
                "options": {
                    "symlink": true
                }
            }
        ]
    然后:
    composer require ghostchu/openai-content-audit:"@dev"
    更新
    cd packages/flarum-openai-content-audit
    git pull
    cd ..
    php flarum migrate
    php flarum cache:clear
    尾言
    源代码放在了这里: https://github.com/PBH-BTN/flarum-openai-content-audit
    不是很会写 PHP 代码,大部分代码都是由 Claude Code 代劳了。下载外链图片可能有一个 SSRF 的问题暂时还没修(对我个人来说影响不是很大),此外下载等行为可能暴露源站 IP 地址,非高防鸡可能要想个办法处理一下。
    前几天在 Flarum 中文社区也发了个贴,不过太冷清了,没什么人看,就来 V2 也再发一份。
    此外这里还有一个 Prompt 可以用作参考: https://gist.github.com/Ghost-chu/424f2ec618f5d52be20a75c70d661712 如果不知道 Prompt 怎么写,可以从这个样本开始改。
    最后也欢迎来看看我的 PBH-BTN BBS,这个插件就是为这个社区写的 ;)
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部