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

# AzureChatOpenAI 集成

> 使用 LangChain JavaScript 与 AzureChatOpenAI 对话模型集成。

Azure OpenAI 是一个 Microsoft Azure 服务，提供强大的语言模型。

这将帮助您开始使用 `AzureChatOpenAI` [对话模型](https://langchain-docs-zh.mintlify.site/langchain/oss/langchain/models.md)。有关所有 `AzureChatOpenAI` 功能和配置的详细文档，请访问 [API 参考](https://reference.langchain.com/javascript/langchain-openai/AzureChatOpenAI)。

## 概述

### 集成细节

| 类 | 包 | 可序列化 | [PY 支持](https://langchain-docs-zh.mintlify.site/langchain/oss/python/integrations/chat/azure_chat_openai.md) | 下载次数 | 版本 |
| :- | :- | :-: | :-: | :-: | :-: |
| [`AzureChatOpenAI`](https://reference.langchain.com/javascript/langchain-openai/AzureChatOpenAI) | [`@langchain/openai`](https://www.npmjs.com/package/@langchain/openai) | ✅ | ✅ | ![NPM - 下载](https://img.shields.io/npm/dm/@langchain/openai?style=flat-square\&label=%20&) | ![NPM - 版本](https://img.shields.io/npm/v/@langchain/openai?style=flat-square\&label=%20&) |

### 模型功能

请查看下表标题中的链接，了解如何使用特定功能。

| [工具调用](https://langchain-docs-zh.mintlify.site/langchain/oss/langchain/tools.md) | [结构化输出](https://langchain-docs-zh.mintlify.site/langchain/oss/langchain/structured-output.md) | [图像输入](https://langchain-docs-zh.mintlify.site/langchain/oss/langchain/messages.md#多模态) | 音频输入 | 视频输入 | [Token 级流式输出](https://langchain-docs-zh.mintlify.site/langchain/oss/langchain/streaming.md) | [Token 使用情况](https://langchain-docs-zh.mintlify.site/langchain/oss/langchain/models.md#token-使用) | [Logprobs](https://langchain-docs-zh.mintlify.site/langchain/oss/langchain/models.md#对数概率) |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |

## 设置

[Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/) 是一个云服务，帮助您快速开发生成式 AI 体验，使用 OpenAI、Meta 及其他来源的预构建和精选模型。

LangChain.js 支持通过 [OpenAI SDK](https://github.com/openai/openai-node) 中的新 Azure 集成与 [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service/) 集成。

您可以访问 [此页面](https://learn.microsoft.com/azure/ai-services/openai/overview) 了解更多关于 Azure OpenAI 及其与 OpenAI API 的区别的信息。

### 凭证

如果您没有 Azure 账户，可以 [创建一个免费账户](https://azure.microsoft.com/free/) 开始使用。

您还需要部署一个 Azure OpenAI 实例。您可以按照 [此指南](https://learn.microsoft.com/azure/ai-services/openai/how-to/create-resource?pivots=web-portal) 在 Azure 门户上部署一个版本。

一旦您的实例运行起来，请确保您有实例的名称和密钥。您可以在 Azure 门户中找到密钥，在实例的“密钥和端点”部分下。然后，如果您使用 Node.js，可以将您的凭证设置为环境变量：

```bash theme={null}
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](https://docs.langchain.com/langsmith/observability) API 密钥：

```bash theme={null}
# export LANGSMITH_TRACING="true"
# export LANGSMITH_API_KEY="your-api-key"
```

### 安装

LangChain AzureChatOpenAI 集成位于 `@langchain/openai` 包中：

```bash npm theme={null}
npm install @langchain/openai @langchain/core
```

```bash yarn theme={null}
yarn add @langchain/openai @langchain/core
```

```bash pnpm theme={null}
pnpm add @langchain/openai @langchain/core
```

## 实例化

现在我们可以实例化我们的模型对象并生成对话完成：

```typescript theme={null}
import { AzureChatOpenAI } from "@langchain/openai"

const llm = new AzureChatOpenAI({
    model: "gpt-5.5",
    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
})
```

## 调用

```typescript theme={null}
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
```

```text theme={null}
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
  }
}
```

```typescript theme={null}
console.log(aiMsg.content)
```

```text theme={null}
J'adore la programmation.
```

## 使用 Azure 管理身份

如果您使用 Azure 管理身份，可以像这样配置凭证：

```typescript theme={null}
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}` 的示例：

```typescript theme={null}
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` 字段来指定自定义标头：

```typescript theme={null}
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 迁移

如果您正在使用已弃用的 `@langchain/azure-openai` 包中的 Azure OpenAI SDK，您可以按照以下步骤更新您的代码以使用新的 Azure 集成：

1. 安装新的 `@langchain/openai` 包并删除之前的 `@langchain/azure-openai` 包：

```bash npm theme={null}
npm install @langchain/openai
```

```bash yarn theme={null}
yarn add @langchain/openai
```

```bash pnpm theme={null}
pnpm add @langchain/openai
```

```bash theme={null}
npm uninstall @langchain/azure-openai
```

2. 更新您的导入以使用 `@langchain/openai` 包中的新 @\[`AzureChatOpenAI`] 类：

   ```typescript theme={null}
   import { AzureChatOpenAI } from "@langchain/openai";
   ```

3. 更新您的代码以使用新的 @\[`AzureChatOpenAI`] 类并传递所需的参数：

   ```typescript theme={null}
   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-管理身份) 部分了解更多详细信息。

   * 如果您之前使用环境变量，现在必须设置 `AZURE_OPENAI_API_INSTANCE_NAME` 环境变量而不是 `AZURE_OPENAI_API_ENDPOINT`，并添加 `AZURE_OPENAI_API_VERSION` 环境变量来指定 API 版本。

***

## API 参考

有关所有 `AzureChatOpenAI` 功能和配置的详细文档，请访问 [API 参考](https://reference.langchain.com/javascript/langchain-openai/AzureChatOpenAI)。

***

> 官方原文：[src/oss/javascript/integrations/chat/azure.mdx](https://github.com/langchain-ai/docs/blob/main/src/oss/javascript/integrations/chat/azure.mdx) · 非官方翻译，译文由 AI 生成，以英文原文为准。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.