Azure OpenAI
本页介绍如何将 LangChain 与 Azure OpenAI 结合使用。
Azure OpenAI API 与 OpenAI 的 API 兼容。这openaiPython 包使 OpenAI 和 Azure OpenAI 易于使用。可以像调用 OpenAI 一样调用 Azure OpenAI,但下面提到了例外情况。
API 配置
您可以配置openaipackage 使用环境变量来使用 Azure OpenAI。以下是 forbash:
# 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 中的 AAD 与 LangChain 结合使用,请安装azure-identity包。然后,设置OPENAI_API_TYPE自azure_ad.接下来,使用DefaultAzureCredential类从 AAD 获取令牌,方法是调用get_token如下所示。最后,将OPENAI_API_KEY环境变量设置为 token 值。
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.在openaiPython 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}