Skip to main content
您当前正在查看的页面是关于使用 Azure OpenAI 文本补全模型的文档。最新且最流行的 Azure OpenAI 模型是 聊天补全模型除非您专门使用的是 gpt-3.5-turbo-instruct,否则您可能需要查看此页面
本页将介绍如何在 Azure OpenAI 中使用 LangChain。 Azure OpenAI API 与 OpenAI API 兼容。openai Python 包使得同时使用 OpenAI 和 Azure OpenAI 变得非常简单。您可以像调用 OpenAI 一样调用 Azure OpenAI,仅需注意以下例外情况。

API 配置

您可以使用环境变量配置 openai 包以使用 Azure OpenAI。以下适用于 bash
# 您要使用的 API 版本:对于已发布版本,请设置为 `2023-12-01-preview`。
export OPENAI_API_VERSION=2023-12-01-preview
# 您的 Azure OpenAI 资源的基础 URL。您可以在 Azure 门户中您的 Azure OpenAI 资源下找到它。
export AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com
# 您的 Azure OpenAI 资源的 API 密钥。您可以在 Azure 门户中您的 Azure OpenAI 资源下找到它。
export AZURE_OPENAI_API_KEY=<your Azure OpenAI API key>
或者,您也可以直接在运行的 Python 环境中配置 API:
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 的更多信息,请参阅托管标识文档 如果您在本地进行开发,则需要安装 Azure CLI 并登录。您可以从Azure CLI 安装指南安装 Azure CLI。然后,运行 az login 进行登录。 为您的 Azure OpenAI 资源添加一个作用域为 Cognitive Services OpenAI User 的 Azure 角色分配。这将允许您从 AAD 获取令牌以用于 Azure OpenAI。您可以将此角色分配授予用户、组、服务主体或托管标识。有关 Azure OpenAI RBAC 角色的更多信息,请参阅基于角色的访问控制文档 要在 Python 中与 LangChain 一起使用 AAD,请安装 azure-identity 包。然后,将 OPENAI_API_TYPE 设置为 azure_ad。接下来,使用 DefaultAzureCredential 类通过调用 get_token 从 AAD 获取令牌,如下所示。最后,将 OPENAI_API_KEY 环境变量设置为令牌值。
import os
from azure.identity import DefaultAzureCredential

# 获取 Azure 凭据
credential = DefaultAzureCredential()

# 将 API 类型设置为 `azure_ad`
os.environ["OPENAI_API_TYPE"] = "azure_ad"
# 将 API_KEY 设置为来自 Azure 凭据的令牌
os.environ["OPENAI_API_KEY"] = credential.get_token("https://cognitiveservices.azure.com/.default").token
DefaultAzureCredential 类是使用 AAD 身份验证的便捷入门方式。如有必要,您还可以自定义凭据链。在下方的示例中,我们首先尝试使用托管标识,如果失败则回退到 Azure CLI。如果您在 Azure 上运行代码但希望在本地开发,这将非常有用。
from azure.identity import ChainedTokenCredential, ManagedIdentityCredential, AzureCliCredential

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

部署

使用 Azure OpenAI 时,您需要自行部署常见的 GPT-3 和 Codex 模型。调用 API 时,您需要指定要使用的部署。 注意:这些文档适用于 Azure 文本补全模型。GPT-4 等模型属于聊天模型。它们的接口略有不同,可以通过 AzureChatOpenAI 类访问。有关 Azure 聊天的文档,请参阅 Azure Chat OpenAI 文档 假设您的部署名称为 gpt-35-turbo-instruct-prod。在 openai Python API 中,您可以使用 engine 参数指定此部署。例如:
import openai

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

response = client.completions.create(
    model="gpt-35-turbo-instruct-prod",
    prompt="Test prompt"
)
pip install -qU  langchain-openai
import os

os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"
os.environ["AZURE_OPENAI_ENDPOINT"] = "..."
os.environ["AZURE_OPENAI_API_KEY"] = "..."
# 导入 Azure OpenAI
from langchain_openai import AzureOpenAI
# 创建 Azure OpenAI 实例
# 将部署名称替换为您自己的名称
llm = AzureOpenAI(
    deployment_name="gpt-35-turbo-instruct-0914",
)
# 运行 LLM
llm.invoke("Tell me a joke")
" 为什么自行车不能自己站起来?\n\n因为它太累了!"
我们还可以打印 LLM 并查看其自定义输出。
print(llm)
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}