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

20 小时 22 分钟前
 AkaGhost

稍早前用 Flarum 搭了个 BitTorrent 主题的论坛,那么作为 UGC 内容社区,内容审核无疑是第一位的。俗话说的好,UGC 有多自由,牢底就能坐穿多久……

不过,Flarum 上面也没什么好用的审核插件,fof/filter 只能做到基本的关键字匹配,Flarum 中文社区倒是有一个阿里云的内容审核插件,但是也仅限于基本的帖子内容审核。

要是用户在帖子里插了个逆天图片,或者换了个逆天头像和用户名,这茶还是喝定了。

所以花了半周,Vibe Coding 了个内容审核的扩展插件,又打磨了半周,似乎工作的还可以。尽管代码质量看起来有待提高,但至少测试都跑过了。

由于目前还没决定好正式发布,也不是专业 PHP 开发者,所以就先没有上传 packagist 。
支持 Flarum v1.8.x ( v2.x 暂时还不支持……),通过 OpenAI 兼容 API ,使用 LLM 进行内容审核。有些权限设置还没来得及改,但现在已经完全可用了,所以出来发一发。

审核支持范围

类型 插件 支持的违规处理动作
用户用户名(包括创建新用户、编辑) core 重命名为 user_<uid>_随机数、封禁
用户头像 core 删除、封禁
用户昵称(包括创建新用户、编辑) flarum/nicknames 删除、封禁
用户签名档 fof/user-bio 更改为特定字符串、封禁
用户头图 sycho/profile-cover 删除、封禁
主题标题(包括创建和编辑) core 标记为等待审核、封禁
主题、回复的内容(包括创建和编辑) core 标记为等待审核、封禁
主题、回复的内容图片(包括创建和编辑)( URL 外部直链) core 标记为等待审核、封禁
主题、回复的上传图片与小文本附件内容(包括创建和编辑) fof/upload 标记为等待审核、封禁

需要下列插件作为依赖:

审核、处理违规内容

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


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

不支持审核的,将被直接删除或重置。

对于严重违规,可以要求 LLM 进行用户封禁操作。封禁用户在任何审核模块下都可以使用。

违规通知

在内容违规后,OAICA 会自动向用户发送违规站内信和通知邮件。

上下文支持

在处理帖子回复时,会自动包含主贴内容作为上下文。处理用户个人资料也会提供其它部分上下文,以便 LLM 进行综合推理。

违规处理动作

支持 hidesuspend。具体行为由 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,这个插件就是为这个社区写的 ;)

300 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1195024

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX