Skip to main content
Open In ColabOpen on GitHub

Azure OpenAI

注意

您当前所在的页面记录了使用 Azure OpenAI 文本补全模型 的方法。最新的且最受欢迎的 Azure OpenAI 模型是 聊天补全模型

除非你明确使用 gpt-3.5-turbo-instruct,否则你可能需要查看 此页面

本页介绍如何使用 LangChain 与 Azure OpenAI

Azure OpenAI API 与 OpenAI 的 API 兼容。openai Python 包使使用 OpenAI 和 Azure OpenAI 变得轻松。您可以像调用 OpenAI 一样调用 Azure OpenAI,但需要注意以下例外情况。

API 配置

您可以配置 openai 包以使用环境变量通过 Azure OpenAI 进行操作。以下内容适用于 bash

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

import os
os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"

Azure Active Directory 身份验证

有两种方式可以对 Azure OpenAI 进行身份验证:

  • API密钥
  • Azure 活动目录 (AAD)

使用 API 密钥是最简单的开始方式。您可以在 Azure 门户中找到您的 API 密钥,具体位置是在您的 Azure OpenAI 资源下。

但是,如果您有复杂的安全要求 - 您可能希望使用 Azure Active Directory。您可以在 此处 找到更多关于如何将 AAD 与 Azure OpenAI 结合使用的相关信息。

如果您在本地开发,需要安装 Azure CLI 并登录。您可以 在此 安装 Azure CLI。然后运行 az login 登录。

添加一个角色到Azure角色分配 Cognitive Services OpenAI User,作用域为您的Azure OpenAI资源。这将允许您从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

# 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 中运行代码,但希望在本地开发时,这会很有用。

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 --upgrade --quiet  langchain-openai
import os

os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"
os.environ["AZURE_OPENAI_ENDPOINT"] = "..."
os.environ["AZURE_OPENAI_API_KEY"] = "..."
# Import Azure OpenAI
from langchain_openai import AzureOpenAI
API 参考:AzureOpenAI
# Create an instance of Azure OpenAI
# Replace the deployment name with your own
llm = AzureOpenAI(
deployment_name="gpt-35-turbo-instruct-0914",
)
# Run the LLM
llm.invoke("Tell me a joke")
" Why couldn't the bicycle stand up by itself?\n\nBecause it was two-tired!"

我们也可以打印 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}