微信扫码
添加专属顾问
我要投稿
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 来执行这个异步函数,看一下最终的效果。
# 测试demo
user_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-06-19
把无聊工作交给Agent,10倍效率归还人类
2025-06-19
人工智能也许是人类社会最后一次技术革命
2025-06-19
实测百万token上下文模型MiniMax-M1:RAG真的要被淘汰了?
2025-06-19
NVIDIA recsys-examples: 生成式推荐系统大规模训练推理的高效实践(上篇)
2025-06-19
大厂经验,AI Agent 的进化:从“单挑”到“群殴”
2025-06-19
苏格拉底提问教销售更好使用Deepseek
2025-06-19
价值销售AI使用场景一:SWOT智能体
2025-06-19
Claude Code最佳实践:让AI真正融入开发者工作流
2025-05-29
2025-04-11
2025-04-01
2025-04-12
2025-03-22
2025-04-29
2025-04-12
2025-04-06
2025-04-13
2025-04-15
2025-06-19
2025-06-19
2025-06-18
2025-06-17
2025-06-17
2025-06-16
2025-06-15
2025-06-15