> ## 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 Python 与 Azure OpenAI LLM 集成。

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

  除非您专门使用 `gpt-3.5-turbo-instruct`，否则您可能正在查找 [此页面](/oss/python/integrations/chat/azure_chat_openai/)。
</Warning>

本页面介绍如何使用 LangChain 与 [Azure OpenAI](https://aka.ms/azure-openai) 配合使用。

Azure OpenAI API 与 OpenAI 的 API 兼容。`openai` Python 包使得同时使用 OpenAI 和 Azure OpenAI 变得容易。您可以像调用 OpenAI 一样调用 Azure OpenAI，例外情况见下文。

## API 配置

您可以使用环境变量配置 `openai` 包以使用 Azure OpenAI。以下是针对 `bash` 的：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# The API version you want to use: set this to `2023-12-01-preview` for the released version.
export OPENAI_API_VERSION=2023-12-01-preview
# The base URL for your Azure OpenAI resource.  You can find this in the Azure portal under your Azure OpenAI resource.
export AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com
# The API key for your Azure OpenAI resource.  You can find this in the Azure portal under your Azure OpenAI resource.
export AZURE_OPENAI_API_KEY=<your Azure OpenAI API key>
```

或者，您可以在运行的 Python 环境中直接配置 API：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import os
os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"
```

## Azure Active Directory 身份验证

您可以通过以下两种方式向 Azure OpenAI 进行身份验证：

* API 密钥
* Azure Active Directory (AAD)

使用 API 密钥是最简单的入门方式。您可以在 Azure 门户下的 Azure OpenAI 资源中找到您的 API 密钥。

但是，如果您有复杂的安全要求 - 您可能希望使用 Azure Active Directory。有关如何在 Azure OpenAI 中使用 AAD 的更多信息，请参阅 [托管身份文档](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/managed-identity)。

如果您在本地开发，需要安装 Azure CLI 并登录。您可以从 [Azure CLI 安装指南](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) 安装 Azure CLI。然后，运行 `az login` 进行登录。

为您的 Azure OpenAI 资源添加一个 Azure 角色分配 `Cognitive Services OpenAI User`。这将允许您从 AAD 获取令牌以与 Azure OpenAI 一起使用。您可以将此角色分配授予用户、组、服务主体或托管身份。有关 Azure OpenAI RBAC 角色的更多信息，请参阅 [基于角色的访问控制文档](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/role-based-access-control)。

要在 Python 中配合 LangChain 使用 AAD，请安装 `azure-identity` 包。然后，将 `OPENAI_API_TYPE` 设置为 `azure_ad`。接下来，使用 `DefaultAzureCredential` 类通过调用 `get_token` 从 AAD 获取令牌，如下所示。最后，将 `OPENAI_API_KEY` 环境变量设置为令牌值。

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import os
from azure.identity import DefaultAzureCredential

# Get the Azure Credential
credential = DefaultAzureCredential()

# Set the API type to `azure_ad`
os.environ["OPENAI_API_TYPE"] = "azure_ad"
# Set the API_KEY to the token from the Azure credential
os.environ["OPENAI_API_KEY"] = credential.get_token("https://cognitiveservices.azure.com/.default").token
```

`DefaultAzureCredential` 类是开始 AAD 身份验证的简单方法。如有必要，您还可以自定义凭据链。在下方的示例中，我们首先尝试托管身份，然后回退到 Azure CLI。如果您在 Azure 上运行代码但希望在本地开发，这很有用。

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from azure.identity import ChainedTokenCredential, ManagedIdentityCredential, AzureCliCredential

credential = ChainedTokenCredential(
    ManagedIdentityCredential(),
    AzureCliCredential()
)
```

## 部署

使用 Azure OpenAI，您可以设置自己的常见 GPT-3 和 Codex 模型的部署。调用 API 时，您需要指定要使用的部署。

***注意**：这些文档适用于 Azure 文本补全模型。GPT-4 等模型是聊天模型。它们具有稍微不同的接口，可以通过 [`AzureChatOpenAI`](https://reference.langchain.com/python/langchain-openai/chat_models/azure/AzureChatOpenAI) 类访问。有关 Azure 聊天的文档，请参阅 [Azure Chat OpenAI 文档](/oss/python/integrations/chat/azure_chat_openai)。*

假设您的部署名称为 `gpt-35-turbo-instruct-prod`。在 `openai` Python API 中，您可以使用 `engine` 参数指定此部署。例如：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import openai

client = openai.AzureOpenAI(
    api_version="2023-12-01-preview",
)

response = client.completions.create(
    model="gpt-35-turbo-instruct-prod",
    prompt="Test prompt"
)
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
pip install -qU  langchain-openai
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import os

os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"
os.environ["AZURE_OPENAI_ENDPOINT"] = "..."
os.environ["AZURE_OPENAI_API_KEY"] = "..."
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# Import Azure OpenAI
from langchain_openai import AzureOpenAI
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# Create an instance of Azure OpenAI
# Replace the deployment name with your own
llm = AzureOpenAI(
    deployment_name="gpt-35-turbo-instruct-0914",
)
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# Run the LLM
llm.invoke("Tell me a joke")
```

```text theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
" Why couldn't the bicycle stand up by itself?\n\nBecause it was two-tired!"
```

我们还可以打印 LLM 并查看其自定义打印。

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
print(llm)
```

```text theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
AzureOpenAI
Params: {'deployment_name': 'gpt-35-turbo-instruct-0914', 'model_name': 'gpt-3.5-turbo-instruct', 'temperature': 0.7, 'top_p': 1, 'frequency_penalty': 0, 'presence_penalty': 0, 'n': 1, 'logit_bias': {}, 'max_tokens': 256}
```

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
```

***

<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\python\integrations\llms\azure_openai.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>
