月工资不到10元的内容审核专员? - ChatGPT 在内容自动审查中的应用
内容过滤筛查是指对网络上发布或传播的文本、图片、视频等内容进行审核和监管,以防止出现违法违规、暴力色情、虚假广告、电信诈骗等现象,维护网络安全和社会秩序。
内容过滤筛查是一个亟待解决的问题,因为网络内容的数量庞大,且具有多样性、动态性和隐晦性。对于处理用户数据的软件或者网站的开发者来说,内容审核必不可少,通过内容过滤筛查可以有效阻止一些恶意用户。
传统内容审核一般需要人工参与结合规则或关键词,通过预设一些条件或标准来判断内容是否合规。然而,这种方法存在很多局限性和缺陷:
- 人工审核成本高昂,一般个人或者小型工作室难以负担
- 人工审核难以处理大量数据,很难做到实时检测
- 规则或关键词难以覆盖所有情况,容易漏掉一些隐晦或变化的不良内容
- 规则或关键词容易被规避或绕过,容易出现误报或漏报。
- 规则或关键词需要不断更新和维护,耗费人力和时间。
因此,我们需要一种更智能和灵活的方法来提高内容过滤筛查的效率和准确性。ChatGPT作为一种先进的自然语言生成的AI技术,可以为内容过滤筛查提供一种新的解决方案。
本文主要讨论利用Azure OpenAI的ChatGPT对文本内容筛查。相比于使用OpenAI, Azure OpenAI有以下优点:
- 两者底层的模型都是一样的,使用起来几乎没有区别
- 没有屏蔽国内用户,可以在国内直接调用
- 有现成的Azure SDK可以使用,不必裸写HTTP请求
- 可以上传自己的数据集,对模型进行fine-tuning(微调)
使用Azure OpenAI的ChatGPT做内容过滤筛查的大致流程如下:
- 在Azure门户上创建一个Azure OpenAI资源,并部署ChatGPT模型。我们可以选择不同的部署名称和规格,以满足不同的需求和预算。
- 使用Azure OpenAI SDK或REST API来调用ChatGPT模型,并传入网络内容作为输入。我们可以选择不同的输入格式和参数,以控制模型的行为和输出。
- 接收并处理ChatGPT模型返回的输出,并根据需要对网络内容进行过滤筛查。我们可以选择不同的输出格式和处理方式,以实现不同的目标和效果。
下面是一个简单NodeJs的Web API示例代码,可以对发送过来的文本进行自动审核:
const openai = require("@azure/openai"); const express = require("express"); const app = express(); // 设置必要的参数 const endpoint = "<Azure OpenAI的URL>"; const key = "<Azure OpenAI资源的密钥>"; const engine = "chatgpt"; // 部署名称 // 创建一个OpenAI客户端 const client = new openai.OpenAIClient(endpoint, key); // 定义一个中间件,用于解析请求体中的JSON数据 app.use(express.json()); // 定义一个路由,用于接收POST请求,传入一段文本,返回是否为不良内容和替代文本 app.post("/validate", async (req, res) => { // 获取请求体中的文本 const text = req.body.text; // 使用Azure OpenAI ChatGPT作为一个分类器,输入一段文本,输出其是否为不良内容, 可以根据自己的需求,调整下面的内容 const response1 = await client.chatCompletion(engine, [ { role: "system", content: "请根据发送过来的文本,判断其是否包含不良内容. 如果有就返回bad, 如果没有返回good" }, { role: "user", content: text }, ]); const label = response1.choices[0].message.content; // 返回响应体 res.json({ isBad: label === "bad", }); }); app.listen(3000, () => { console.log("App is running on port 3000"); });
把上述代码部署到http服务器后,要调用这个REST API,使用任何支持HTTP请求的语言或工具。例如,可以使用Python的requests库来发送一个POST请求,传入一段文本,获取返回的结果。以下是一个可能的示例代码:
import requests url = "http://localhost:3000/validate" # REST API的地址,根据实际情况修改 text = "这是一段测试文本,没有什么不良内容。" # 要审核的文本 response = requests.post(url, json={"text": text}) result = response.json() print(result)
上述代码仅是一个简单的示例,在实际使用过程中,还需要考虑很多内容,包括错误处理,数据加密,模型微调和设置更好的prompt等。当然,AI也不是万能的,肯定会存在误判或者漏判的情况,一般可以考虑和人工审核相结合,使用AI进行初步判断筛选,对于疑似的内容进行人工二次审核,可以极大地减轻审核人员的负担。
目前,这边大部分处理用户内容的软件都已经接入了AI自动审核系统,审核数千条的内容的成本只有几十美分,成本十分低廉,效果也达到了令人满意的程度。通过AI自动审批初步筛选判断,人工审核为辅的方式极大减轻了人工审核的负担,并可以有效检测到一些隐晦或变化的不良内容,有力地打击了一些恶意用户。