LangChain 通过 @langchain/openai 包与 OpenAI 和 Azure OpenAI 集成。
OpenAI 是一家美国人工智能 (AI) 研究实验室,由非营利组织 OpenAI Incorporated 及其营利性子公司 OpenAI Limited Partnership 组成。 OpenAI 开展 AI 研究,其宣称的宗旨是促进和开发友善的人工智能。 OpenAI 系统运行在 Microsoft 基于 Azure 的超级计算平台上。
OpenAI API 由一系列具有不同功能和定价的模型提供支持。 ChatGPT 是由 OpenAI 开发的人工智能 (AI) 聊天机器人。

安装与设置

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

聊天模型

查看使用示例
import { ChatOpenAI } from "@langchain/openai";

LLM

查看使用示例
npm
npm install @langchain/openai @langchain/core
import { OpenAI } from "@langchain/openai";

文本嵌入模型

查看使用示例
import { OpenAIEmbeddings } from "@langchain/openai";

import { OpenAIModerationChain } from "@langchain/classic/chains";

中间件

专为 OpenAI 模型设计的中间件。了解有关中间件的更多信息。
中间件描述
内容审核使用 OpenAI 的审核端点对代理流量进行审核

内容审核

使用 OpenAI 的审核端点对代理流量(用户输入、模型输出和工具结果)进行审核,以检测和处理不安全内容。内容审核在以下场景中非常有用:
  • 需要内容安全和合规性的应用程序
  • 过滤有害、仇恨或不适当内容
  • 需要安全防护栏的面向客户的代理
  • 满足平台审核要求
了解有关 OpenAI 的审核模型及其类别。
API 参考: openAIModerationMiddleware
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",
    }),
  ],
});
model
string | BaseChatModel
required
用于审核的 OpenAI 模型。可以是模型名称字符串(例如 "openai:gpt-5.4"),也可以是 BaseChatModel 实例。中间件将使用此模型的客户端来访问审核端点。
moderationModel
ModerationModel
default:"omni-moderation-latest"
要使用的 OpenAI 审核模型。选项: 'omni-moderation-latest''omni-moderation-2024-09-26''text-moderation-latest''text-moderation-stable'
checkInput
boolean
default:"true"
是否在调用模型之前检查用户输入消息
checkOutput
boolean
default:"true"
是否在调用模型之后检查模型输出消息
checkToolResults
boolean
default:"false"
是否在调用模型之前检查工具结果消息
exitBehavior
'error' | 'end' | 'replace'
default:"'end'"
当内容被标记为违规时的处理方式。选项:
  • 'end' - 立即结束代理执行并返回违规消息
  • 'error' - 抛出 OpenAIModerationError 异常
  • 'replace' - 用违规消息替换被标记的内容并继续
violationMessage
string | undefined
违规消息的自定义模板。支持模板变量:
  • {categories} - 以逗号分隔的被标记类别列表
  • {category_scores} - 类别分数的 JSON 字符串
  • {original_content} - 被标记的原始内容
默认值: "对不起,我无法遵从该请求。它因 {categories} 被标记。"
该中间件集成了 OpenAI 的审核端点,在不同阶段检查内容:审核阶段:
  • checkInput - 模型调用前的用户消息
  • checkOutput - 模型调用后的 AI 消息
  • checkToolResults - 模型调用前的工具输出
退出行为:
  • 'end' (默认) - 以违规消息停止执行
  • 'error' - 抛出异常供应用程序处理
  • 'replace' - 替换被标记内容并继续
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:
        "检测到内容政策违规: {categories}。" +
        "请重新表述您的请求。",
    }),
  ],
});

// 带替换行为的审核
const agentReplace = createAgent({
  model: "openai:gpt-5.4",
  tools: [searchTool],
  middleware: [
    openAIModerationMiddleware({
      model: "openai:gpt-5.4",
      checkInput: true,
      exitBehavior: "replace",
      violationMessage: "[内容因安全政策被移除]",
    }),
  ],
});