Skip to main content
Azure OpenAI 是一项 Microsoft Azure 服务,提供来自 OpenAI 的强大语言模型。 这将帮助您开始使用 AzureChatOpenAI 聊天模型。有关所有 AzureChatOpenAI 功能和配置的详细文档,请访问 API 参考

概述

集成详情

本地可序列化PY 支持下载量版本
AzureChatOpenAI@langchain/openaiNPM - 下载量NPM - 版本

模型功能

请参阅下表标题中的链接,了解如何使用特定功能。
工具调用结构化输出JSON模式图像输入音频输入视频输入令牌级流令牌使用Logprobs

安装

Azure OpenAI 是一项云服务,可帮助您快速开发使用来自 OpenAI、Meta 以及其他机构的多样化预构建和精选模型的生成式 AI 体验。 LangChain.js 支持使用 OpenAI SDK 中的新 Azure 集成与 Azure OpenAI 进行集成。 您可以在此页面 [https://learn.microsoft.com/azure/ai-services/openai/overview] 上了解更多关于 Azure OpenAI 以及它与 OpenAI API 的区别。

凭证

如果您没有Azure账户,您可以创建一个免费账户开始使用。 您还需要部署一个Azure OpenAI实例。您可以根据此指南在Azure门户上部署一个版本。 一旦您的实例运行起来,请确保您有实例名称和密钥。您可以在Azure门户中找到密钥,在您的实例的“密钥和端点”部分。然后,如果您使用Node.js,可以将凭证设置为环境变量:
AZURE_OPENAI_API_INSTANCE_NAME=<YOUR_INSTANCE_NAME>
AZURE_OPENAI_API_DEPLOYMENT_NAME=<YOUR_DEPLOYMENT_NAME>
AZURE_OPENAI_API_KEY=<YOUR_KEY>
AZURE_OPENAI_API_VERSION="2024-02-01"
如果您想获取模型调用的自动化跟踪,您也可以通过取消以下注释来设置您的 LangSmith API 密钥:
# export LANGSMITH_TRACING="true"
# export LANGSMITH_API_KEY="your-api-key"

安装

LangChain AzureChatOpenAI 集成位于 @langchain/openai 包中:
npm install @langchain/openai @langchain/core

实例化

现在我们可以实例化我们的模型对象并生成聊天补全:
import { AzureChatOpenAI } from "@langchain/openai"

const llm = new AzureChatOpenAI({
    model: "gpt-4o",
    temperature: 0,
    maxTokens: undefined,
    maxRetries: 2,
    azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY, // In Node.js defaults to process.env.AZURE_OPENAI_API_KEY
    azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE_NAME, // In Node.js defaults to process.env.AZURE_OPENAI_API_INSTANCE_NAME
    azureOpenAIApiDeploymentName: process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME, // In Node.js defaults to process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
    azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION, // In Node.js defaults to process.env.AZURE_OPENAI_API_VERSION
})

调用

const aiMsg = await llm.invoke([
    [
        "system",
        "You are a helpful assistant that translates English to French. Translate the user sentence.",
    ],
    ["human", "I love programming."],
])
aiMsg
AIMessage {
  "id": "chatcmpl-9qrWKByvVrzWMxSn8joRZAklHoB32",
  "content": "J'adore la programmation.",
  "additional_kwargs": {},
  "response_metadata": {
    "tokenUsage": {
      "completionTokens": 8,
      "promptTokens": 31,
      "totalTokens": 39
    },
    "finish_reason": "stop"
  },
  "tool_calls": [],
  "invalid_tool_calls": [],
  "usage_metadata": {
    "input_tokens": 31,
    "output_tokens": 8,
    "total_tokens": 39
  }
}
console.log(aiMsg.content)
J'adore la programmation.

使用 Azure 管理身份

如果您正在使用 Azure 管理身份,您可以按照以下方式配置凭据:
import {
  DefaultAzureCredential,
  getBearerTokenProvider,
} from "@azure/identity";
import { AzureChatOpenAI } from "@langchain/openai";

const credentials = new DefaultAzureCredential();
const azureADTokenProvider = getBearerTokenProvider(
  credentials,
  "https://cognitiveservices.azure.com/.default"
);

const llmWithManagedIdentity = new AzureChatOpenAI({
  azureADTokenProvider,
  azureOpenAIApiInstanceName: "<your_instance_name>",
  azureOpenAIApiDeploymentName: "<your_deployment_name>",
  azureOpenAIApiVersion: "<api_version>",
});

使用不同的领域

如果您的实例托管在除默认 openai.azure.com 之外的域名下,您需要使用备选的 AZURE_OPENAI_BASE_PATH 环境变量。 例如,以下是连接到域名 https://westeurope.api.microsoft.com/openai/deployments/{DEPLOYMENT_NAME} 的方法:
import { AzureChatOpenAI } from "@langchain/openai";

const llmWithDifferentDomain = new AzureChatOpenAI({
  temperature: 0.9,
  azureOpenAIApiKey: "<your_key>", // In Node.js defaults to process.env.AZURE_OPENAI_API_KEY
  azureOpenAIApiDeploymentName: "<your_deployment_name>", // In Node.js defaults to process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
  azureOpenAIApiVersion: "<api_version>", // In Node.js defaults to process.env.AZURE_OPENAI_API_VERSION
  azureOpenAIBasePath:
    "https://westeurope.api.microsoft.com/openai/deployments", // In Node.js defaults to process.env.AZURE_OPENAI_BASE_PATH
});

自定义头信息

您可以通过传递一个 configuration 字段来指定自定义头信息:
import { AzureChatOpenAI } from "@langchain/openai";

const llmWithCustomHeaders = new AzureChatOpenAI({
  azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY, // In Node.js defaults to process.env.AZURE_OPENAI_API_KEY
  azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE_NAME, // In Node.js defaults to process.env.AZURE_OPENAI_API_INSTANCE_NAME
  azureOpenAIApiDeploymentName: process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME, // In Node.js defaults to process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
  azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION, // In Node.js defaults to process.env.AZURE_OPENAI_API_VERSION
  configuration: {
    defaultHeaders: {
      "x-custom-header": `SOME_VALUE`,
    },
  },
});

await llmWithCustomHeaders.invoke("Hi there!");
configuration 字段也接受官方 SDK 接受的其它 ClientOptions 参数。 注意: 当前无法以这种方式覆盖特定的头 api-key,它将传递来自 azureOpenAIApiKey 的值。

从 Azure OpenAI SDK 迁移

如果您正在使用已弃用的 Azure OpenAI SDK 并使用 @langchain/azure-openai 包,您可以按照以下步骤更新您的代码以使用新的 Azure 集成: 安装新的 @langchain/openai 包并移除之前的 @langchain/azure-openai 包:
npm install @langchain/openai
npm uninstall @langchain/azure-openai
  1. 更新您的导入以使用来自 @langchain/openai 包的新 @[AzureChatOpenAI] 类:
    import { AzureChatOpenAI } from "@langchain/openai";
    
  2. 更新您的代码以使用新的 @[AzureChatOpenAI] 类,并传递所需的参数:
    const model = new AzureChatOpenAI({
      azureOpenAIApiKey: "<your_key>",
      azureOpenAIApiInstanceName: "<your_instance_name>",
      azureOpenAIApiDeploymentName: "<your_deployment_name>",
      azureOpenAIApiVersion: "<api_version>",
    });
    
请注意,构造函数现在需要 azureOpenAIApiInstanceName 参数而不是 azureOpenAIEndpoint 参数,并添加了 azureOpenAIApiVersion 参数来指定 API 版本。
  • 如果您之前使用的是 Azure 管理身份,现在您需要使用构造函数中的 azureADTokenProvider 参数,而不是 credentials,有关更多详细信息,请参阅 Azure 管理身份 部分。
  • 如果您之前使用环境变量,现在您需要设置 AZURE_OPENAI_API_INSTANCE_NAME 环境变量而不是 AZURE_OPENAI_API_ENDPOINT,并添加 AZURE_OPENAI_API_VERSION 环境变量来指定 API 版本。

API 参考文档

有关所有 AzureChatOpenAI 功能和配置的详细文档,请参阅 API 参考