TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 780 subscribers
Post #1600 1
Node.js 图片审核:JSON Schema 加降级队列

处理带图工单时,建议把分类、策略执行和租户成本核算拆成三步。图片交给多模态模型并强制 JSON Schema 输出,本地校验结果,无效或不确定的进人工审核。降级机制是队列,不是猜测。

审核员处理的是投诉而非发布照片,同一张图可能是暴力证据、含仇恨符号的截图或普通头像。一个布尔值 safe 会丢掉审核员需要的上下文。分类用版本化清单,nsfw、violence、hate_symbols 分开记录,加 uncertain 状态和简短证据字段。模型描述所见,应用代码决定工单可见、拦截还是等人工。

不要用自由文本让模型描述再搜关键词,标点变化会破坏解析,缺失类别会被当成负面结果,租户策略也无法从自由回答中还原。类型化输出不是安全决策,但给后续流程稳定输入。

生产环境还需在模型调用前做文件大小和 MIME 校验,控制存储图片的访问权限,在 worker 边界设超时策略。限流、空响应或 schema 不匹配都走人工审核路径。避免把图片或敏感工单文本写进普通应用日志。

每个图片尝试生成一条审核记录,按租户、工单、策略版本、模型版本和请求 ID 关联。记录 token 数、延迟、重试次数、结果状态和审核结论。成本账本回答月度账单答不了的问题:哪个租户图片最大、哪个策略产生最多审核、提示词改动是否只增 token 不增召回。成本是决策维度,不是削弱分类器的理由。


JSON Schema 是契约,降级是状态转换。最小状态集是 triage、hold、review,不是模型标签的同义词。review 必须带 invalid_json、empty_model_response 或 uncertain 原因,hold 带观察类别和触发策略版本。缺失字段不要静默转 false,那会把集成问题变成假干净结果。不要无限重试,用有界 worker 预算,请求幂等,队列年龄对支持团队可见。

上下文是难点。新闻里的仇恨符号、作为证据的暴力画面和背书可能像素相同但处理不同。当标题、对话历史、司法管辖区或申诉决定动作时,纯图片自动化不适用。冻结一组真实感媒体工单样本再改提示词,包含普通头像、截图、纪实材料、部分遮挡、低分辨率和合法讨论有害图像的案例。审核员独立标注每个类别,再比较误报、漏报、各类别召回、不确定率、schema 有效率和 token 用量。

保留产生分歧的案例,不要平均掉。部分遮挡的符号可能暴露分类法歧义,低分辨率帧可能暴露质量边界。同一批案例也跑降级路径,格式错误的响应应计为审核事件,不能从质量报告中消失。解析失败说明契约或集成要修,清晰图上的分歧指向分类器或提示词,缺工单上下文的分歧属于审核设计问题。


上线前决定结果待定时用户看到什么、谁能放行被 hold 的图片、证据保留多久、租户如何申诉。每次模型、提示词、schema 或策略变更后重跑同一套评估。有用的产物不是聪明的聊天回复,而是可回放的审核记录,分类、执行、审核和成本可分别检查。

#开发者 #工具 #Nodejs #多模态 #内容审核 #JSONSchema #NSFW
@DevToolboxHub
More from @devtoolboxhub
  1. Sep 26, 2026PostgreSQL 复制槽上限参数 max_replication_slots 解析 max_replication_slots 决定共享内存中复制槽数组的长度,仅此而已。它不决…
  2. Sep 26, 2026五仓库架构踩坑:Gitlink 与双 CI Flude 团队复盘了多仓库架构的实践代价。项目从第一分钟起就选择拆分成独立仓库,Pipeline、engine、design-docs…
  3. Sep 26, 2026Xeno Core:TypeScript 后端架构框架 Node.js 复杂系统的架构选型往往决定代码的长期命运。开发者常在两条路之间纠结:要么依赖重度使用实验性装饰器和反射(如…
  4. Sep 25, 2026用 SLO 给 AI Agent 的行为定个预算 Grafana Labs 提出把可靠性工程里的错误预算(error budget)思路用到 AI Agent 上。延迟、token…
  5. Sep 25, 2026Xcode 27.2 改用 JSON 项目格式 Xcode 27.2 用基于 JSON 的 project.xcproj 取代了沿用多年的 project.pbxproj。新建项目…
  6. Sep 25, 2026PostgreSQL 的 max_prepared_transactions 该不该开 prepared transaction 是脱离会话独立存在的两阶段提交事务。执行 PREP…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →