前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
返回 AI 情报前线
All News · 全部资讯3545
  • 安全警报:Claude Code 面临恶意技能攻击
  • WASM bash沙箱让AI Agent安全执行代码
  • OpenAI淘汰旧模型,GPT-4o/4.1停服
  • Cloudflare Moltworker:自建个人AI Agent
  • Claude Code性能日报发布,量化追踪工具质量
  • Jellyfin发布LLM/AI开发政策指南
  • LLM请求监控工具:中间人代理调试方案
  • 用LLM重塑文本冒险游戏Zork
  • 开发者实战:AI 编码的助力与失效边界
  • 知识生态反转:开源知识被 AI 训练后免费再分发
  • Claude 编码实战笔记:最近几周的方法论总结
  • 开源 WebUI 汇聚 530+ 模型:MCP、RAG、多媒体生成一站式
  • 实战验证:Claude Code 一月完成 10 万行 TS→Rust 迁移
  • AI 时代开发者价值重塑:从编码到什么?
  • VS Code 支持 MCP Apps:AI Agent 拥有可视化交互界面
  • Claude Code 新功能曝光:多 Agent 编队协作能力
  • 实战工作流:我的 AI 辅助开发效率方法论
  • 调试陷阱:如何陷入三小时追踪「完美」代码 bug
  • 用乐高比喻理解 AI Workflows vs Agents
  • Claude Code 创建 Claude.md 被禁用问题
  • 用 Gemini 构建大规模内容审核系统
  • MCP 服务器部署到 AWS 完整教程
  • Cursor 发布 Subagents 和图像生成功能
  • eBay 禁止 AI 自动购买代理
  • Claude 新宪法发布
  • Agent AI 生产级设计模式手册
  • Claude Code 终端闪烁问题修复
  • AI编程助手的真实功耗和运营成本
  • 在本地安全运行Claude Code的最佳实践
  • Claude Code月费200刀?Goose免费替代品对比分析
  • Cursor顶级用户转向Claude Code 2.0的真实体验
  • Lume 0.2发布:macOS虚拟机无人值守自动部署
  • Figma-use:用CLI让AI agents自动设计界面
  • 科学家正用Claude加速研究论文和数据分析
  • Prompt Engineering 的本质与实践意义
  • Install.md 标准:让 LLM 自动执行安装脚本
  • 用 Claude 玩文字冒险:AI 创意交互应用
  • Claude Code 跨书籍知识整合:AI 编程助手新用法
  • D4RT 模型:4D 视觉重建突破速度提升 300 倍
  • Cursor CLI 新增 Agent Mode:编辑器 AI 能力扩展到命令行
  • LLM 结构化输出手册:最佳实践与实战技巧
  • 树莓派 AI 模块:本地运行大模型的低成本方案
  • docfind:Rust+WebAssembly 高性能客户端搜索引擎
  • Claude Cowork 文件外泄漏洞:AI 协作工具的安全隐患
  • AI Agents + MCP 自动化网站内容:工作流自动化实战
  • 初级职位门槛抬升,招聘方要求已达中级水平
  • Claude 擅长拼接代码块,创造新架构时容易崩溃
  • Webctl:CLI 优先的浏览器自动化,可用于 AI Agent 开发
  • Claude Cowork 技术拆解:用 Apple 虚拟化框架运行 Linux 虚拟机
  • Claude Cowork 初体验:Anthropic 的协作 AI 工作环境评测
  • 开源 AI Agent 项目:大规模数据索引与搜索实现案例
  • 已加载 51 / 3545
7.0
热点
AI SCORE
编程提效2026-01-22 23:17

用 Gemini 构建大规模内容审核系统

DEV Community · Ben Halpern#Gemini#实战
Editor brief · 编辑速览

DEV 社区展示如何用 Google Gemini 进行垃圾内容检测,是 AI 在生产环境中的实战案例。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

消除垃圾内容一直是 DEV(以及更广泛的 Forem 生态系统)的重中之重。如果你长期关注我们,应该还记得,这在过去曾是一个相当严重的问题。虽然没有任何平台能够宣称自己完全不存在垃圾内容,但如今的情况已经有了显著改善。

我们近期这些更新的首要目标很简单:在人工 Moderator 不得不处理之前,就将极低质量的内容移出平台。

Moderator 倦怠是真实存在的。通过自动移除那些“一眼就能看出来”的垃圾内容,我们可以让 Moderator 专注于需要细致判断的社区互动,而不是删除成百上千篇加密货币诈骗帖子。

混合方案:算法 + AI

我们并不依赖单一工具,而是将上游算法检测与“调用” Gemini 进行独立分析结合起来。

