> ## 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.

# Azure OpenAI 集成

> 使用 LangChain JavaScript 与 Azure OpenAI 大语言模型集成。

<Warning>
  **您当前浏览的页面是关于 Azure OpenAI 文本补全模型的使用文档。最新且最流行的 Azure OpenAI 模型是 [聊天补全模型](/oss/javascript/langchain/models)。**

  除非您明确在使用 `gpt-3.5-turbo-instruct`，否则您可能正在寻找 [此页面](/oss/javascript/integrations/chat/azure/)。\*\*
</Warning>

<Info>
  **此前，LangChain.js 通过专用的 [Azure OpenAI SDK](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/openai/openai) 支持与 Azure OpenAI 的集成。该 SDK 现已弃用，转而采用 OpenAI SDK 中新的 Azure 集成方案。新方案允许在 OpenAI 模型和功能发布当天即可访问，并支持在 OpenAI API 和 Azure OpenAI 之间无缝切换。**

  如果您正在使用已弃用的 SDK 访问 Azure OpenAI，请参阅 [迁移指南](#migration-from-azure-openai-sdk) 以更新到新的 API。
</Info>

[Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) 是微软 Azure 提供的一项服务，它提供了来自 OpenAI 的强大语言模型。

本文将帮助您开始使用 LangChain 与 AzureOpenAI 补全模型（LLMs）。有关 `AzureOpenAI` 功能和配置选项的详细文档，请参阅 [API 参考](https://reference.langchain.com/javascript/langchain-openai/AzureOpenAI)。

## 概述

### 集成详情

| 类                                                                                        | 包                                                                      |  本地 | 可序列化 | [Python 支持](https://python.langchain.com/docs/integrations/llms/azure_openai) |                                                下载量                                                |                                               版本                                               |
| :--------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- | :-: | :--: | :---------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------: |
| [`AzureOpenAI`](https://reference.langchain.com/javascript/langchain-openai/AzureOpenAI) | [`@langchain/openai`](https://www.npmjs.com/package/@langchain/openai) |  ❌  |   ✅  |                                       ✅                                       | ![NPM - Downloads](https://img.shields.io/npm/dm/@langchain/openai?style=flat-square\&label=%20&) | ![NPM - Version](https://img.shields.io/npm/v/@langchain/openai?style=flat-square\&label=%20&) |

## 设置

要访问 AzureOpenAI 模型，您需要创建一个 Azure 账户，获取 API 密钥，并安装 `@langchain/openai` 集成包。

### 凭据

前往 [azure.microsoft.com](https://azure.microsoft.com/) 注册 AzureOpenAI 并生成 API 密钥。

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

一旦您的实例运行起来，请确保您拥有实例名称和密钥。您可以在 Azure 门户中，在实例的“密钥和终结点”部分找到密钥。

如果您使用 Node.js，可以定义以下环境变量来使用该服务：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
AZURE_OPENAI_API_INSTANCE_NAME=<您的实例名称>
AZURE_OPENAI_API_DEPLOYMENT_NAME=<您的部署名称>
AZURE_OPENAI_API_KEY=<您的密钥>
AZURE_OPENAI_API_VERSION="2024-02-01"
```

或者，您也可以直接将值传递给 `AzureOpenAI` 构造函数。

如果您希望自动追踪模型调用，还可以通过取消注释以下内容来设置您的 [LangSmith](/langsmith/home) API 密钥：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# export LANGSMITH_TRACING="true"
# export LANGSMITH_API_KEY="your-api-key"
```

### 安装

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

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

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

  ```bash pnpm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  pnpm add @langchain/openai @langchain/core
  ```
</CodeGroup>

## 实例化

现在我们可以实例化模型对象并生成聊天补全：

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

const llm = new AzureOpenAI({
  model: "gpt-3.5-turbo-instruct",
  azureOpenAIApiKey: "<您的密钥>", // 在 Node.js 中默认为 process.env.AZURE_OPENAI_API_KEY
  azureOpenAIApiInstanceName: "<您的实例名称>", // 在 Node.js 中默认为 process.env.AZURE_OPENAI_API_INSTANCE_NAME
  azureOpenAIApiDeploymentName: "<您的部署名称>", // 在 Node.js 中默认为 process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
  azureOpenAIApiVersion: "<API版本>", // 在 Node.js 中默认为 process.env.AZURE_OPENAI_API_VERSION
  temperature: 0,
  maxTokens: undefined,
  timeout: undefined,
  maxRetries: 2,
  // 其他参数...
})
```

## 调用

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const inputText = "AzureOpenAI 是一家 AI 公司，它 "

const completion = await llm.invoke(inputText)
completion
```

```text theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
为企业提供 AI 解决方案。他们提供一系列服务，包括自然语言处理、计算机视觉和机器学习。他们的解决方案旨在帮助企业自动化流程、从数据中获取洞察并改进决策。AzureOpenAI 还提供咨询服务，帮助企业识别并实施最适合其特定需求的 AI 解决方案。他们与多个行业合作，包括医疗保健、金融和零售。凭借其在 AI 领域的专业知识以及与 Microsoft Azure 的合作关系，AzureOpenAI 是寻求在快速发展的技术世界中保持领先地位的企业值得信赖的 AI 解决方案提供商。
```

## 使用 Azure 托管身份

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

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import {
  DefaultAzureCredential,
  getBearerTokenProvider,
} from "@azure/identity";
import { AzureOpenAI } from "@langchain/openai";

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

const managedIdentityLLM = new AzureOpenAI({
  azureADTokenProvider,
  azureOpenAIApiInstanceName: "<您的实例名称>",
  azureOpenAIApiDeploymentName: "<您的部署名称>",
  azureOpenAIApiVersion: "<API版本>",
});

```

## 使用不同域

如果您的实例托管在默认 `openai.azure.com` 以外的域下，您需要使用替代的 `AZURE_OPENAI_BASE_PATH` 环境变量。
例如，以下是如何连接到域 `https://westeurope.api.microsoft.com/openai/deployments/{DEPLOYMENT_NAME}`：

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

const differentDomainLLM = new AzureOpenAI({
  azureOpenAIApiKey: "<您的密钥>", // 在 Node.js 中默认为 process.env.AZURE_OPENAI_API_KEY
  azureOpenAIApiDeploymentName: "<您的部署名称>", // 在 Node.js 中默认为 process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME
  azureOpenAIApiVersion: "<API版本>", // 在 Node.js 中默认为 process.env.AZURE_OPENAI_API_VERSION
  azureOpenAIBasePath:
    "https://westeurope.api.microsoft.com/openai/deployments", // 在 Node.js 中默认为 process.env.AZURE_OPENAI_BASE_PATH
});

```

## 从 Azure OpenAI SDK 迁移

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

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

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

2. 更新您的导入语句，使用来自 `@langchain/openai` 包的新 `AzureOpenAI` 和 [`AzureChatOpenAI`](https://reference.langchain.com/javascript/langchain-openai/AzureChatOpenAI) 类：

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

3. 更新您的代码以使用新的 `AzureOpenAI` 和 [`AzureChatOpenAI`](https://reference.langchain.com/javascript/langchain-openai/AzureChatOpenAI) 类，并传递所需的参数：

   ```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
   const model = new AzureOpenAI({
     azureOpenAIApiKey: "<您的密钥>",
     azureOpenAIApiInstanceName: "<您的实例名称>",
     azureOpenAIApiDeploymentName: "<您的部署名称>",
     azureOpenAIApiVersion: "<API版本>",
   });
   ```

   请注意，构造函数现在需要 `azureOpenAIApiInstanceName` 参数，而不是 `azureOpenAIEndpoint` 参数，并添加了 `azureOpenAIApiVersion` 参数来指定 API 版本。

   * 如果您之前使用 Azure 托管身份，现在需要向构造函数传递 `azureADTokenProvider` 参数，而不是 `credentials`，有关更多详细信息，请参阅 [Azure 托管身份](#using-azure-managed-identity) 部分。

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

***

## API 参考

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

***

<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\llms\azure.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>
