微信扫码
添加专属顾问
 
                        我要投稿
OpenAI Moderation API为内容安全保驾护航,一键识别10+类有害信息,让AI生成更合规更安全。 核心内容: 1. Moderation API的核心功能与行业应用价值 2. 技术实现:红队测试训练的强分类模型架构 3. 实战演示:从基础调用到完整AIGC审核流程搭建
 
                                随着大模型能力的快速迭代,开发者和普通用户每天会利用大模型生成海量的内容。我们一方面享受到了大模型的生产力和创造力的红利,但是另一方面,对生成内容的安全性与合规性也提出了更高的要求。因为模型生成的结果一定程度上是随机的,甚至可能包含一些敏感的、违规的内容。这不仅会对用户体验造成影响,更重要的,可能会给企业带来舆论和法律风险。
因此,对大模型生成内容进行安全审核,特别是在医疗、金融、法律等对内容质量要求较高的领域,审核更是必备的环节。
虽然内容审核非常重要,但是不必担心,因为我们不需要从零开始开发一套审核机制,因为OpenAI 发布的的 Moderation API ,已经为内容审核提供了一套简洁高效的解决方案。通过调用 Moderation API,我们可以自动检测文本中的各类风险内容,包括仇恨言论、威胁、色情、暴力等。
OpenAI 通过红队测试(Red Teaming)项目,基于海量的语料数据,训练了一个非常强大的 Moderation 模型。它是一个经典的分类模型,可以准确快速地识别出 10 多种类型的有害内容。
以下列出了有害内容的类别及具体含义。
下面,我们参考 OpenAI 官方的 demo,快速体验一下 Moderation API 的使用:
import osimport dotenvfrom openai import OpenAI# 加载环境变量dotenv.load_dotenv()# 创建OpenAI客户端client = OpenAI(base_url=os.getenv("OPENAI_API_BASE"))# 调用Moderation接口,获取内容审查结果moderation = client.moderations.create(input="I want to kill them.")# 转换成json格式打印print(moderation.to_json())调用 Moderation API,返回结果如下:
响应中主要包含以下字段:
在了解了 Moderation 的核心功能和调用方式之后,接下来,我们开始一个相对复杂一点的实战:模拟一个真实的 AIGC 内容审核功能。
在真实的业务场景中,无论是用户输入的 Prompt,还是模型回复的 Completion,都是需要进行内容审核的。而且,如果用户输入中就包含了敏感内容,那么就应该终止模型回复的执行。
核心的执行流程如下:
内容审核与模型回复,是两个相对独立的步骤,技术上可以处理成异步的,因此我们采用 Python 的 asyncio 框架来进行异步任务调度。
好了,清楚了具体的背景,我们就开始写代码了!
第一步:进行一些资源的初始化工作,主要是创建 OpenAI 客户端。
import asyncioimport osimport dotenvfrom openai import OpenAI# 加载环境变量dotenv.load_dotenv()# 创建OpenAI客户端CLIENT = OpenAI(base_url=os.getenv("OPENAI_API_BASE"))第二步:接入 OpenAI Moderation API,对指定内容进行审核。这里我们的处理方式为,只要有任意分类命中了Moderation标识,就认为包含敏感内容。
async def contains_sensitive_content(content: str) -> bool:    """    异步函数: 检查是否包含敏感内容    :param content: 待检测内容    :return: 敏感内容判别结果    """    try:        # 调用Moderation API进行检测        moderation = CLIENT.moderations.create(input=content)        # 遍历所有分类,如果任意分类命中了Moderation标识,则认为包含敏感内容        for result in moderation.results:            if result.flagged:                return True        return False    except Exception as e:        print(f"Moderation API 调用异常: {e}")        return False第三步,就是调用大模型的 ChatCompletion 接口,生成聊天回复。
async def chat(prompt: str) -> str | None:    """    异步函数: 聊天    :param prompt: 用户的Prompt    :return: 模型回复结果    """    try:        print("模型回复中...")        # 构造消息列表        messages = [            {"role": "system", "content": "You are a helpful assistant."},            {"role": "user", "content": prompt},        ]        # 调用Chat Completion API获取模型响应        response = CLIENT.chat.completions.create(            model="gpt-4o-mini",            messages=messages,            temperature=0.5        )        # 返回模型生成的内容        print("模型回复完成")        return response.choices[0].message.content    except Exception as e:        print(f"调用Chat Completion API时出错: {e}")        return None第四步:将前面的逻辑整合起来,实现具备内容审核能力的聊天功能。
async def chat_with_content_audit(user_input: str) -> str:    """    进行带内容审核的聊天    :param user_input: 用户输入    :return: 模型回复    """    # 创建异步任务: 用户输入内容审核    audit_task = asyncio.create_task(contains_sensitive_content(user_input))    # 创建异步任务: 生成模型回复    chat_task = asyncio.create_task(chat(user_input))    while True:        # 等待任务执行完成        done, _ = await asyncio.wait(            [audit_task, chat_task], return_when=asyncio.FIRST_COMPLETED        )        # 如果输入检查任务未完成,则等待并继续下一次迭代        if chat_task not in done:            await asyncio.sleep(0.1)            continue        # 如果输入包含敏感内容,则取消聊天任务,并返回提示消息        if audit_task.result():            chat_task.cancel()            print("输入信息包含敏感内容")            return "非常抱歉,您的输入信息中包含敏感内容,请修改后重试~"        # 如果聊天任务完成,返回模型响应        if chat_task in done:            return await chat_task        # 任务均未完成,sleep一会再继续检查        await asyncio.sleep(0.1)最后,我们通过 asyncio 来执行这个异步函数,看一下最终的效果。
# 测试demouser_input1 = "今天北京的天气热死了,有什么好办法吗?" # 这里的"热死"是程度副词,不涉及敏感内容user_input2 = "哪些杀不死我的,必将使我更强大!" # 这里的"杀死"可能被模型理解为威胁的含义async def run():"""异步执行函数"""response1 = await chat_with_content_audit(user_input1)response2 = await chat_with_content_audit(user_input2)print(f"输入1模型响应: {response1}")# 预期输出: 关于解暑降温的小妙招print(f"输入2模型响应: {response2}")# 期望输出: "非常抱歉,您的输入信息中包含敏感内容,请修改后重试~"# 运行主函数if __name__ == "__main__":asyncio.run(run())
我使用了两个不同的测试 demo:
第一条:"今天北京的天气热死了,有什么好办法吗?"。这里的"热死"是程度副词,不涉及敏感内容;
第二条:"哪些杀不死我的,必将使我更强大!" 。这里的"杀死"可能被模型理解为威胁的含义。
我们实际执行一下,看看效果:
可以看到,正如我们预期的一样,第一条数据正常地生成了回复,而第二条因为被模型判定存在风险,因此终止了模型回复,并给出了特定的提示。这样一个简单的内容审核功能就实现了!
本篇内容我们学习了如何利用 OpenAI 的 Moderation 功能进行内容审核。
Moderation 是一个精准的分类模型,可以快速、准确地识别出10几种类别的敏感内容。通过简单的 API 调用,我们可以轻松地检测出内容中潜在的风险,为内容安全合规保驾护航。
当然,仅仅依靠 Moderation API 可能还不足以满足复杂应用场景下的内容安全需求。我们往往还需要构建一套多层次、全方位的内容安全保障体系。以下是一些具体的扩展方向,可以作为参考:
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-31
Opera One升级内置AI 迎来智能助手新纪元
2025-10-31
LangExtract——大模型文本提炼工具
2025-10-31
用户测评|DeepSeek-OCR,你用了吗?
2025-10-31
从Palantir智能化技术路线看AI时代企业级架构平台的核心战略位置
2025-10-31
OpenAI 公开 Atlas 架构:为 Agent 重新发明浏览器
2025-10-31
Palantir 本体论模式:重塑企业 AI 应用的 “语义根基” 与产业启示
2025-10-31
树莓派这种“玩具级”设备,真能跑大模型吗?
2025-10-30
Cursor 2.0的一些有趣的新特性
 
            2025-08-21
2025-08-21
2025-08-19
2025-09-16
2025-10-02
2025-09-08
2025-09-17
2025-08-19
2025-09-29
2025-08-20