Azure OpenAI
此页面介绍了如何将 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 Active Directory (AAD)
使用 API 密钥是入门的最简单方法。您可以在 Azure 门户的 Azure OpenAI 资源下找到您的 API 密钥。
但是,如果您有复杂的安全要求,您可能需要使用 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
# 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)
[1mAzureOpenAI[0m
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}