> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/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-5.4",
  tools: [searchTool, databaseTool],
  middleware: [
    openAIModerationMiddleware({
      model: "openai:gpt-5.4",
      moderationModel: "omni-moderation-latest",
      checkInput: true,
      checkOutput: true,
      exitBehavior: "end",
    }),
  ],
});
```

<Accordion title="配置选项">
  <ParamField body="model" type="string | BaseChatModel" required>
    用于审核的 OpenAI 模型。可以是模型名称字符串（例如 `"openai:gpt-5.4"`）或 `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}` - 原始被标记内容

    默认值：`"I'm sorry, but I can't comply with that request. It was flagged for {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-5.4",
    tools: [searchTool, customerDataTool],
    middleware: [
      openAIModerationMiddleware({
        model: "openai:gpt-5.4",
        moderationModel: "omni-moderation-latest",
        checkInput: true,
        checkOutput: true,
      }),
    ],
  });

  // 严格审核并自定义消息
  const agentStrict = createAgent({
    model: "openai:gpt-5.4",
    tools: [searchTool, customerDataTool],
    middleware: [
      openAIModerationMiddleware({
        model: "openai:gpt-5.4",
        moderationModel: "omni-moderation-latest",
        checkInput: true,
        checkOutput: true,
        checkToolResults: true,
        exitBehavior: "error",
        violationMessage:
          "Content policy violation detected: {categories}. " +
          "Please rephrase your request.",
      }),
    ],
  });

  // 替换行为的审核
  const agentReplace = createAgent({
    model: "openai:gpt-5.4",
    tools: [searchTool],
    middleware: [
      openAIModerationMiddleware({
        model: "openai:gpt-5.4",
        checkInput: true,
        exitBehavior: "replace",
        violationMessage: "[Content removed due to safety policies]",
      }),
    ],
  });
  ```
</Accordion>

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs)通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/oss/javascript/integrations/providers/openai.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
