Skip to main content
专为 OpenAI 模型设计的中间件。了解更多关于 中间件 的信息。
中间件描述
内容审核使用 OpenAI 的审核端点来审核代理流量

内容审核

使用 OpenAI 的审核端点来检测和处理不安全的内容,从而审核代理流量(用户输入、模型输出和工具结果)。内容审核适用于以下场景:
  • 需要内容安全和合规性的应用程序
  • 过滤有害、仇恨或不适当的内容
  • 需要安全护栏的客户面向型代理
  • 满足平台审核要求
了解更多关于 OpenAI 的审核模型 和类别的信息。
API 参考: OpenAIModerationMiddleware
from langchain_openai import ChatOpenAI
from langchain_openai.middleware import OpenAIModerationMiddleware
from langchain.agents import create_agent

agent = create_agent(
    model=ChatOpenAI(model="gpt-4.1"),
    tools=[search_tool, database_tool],
    middleware=[
        OpenAIModerationMiddleware(
            model="omni-moderation-latest",
            check_input=True,
            check_output=True,
            exit_behavior="end",
        ),
    ],
)
model
ModerationModel
default:"omni-moderation-latest"
要使用的 OpenAI 审核模型。选项:'omni-moderation-latest', 'omni-moderation-2024-09-26', 'text-moderation-latest', 'text-moderation-stable'
check_input
bool
default:"True"
是否在调用模型之前检查用户输入消息
check_output
bool
default:"True"
是否在调用模型之后检查模型输出消息
check_tool_results
bool
default:"False"
是否在调用模型之前检查工具结果消息
exit_behavior
string
default:"end"
当内容被标记时如何处理违规情况。选项:
  • 'end' - 立即结束代理执行并显示违规消息
  • 'error' - 抛出 OpenAIModerationError 异常
  • 'replace' - 用违规消息替换被标记的内容并继续
violation_message
str | None
违规消息的自定义模板。支持模板变量:
  • {categories} - 被标记类别的逗号分隔列表
  • {category_scores} - 类别分数的 JSON 字符串
  • {original_content} - 原始被标记的内容
默认值:"I'm sorry, but I can't comply with that request. It was flagged for {categories}."
client
OpenAI | None
可选的预配置 OpenAI 客户端以供重用。如果未提供,将创建新客户端。
async_client
AsyncOpenAI | None
可选的预配置 AsyncOpenAI 客户端以供重用。如果未提供,将创建新的异步客户端。
该中间件集成了 OpenAI 的审核端点,以在不同阶段检查内容:审核阶段:
  • check_input - 模型调用前的用户消息
  • check_output - 模型调用后的 AI 消息
  • check_tool_results - 模型调用前的工具输出
退出行为:
  • 'end'(默认)- 停止执行并显示违规消息
  • 'error' - 抛出异常供应用程序处理
  • 'replace' - 替换被标记的内容并继续
from langchain_openai import ChatOpenAI
from langchain_openai.middleware import OpenAIModerationMiddleware
from langchain.agents import create_agent


# Basic moderation
agent = create_agent(
    model=ChatOpenAI(model="gpt-4.1"),
    tools=[search_tool, customer_data_tool],
    middleware=[
        OpenAIModerationMiddleware(
            model="omni-moderation-latest",
            check_input=True,
            check_output=True,
        ),
    ],
)

# Strict moderation with custom message
agent_strict = create_agent(
    model=ChatOpenAI(model="gpt-4.1"),
    tools=[search_tool, customer_data_tool],
    middleware=[
        OpenAIModerationMiddleware(
            model="omni-moderation-latest",
            check_input=True,
            check_output=True,
            check_tool_results=True,
            exit_behavior="error",
            violation_message=(
                "Content policy violation detected: {categories}. "
                "Please rephrase your request."
            ),
        ),
    ],
)

# Moderation with replacement behavior
agent_replace = create_agent(
    model=ChatOpenAI(model="gpt-4.1"),
    tools=[search_tool],
    middleware=[
        OpenAIModerationMiddleware(
            check_input=True,
            exit_behavior="replace",
            violation_message="[Content removed due to safety policies]",
        ),
    ],
)