上游算法处理: 如果我们检测到明显趋势——例如,短时间内突然出现大量指向某个特定垃圾网站的帖子——就会在上游采取行动。我们更倾向于高效处理这类情况,而不需要针对每一个实例都查询一次 LLM。

Gemini 分析: 对于需要判断的单篇帖子,我们会向 Gemini 3 发送定制 prompt。我们会尽量避免出现任何误判;但当 AI 检测到明确的垃圾内容或有害内容特征时,它就会添加一个 label,从而触发自动化工作流。

深入内部:ContentModerationLabeler

为了让你更清楚地了解其技术实现,我们来看看 ContentModerationLabeler 服务。这个 Ruby 类负责构建上下文,并要求 Gemini 对帖子进行分类。

我们会持续打磨这些定制 prompt,以确保准确性。下面是我们在 prompt 中定义评估标准的方式。我们会明确告诉 Gemini 需要寻找什么,并区分“安全性”“质量”和“垃圾内容”:

def build_prompt
  # ... (Context setup)

  <<~PROMPT
    Analyze the following article and assign it a content moderation label based on quality, relevance, and community standards.

    # ...

    **Assessment Criteria:**

    1. **Safety First**: Is the content harmful, exploitative, or inciting violence/hostility?
    2. **Content Quality**: Is the content well-written, informative, and valuable?
    3. **Community Relevance**: Does the content align with the community's purpose and interests?
    4. **Authenticity**: Does the content appear to be written by a real person with genuine insights?
    5. **Spam Indicators**: Are there signs of promotional content, low-effort posts, or automated generation?
    6. **Community Building**: Does the content foster discussion and community engagement?

    # ...
  PROMPT
end

我们取得成功的一个关键在于,并非只把文章文本发送给 Gemini。我们还会构建用户上下文(User Context)。

一篇看起来“没什么问题”的帖子,如果来自一个没有任何历史记录的全新账号,实际上可能是垃圾内容。反过来,一位拥有 badge 和多年历史记录的可信成员,则会获得更多信任。我们会把这些指标加入 prompt,让 Gemini 掌握完整情况:

def build_user_context
  user = @article.user
  <<~USER_CONTEXT
    Author: #{user.name} (@#{user.username})
    Member since: #{user.created_at.strftime('%B %Y')}
    Badge achievements: #{user.badge_achievements_count}
    Articles published: #{user.articles.published.count}
    Comments made: #{user.comments.count}
    Profile summary: #{user.profile&.summary || 'No summary provided'}
  USER_CONTEXT
end

在 GitHub 上查看 ContentModerationLabeler

“垃圾内容峰值”的讽刺之处

我们从数据中发现了一个有关垃圾内容数量的有趣现象。颇具讽刺意味的是,累计被标记为垃圾内容的数量,恰好在我们全面集成这些新系统之前达到了峰值。垃圾内容的峰值出现在 2025 年夏季。

出现这种情况,是因为威慑确实有效。一旦恶意行为者意识到,他们的自动化脚本撞上了一堵高墙,发布的帖子也会立即被我们的自动化系统彻底清除,他们就不会再继续浪费资源攻击我们的平台。较高的准入门槛,会让尝试次数随着时间推移逐渐减少。

这套系统还会继续演进。我们正在不断调整 prompt 和上游算法,以适应新的垃圾内容策略。

虽然平台上还有多个服务分别负责处理不同类型的垃圾内容,但你可以在我们的开源代码仓库中查看这一特定方案的完整源代码:

为了赋能社区 🌱

为社区赋能

欢迎来到 Forem 代码库——它正是驱动 dev.to 的平台。我们非常高兴你的到来。在你的帮助下,我们可以进一步提升 Forem 的易用性、可扩展性和稳定性,从而更好地服务我们的社区。

Forem 是一款用于构建社区的开源软件。无论是同行、客户、粉丝群体、家人、朋友,还是任何人们需要聚在一起、成为某个集体一员的时间与空间,都可以使用它来创建社区。请参阅我们的公告文章,从宏观层面了解 Forem 是什么。

dev.to(简称 DEV)由 Forem 托管。这里是一个软件开发者社区,开发者们撰写文章、参与讨论,并建立自己的职业档案。为了帮助所有成员写出优秀代码并实现职业成长,我们重视相互支持且富有建设性的对话。这个生态系统涵盖从初学者到高级开发者的所有阶段,欢迎每个人在这里找到属于自己的位置……

部分评论可能仅对已登录的访问者可见。请登录以查看所有评论。

如果要采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。

Original source

本文由 AI 翻译整理自 DEV Community · Ben Halpern,原文版权归原作者所有。

阅读英文原文
上一篇
Claude Code 创建 Claude.md 被禁用问题
下一篇
MCP 服务器部署到 AWS 完整教程