专门为 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-5.5"),
tools=[search_tool, database_tool],
middleware=[
OpenAIModerationMiddleware(
model="omni-moderation-latest",
check_input=True,
check_output=True,
exit_behavior="end",
),
],
)
Configuration options
要使用的 OpenAI 审核模型。选项: 'omni-moderation-latest', 'omni-moderation-2024-09-26', 'text-moderation-latest', 'text-moderation-stable'
是否在调用模型前检查用户输入消息
是否在调用模型后检查模型输出消息
是否在调用模型前检查工具结果消息
当内容被标记时如何处理违规行为。选项:
- -
'end'- 立即结束代理执行并返回违规消息 - -
'error'- 抛出OpenAIModerationError异常 - -
'replace'- 用违规消息替换标记的内容并继续
违规消息的自定义模板。支持以下模板变量:
- -
{categories}- 被标记类别的逗号分隔列表 - -
{category_scores}- 类别评分的 JSON 字符串 - -
{original_content}- 被标记的原始内容
Default: "I'm sorry, but I can't comply with that request. It was flagged for {categories}."
可选的预配置 OpenAI 客户端以供重用。如果未提供,将创建一个新客户端。
可选的预配置 AsyncOpenAI 客户端以供重用。如果未提供,将创建一个新的异步客户端。
Full example
该中间件集成 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-5.5"),
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-5.5"),
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-5.5"),
tools=[search_tool],
middleware=[
OpenAIModerationMiddleware(
check_input=True,
exit_behavior="replace",
violation_message="[Content removed due to safety policies]",
),
],
)