# 在 Discourse Meta 上进行的基于 AI 的审核实验

**URL:** https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865
**Category:** Community Building
**Tags:** moderation, ai
**Created:** [2025年三月19日 00:31 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865 "2025-03-19T00:31:54Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2025年三月19日 00:31 UTC](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865/1 "2025-03-19T00:31:54Z")

</div>

[AI垃圾邮件检测](https://meta.discourse.org/t/discourse-ai-spam-detection/343541)取得了巨大成功，并帮助我们的许多社区取得了成功。

在此帖子中，我想分享有关我们“进行中”实验的详细信息，以期对其他社区有所帮助。

我打算在实验进行过程中及时更新此帖子，并分享有关它可以检测的问题类别的信息。

但请注意：这是一个不断发展的系统，还不是最终产品。

### 为什么选择 AI 审核？

我们在 Discourse 上集成 AI 的一个关键方法是，它应该为人工审核员增加价值，而不是取代他们。AI 审核的承诺是，它可以向审核员发出“有问题”的信号，并就他们应采取的行动提出建议。代理权应完全留给人工审核员。

### 为什么选择聊天作为此实验的模式

在进行实验时，我选择使用聊天作为通知模式。这允许为实验提供一个专用频道，而不会干扰论坛上的常规审核。

考虑到构建和完善提示是一项仍在进行中的工作，因此在 meta 上打扰其他审核团队似乎不是一个好方法。

当你向人们提供高度未完成的 AI 项目时，你很容易失去所有的信任和未来的支持。

### 批处理测试怎么样？

我们当前自动化系统的一个限制是，您目前无法进行批处理测试更改。这意味着，当您更改 AI 提示时，需要很长时间才能弄清楚它有多大帮助。

如果您一天只在论坛上遇到少量问题，这尤其成问题。反应时间太慢，可能需要数月才能完善提示。

我非常清楚这个限制，并希望在接下来的几周内从帖子中删除本节，因为我们已经有了一个系统来解决这个问题。

### 如何配置？

我目前的实验建立在 3 个功能之上：

1. 自动化 - [AI 角色响应器](https://meta.discourse.org/t/discourse-ai-ai-auto-responder/356375)
2. Discourse AI - [AI 角色](https://meta.discourse.org/t/ai-bot-personas/306099)
3. Discourse AI - [自定义工具](https://meta.discourse.org/t/ai-bot-custom-tools/314103)

#### 我们的响应器自动化

 ![图片显示了 Discourse 中一个名为“AI Responder”的审核工具中的脚本设置，该工具旨在通过 AI 角色对帖子进行分类，并提供设置主题、类别、标签、受限用户组等的触发器选项。（AI 题注）](https://global.discourse-cdn.com/meta/original/4X/b/9/9/b99357351b2c207da7ac0a82202588c239038717.png)

响应器最值得注意的一点是它是 **静默的** ，这意味着它既不会在它分类的主题上低语，也不会发布。

#### 我们的角色审核

 ![图片显示了 Discord 中一个名为“Automation - AI Moderator”的 AI 审核员的配置界面，详细说明了其角色、过滤器以及相关的工具，以确保适当的审核。（AI 题注）](https://global.discourse-cdn.com/meta/original/4X/2/a/c/2ac4fe1979b870e5f4572f654c68b585fccf8c87.png)

这里最值得注意的是 **强制工具** ，这意味着每个帖子都将使用 judge post 自定义工具进行判断。

我们当前的系统提示是：(我们将随着进展进行更新)

> **system prompt**
>
> 你是 [meta.discourse.org](http://meta.discourse.org)（Discourse 官方讨论论坛）的 AI 审核员。你的职责是根据我们的社区准则，帮助维护一个“文明公共讨论的干净、明亮的地方”。
> 
> 审核理念：
> 
> - 将论坛视为共享的社区资源，就像一个公共公园
> - 使用准则来辅助人工判断，而不是作为僵化的规则
> - 专注于改进讨论，而不仅仅是执行规则
> - 在促进和审核之间取得平衡
> 
> 内容评估框架：
> 
> 1. 改进讨论
> 
> 2. 不同意见标准
> 
> 3. 参与质量
> 
> 4. 问题识别
> 
> 5. 文明执行
> 
> 6. 组织维护
> 
> 7. 内容所有权
> 
> 在评估内容时，请考虑上下文、用户历史和论坛规范。你的目标是指导而非惩罚，教育而非执行，但要保持一致的标准，以保持讨论的质量。
> 
> * * *
> 
> 判断所有帖子，如果帖子不需要审核，则使用忽略优先级。

#### 我们的 judge post 自定义工具

 ![图片显示了 Discourse 中一个名为“Discourse”的审核工具的 JavaScript 函数配置表单，该函数根据紧急程度对帖子进行分类：“忽略”、“中等”和“紧急”，并附带相应的脚本和文件上传部分。（AI 题注）](https://global.discourse-cdn.com/meta/original/4X/6/e/1/6e1c1162724805a63e40e2365dc61c81a9b10e42.png)

> **the script powering it**
>
> ```javascript
> function invoke(params) {
> let post,topic;
> if (params.priority !== "ignore") {
> // post_id for testing
> const post_id = context.post_id || 1735240;
> post = discourse.getPost(post_id);
> topic = post.topic;
> let statusEmoji = "";
>   
> if (params.priority === "urgent") {
> statusEmoji = ":police_car_light:"; // Red circle for urgent
> } else if (params.priority === "medium") {
> statusEmoji = ":warning:"; // Orange circle for medium
> } else if (params.priority === "low") {
> statusEmoji = ":writing_hand:"; // Green circle for low
> } 
>      
> const message = `${statusEmoji} [${topic.title} - ${post.username}](${post.post_url}): ${params.message}`;
> discourse.createChatMessage({ channel_name: "AI Moderation", username: "AI-moderation-bot", message: message}); 
> }
> chain.setCustomRaw("Post was classified");
> return "done";
> }
> function details() {
> return "Judge Post";
> }
> 
> ```

该脚本使用了许多高级技术：

1. `chain.setCustomRaw` 这告诉角色停止运行 LLM 链并使调用工具成为最终调用，从而节省 token。
2. `discourse.createChatMessage` 一个可以从工具中用于创建聊天消息的新 API。
3. `discourse.getPost` 用于获取帖子信息。

鉴于此，我能够使用测试按钮测试该工具并确认其运行良好：

 ![图片显示了一个用于“测试 AI 工具”的对话框，具有“中等”优先级、占位符消息、“完成”的测试结果和“运行测试”按钮。（AI 题注）](https://global.discourse-cdn.com/meta/original/4X/8/9/e/89eaa07d4c9231d874820043192c9b18af3a1b60.png)

 ![图片显示了 Slack 频道“AI Moderation”中的一段对话，“Al-moderation-bot”询问为什么有些主题未被置顶，并提到了“alltiagocom”之前的测试。（AI 题注）](https://global.discourse-cdn.com/meta/original/4X/5/f/1/5f1a5d50a0e28227d8d4800ce511bf72089ed82c.png)

### 你在使用什么模型？

目前，我们正在使用 Sonnet 3.7，这是一个前沿模型。但是，一旦我在 Discourse Automation 中进行一些改进，特别是能够告诉它只扫描公共内容并避免安全类别，我们就计划转向 Gemini Flash。

我很乐意在此回答问题，并将在实验进行和我们推出更多 Discourse Automation 功能时不断更新。

---

_[View the full topic](https://meta.discourse.org/t/experiments-with-ai-based-moderation-on-discourse-meta/357865)._
