> ## Documentation Index
> Fetch the complete documentation index at: https://langchain-zh.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI 中间件集成

> 使用 LangChain Python 与 OpenAI 中间件进行集成。

专为 OpenAI 模型设计的中间件。了解更多关于 [中间件](/oss/python/langchain/middleware/overview) 的信息。

| 中间件                         | 描述                     |
| --------------------------- | ---------------------- |
| [内容审核](#content-moderation) | 使用 OpenAI 的审核端点来审核代理流量 |

## 内容审核

使用 OpenAI 的审核端点来检测和处理不安全的内容，从而审核代理流量（用户输入、模型输出和工具结果）。内容审核适用于以下场景：

* 需要内容安全和合规性的应用程序
* 过滤有害、仇恨或不适当的内容
* 需要安全护栏的客户面向型代理
* 满足平台审核要求

<Info>
  了解更多关于 [OpenAI 的审核模型](https://platform.openai.com/docs/guides/moderation) 和类别的信息。
</Info>

**API 参考：** [`OpenAIModerationMiddleware`](https://reference.langchain.com/python/langchain-openai/middleware/openai_moderation/OpenAIModerationMiddleware)

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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",
        ),
    ],
)
```

<Accordion title="配置选项">
  <ParamField body="model" type="ModerationModel" default="omni-moderation-latest">
    要使用的 OpenAI 审核模型。选项：`'omni-moderation-latest'`, `'omni-moderation-2024-09-26'`, `'text-moderation-latest'`, `'text-moderation-stable'`
  </ParamField>

  <ParamField body="check_input" type="bool" default="True">
    是否在调用模型之前检查用户输入消息
  </ParamField>

  <ParamField body="check_output" type="bool" default="True">
    是否在调用模型之后检查模型输出消息
  </ParamField>

  <ParamField body="check_tool_results" type="bool" default="False">
    是否在调用模型之前检查工具结果消息
  </ParamField>

  <ParamField body="exit_behavior" type="string" default="end">
    当内容被标记时如何处理违规情况。选项：

    * `'end'` - 立即结束代理执行并显示违规消息
    * `'error'` - 抛出 `OpenAIModerationError` 异常
    * `'replace'` - 用违规消息替换被标记的内容并继续
  </ParamField>

  <ParamField body="violation_message" type="str | None">
    违规消息的自定义模板。支持模板变量：

    * `{categories}` - 被标记类别的逗号分隔列表
    * `{category_scores}` - 类别分数的 JSON 字符串
    * `{original_content}` - 原始被标记的内容

    默认值：`"I'm sorry, but I can't comply with that request. It was flagged for {categories}."`
  </ParamField>

  <ParamField body="client" type="OpenAI | None">
    可选的预配置 OpenAI 客户端以供重用。如果未提供，将创建新客户端。
  </ParamField>

  <ParamField body="async_client" type="AsyncOpenAI | None">
    可选的预配置 AsyncOpenAI 客户端以供重用。如果未提供，将创建新的异步客户端。
  </ParamField>
</Accordion>

<Accordion title="完整示例">
  该中间件集成了 OpenAI 的审核端点，以在不同阶段检查内容：

  **审核阶段：**

  * `check_input` - 模型调用前的用户消息
  * `check_output` - 模型调用后的 AI 消息
  * `check_tool_results` - 模型调用前的工具输出

  **退出行为：**

  * `'end'`（默认）- 停止执行并显示违规消息
  * `'error'` - 抛出异常供应用程序处理
  * `'replace'` - 替换被标记的内容并继续

  ```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  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]",
          ),
      ],
  )
  ```
</Accordion>

***

<div className="source-links">
  <Callout icon="edit">
    [Edit this page on GitHub](https://github.com/langchain-ai/docs/edit/main/src/i18n\zh-CN\oss\python\integrations\middleware\openai.mdx) or [file an issue](https://github.com/langchain-ai/docs/issues/new/choose).
  </Callout>

  <Callout icon="terminal-2">
    [Connect these docs](/use-these-docs) to Claude, VSCode, and more via MCP for real-time answers.
  </Callout>
</div>
