> ## 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 JavaScript 与 OpenAI 集成。

所有与 OpenAI 相关的功能

> [OpenAI](https://en.wikipedia.org/wiki/OpenAI) 是一家美国人工智能（AI）研究实验室，由非营利组织 `OpenAI Incorporated` 及其营利性子公司 `OpenAI Limited Partnership` 组成。OpenAI 进行 AI 研究，其公开宣称的目标是促进和发展友好的人工智能。OpenAI 系统运行在 `Microsoft` 提供的基于 `Azure` 的超算平台上。

> [OpenAI API](https://platform.openai.com/docs/models) 由一系列具有不同能力和价格点的多样化模型提供支持。
>
> [ChatGPT](https://chat.openai.com) 是由 `OpenAI` 开发的人工智能（AI）聊天机器人。

## 安装与设置

* 获取一个 OpenAI API 密钥，并将其设置为环境变量 (`OPENAI_API_KEY`)

## 聊天模型

查看[使用示例](/oss/javascript/integrations/chat/openai)。

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import { ChatOpenAI } from "@langchain/openai";
```

## 大语言模型

查看[使用示例](/oss/javascript/integrations/llms/openai)。

<Tip>
  有关安装 LangChain 包的通用说明，请参阅[此部分](/oss/javascript/langchain/install)。
</Tip>

```bash npm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
npm install @langchain/openai @langchain/core
```

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import { OpenAI } from "@langchain/openai";
```

## 文本嵌入模型

查看[使用示例](/oss/javascript/integrations/embeddings/openai)

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import { OpenAIEmbeddings } from "@langchain/openai";
```

## 链

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import { OpenAIModerationChain } from "@langchain/classic/chains";
```

## 中间件

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

| 中间件           | 描述                      |
| ------------- | ----------------------- |
| [内容审核](#内容审核) | 使用 OpenAI 的审核端点来审核智能体流量 |

### 内容审核

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

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

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

**API 参考：** [`openAIModerationMiddleware`](https://reference.langchain.com/javascript/langchain/index/openAIModerationMiddleware)

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import { createAgent, openAIModerationMiddleware } from "langchain";

const agent = createAgent({
  model: "openai:gpt-4.1",
  tools: [searchTool, databaseTool],
  middleware: [
    openAIModerationMiddleware({
      model: "openai:gpt-4.1",
      moderationModel: "omni-moderation-latest",
      checkInput: true,
      checkOutput: true,
      exitBehavior: "end",
    }),
  ],
});
```

<Accordion title="配置选项">
  <ParamField body="model" type="string | BaseChatModel" required>
    用于审核的 OpenAI 模型。可以是模型名称字符串（例如，`"openai:gpt-4.1"`）或 `BaseChatModel` 实例。中间件将使用此模型的客户端来访问审核端点。
  </ParamField>

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

  <ParamField body="checkInput" type="boolean" default="true">
    是否在模型调用前检查用户输入消息
  </ParamField>

  <ParamField body="checkOutput" type="boolean" default="true">
    是否在模型调用后检查模型输出消息
  </ParamField>

  <ParamField body="checkToolResults" type="boolean" default="false">
    是否在模型调用前检查工具结果消息
  </ParamField>

  <ParamField body="exitBehavior" type="'error' | 'end' | 'replace'" default="'end'">
    当内容被标记时如何处理违规。选项：

    * `'end'` - 立即结束智能体执行，并显示违规消息
    * `'error'` - 抛出 `OpenAIModerationError` 异常
    * `'replace'` - 将标记的内容替换为违规消息并继续执行
  </ParamField>

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

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

    默认值：`"抱歉，我无法满足该请求。它因 {categories} 而被标记。"`
  </ParamField>
</Accordion>

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

  **审核阶段：**

  * `checkInput` - 模型调用前的用户消息
  * `checkOutput` - 模型调用后的 AI 消息
  * `checkToolResults` - 模型调用前的工具输出

  **退出行为：**

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

  ```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { createAgent, openAIModerationMiddleware } from "langchain";

  // 基础审核
  const agent = createAgent({
    model: "openai:gpt-4.1",
    tools: [searchTool, customerDataTool],
    middleware: [
      openAIModerationMiddleware({
        model: "openai:gpt-4.1",
        moderationModel: "omni-moderation-latest",
        checkInput: true,
        checkOutput: true,
      }),
    ],
  });

  // 严格审核，带自定义消息
  const agentStrict = createAgent({
    model: "openai:gpt-4.1",
    tools: [searchTool, customerDataTool],
    middleware: [
      openAIModerationMiddleware({
        model: "openai:gpt-4.1",
        moderationModel: "omni-moderation-latest",
        checkInput: true,
        checkOutput: true,
        checkToolResults: true,
        exitBehavior: "error",
        violationMessage:
          "检测到内容策略违规：{categories}。 " +
          "请重新表述您的请求。",
      }),
    ],
  });

  // 使用替换行为的审核
  const agentReplace = createAgent({
    model: "openai:gpt-4.1",
    tools: [searchTool],
    middleware: [
      openAIModerationMiddleware({
        model: "openai:gpt-4.1",
        checkInput: true,
        exitBehavior: "replace",
        violationMessage: "[内容因安全策略已被移除]",
      }),
    ],
  });
  ```
</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\javascript\integrations\providers\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>
